[testsuite] Fix directives order
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / adc-2.c
blob0f13619106b7a341e200e4e3a018c821c634cd75
1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
4 extern void abort (void);
6 /* This series of tests looks for the optimization:
7 x = (a >= b) + c + d
8 =>
9 cmp a, b
10 adc x, c, d
13 unsigned long
14 ltu_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d)
16 return (a < b) + c + d;
19 unsigned long
20 gtu_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d)
22 return (a > b) + c + d;
25 unsigned long
26 leu_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d)
28 return (a <= b) + c + d;
31 unsigned long
32 geu_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d)
34 return (a >= b) + c + d;
37 unsigned long
38 equ_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d)
40 return (a == b) + c + d;
43 unsigned long
44 neu_add (unsigned long a, unsigned long b, unsigned long c, unsigned long d)
46 return (a != b) + c + d;
49 long
50 lt_add ( long a, long b, long c, long d)
52 return (a < b) + c + d;
55 long
56 gt_add ( long a, long b, long c, long d)
58 return (a > b) + c + d;
61 long
62 le_add ( long a, long b, long c, long d)
64 return (a <= b) + c + d;
67 long
68 ge_add ( long a, long b, long c, long d)
70 return (a >= b) + c + d;
73 long
74 eq_add ( long a, long b, long c, long d)
76 return (a == b) + c + d;
79 long
80 ne_add ( long a, long b, long c, long d)
82 return (a != b) + c + d;
86 int
87 main ()
89 if (ltu_add(1,2,3,4) != 8)
91 abort();
94 if (ltu_add(2,2,3,4) != 7)
96 abort();
99 if (ltu_add(3,2,3,4) != 7)
101 abort();
104 if (gtu_add(2,1,3,4) != 8)
106 abort();
109 if (gtu_add(2,2,3,4) != 7)
111 abort();
114 if (gtu_add(1,2,3,4) != 7)
116 abort();
119 if (leu_add(1,2,3,4) != 8)
121 abort();
124 if (leu_add(2,2,3,4) != 8)
126 abort();
129 if (leu_add(3,2,3,4) != 7)
131 abort();
134 if (leu_add(2,1,3,4) != 7)
136 abort();
139 if (geu_add(2,1,3,4) != 8)
141 abort();
143 if (geu_add(2,2,3,4) != 8)
145 abort();
148 if (geu_add(1,2,3,4) != 7)
150 abort();
153 if (equ_add(1,2,3,4) != 7)
155 abort();
158 if (equ_add(2,2,3,4) != 8)
160 abort();
163 if (equ_add(3,2,3,4) != 7)
165 abort();
168 if (neu_add(1,2,3,4) != 8)
170 abort();
173 if (neu_add(2,2,3,4) != 7)
175 abort();
178 if (neu_add(3,2,3,4) != 8)
180 abort();
183 if (lt_add(1,2,3,4) != 8)
185 abort();
188 if (lt_add(2,2,3,4) != 7)
190 abort();
193 if (lt_add(3,2,3,4) != 7)
195 abort();
198 if (gt_add(2,1,3,4) != 8)
200 abort();
203 if (gt_add(2,2,3,4) != 7)
205 abort();
208 if (gt_add(1,2,3,4) != 7)
210 abort();
213 if (le_add(1,2,3,4) != 8)
215 abort();
218 if (le_add(2,2,3,4) != 8)
220 abort();
223 if (le_add(3,2,3,4) != 7)
225 abort();
228 if (le_add(2,1,3,4) != 7)
230 abort();
233 if (ge_add(2,1,3,4) != 8)
235 abort();
237 if (ge_add(2,2,3,4) != 8)
239 abort();
242 if (ge_add(1,2,3,4) != 7)
244 abort();
247 if (eq_add(1,2,3,4) != 7)
249 abort();
252 if (eq_add(2,2,3,4) != 8)
254 abort();
257 if (eq_add(3,2,3,4) != 7)
259 abort();
262 if (ne_add(1,2,3,4) != 8)
264 abort();
267 if (ne_add(2,2,3,4) != 7)
269 abort();
272 if (ne_add(3,2,3,4) != 8)
274 abort();
276 return 0;