Handle Octeon 3 not supporting MIPS paired-single instructions.
[gcc.git] / gcc / testsuite / gcc.target / mips / mips-3d-6.c
1 /* { dg-do run } */
2 /* { dg-options "-mips3d forbid_cpu=octeon.*" } */
3
4 /* Test MIPS-3D absolute compare (floats) builtin functions */
5 #include <stdlib.h>
6 #include <stdio.h>
7
8 NOMIPS16 int test0 (float a, float b);
9 NOMIPS16 int test1 (float a, float b);
10 NOMIPS16 int test2 (float a, float b);
11 NOMIPS16 int test3 (float a, float b);
12 NOMIPS16 int test4 (float a, float b);
13 NOMIPS16 int test5 (float a, float b);
14 NOMIPS16 int test6 (float a, float b);
15 NOMIPS16 int test7 (float a, float b);
16 NOMIPS16 int test8 (float a, float b);
17 NOMIPS16 int test9 (float a, float b);
18 NOMIPS16 int test10 (float a, float b);
19 NOMIPS16 int test11 (float a, float b);
20 NOMIPS16 int test12 (float a, float b);
21 NOMIPS16 int test13 (float a, float b);
22 NOMIPS16 int test14 (float a, float b);
23 NOMIPS16 int test15 (float a, float b);
24
25 NOMIPS16 int main ()
26 {
27 float a, b;
28 int i;
29
30 /* cabs.eq.s */
31 a = 12;
32 b = -56;
33 i = 0;
34 if (__builtin_mips_cabs_eq_s(a, b) != i)
35 abort ();
36
37 /* cabs.eq.s */
38 a = 12;
39 b = -12;
40 i = 1;
41 if (__builtin_mips_cabs_eq_s(a, b) != i)
42 abort ();
43
44 /* Test all comparisons */
45 a = 10.58;
46 b = 567.345;
47
48 i = test0 (a, b);
49 if (i != 0)
50 abort ();
51 i = test1 (a, b);
52 if (i != 0)
53 abort ();
54 i = test2 (a, b);
55 if (i != 0)
56 abort ();
57 i = test3 (a, b);
58 if (i != 0)
59 abort ();
60 i = test4 (a, b);
61 if (i != 1)
62 abort ();
63 i = test5 (a, b);
64 if (i != 1)
65 abort ();
66 i = test6 (a, b);
67 if (i != 1)
68 abort ();
69 i = test7 (a, b);
70 if (i != 1)
71 abort ();
72 i = test8 (a, b);
73 if (i != 0)
74 abort ();
75 i = test9 (a, b);
76 if (i != 0)
77 abort ();
78 i = test10 (a, b);
79 if (i != 0)
80 abort ();
81 i = test11 (a, b);
82 if (i != 0)
83 abort ();
84 i = test12 (a, b);
85 if (i != 1)
86 abort ();
87 i = test13 (a, b);
88 if (i != 1)
89 abort ();
90 i = test14 (a, b);
91 if (i != 1)
92 abort ();
93 i = test15 (a, b);
94 if (i != 1)
95 abort ();
96
97 /* Reversed arguments */
98 i = test0 (b, a);
99 if (i != 0)
100 abort ();
101 i = test1 (b, a);
102 if (i != 0)
103 abort ();
104 i = test2 (b, a);
105 if (i != 0)
106 abort ();
107 i = test3 (b, a);
108 if (i != 0)
109 abort ();
110 i = test4 (b, a);
111 if (i != 0)
112 abort ();
113 i = test5 (b, a);
114 if (i != 0)
115 abort ();
116 i = test6 (b, a);
117 if (i != 0)
118 abort ();
119 i = test7 (b, a);
120 if (i != 0)
121 abort ();
122 i = test8 (b, a);
123 if (i != 0)
124 abort ();
125 i = test9 (b, a);
126 if (i != 0)
127 abort ();
128 i = test10 (b, a);
129 if (i != 0)
130 abort ();
131 i = test11 (b, a);
132 if (i != 0)
133 abort ();
134 i = test12 (b, a);
135 if (i != 0)
136 abort ();
137 i = test13 (b, a);
138 if (i != 0)
139 abort ();
140 i = test14 (b, a);
141 if (i != 0)
142 abort ();
143 i = test15 (b, a);
144 if (i != 0)
145 abort ();
146
147 #ifndef __FAST_MATH__
148 /* Test all comparisons */
149 a = 1.0f/0.0f - 1.0f/0.0f; // QNaN
150 b = 567.345;
151
152 i = test0 (a, b);
153 if (i != 0)
154 abort ();
155 i = test1 (a, b);
156 if (i != 1)
157 abort ();
158 i = test2 (a, b);
159 if (i != 0)
160 abort ();
161 i = test3 (a, b);
162 if (i != 1)
163 abort ();
164 i = test4 (a, b);
165 if (i != 0)
166 abort ();
167 i = test5 (a, b);
168 if (i != 1)
169 abort ();
170 i = test6 (a, b);
171 if (i != 0)
172 abort ();
173 i = test7 (a, b);
174 if (i != 1)
175 abort ();
176 i = test8 (a, b);
177 if (i != 0)
178 abort ();
179 i = test9 (a, b);
180 if (i != 1)
181 abort ();
182 i = test10 (a, b);
183 if (i != 0)
184 abort ();
185 i = test11 (a, b);
186 if (i != 1)
187 abort ();
188 i = test12 (a, b);
189 if (i != 0)
190 abort ();
191 i = test13 (a, b);
192 if (i != 1)
193 abort ();
194 i = test14 (a, b);
195 if (i != 0)
196 abort ();
197 i = test15 (a, b);
198 if (i != 1)
199 abort ();
200 #endif
201
202 printf ("Test Passes\n");
203 exit (0);
204 }
205
206 NOMIPS16 int test0 (float a, float b)
207 {
208 return __builtin_mips_cabs_f_s (a, b);
209 }
210
211 NOMIPS16 int test1 (float a, float b)
212 {
213 return __builtin_mips_cabs_un_s (a, b);
214 }
215
216 NOMIPS16 int test2 (float a, float b)
217 {
218 return __builtin_mips_cabs_eq_s (a, b);
219 }
220
221 NOMIPS16 int test3 (float a, float b)
222 {
223 return __builtin_mips_cabs_ueq_s (a, b);
224 }
225
226 NOMIPS16 int test4 (float a, float b)
227 {
228 return __builtin_mips_cabs_olt_s (a, b);
229 }
230
231 NOMIPS16 int test5 (float a, float b)
232 {
233 return __builtin_mips_cabs_ult_s (a, b);
234 }
235
236 NOMIPS16 int test6 (float a, float b)
237 {
238 return __builtin_mips_cabs_ole_s (a, b);
239 }
240
241 NOMIPS16 int test7 (float a, float b)
242 {
243 return __builtin_mips_cabs_ule_s (a, b);
244 }
245
246 NOMIPS16 int test8 (float a, float b)
247 {
248 return __builtin_mips_cabs_sf_s (a, b);
249 }
250
251 NOMIPS16 int test9 (float a, float b)
252 {
253 return __builtin_mips_cabs_ngle_s (a, b);
254 }
255
256 NOMIPS16 int test10 (float a, float b)
257 {
258 return __builtin_mips_cabs_seq_s (a, b);
259 }
260
261 NOMIPS16 int test11 (float a, float b)
262 {
263 return __builtin_mips_cabs_ngl_s (a, b);
264 }
265
266 NOMIPS16 int test12 (float a, float b)
267 {
268 return __builtin_mips_cabs_lt_s (a, b);
269 }
270
271 NOMIPS16 int test13 (float a, float b)
272 {
273 return __builtin_mips_cabs_nge_s (a, b);
274 }
275
276 NOMIPS16 int test14 (float a, float b)
277 {
278 return __builtin_mips_cabs_le_s (a, b);
279 }
280
281 NOMIPS16 int test15 (float a, float b)
282 {
283 return __builtin_mips_cabs_ngt_s (a, b);
284 }