/* { dg-do run { target sse2_runtime } } */ /* { dg-options "-O2 -msse2 -ftree-vectorize -fdump-tree-vect-details -save-temps" } */ extern void abort (); #define N 1024 float a[N] = {0.0f, -0.0f, 1.0f, -1.0f, -2.0f, 3.0f, -5.0f, -8.0f, 13.0f, 21.0f, -25.0f, 33.0f}; int r[N]; int main (void) { int i; for (i = 0; i < N; i++) r[i] = __builtin_signbitf (a[i]); /* check results: */ for (i = 0; i < N; i++) if (__builtin_signbitf (a[i]) && !r[i]) abort (); return 0; } /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ /* { dg-final { scan-assembler-not "\\$-2147483648" } } */ /* { dg-final { scan-assembler "psrld" } } */