1 /* { dg-do run } */ 2 /* { dg-additional-options "-O3 --save-temps" } */ 3 4 extern void abort (); 5 6 #define N 1024 7 float in[N] = {1.0, -1.0, -2.0, 3.0, -5.0, -8.0, 13.0, 21.0}; 8 int out[N]; 9 10 void foo()11foo () 12 { 13 int i; 14 for (i = 0; i < N; i++) 15 out[i] = __builtin_signbit (in[i]); 16 } 17 18 /* { dg-final { scan-assembler-not {-2147483648} } } */ 19 /* { dg-final { scan-assembler {\tushr\tv[0-9]+.4s, v[0-9]+.4s, 31} } } */ 20 21 int main()22main () 23 { 24 int i; 25 26 foo (); 27 28 for (i = 0; i < N; i++) 29 { 30 if (in[i] >= 0.0 && out[i]) 31 abort (); 32 if (in[i] < 0.0 && !out[i]) 33 abort (); 34 } 35 36 return 0; 37 } 38 39