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()11 foo ()
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()22 main ()
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