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