1 /* Test vclz works correctly. */
2 /* { dg-do run } */
3 /* { dg-options "-std=gnu99 -O3 -Wno-div-by-zero --save-temps" } */
4 #include <arm_neon.h>
5
6 extern void abort (void);
7
8 /* Tests in binary should look like:
9 0
10 1
11 10
12 101
13 1010
14 10101
15 etc. */
16
17 #define TEST0 0
18 #define TEST1 0x1
19 #define TEST2 0x2
20 #define TEST3 0x5
21 #define TEST4 0xa
22 #define TEST5 0x15
23 #define TEST6 0x2a
24 #define TEST7 0x55
25 #define TEST8 0xaa
26 #define TEST9 0x155
27 #define TEST10 0x2aa
28 #define TEST11 0x555
29 #define TEST12 0xaaa
30 #define TEST13 0x1555
31 #define TEST14 0x2aaa
32 #define TEST15 0x5555
33 #define TEST16 0xaaaa
34 #define TEST17 0x15555
35 #define TEST18 0x2aaaa
36 #define TEST19 0x55555
37 #define TEST20 0xaaaaa
38 #define TEST21 0x155555
39 #define TEST22 0x2aaaaa
40 #define TEST23 0x555555
41 #define TEST24 0xaaaaaa
42 #define TEST25 0x1555555
43 #define TEST26 0x2aaaaaa
44 #define TEST27 0x5555555
45 #define TEST28 0xaaaaaaa
46 #define TEST29 0x15555555
47 #define TEST30 0x2aaaaaaa
48 #define TEST31 0x55555555
49 #define TEST32 0xaaaaaaaa
50
51 #define INHIB_OPTIMIZATION asm volatile ("" : : : "memory")
52
53 #define CONCAT(a, b) a##b
54 #define CONCAT1(a, b) CONCAT (a, b)
55 #define REG_INFEX64 _
56 #define REG_INFEX128 q_
57 #define SIGNED0 u
58 #define SIGNED1 s
59 #define SIGNED(x) SIGNED##x
60 #define REG_INFEX(reg_len) REG_INFEX##reg_len
61 #define POSTFIX(reg_len, data_len, is_signed) \
62 CONCAT1 (REG_INFEX (reg_len), CONCAT1 (SIGNED (is_signed), data_len))
63 #define DATA_TYPE(data_len) DATA_TYPE_##data_len
64 #define LOAD_INST(reg_len, data_len, is_signed) \
65 CONCAT1 (vld1, POSTFIX (reg_len, data_len, is_signed))
66 #define CLZ_INST(reg_len, data_len, is_signed) \
67 CONCAT1 (vclz, POSTFIX (reg_len, data_len, is_signed))
68
69 #define RUN_TEST(test_set, answ_set, reg_len, data_len, is_signed, n) \
70 INHIB_OPTIMIZATION; \
71 a = LOAD_INST (reg_len, data_len, is_signed) (test_set); \
72 b = LOAD_INST (reg_len, data_len, is_signed) (answ_set); \
73 a = CLZ_INST (reg_len, data_len, is_signed) (a); \
74 for (i = 0; i < n; i++) \
75 if (a [i] != b [i]) \
76 return 1;
77
78 int
test_vclz_s8()79 test_vclz_s8 ()
80 {
81 int i;
82 int8x8_t a;
83 int8x8_t b;
84
85 int8_t test_set0[8] = {
86 TEST0, TEST1, TEST2, TEST3,
87 TEST4, TEST5, TEST6, TEST7
88 };
89 int8_t test_set1[8] = {
90 TEST8, TEST8, TEST8, TEST8,
91 TEST8, TEST8, TEST8, TEST8
92 };
93 int8_t answ_set0[8] = {
94 8, 7, 6, 5,
95 4, 3, 2, 1
96 };
97 int8_t answ_set1[8] = {
98 0, 0, 0, 0,
99 0, 0, 0, 0
100 };
101 RUN_TEST (test_set0, answ_set0, 64, 8, 1, 8);
102 RUN_TEST (test_set1, answ_set1, 64, 8, 1, 1);
103
104 return 0;
105 }
106
107 /* Double scan-assembler-times to take account of unsigned functions. */
108 /* { dg-final { scan-assembler-times "clz\\tv\[0-9\]+\.8b, v\[0-9\]+\.8b" 4 } } */
109
110 int
test_vclz_s16()111 test_vclz_s16 ()
112 {
113 int i;
114 int16x4_t a;
115 int16x4_t b;
116
117 int16_t test_set0[4] = { TEST0, TEST1, TEST2, TEST3 };
118 int16_t test_set1[4] = { TEST4, TEST5, TEST6, TEST7 };
119 int16_t test_set2[4] = { TEST8, TEST9, TEST10, TEST11 };
120 int16_t test_set3[4] = { TEST12, TEST13, TEST14, TEST15 };
121 int16_t test_set4[4] = { TEST16, TEST16, TEST16, TEST16 };
122
123 int16_t answ_set0[4] = { 16, 15, 14, 13 };
124 int16_t answ_set1[4] = { 12, 11, 10, 9 };
125 int16_t answ_set2[4] = { 8, 7, 6, 5 };
126 int16_t answ_set3[4] = { 4, 3, 2, 1 };
127 int16_t answ_set4[4] = { 0, 0, 0, 0 };
128
129 RUN_TEST (test_set0, answ_set0, 64, 16, 1, 4);
130 RUN_TEST (test_set1, answ_set1, 64, 16, 1, 4);
131 RUN_TEST (test_set2, answ_set2, 64, 16, 1, 4);
132 RUN_TEST (test_set3, answ_set3, 64, 16, 1, 4);
133 RUN_TEST (test_set4, answ_set4, 64, 16, 1, 1);
134
135 return 0;
136 }
137
138 /* Double scan-assembler-times to take account of unsigned functions. */
139 /* { dg-final { scan-assembler-times "clz\\tv\[0-9\]+\.4h, v\[0-9\]+\.4h" 10} } */
140
141 int
test_vclz_s32()142 test_vclz_s32 ()
143 {
144 int i;
145 int32x2_t a;
146 int32x2_t b;
147
148 int32_t test_set0[2] = { TEST0, TEST1 };
149 int32_t test_set1[2] = { TEST2, TEST3 };
150 int32_t test_set2[2] = { TEST4, TEST5 };
151 int32_t test_set3[2] = { TEST6, TEST7 };
152 int32_t test_set4[2] = { TEST8, TEST9 };
153 int32_t test_set5[2] = { TEST10, TEST11 };
154 int32_t test_set6[2] = { TEST12, TEST13 };
155 int32_t test_set7[2] = { TEST14, TEST15 };
156 int32_t test_set8[2] = { TEST16, TEST17 };
157 int32_t test_set9[2] = { TEST18, TEST19 };
158 int32_t test_set10[2] = { TEST20, TEST21 };
159 int32_t test_set11[2] = { TEST22, TEST23 };
160 int32_t test_set12[2] = { TEST24, TEST25 };
161 int32_t test_set13[2] = { TEST26, TEST27 };
162 int32_t test_set14[2] = { TEST28, TEST29 };
163 int32_t test_set15[2] = { TEST30, TEST31 };
164 int32_t test_set16[2] = { TEST32, TEST32 };
165
166 int32_t answ_set0[2] = { 32, 31 };
167 int32_t answ_set1[2] = { 30, 29 };
168 int32_t answ_set2[2] = { 28, 27 };
169 int32_t answ_set3[2] = { 26, 25 };
170 int32_t answ_set4[2] = { 24, 23 };
171 int32_t answ_set5[2] = { 22, 21 };
172 int32_t answ_set6[2] = { 20, 19 };
173 int32_t answ_set7[2] = { 18, 17 };
174 int32_t answ_set8[2] = { 16, 15 };
175 int32_t answ_set9[2] = { 14, 13 };
176 int32_t answ_set10[2] = { 12, 11 };
177 int32_t answ_set11[2] = { 10, 9 };
178 int32_t answ_set12[2] = { 8, 7 };
179 int32_t answ_set13[2] = { 6, 5 };
180 int32_t answ_set14[2] = { 4, 3 };
181 int32_t answ_set15[2] = { 2, 1 };
182 int32_t answ_set16[2] = { 0, 0 };
183
184 RUN_TEST (test_set0, answ_set0, 64, 32, 1, 2);
185 RUN_TEST (test_set1, answ_set1, 64, 32, 1, 2);
186 RUN_TEST (test_set2, answ_set2, 64, 32, 1, 2);
187 RUN_TEST (test_set3, answ_set3, 64, 32, 1, 2);
188 RUN_TEST (test_set4, answ_set4, 64, 32, 1, 2);
189 RUN_TEST (test_set5, answ_set5, 64, 32, 1, 2);
190 RUN_TEST (test_set6, answ_set6, 64, 32, 1, 2);
191 RUN_TEST (test_set7, answ_set7, 64, 32, 1, 2);
192 RUN_TEST (test_set8, answ_set8, 64, 32, 1, 2);
193 RUN_TEST (test_set9, answ_set9, 64, 32, 1, 2);
194 RUN_TEST (test_set10, answ_set10, 64, 32, 1, 2);
195 RUN_TEST (test_set11, answ_set11, 64, 32, 1, 2);
196 RUN_TEST (test_set12, answ_set12, 64, 32, 1, 2);
197 RUN_TEST (test_set13, answ_set13, 64, 32, 1, 2);
198 RUN_TEST (test_set14, answ_set14, 64, 32, 1, 2);
199 RUN_TEST (test_set15, answ_set15, 64, 32, 1, 2);
200 RUN_TEST (test_set16, answ_set16, 64, 32, 1, 1);
201
202 return 0;
203 }
204
205 /* Double scan-assembler-times to take account of unsigned functions. */
206 /* { dg-final { scan-assembler-times "clz\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" 34 } } */
207
208 int
test_vclzq_s8()209 test_vclzq_s8 ()
210 {
211 int i;
212 int8x16_t a;
213 int8x16_t b;
214
215 int8_t test_set0[16] = {
216 TEST0, TEST1, TEST2, TEST3, TEST4, TEST5, TEST6, TEST7,
217 TEST8, TEST8, TEST8, TEST8, TEST8, TEST8, TEST8, TEST8
218 };
219 int8_t answ_set0[16] = {
220 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0
221 };
222 RUN_TEST (test_set0, answ_set0, 128, 8, 1, 9);
223 return 0;
224 }
225
226 /* Double scan-assembler-times to take account of unsigned functions. */
227 /* { dg-final { scan-assembler-times "clz\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b" 2 } } */
228
229 int
test_vclzq_s16()230 test_vclzq_s16 ()
231 {
232 int i;
233 int16x8_t a;
234 int16x8_t b;
235
236 int16_t test_set0[8] = {
237 TEST0, TEST1, TEST2, TEST3, TEST4, TEST5, TEST6, TEST7
238 };
239 int16_t test_set1[8] = {
240 TEST8, TEST9, TEST10, TEST11, TEST12, TEST13, TEST14, TEST15
241 };
242 int16_t test_set2[8] = {
243 TEST16, TEST16, TEST16, TEST16, TEST16, TEST16, TEST16, TEST16
244 };
245
246 int16_t answ_set0[8] = {
247 16, 15, 14, 13, 12, 11, 10, 9
248 };
249 int16_t answ_set1[8] = {
250 8, 7, 6, 5, 4, 3, 2, 1
251 };
252 int16_t answ_set2[8] = {
253 0, 0, 0, 0, 0, 0, 0, 0
254 };
255 RUN_TEST (test_set0, answ_set0, 128, 16, 1, 8);
256 RUN_TEST (test_set1, answ_set1, 128, 16, 1, 8);
257 RUN_TEST (test_set2, answ_set2, 128, 16, 1, 1);
258
259 return 0;
260 }
261
262 /* Double scan-assembler-times to take account of unsigned functions. */
263 /* { dg-final { scan-assembler-times "clz\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h" 6 } } */
264
265 int
test_vclzq_s32()266 test_vclzq_s32 ()
267 {
268 int i;
269 int32x4_t a;
270 int32x4_t b;
271
272 int32_t test_set0[4] = { TEST0, TEST1, TEST2, TEST3 };
273 int32_t test_set1[4] = { TEST4, TEST5, TEST6, TEST7 };
274 int32_t test_set2[4] = { TEST8, TEST9, TEST10, TEST11 };
275 int32_t test_set3[4] = { TEST12, TEST13, TEST14, TEST15 };
276 int32_t test_set4[4] = { TEST16, TEST17, TEST18, TEST19 };
277 int32_t test_set5[4] = { TEST20, TEST21, TEST22, TEST23 };
278 int32_t test_set6[4] = { TEST24, TEST25, TEST26, TEST27 };
279 int32_t test_set7[4] = { TEST28, TEST29, TEST30, TEST31 };
280 int32_t test_set8[4] = { TEST32, TEST32, TEST32, TEST32 };
281
282 int32_t answ_set0[4] = { 32, 31, 30, 29 };
283 int32_t answ_set1[4] = { 28, 27, 26, 25 };
284 int32_t answ_set2[4] = { 24, 23, 22, 21 };
285 int32_t answ_set3[4] = { 20, 19, 18, 17 };
286 int32_t answ_set4[4] = { 16, 15, 14, 13 };
287 int32_t answ_set5[4] = { 12, 11, 10, 9 };
288 int32_t answ_set6[4] = { 8, 7, 6, 5 };
289 int32_t answ_set7[4] = { 4, 3, 2, 1 };
290 int32_t answ_set8[4] = { 0, 0, 0, 0 };
291
292 RUN_TEST (test_set0, answ_set0, 128, 32, 1, 4);
293 RUN_TEST (test_set1, answ_set1, 128, 32, 1, 4);
294 RUN_TEST (test_set2, answ_set2, 128, 32, 1, 4);
295 RUN_TEST (test_set3, answ_set3, 128, 32, 1, 4);
296 RUN_TEST (test_set4, answ_set4, 128, 32, 1, 1);
297
298 return 0;
299 }
300
301 /* Double scan-assembler-times to take account of unsigned functions. */
302 /* { dg-final { scan-assembler-times "clz\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" 10 } } */
303
304 /* Unsigned versions. */
305
306 int
test_vclz_u8()307 test_vclz_u8 ()
308 {
309 int i;
310 uint8x8_t a;
311 uint8x8_t b;
312
313 uint8_t test_set0[8] = {
314 TEST0, TEST1, TEST2, TEST3, TEST4, TEST5, TEST6, TEST7
315 };
316 uint8_t test_set1[8] = {
317 TEST8, TEST8, TEST8, TEST8, TEST8, TEST8, TEST8, TEST8
318 };
319 uint8_t answ_set0[8] = {
320 8, 7, 6, 5, 4, 3, 2, 1
321 };
322 uint8_t answ_set1[8] = {
323 0, 0, 0, 0, 0, 0, 0, 0
324 };
325
326 RUN_TEST (test_set0, answ_set0, 64, 8, 0, 8);
327 RUN_TEST (test_set1, answ_set1, 64, 8, 0, 1);
328
329 return 0;
330 }
331
332 /* ASM scan near test for signed version. */
333
334 int
test_vclz_u16()335 test_vclz_u16 ()
336 {
337 int i;
338 uint16x4_t a;
339 uint16x4_t b;
340
341 uint16_t test_set0[4] = { TEST0, TEST1, TEST2, TEST3 };
342 uint16_t test_set1[4] = { TEST4, TEST5, TEST6, TEST7 };
343 uint16_t test_set2[4] = { TEST8, TEST9, TEST10, TEST11 };
344 uint16_t test_set3[4] = { TEST12, TEST13, TEST14, TEST15 };
345 uint16_t test_set4[4] = { TEST16, TEST16, TEST16, TEST16 };
346
347 uint16_t answ_set0[4] = { 16, 15, 14, 13 };
348 uint16_t answ_set1[4] = { 12, 11, 10, 9 };
349 uint16_t answ_set2[4] = { 8, 7, 6, 5 };
350 uint16_t answ_set3[4] = { 4, 3, 2, 1 };
351 uint16_t answ_set4[4] = { 0, 0, 0, 0 };
352
353 RUN_TEST (test_set0, answ_set0, 64, 16, 0, 4);
354 RUN_TEST (test_set1, answ_set1, 64, 16, 0, 4);
355 RUN_TEST (test_set2, answ_set2, 64, 16, 0, 4);
356 RUN_TEST (test_set3, answ_set3, 64, 16, 0, 4);
357 RUN_TEST (test_set4, answ_set4, 64, 16, 0, 1);
358
359 return 0;
360 }
361
362 /* ASM scan near test for signed version. */
363
364 int
test_vclz_u32()365 test_vclz_u32 ()
366 {
367 int i;
368 uint32x2_t a;
369 uint32x2_t b;
370
371 uint32_t test_set0[2] = { TEST0, TEST1 };
372 uint32_t test_set1[2] = { TEST2, TEST3 };
373 uint32_t test_set2[2] = { TEST4, TEST5 };
374 uint32_t test_set3[2] = { TEST6, TEST7 };
375 uint32_t test_set4[2] = { TEST8, TEST9 };
376 uint32_t test_set5[2] = { TEST10, TEST11 };
377 uint32_t test_set6[2] = { TEST12, TEST13 };
378 uint32_t test_set7[2] = { TEST14, TEST15 };
379 uint32_t test_set8[2] = { TEST16, TEST17 };
380 uint32_t test_set9[2] = { TEST18, TEST19 };
381 uint32_t test_set10[2] = { TEST20, TEST21 };
382 uint32_t test_set11[2] = { TEST22, TEST23 };
383 uint32_t test_set12[2] = { TEST24, TEST25 };
384 uint32_t test_set13[2] = { TEST26, TEST27 };
385 uint32_t test_set14[2] = { TEST28, TEST29 };
386 uint32_t test_set15[2] = { TEST30, TEST31 };
387 uint32_t test_set16[2] = { TEST32, TEST32 };
388
389 uint32_t answ_set0[2] = { 32, 31 };
390 uint32_t answ_set1[2] = { 30, 29 };
391 uint32_t answ_set2[2] = { 28, 27 };
392 uint32_t answ_set3[2] = { 26, 25 };
393 uint32_t answ_set4[2] = { 24, 23 };
394 uint32_t answ_set5[2] = { 22, 21 };
395 uint32_t answ_set6[2] = { 20, 19 };
396 uint32_t answ_set7[2] = { 18, 17 };
397 uint32_t answ_set8[2] = { 16, 15 };
398 uint32_t answ_set9[2] = { 14, 13 };
399 uint32_t answ_set10[2] = { 12, 11 };
400 uint32_t answ_set11[2] = { 10, 9 };
401 uint32_t answ_set12[2] = { 8, 7 };
402 uint32_t answ_set13[2] = { 6, 5 };
403 uint32_t answ_set14[2] = { 4, 3 };
404 uint32_t answ_set15[2] = { 2, 1 };
405 uint32_t answ_set16[2] = { 0, 0 };
406
407 RUN_TEST (test_set0, answ_set0, 64, 32, 0, 2);
408 RUN_TEST (test_set1, answ_set1, 64, 32, 0, 2);
409 RUN_TEST (test_set2, answ_set2, 64, 32, 0, 2);
410 RUN_TEST (test_set3, answ_set3, 64, 32, 0, 2);
411 RUN_TEST (test_set4, answ_set4, 64, 32, 0, 2);
412 RUN_TEST (test_set5, answ_set5, 64, 32, 0, 2);
413 RUN_TEST (test_set6, answ_set6, 64, 32, 0, 2);
414 RUN_TEST (test_set7, answ_set7, 64, 32, 0, 2);
415 RUN_TEST (test_set8, answ_set8, 64, 32, 0, 2);
416 RUN_TEST (test_set9, answ_set9, 64, 32, 0, 2);
417 RUN_TEST (test_set10, answ_set10, 64, 32, 0, 2);
418 RUN_TEST (test_set11, answ_set11, 64, 32, 0, 2);
419 RUN_TEST (test_set12, answ_set12, 64, 32, 0, 2);
420 RUN_TEST (test_set13, answ_set13, 64, 32, 0, 2);
421 RUN_TEST (test_set14, answ_set14, 64, 32, 0, 2);
422 RUN_TEST (test_set15, answ_set15, 64, 32, 0, 2);
423 RUN_TEST (test_set16, answ_set16, 64, 32, 0, 1);
424
425 return 0;
426 }
427
428 /* ASM scan near test for signed version. */
429
430 int
test_vclzq_u8()431 test_vclzq_u8 ()
432 {
433 int i;
434 uint8x16_t a;
435 uint8x16_t b;
436
437 uint8_t test_set0[16] = {
438 TEST0, TEST1, TEST2, TEST3, TEST4, TEST5, TEST6, TEST7,
439 TEST8, TEST8, TEST8, TEST8, TEST8, TEST8, TEST8, TEST8
440 };
441 uint8_t answ_set0[16] = {
442 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0
443 };
444 RUN_TEST (test_set0, answ_set0, 128, 8, 0, 9);
445
446 return 0;
447 }
448
449 /* ASM scan near test for signed version. */
450
451 int
test_vclzq_u16()452 test_vclzq_u16 ()
453 {
454 int i;
455 uint16x8_t a;
456 uint16x8_t b;
457
458 uint16_t test_set0[8] = {
459 TEST0, TEST1, TEST2, TEST3, TEST4, TEST5, TEST6, TEST7
460 };
461 uint16_t test_set1[8] = {
462 TEST8, TEST9, TEST10, TEST11, TEST12, TEST13, TEST14, TEST15
463 };
464 uint16_t test_set2[8] = {
465 TEST16, TEST16, TEST16, TEST16, TEST16, TEST16, TEST16, TEST16
466 };
467
468 uint16_t answ_set0[8] = {
469 16, 15, 14, 13, 12, 11, 10, 9
470 };
471
472 uint16_t answ_set1[8] = {
473 8, 7, 6, 5, 4, 3, 2, 1
474 };
475 uint16_t answ_set2[8] = {
476 0, 0, 0, 0, 0, 0, 0, 0
477 };
478
479 RUN_TEST (test_set0, answ_set0, 128, 16, 0, 8);
480 RUN_TEST (test_set1, answ_set1, 128, 16, 0, 8);
481 RUN_TEST (test_set2, answ_set2, 128, 16, 0, 1);
482
483 return 0;
484 }
485
486 /* ASM scan near test for signed version. */
487
488 int
test_vclzq_u32()489 test_vclzq_u32 ()
490 {
491 int i;
492 uint32x4_t a;
493 uint32x4_t b;
494
495 uint32_t test_set0[4] = { TEST0, TEST1, TEST2, TEST3 };
496 uint32_t test_set1[4] = { TEST4, TEST5, TEST6, TEST7 };
497 uint32_t test_set2[4] = { TEST8, TEST9, TEST10, TEST11 };
498 uint32_t test_set3[4] = { TEST12, TEST13, TEST14, TEST15 };
499 uint32_t test_set4[4] = { TEST16, TEST17, TEST18, TEST19 };
500 uint32_t test_set5[4] = { TEST20, TEST21, TEST22, TEST23 };
501 uint32_t test_set6[4] = { TEST24, TEST25, TEST26, TEST27 };
502 uint32_t test_set7[4] = { TEST28, TEST29, TEST30, TEST31 };
503 uint32_t test_set8[4] = { TEST32, TEST32, TEST32, TEST32 };
504
505 uint32_t answ_set0[4] = { 32, 31, 30, 29 };
506 uint32_t answ_set1[4] = { 28, 27, 26, 25 };
507 uint32_t answ_set2[4] = { 24, 23, 22, 21 };
508 uint32_t answ_set3[4] = { 20, 19, 18, 17 };
509 uint32_t answ_set4[4] = { 16, 15, 14, 13 };
510 uint32_t answ_set5[4] = { 12, 11, 10, 9 };
511 uint32_t answ_set6[4] = { 8, 7, 6, 5 };
512 uint32_t answ_set7[4] = { 4, 3, 2, 1 };
513 uint32_t answ_set8[4] = { 0, 0, 0, 0 };
514
515 RUN_TEST (test_set0, answ_set0, 128, 32, 0, 4);
516 RUN_TEST (test_set1, answ_set1, 128, 32, 0, 4);
517 RUN_TEST (test_set2, answ_set2, 128, 32, 0, 4);
518 RUN_TEST (test_set3, answ_set3, 128, 32, 0, 4);
519 RUN_TEST (test_set4, answ_set4, 128, 32, 0, 1);
520
521 return 0;
522 }
523
524 /* ASM scan near test for signed version. */
525
526 int
main(int argc,char ** argv)527 main (int argc, char **argv)
528 {
529
530 if (test_vclz_s8 ())
531 abort ();
532
533 if (test_vclz_s16 ())
534 abort ();
535
536 if (test_vclz_s32 ())
537 abort ();
538
539 if (test_vclzq_s8 ())
540 abort ();
541
542 if (test_vclzq_s16 ())
543 abort ();
544
545 if (test_vclzq_s32 ())
546 abort ();
547
548 if (test_vclz_u8 ())
549 abort ();
550
551 if (test_vclz_u16 ())
552 abort ();
553
554 if (test_vclz_u32 ())
555 abort ();
556
557 if (test_vclzq_u8 ())
558 abort ();
559
560 if (test_vclzq_u16 ())
561 abort ();
562
563 if (test_vclzq_u32 ())
564 abort ();
565
566 return 0;
567 }
568
569