[testsuite] Fix directives order
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / vect-fcm.x
blob614f0dec066b17c09dc1cee66a5ee846a6f02e62
1 #include <stdlib.h>
2 #define N 16
4 FTYPE input1[N] =
5 {2.0, 4.0, 8.0, 16.0,
6  2.125, 4.25, 8.5, 17.0,
7  -2.0, -4.0, -8.0, -16.0,
8  -2.125, -4.25, -8.5, -17.0};
10 FTYPE input2[N] =
11 {-2.0, 4.0, -8.0, 16.0,
12  2.125, -4.25, 8.5, -17.0,
13  2.0, -4.0, 8.0, -16.0,
14  -2.125, 4.25, -8.5, 17.0};
16 /* Float comparisons, float results.  */
18 void
19 foo (FTYPE *in1, FTYPE *in2, FTYPE *output)
21   int i = 0;
22   /* Vectorizable.  */
23   for (i = 0; i < N; i++)
24     output[i] = (in1[i] OP in2[i]) ? 2.0 : 4.0;
27 void
28 bar (FTYPE *in1, FTYPE *in2, FTYPE *output)
30   int i = 0;
31   /* Vectorizable.  */
32   for (i = 0; i < N; i++)
33     output[i] = (in1[i] INV_OP in2[i]) ? 4.0 : 2.0;
36 void
37 foobar (FTYPE *in1, FTYPE *in2, FTYPE *output)
39   int i = 0;
40   /* Vectorizable.  */
41   for (i = 0; i < N; i++)
42     output[i] = (in1[i] OP 0.0) ? 4.0 : 2.0;
45 void
46 foobarbar (FTYPE *in1, FTYPE *in2, FTYPE *output)
48   int i = 0;
49   /* Vectorizable.  */
50   for (i = 0; i < N; i++)
51     output[i] = (in1[i] INV_OP 0.0) ? 4.0 : 2.0;
54 /* Float comparisons, int results.  */
56 void
57 foo_int (FTYPE *in1, FTYPE *in2, ITYPE *output)
59   int i = 0;
60   /* Vectorizable.  */
61   for (i = 0; i < N; i++)
62     output[i] = (in1[i] OP in2[i]) ? 2 : 4;
65 void
66 bar_int (FTYPE *in1, FTYPE *in2, ITYPE *output)
68   int i = 0;
69   /* Vectorizable.  */
70   for (i = 0; i < N; i++)
71     output[i] = (in1[i] INV_OP in2[i]) ? 4 : 2;
74 void
75 foobar_int (FTYPE *in1, FTYPE *in2, ITYPE *output)
77   int i = 0;
78   /* Vectorizable.  */
79   for (i = 0; i < N; i++)
80     output[i] = (in1[i] OP 0.0) ? 4 : 2;
83 void
84 foobarbar_int (FTYPE *in1, FTYPE *in2, ITYPE *output)
86   int i = 0;
87   /* Vectorizable.  */
88   for (i = 0; i < N; i++)
89     output[i] = (in1[i] INV_OP 0.0) ? 4 : 2;
92 int
93 main (int argc, char **argv)
95   FTYPE out1[N];
96   FTYPE out2[N];
97   ITYPE outi1[N];
98   ITYPE outi2[N];
100   int i = 0;
101   foo (input1, input2, out1);
102   bar (input1, input2, out2);
103   for (i = 0; i < N; i++)
104     if (out1[i] != out2[i])
105       abort ();
106   foobar (input1, input2, out1);
107   foobarbar (input1, input2, out2);
108   for (i = 0; i < N; i++)
109     if (out1[i] == out2[i])
110       abort ();
112   foo_int (input1, input2, outi1);
113   bar_int (input1, input2, outi2);
114   for (i = 0; i < N; i++)
115     if (outi1[i] != outi2[i])
116       abort ();
117   foobar_int (input1, input2, outi1);
118   foobarbar_int (input1, input2, outi2);
119   for (i = 0; i < N; i++)
120     if (outi1[i] == outi2[i])
121       abort ();
122   return 0;