OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [simd-2.c] - Diff between revs 297 and 338

Only display areas with differences | Details | Blame | View Log

Rev 297 Rev 338
/*
/*
   Purpose: Test generic SIMD support, V8HImode.  This test should work
   Purpose: Test generic SIMD support, V8HImode.  This test should work
   regardless of if the target has SIMD instructions.
   regardless of if the target has SIMD instructions.
*/
*/
 
 
typedef short __attribute__((vector_size (16))) vecint;
typedef short __attribute__((vector_size (16))) vecint;
 
 
vecint i = { 150, 100, 150, 200, 0, 0, 0, 0 };
vecint i = { 150, 100, 150, 200, 0, 0, 0, 0 };
vecint j = { 10, 13, 20, 30, 1, 1, 1, 1 };
vecint j = { 10, 13, 20, 30, 1, 1, 1, 1 };
vecint k;
vecint k;
 
 
union {
union {
  vecint v;
  vecint v;
  short i[8];
  short i[8];
} res;
} res;
 
 
/* This should go away once we can use == and != on vector types.  */
/* This should go away once we can use == and != on vector types.  */
void
void
verify (int a1, int a2, int a3, int a4,
verify (int a1, int a2, int a3, int a4,
        int b1, int b2, int b3, int b4)
        int b1, int b2, int b3, int b4)
{
{
  if (a1 != b1
  if (a1 != b1
      || a2 != b2
      || a2 != b2
      || a3 != b3
      || a3 != b3
      || a4 != b4)
      || a4 != b4)
    abort ();
    abort ();
}
}
 
 
int
int
main ()
main ()
{
{
  k = i + j;
  k = i + j;
  res.v = k;
  res.v = k;
 
 
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 160, 113, 170, 230);
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 160, 113, 170, 230);
 
 
  k = i * j;
  k = i * j;
  res.v = k;
  res.v = k;
 
 
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 1500, 1300, 3000, 6000);
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 1500, 1300, 3000, 6000);
 
 
  k = i / j;
  k = i / j;
  res.v = k;
  res.v = k;
 
 
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 15, 7, 7, 6);
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 15, 7, 7, 6);
 
 
  k = i & j;
  k = i & j;
  res.v = k;
  res.v = k;
 
 
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 2, 4, 20, 8);
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 2, 4, 20, 8);
 
 
  k = i | j;
  k = i | j;
  res.v = k;
  res.v = k;
 
 
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 158, 109, 150, 222);
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 158, 109, 150, 222);
 
 
  k = i ^ j;
  k = i ^ j;
  res.v = k;
  res.v = k;
 
 
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 156, 105, 130, 214);
  verify (res.i[0], res.i[1], res.i[2], res.i[3], 156, 105, 130, 214);
 
 
  k = -i;
  k = -i;
  res.v = k;
  res.v = k;
  verify (res.i[0], res.i[1], res.i[2], res.i[3],
  verify (res.i[0], res.i[1], res.i[2], res.i[3],
          -150, -100, -150, -200);
          -150, -100, -150, -200);
 
 
  k = ~i;
  k = ~i;
  res.v = k;
  res.v = k;
  verify (res.i[0], res.i[1], res.i[2], res.i[3], -151, -101, -151, -201);
  verify (res.i[0], res.i[1], res.i[2], res.i[3], -151, -101, -151, -201);
 
 
  exit (0);
  exit (0);
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.