Viewing file: pr66623.c (1.24 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-require-effective-target vect_float } */
#include "tree-vect.h"
extern void abort (void);
#define OP * #define INIT 1.0
float __attribute__((noinline,noclone)) foo (float *__restrict__ i) { float l = INIT; int a; int b;
for (a = 0; a < 4; a++) for (b = 0; b < 4; b++) l = l OP i[b];
return l; }
float __attribute__((noinline,noclone)) foo_ref (float *__restrict__ i) { float l = INIT;
l = l OP i[0]; l = l OP i[1]; l = l OP i[2]; l = l OP i[3];
l = l OP i[0]; l = l OP i[1]; l = l OP i[2]; l = l OP i[3];
l = l OP i[0]; l = l OP i[1]; l = l OP i[2]; l = l OP i[3];
l = l OP i[0]; l = l OP i[1]; l = l OP i[2]; l = l OP i[3];
return l; }
union u { float f; unsigned int u; };
int main (void) { union u res, res2; float a[4];
if (sizeof (float) != sizeof (unsigned int)) return 0;
check_vect ();
a[0] = 0.01; a[1] = 0.01; a[2] = 0.01; a[3] = 1.0;
res.f = foo_ref (a);
res2.f = foo (a);
if (res.u != res2.u) abort ();
return 0; }
/* need -ffast-math to vectorize this loop. */ /* ARM NEON passes -ffast-math to these tests, so expect this to fail. */ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail arm_neon_ok } } } */
|