1 /* { dg-do compile } */
2 /* { dg-require-effective-target arm_simd32_ok } */
3 /* { dg-add-options arm_simd32 } */
4 
5 #include <arm_acle.h>
6 
7 int16x2_t
test_sxtab16(int16x2_t a,int8x4_t b)8 test_sxtab16 (int16x2_t a, int8x4_t b)
9 {
10   return __sxtab16 (a, b);
11 }
12 
13 /* { dg-final { scan-assembler-times "sxtab16\t...?, ...?, ...?" 1 } } */
14 
15 
16 int16x2_t
test_sxtb16(int8x4_t a)17 test_sxtb16 (int8x4_t a)
18 {
19   return __sxtb16 (a);
20 }
21 
22 /* { dg-final { scan-assembler-times "sxtab16\t...?, ...?" 1 } } */
23 
24 int8x4_t
test_qadd8(int8x4_t a,int8x4_t b)25 test_qadd8 (int8x4_t a, int8x4_t b)
26 {
27   return __qadd8 (a, b);
28 }
29 
30 /* { dg-final { scan-assembler-times "\tqadd8\t...?, ...?, ...?" 1 } } */
31 
32 int8x4_t
test_qsub8(int8x4_t a,int8x4_t b)33 test_qsub8 (int8x4_t a, int8x4_t b)
34 {
35   return __qsub8 (a, b);
36 }
37 
38 /* { dg-final { scan-assembler-times "\tqsub8\t...?, ...?, ...?" 1 } } */
39 
40 int8x4_t
test_shadd8(int8x4_t a,int8x4_t b)41 test_shadd8 (int8x4_t a, int8x4_t b)
42 {
43   return __shadd8 (a, b);
44 }
45 
46 /* { dg-final { scan-assembler-times "\tshadd8\t...?, ...?, ...?" 1 } } */
47 
48 int8x4_t
test_shsub8(int8x4_t a,int8x4_t b)49 test_shsub8 (int8x4_t a, int8x4_t b)
50 {
51   return __shsub8 (a, b);
52 }
53 
54 /* { dg-final { scan-assembler-times "\tshsub8\t...?, ...?, ...?" 1 } } */
55 
56 uint8x4_t
test_uhadd8(uint8x4_t a,uint8x4_t b)57 test_uhadd8 (uint8x4_t a, uint8x4_t b)
58 {
59   return __uhadd8 (a, b);
60 }
61 
62 /* { dg-final { scan-assembler-times "\tuhadd8\t...?, ...?, ...?" 1 } } */
63 
64 uint8x4_t
test_uhsub8(uint8x4_t a,uint8x4_t b)65 test_uhsub8 (uint8x4_t a, uint8x4_t b)
66 {
67   return __uhsub8 (a, b);
68 }
69 
70 /* { dg-final { scan-assembler-times "\tuhsub8\t...?, ...?, ...?" 1 } } */
71 
72 uint8x4_t
test_uqadd8(uint8x4_t a,uint8x4_t b)73 test_uqadd8 (uint8x4_t a, uint8x4_t b)
74 {
75   return __uqadd8 (a, b);
76 }
77 
78 /* { dg-final { scan-assembler-times "\tuqadd8\t...?, ...?, ...?" 1 } } */
79 
80 uint8x4_t
test_uqsub8(uint8x4_t a,uint8x4_t b)81 test_uqsub8 (uint8x4_t a, uint8x4_t b)
82 {
83   return __uqsub8 (a, b);
84 }
85 
86 /* { dg-final { scan-assembler-times "\tuqsub8\t...?, ...?, ...?" 1 } } */
87 
88 int16x2_t
test_qadd16(int16x2_t a,int16x2_t b)89 test_qadd16 (int16x2_t a, int16x2_t b)
90 {
91   return __qadd16 (a, b);
92 }
93 
94 /* { dg-final { scan-assembler-times "\tqadd16\t...?, ...?, ...?" 1 } } */
95 
96 int16x2_t
test_qasx(int16x2_t a,int16x2_t b)97 test_qasx (int16x2_t a, int16x2_t b)
98 {
99   return __qasx (a, b);
100 }
101 
102 /* { dg-final { scan-assembler-times "\tqasx\t...?, ...?, ...?" 1 } } */
103 
104 int16x2_t
test_qsax(int16x2_t a,int16x2_t b)105 test_qsax (int16x2_t a, int16x2_t b)
106 {
107   return __qsax (a, b);
108 }
109 
110 /* { dg-final { scan-assembler-times "\tqsax\t...?, ...?, ...?" 1 } } */
111 
112 int16x2_t
test_qsub16(int16x2_t a,int16x2_t b)113 test_qsub16 (int16x2_t a, int16x2_t b)
114 {
115   return __qsub16 (a, b);
116 }
117 
118 /* { dg-final { scan-assembler-times "\tqsub16\t...?, ...?, ...?" 1 } } */
119 
120 int16x2_t
test_shadd16(int16x2_t a,int16x2_t b)121 test_shadd16 (int16x2_t a, int16x2_t b)
122 {
123   return __shadd16 (a, b);
124 }
125 
126 /* { dg-final { scan-assembler-times "\tshadd16\t...?, ...?, ...?" 1 } } */
127 
128 int16x2_t
test_shasx(int16x2_t a,int16x2_t b)129 test_shasx (int16x2_t a, int16x2_t b)
130 {
131   return __shasx (a, b);
132 }
133 
134 /* { dg-final { scan-assembler-times "\tshasx\t...?, ...?, ...?" 1 } } */
135 
136 int16x2_t
test_shsax(int16x2_t a,int16x2_t b)137 test_shsax (int16x2_t a, int16x2_t b)
138 {
139   return __shsax (a, b);
140 }
141 
142 /* { dg-final { scan-assembler-times "\tshsax\t...?, ...?, ...?" 1 } } */
143 
144 int16x2_t
test_shsub16(int16x2_t a,int16x2_t b)145 test_shsub16 (int16x2_t a, int16x2_t b)
146 {
147   return __shsub16 (a, b);
148 }
149 
150 /* { dg-final { scan-assembler-times "\tshsub16\t...?, ...?, ...?" 1 } } */
151 
152 uint16x2_t
test_uhadd16(uint16x2_t a,uint16x2_t b)153 test_uhadd16 (uint16x2_t a, uint16x2_t b)
154 {
155   return __uhadd16 (a, b);
156 }
157 
158 /* { dg-final { scan-assembler-times "\tuhadd16\t...?, ...?, ...?" 1 } } */
159 
160 uint16x2_t
test_uhasx(uint16x2_t a,uint16x2_t b)161 test_uhasx (uint16x2_t a, uint16x2_t b)
162 {
163   return __uhasx (a, b);
164 }
165 
166 /* { dg-final { scan-assembler-times "\tuhasx\t...?, ...?, ...?" 1 } } */
167 
168 uint16x2_t
test_uhsax(uint16x2_t a,uint16x2_t b)169 test_uhsax (uint16x2_t a, uint16x2_t b)
170 {
171   return __uhsax (a, b);
172 }
173 
174 /* { dg-final { scan-assembler-times "\tuhsax\t...?, ...?, ...?" 1 } } */
175 
176 uint16x2_t
test_uhsub16(uint16x2_t a,uint16x2_t b)177 test_uhsub16 (uint16x2_t a, uint16x2_t b)
178 {
179   return __uhsub16 (a, b);
180 }
181 
182 /* { dg-final { scan-assembler-times "\tuhsub16\t...?, ...?, ...?" 1 } } */
183 
184 uint16x2_t
test_uqadd16(uint16x2_t a,uint16x2_t b)185 test_uqadd16 (uint16x2_t a, uint16x2_t b)
186 {
187   return __uqadd16 (a, b);
188 }
189 
190 /* { dg-final { scan-assembler-times "\tuqadd16\t...?, ...?, ...?" 1 } } */
191 
192 uint16x2_t
test_uqasx(uint16x2_t a,uint16x2_t b)193 test_uqasx (uint16x2_t a, uint16x2_t b)
194 {
195   return __uqasx (a, b);
196 }
197 
198 /* { dg-final { scan-assembler-times "\tuqasx\t...?, ...?, ...?" 1 } } */
199 
200 uint16x2_t
test_uqsax(uint16x2_t a,uint16x2_t b)201 test_uqsax (uint16x2_t a, uint16x2_t b)
202 {
203   return __uqsax (a, b);
204 }
205 
206 /* { dg-final { scan-assembler-times "\tuqsax\t...?, ...?, ...?" 1 } } */
207 
208 uint16x2_t
test_uqsub16(uint16x2_t a,uint16x2_t b)209 test_uqsub16 (uint16x2_t a, uint16x2_t b)
210 {
211   return __uqsub16 (a, b);
212 }
213 
214 /* { dg-final { scan-assembler-times "\tuqsub16\t...?, ...?, ...?" 1 } } */
215 
216 int32_t
test_smusd(int16x2_t a,int16x2_t b)217 test_smusd (int16x2_t a, int16x2_t b)
218 {
219   return __smusd (a, b);
220 }
221 
222 /* { dg-final { scan-assembler-times "\tsmusd\t...?, ...?, ...?" 1 } } */
223 
224 int32_t
test_smusdx(int16x2_t a,int16x2_t b)225 test_smusdx (int16x2_t a, int16x2_t b)
226 {
227   return __smusdx (a, b);
228 }
229 
230 /* { dg-final { scan-assembler-times "\tsmusdx\t...?, ...?, ...?" 1 } } */
231 
232 uint32_t
test_usad8(uint8x4_t a,uint8x4_t b)233 test_usad8 (uint8x4_t a, uint8x4_t b)
234 {
235   return __usad8 (a, b);
236 }
237 
238 /* { dg-final { scan-assembler-times "\tusad8\t...?, ...?, ...?" 1 } } */
239 
240 uint32_t
test_usada8(uint8x4_t a,uint8x4_t b,uint32_t c)241 test_usada8 (uint8x4_t a, uint8x4_t b, uint32_t c)
242 {
243   return __usada8 (a, b, c);
244 }
245 
246 /* { dg-final { scan-assembler-times "\tusada8\t...?, ...?, ...?, ...?" 1 } } */
247 
248 int64_t
test_smlald(int16x2_t a,int16x2_t b,int64_t c)249 test_smlald (int16x2_t a, int16x2_t b, int64_t c)
250 {
251   return __smlald (a, b, c);
252 }
253 
254 /* { dg-final { scan-assembler-times "\tsmlald\t...?, ...?, ...?, ...?" 1 } } */
255 
256 int64_t
test_smlaldx(int16x2_t a,int16x2_t b,int64_t c)257 test_smlaldx (int16x2_t a, int16x2_t b, int64_t c)
258 {
259   return __smlaldx (a, b, c);
260 }
261 
262 /* { dg-final { scan-assembler-times "\tsmlaldx\t...?, ...?, ...?, ...?" 1 } } */
263 
264 int64_t
test_smlsld(int16x2_t a,int16x2_t b,int64_t c)265 test_smlsld (int16x2_t a, int16x2_t b, int64_t c)
266 {
267   return __smlsld (a, b, c);
268 }
269 
270 /* { dg-final { scan-assembler-times "\tsmlsld\t...?, ...?, ...?, ...?" 1 } } */
271 
272 int64_t
test_smlsldx(int16x2_t a,int16x2_t b,int64_t c)273 test_smlsldx (int16x2_t a, int16x2_t b, int64_t c)
274 {
275   return __smlsldx (a, b, c);
276 }
277 
278 /* { dg-final { scan-assembler-times "\tsmlsldx\t...?, ...?, ...?, ...?" 1 } } */
279 
280 int8x4_t
test_sadd8(int8x4_t a,int8x4_t b)281 test_sadd8 (int8x4_t a, int8x4_t b)
282 {
283   return __sadd8 (a, b);
284 }
285 
286 /* { dg-final { scan-assembler-times "\tsadd8\t...?, ...?, ...?" 1 } } */
287 
288 int8x4_t
test_ssub8(int8x4_t a,int8x4_t b)289 test_ssub8 (int8x4_t a, int8x4_t b)
290 {
291   return __ssub8 (a, b);
292 }
293 
294 /* { dg-final { scan-assembler-times "\tssub8\t...?, ...?, ...?" 1 } } */
295 
296 uint8x4_t
test_uadd8(uint8x4_t a,uint8x4_t b)297 test_uadd8 (uint8x4_t a, uint8x4_t b)
298 {
299   return __uadd8 (a, b);
300 }
301 
302 /* { dg-final { scan-assembler-times "\tuadd8\t...?, ...?, ...?" 1 } } */
303 
304 uint8x4_t
test_usub8(uint8x4_t a,uint8x4_t b)305 test_usub8 (uint8x4_t a, uint8x4_t b)
306 {
307   return __usub8 (a, b);
308 }
309 
310 /* { dg-final { scan-assembler-times "\tusub8\t...?, ...?, ...?" 1 } } */
311 
312 int16x2_t
test_sadd16(int16x2_t a,int16x2_t b)313 test_sadd16 (int16x2_t a, int16x2_t b)
314 {
315   return __sadd16 (a, b);
316 }
317 
318 /* { dg-final { scan-assembler-times "\tsadd8\t...?, ...?, ...?" 1 } } */
319 
320 int16x2_t
test_sasx(int16x2_t a,int16x2_t b)321 test_sasx (int16x2_t a, int16x2_t b)
322 {
323   return __sasx (a, b);
324 }
325 
326 /* { dg-final { scan-assembler-times "\tsasx\t...?, ...?, ...?" 1 } } */
327 
328 int16x2_t
test_ssax(int16x2_t a,int16x2_t b)329 test_ssax (int16x2_t a, int16x2_t b)
330 {
331   return __ssax (a, b);
332 }
333 
334 /* { dg-final { scan-assembler-times "\tssax\t...?, ...?, ...?" 1 } } */
335 
336 int16x2_t
test_ssub16(int16x2_t a,int16x2_t b)337 test_ssub16 (int16x2_t a, int16x2_t b)
338 {
339   return __ssub16 (a, b);
340 }
341 
342 /* { dg-final { scan-assembler-times "\tssub16\t...?, ...?, ...?" 1 } } */
343 
344 uint16x2_t
test_uadd16(uint16x2_t a,uint16x2_t b)345 test_uadd16 (uint16x2_t a, uint16x2_t b)
346 {
347   return __uadd16 (a, b);
348 }
349 
350 /* { dg-final { scan-assembler-times "\tuadd16\t...?, ...?, ...?" 1 } } */
351 
352 uint16x2_t
test_uasx(uint16x2_t a,uint16x2_t b)353 test_uasx (uint16x2_t a, uint16x2_t b)
354 {
355   return __uasx (a, b);
356 }
357 
358 /* { dg-final { scan-assembler-times "\tuasx\t...?, ...?, ...?" 1 } } */
359 
360 uint16x2_t
test_usax(uint16x2_t a,uint16x2_t b)361 test_usax (uint16x2_t a, uint16x2_t b)
362 {
363   return __usax (a, b);
364 }
365 
366 /* { dg-final { scan-assembler-times "\tusax\t...?, ...?, ...?" 1 } } */
367 
368 uint16x2_t
test_usub16(uint16x2_t a,uint16x2_t b)369 test_usub16 (uint16x2_t a, uint16x2_t b)
370 {
371   return __usub16 (a, b);
372 }
373 
374 /* { dg-final { scan-assembler-times "\tusub16\t...?, ...?, ...?" 1 } } */
375 
376 int32_t
test_smlad(int16x2_t a,int16x2_t b,int32_t c)377 test_smlad (int16x2_t a, int16x2_t b, int32_t c)
378 {
379   return __smlad (a, b, c);
380 }
381 
382 /* { dg-final { scan-assembler-times "\tsmlad\t...?, ...?, ...?, ...?" 1 } } */
383 
384 int32_t
test_smladx(int16x2_t a,int16x2_t b,int32_t c)385 test_smladx (int16x2_t a, int16x2_t b, int32_t c)
386 {
387   return __smladx (a, b, c);
388 }
389 
390 /* { dg-final { scan-assembler-times "\tsmladx\t...?, ...?, ...?, ...?" 1 } } */
391 
392 int32_t
test_smlsd(int16x2_t a,int16x2_t b,int32_t c)393 test_smlsd (int16x2_t a, int16x2_t b, int32_t c)
394 {
395   return __smlsd (a, b, c);
396 }
397 
398 /* { dg-final { scan-assembler-times "\tsmlsd\t...?, ...?, ...?, ...?" 1 } } */
399 
400 int32_t
test_smlsdx(int16x2_t a,int16x2_t b,int32_t c)401 test_smlsdx (int16x2_t a, int16x2_t b, int32_t c)
402 {
403   return __smlsdx (a, b, c);
404 }
405 
406 /* { dg-final { scan-assembler-times "\tsmlsdx\t...?, ...?, ...?, ...?" 1 } } */
407 
408 int32_t
test_smuad(int16x2_t a,int16x2_t b)409 test_smuad (int16x2_t a, int16x2_t b)
410 {
411   return __smuad (a, b);
412 }
413 
414 /* { dg-final { scan-assembler-times "\tsmuad\t...?, ...?, ...?" 1 } } */
415 
416 int32_t
test_smuadx(int16x2_t a,int16x2_t b)417 test_smuadx (int16x2_t a, int16x2_t b)
418 {
419   return __smuadx (a, b);
420 }
421 
422 /* { dg-final { scan-assembler-times "\tsmuadx\t...?, ...?, ...?" 1 } } */
423 
424 int16x2_t
test_ssat16(int16x2_t a)425 test_ssat16 (int16x2_t a)
426 {
427   return __ssat16 (a, 13);
428 }
429 
430 /* { dg-final { scan-assembler-times "\tssat16\t...?, #13, ...?" 1 } } */
431 
432 int16x2_t
test_usat16(int16x2_t a)433 test_usat16 (int16x2_t a)
434 {
435   return __usat16 (a, 15);
436 }
437 
438 /* { dg-final { scan-assembler-times "\tusat16\t...?, #15, ...?" 1 } } */
439