1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3
4 #include "arm_neon.h"
5
6
7 /* { dg-final { scan-assembler-times "\\tfmax\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
8
9 float32x2_t
10 test_vmax_f32 (float32x2_t __a, float32x2_t __b)
11 {
12 return vmax_f32(__a, __b);
13 }
14
15 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
16
17 int8x8_t
18 test_vmax_s8 (int8x8_t __a, int8x8_t __b)
19 {
20 return vmax_s8(__a, __b);
21 }
22
23 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
24
25 uint8x8_t
26 test_vmax_u8 (uint8x8_t __a, uint8x8_t __b)
27 {
28 return vmax_u8(__a, __b);
29 }
30
31 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
32
33 int16x4_t
34 test_vmax_s16 (int16x4_t __a, int16x4_t __b)
35 {
36 return vmax_s16(__a, __b);
37 }
38
39 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
40
41 uint16x4_t
42 test_vmax_u16 (uint16x4_t __a, uint16x4_t __b)
43 {
44 return vmax_u16(__a, __b);
45 }
46
47 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
48
49 int32x2_t
50 test_vmax_s32 (int32x2_t __a, int32x2_t __b)
51 {
52 return vmax_s32(__a, __b);
53 }
54
55 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
56
57 uint32x2_t
58 test_vmax_u32 (uint32x2_t __a, uint32x2_t __b)
59 {
60 return vmax_u32(__a, __b);
61 }
62
63 /* { dg-final { scan-assembler-times "\\tfmax\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
64
65 float32x4_t
66 test_vmaxq_f32 (float32x4_t __a, float32x4_t __b)
67 {
68 return vmaxq_f32(__a, __b);
69 }
70
71 /* { dg-final { scan-assembler-times "\\tfmax\\tv\[0-9\]+\.2d, v\[0-9\].2d, v\[0-9\].2d" 1 } } */
72
73 float64x2_t
74 test_vmaxq_f64 (float64x2_t __a, float64x2_t __b)
75 {
76 return vmaxq_f64(__a, __b);
77 }
78
79 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
80
81 int8x16_t
82 test_vmaxq_s8 (int8x16_t __a, int8x16_t __b)
83 {
84 return vmaxq_s8(__a, __b);
85 }
86
87 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
88
89 uint8x16_t
90 test_vmaxq_u8 (uint8x16_t __a, uint8x16_t __b)
91 {
92 return vmaxq_u8(__a, __b);
93 }
94
95 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
96
97 int16x8_t
98 test_vmaxq_s16 (int16x8_t __a, int16x8_t __b)
99 {
100 return vmaxq_s16(__a, __b);
101 }
102
103 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
104
105 uint16x8_t
106 test_vmaxq_u16 (uint16x8_t __a, uint16x8_t __b)
107 {
108 return vmaxq_u16(__a, __b);
109 }
110
111 /* { dg-final { scan-assembler-times "\\tsmax\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
112
113 int32x4_t
114 test_vmaxq_s32 (int32x4_t __a, int32x4_t __b)
115 {
116 return vmaxq_s32(__a, __b);
117 }
118
119 /* { dg-final { scan-assembler-times "\\tumax\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
120
121 uint32x4_t
122 test_vmaxq_u32 (uint32x4_t __a, uint32x4_t __b)
123 {
124 return vmaxq_u32(__a, __b);
125 }
126
127 /* { dg-final { scan-assembler-times "\\tfmin\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
128
129 float32x2_t
130 test_vmin_f32 (float32x2_t __a, float32x2_t __b)
131 {
132 return vmin_f32(__a, __b);
133 }
134
135 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
136
137 int8x8_t
138 test_vmin_s8 (int8x8_t __a, int8x8_t __b)
139 {
140 return vmin_s8(__a, __b);
141 }
142
143 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 1 } } */
144
145 uint8x8_t
146 test_vmin_u8 (uint8x8_t __a, uint8x8_t __b)
147 {
148 return vmin_u8(__a, __b);
149 }
150
151 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
152
153 int16x4_t
154 test_vmin_s16 (int16x4_t __a, int16x4_t __b)
155 {
156 return vmin_s16(__a, __b);
157 }
158
159 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 1 } } */
160
161 uint16x4_t
162 test_vmin_u16 (uint16x4_t __a, uint16x4_t __b)
163 {
164 return vmin_u16(__a, __b);
165 }
166
167 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
168
169 int32x2_t
170 test_vmin_s32 (int32x2_t __a, int32x2_t __b)
171 {
172 return vmin_s32(__a, __b);
173 }
174
175 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 1 } } */
176
177 uint32x2_t
178 test_vmin_u32 (uint32x2_t __a, uint32x2_t __b)
179 {
180 return vmin_u32(__a, __b);
181 }
182
183 /* { dg-final { scan-assembler-times "\\tfmin\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
184
185 float32x4_t
186 test_vminq_f32 (float32x4_t __a, float32x4_t __b)
187 {
188 return vminq_f32(__a, __b);
189 }
190
191 /* { dg-final { scan-assembler-times "\\tfmin\\tv\[0-9\]+\.2d, v\[0-9\].2d, v\[0-9\].2d" 1 } } */
192
193 float64x2_t
194 test_vminq_f64 (float64x2_t __a, float64x2_t __b)
195 {
196 return vminq_f64(__a, __b);
197 }
198
199 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
200
201 int8x16_t
202 test_vminq_s8 (int8x16_t __a, int8x16_t __b)
203 {
204 return vminq_s8(__a, __b);
205 }
206
207 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.16b, v\[0-9\].16b, v\[0-9\].16b" 1 } } */
208
209 uint8x16_t
210 test_vminq_u8 (uint8x16_t __a, uint8x16_t __b)
211 {
212 return vminq_u8(__a, __b);
213 }
214
215 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
216
217 int16x8_t
218 test_vminq_s16 (int16x8_t __a, int16x8_t __b)
219 {
220 return vminq_s16(__a, __b);
221 }
222
223 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.8h, v\[0-9\].8h, v\[0-9\].8h" 1 } } */
224
225 uint16x8_t
226 test_vminq_u16 (uint16x8_t __a, uint16x8_t __b)
227 {
228 return vminq_u16(__a, __b);
229 }
230
231 /* { dg-final { scan-assembler-times "\\tsmin\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
232
233 int32x4_t
234 test_vminq_s32 (int32x4_t __a, int32x4_t __b)
235 {
236 return vminq_s32(__a, __b);
237 }
238
239 /* { dg-final { scan-assembler-times "\\tumin\\tv\[0-9\]+\.4s, v\[0-9\].4s, v\[0-9\].4s" 1 } } */
240
241 uint32x4_t
242 test_vminq_u32 (uint32x4_t __a, uint32x4_t __b)
243 {
244 return vminq_u32(__a, __b);
245 }
246
247 /* { dg-final { scan-assembler-times "\\taddp\\tv\[0-9\]+\.8b, v\[0-9\].8b, v\[0-9\].8b" 2 } } */
248
249 int8x8_t
250 test_vpadd_s8 (int8x8_t __a, int8x8_t __b)
251 {
252 return vpadd_s8(__a, __b);
253 }
254
255 uint8x8_t
256 test_vpadd_u8 (uint8x8_t __a, uint8x8_t __b)
257 {
258 return vpadd_u8(__a, __b);
259 }
260
261 /* { dg-final { scan-assembler-times "\\taddp\\tv\[0-9\]+\.4h, v\[0-9\].4h, v\[0-9\].4h" 2 } } */
262
263 int16x4_t
264 test_vpadd_s16 (int16x4_t __a, int16x4_t __b)
265 {
266 return vpadd_s16(__a, __b);
267 }
268
269 uint16x4_t
270 test_vpadd_u16 (uint16x4_t __a, uint16x4_t __b)
271 {
272 return vpadd_u16(__a, __b);
273 }
274
275 /* { dg-final { scan-assembler-times "\\taddp\\tv\[0-9\]+\.2s, v\[0-9\].2s, v\[0-9\].2s" 2 } } */
276
277 int32x2_t
278 test_vpadd_s32 (int32x2_t __a, int32x2_t __b)
279 {
280 return vpadd_s32(__a, __b);
281 }
282
283 uint32x2_t
284 test_vpadd_u32 (uint32x2_t __a, uint32x2_t __b)
285 {
286 return vpadd_u32(__a, __b);
287 }
288
289 /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 1 } } */
290
291 int32x4_t
292 test_vqdmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
293 {
294 return vqdmlal_s16 (__a, __b, __c);
295 }
296
297 /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */
298
299 int32x4_t
300 test_vqdmlal_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
301 {
302 return vqdmlal_high_s16 (__a, __b, __c);
303 }
304
305 /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
306
307 int32x4_t
308 test_vqdmlal_high_lane_s16 (int32x4_t a, int16x8_t b, int16x4_t c)
309 {
310 return vqdmlal_high_lane_s16 (a, b, c, 3);
311 }
312
313 int32x4_t
314 test_vqdmlal_high_laneq_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
315 {
316 return vqdmlal_high_laneq_s16 (a, b, c, 6);
317 }
318
319 int32x4_t
320 test_vqdmlal_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
321 {
322 return vqdmlal_high_n_s16 (__a, __b, __c);
323 }
324
325 /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.h" 3 } } */
326
327 int32x4_t
328 test_vqdmlal_lane_s16 (int32x4_t a, int16x4_t b, int16x4_t c)
329 {
330 return vqdmlal_lane_s16 (a, b, c, 3);
331 }
332
333 int32x4_t
334 test_vqdmlal_laneq_s16 (int32x4_t a, int16x4_t b, int16x8_t c)
335 {
336 return vqdmlal_laneq_s16 (a, b, c, 6);
337 }
338
339 int32x4_t
340 test_vqdmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
341 {
342 return vqdmlal_n_s16 (__a, __b, __c);
343 }
344
345 /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 1 } } */
346
347 int64x2_t
348 test_vqdmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
349 {
350 return vqdmlal_s32 (__a, __b, __c);
351 }
352
353 /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
354
355 int64x2_t
356 test_vqdmlal_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
357 {
358 return vqdmlal_high_s32 (__a, __b, __c);
359 }
360
361 /* { dg-final { scan-assembler-times "\\tsqdmlal2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
362
363 int64x2_t
364 test_vqdmlal_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c)
365 {
366 return vqdmlal_high_lane_s32 (__a, __b, __c, 1);
367 }
368
369 int64x2_t
370 test_vqdmlal_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
371 {
372 return vqdmlal_high_laneq_s32 (__a, __b, __c, 3);
373 }
374
375 int64x2_t
376 test_vqdmlal_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
377 {
378 return vqdmlal_high_n_s32 (__a, __b, __c);
379 }
380
381 /* { dg-final { scan-assembler-times "\\tsqdmlal\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.s" 3 } } */
382
383 int64x2_t
384 test_vqdmlal_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
385 {
386 return vqdmlal_lane_s32 (__a, __b, __c, 1);
387 }
388
389 int64x2_t
390 test_vqdmlal_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c)
391 {
392 return vqdmlal_laneq_s32 (__a, __b, __c, 3);
393 }
394
395 int64x2_t
396 test_vqdmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
397 {
398 return vqdmlal_n_s32 (__a, __b, __c);
399 }
400
401 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 1 } } */
402
403 int32x4_t
404 test_vqdmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
405 {
406 return vqdmlsl_s16 (__a, __b, __c);
407 }
408
409 /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */
410
411 int32x4_t
412 test_vqdmlsl_high_s16 (int32x4_t __a, int16x8_t __b, int16x8_t __c)
413 {
414 return vqdmlsl_high_s16 (__a, __b, __c);
415 }
416
417 /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
418
419 int32x4_t
420 test_vqdmlsl_high_lane_s16 (int32x4_t a, int16x8_t b, int16x4_t c)
421 {
422 return vqdmlsl_high_lane_s16 (a, b, c, 3);
423 }
424
425 int32x4_t
426 test_vqdmlsl_high_laneq_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
427 {
428 return vqdmlsl_high_laneq_s16 (a, b, c, 6);
429 }
430
431 int32x4_t
432 test_vqdmlsl_high_n_s16 (int32x4_t __a, int16x8_t __b, int16_t __c)
433 {
434 return vqdmlsl_high_n_s16 (__a, __b, __c);
435 }
436
437 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.h" 3 } } */
438
439 int32x4_t
440 test_vqdmlsl_lane_s16 (int32x4_t a, int16x4_t b, int16x4_t c)
441 {
442 return vqdmlsl_lane_s16 (a, b, c, 3);
443 }
444
445 int32x4_t
446 test_vqdmlsl_laneq_s16 (int32x4_t a, int16x4_t b, int16x8_t c)
447 {
448 return vqdmlsl_laneq_s16 (a, b, c, 6);
449 }
450
451 int32x4_t
452 test_vqdmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
453 {
454 return vqdmlsl_n_s16 (__a, __b, __c);
455 }
456
457 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 1 } } */
458
459 int64x2_t
460 test_vqdmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
461 {
462 return vqdmlsl_s32 (__a, __b, __c);
463 }
464
465 /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
466
467 int64x2_t
468 test_vqdmlsl_high_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
469 {
470 return vqdmlsl_high_s32 (__a, __b, __c);
471 }
472
473 /* { dg-final { scan-assembler-times "\\tsqdmlsl2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
474
475 int64x2_t
476 test_vqdmlsl_high_lane_s32 (int64x2_t __a, int32x4_t __b, int32x2_t __c)
477 {
478 return vqdmlsl_high_lane_s32 (__a, __b, __c, 1);
479 }
480
481 int64x2_t
482 test_vqdmlsl_high_laneq_s32 (int64x2_t __a, int32x4_t __b, int32x4_t __c)
483 {
484 return vqdmlsl_high_laneq_s32 (__a, __b, __c, 3);
485 }
486
487 int64x2_t
488 test_vqdmlsl_high_n_s32 (int64x2_t __a, int32x4_t __b, int32_t __c)
489 {
490 return vqdmlsl_high_n_s32 (__a, __b, __c);
491 }
492
493 /* { dg-final { scan-assembler-times "\\tsqdmlsl\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.s" 3 } } */
494
495 int64x2_t
496 test_vqdmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
497 {
498 return vqdmlsl_lane_s32 (__a, __b, __c, 1);
499 }
500
501 int64x2_t
502 test_vqdmlsl_laneq_s32 (int64x2_t __a, int32x2_t __b, int32x4_t __c)
503 {
504 return vqdmlsl_laneq_s32 (__a, __b, __c, 3);
505 }
506
507 int64x2_t
508 test_vqdmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
509 {
510 return vqdmlsl_n_s32 (__a, __b, __c);
511 }
512
513 /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.4h" 1 } } */
514
515 int32x4_t
516 test_vqdmull_s16 (int16x4_t __a, int16x4_t __b)
517 {
518 return vqdmull_s16 (__a, __b);
519 }
520
521 /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */
522
523 int32x4_t
524 test_vqdmull_high_s16 (int16x8_t __a, int16x8_t __b)
525 {
526 return vqdmull_high_s16 (__a, __b);
527 }
528
529 /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.4s, v\[0-9\]+\.8h, v\[0-9\]+\.h" 3 } } */
530
531 int32x4_t
532 test_vqdmull_high_lane_s16 (int16x8_t a, int16x4_t b)
533 {
534 return vqdmull_high_lane_s16 (a, b, 3);
535 }
536
537 int32x4_t
538 test_vqdmull_high_laneq_s16 (int16x8_t a, int16x8_t b)
539 {
540 return vqdmull_high_laneq_s16 (a, b, 6);
541 }
542
543 int32x4_t
544 test_vqdmull_high_n_s16 (int16x8_t __a, int16_t __b)
545 {
546 return vqdmull_high_n_s16 (__a, __b);
547 }
548
549 /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.4s, v\[0-9\]+\.4h, v\[0-9\]+\.h" 3 } } */
550
551 int32x4_t
552 test_vqdmull_lane_s16 (int16x4_t a, int16x4_t b)
553 {
554 return vqdmull_lane_s16 (a, b, 3);
555 }
556
557 int32x4_t
558 test_vqdmull_laneq_s16 (int16x4_t a, int16x8_t b)
559 {
560 return vqdmull_laneq_s16 (a, b, 6);
561 }
562
563 int32x4_t
564 test_vqdmull_n_s16 (int16x4_t __a, int16_t __b)
565 {
566 return vqdmull_n_s16 (__a, __b);
567 }
568
569 /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.2s" 1 } } */
570
571 int64x2_t
572 test_vqdmull_s32 (int32x2_t __a, int32x2_t __b)
573 {
574 return vqdmull_s32 (__a, __b);
575 }
576
577 /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
578
579 int64x2_t
580 test_vqdmull_high_s32 (int32x4_t __a, int32x4_t __b)
581 {
582 return vqdmull_high_s32 (__a, __b);
583 }
584
585 /* { dg-final { scan-assembler-times "\\tsqdmull2\\tv\[0-9\]+\.2d, v\[0-9\]+\.4s, v\[0-9\]+\.s" 3 } } */
586
587 int64x2_t
588 test_vqdmull_high_lane_s32 (int32x4_t __a, int32x2_t __b)
589 {
590 return vqdmull_high_lane_s32 (__a, __b, 1);
591 }
592
593 int64x2_t
594 test_vqdmull_high_laneq_s32 (int32x4_t __a, int32x4_t __b)
595 {
596 return vqdmull_high_laneq_s32 (__a, __b, 3);
597 }
598
599 int64x2_t
600 test_vqdmull_high_n_s32 (int32x4_t __a, int32_t __b)
601 {
602 return vqdmull_high_n_s32 (__a, __b);
603 }
604
605 /* { dg-final { scan-assembler-times "\\tsqdmull\\tv\[0-9\]+\.2d, v\[0-9\]+\.2s, v\[0-9\]+\.s" 3 } } */
606
607 int64x2_t
608 test_vqdmull_lane_s32 (int32x2_t __a, int32x2_t __b)
609 {
610 return vqdmull_lane_s32 (__a, __b, 1);
611 }
612
613 int64x2_t
614 test_vqdmull_laneq_s32 (int32x2_t __a, int32x4_t __b)
615 {
616 return vqdmull_laneq_s32 (__a, __b, 1);
617 }
618
619 int64x2_t
620 test_vqdmull_n_s32 (int32x2_t __a, int32_t __b)
621 {
622 return vqdmull_n_s32 (__a, __b);
623 }
624
625 /* { dg-final { scan-assembler-times "\\tsshll\\tv\[0-9\]+\.2d" 1 } } */
626
627 int64x2_t
628 test_vshll_n_s32 (int32x2_t __a)
629 {
630 return vshll_n_s32 (__a, 9);
631 }
632
633 /* { dg-final { scan-assembler-times "\\tushll\\tv\[0-9\]+\.2d" 1 } } */
634
635 uint64x2_t
636 test_vshll_n_u32 (uint32x2_t __a)
637 {
638 return vshll_n_u32 (__a, 9);
639 }
640
641 /* { dg-final { scan-assembler-times "\\tshll\\tv\[0-9\]+\.2d" 2 } } */
642
643 int64x2_t
644 test_vshll_n_s32_2 (int32x2_t __a)
645 {
646 return vshll_n_s32 (__a, 32);
647 }
648
649 uint64x2_t
650 test_vshll_n_u32_2 (uint32x2_t __a)
651 {
652 return vshll_n_u32 (__a, 32);
653 }
654
655 /* { dg-final { scan-assembler-times "\\tsshll\\tv\[0-9\]+\.4s" 1 } } */
656
657 int32x4_t
658 test_vshll_n_s16 (int16x4_t __a)
659 {
660 return vshll_n_s16 (__a, 3);
661 }
662
663 /* { dg-final { scan-assembler-times "\\tushll\\tv\[0-9\]+\.4s" 1 } } */
664
665 uint32x4_t
666 test_vshll_n_u16 (uint16x4_t __a)
667 {
668 return vshll_n_u16 (__a, 3);
669 }
670
671 /* { dg-final { scan-assembler-times "\\tshll\\tv\[0-9\]+\.4s" 2 } } */
672
673 int32x4_t
674 test_vshll_n_s16_2 (int16x4_t __a)
675 {
676 return vshll_n_s16 (__a, 16);
677 }
678
679 uint32x4_t
680 test_vshll_n_u16_2 (uint16x4_t __a)
681 {
682 return vshll_n_u16 (__a, 16);
683 }
684
685 /* { dg-final { scan-assembler-times "\\tsshll\\tv\[0-9\]+\.8h" 1 } } */
686
687 int16x8_t
688 test_vshll_n_s8 (int8x8_t __a)
689 {
690 return vshll_n_s8 (__a, 3);
691 }
692
693 /* { dg-final { scan-assembler-times "\\tushll\\tv\[0-9\]+\.8h" 1 } } */
694
695 uint16x8_t
696 test_vshll_n_u8 (uint8x8_t __a)
697 {
698 return vshll_n_u8 (__a, 3);
699 }
700
701 /* { dg-final { scan-assembler-times "\\tshll\\tv\[0-9\]+\.8h" 2 } } */
702
703 int16x8_t
704 test_vshll_n_s8_2 (int8x8_t __a)
705 {
706 return vshll_n_s8 (__a, 8);
707 }
708
709 uint16x8_t
710 test_vshll_n_u8_2 (uint8x8_t __a)
711 {
712 return vshll_n_u8 (__a, 8);
713 }
714
715 /* { dg-final { scan-assembler-times "\\tsshll2\\tv\[0-9\]+\.2d" 1 } } */
716
717 int64x2_t
718 test_vshll_high_n_s32 (int32x4_t __a)
719 {
720 return vshll_high_n_s32 (__a, 9);
721 }
722
723 /* { dg-final { scan-assembler-times "\\tushll2\\tv\[0-9\]+\.2d" 1 } } */
724
725 uint64x2_t
726 test_vshll_high_n_u32 (uint32x4_t __a)
727 {
728 return vshll_high_n_u32 (__a, 9);
729 }
730
731 /* { dg-final { scan-assembler-times "\\tshll2\\tv\[0-9\]+\.2d" 2 } } */
732
733 int64x2_t
734 test_vshll_high_n_s32_2 (int32x4_t __a)
735 {
736 return vshll_high_n_s32 (__a, 32);
737 }
738
739 uint64x2_t
740 test_vshll_high_n_u32_2 (uint32x4_t __a)
741 {
742 return vshll_high_n_u32 (__a, 32);
743 }
744
745 /* { dg-final { scan-assembler-times "\\tsshll2\\tv\[0-9\]+\.4s" 1 } } */
746
747 int32x4_t
748 test_vshll_high_n_s16 (int16x8_t __a)
749 {
750 return vshll_high_n_s16 (__a, 3);
751 }
752
753 /* { dg-final { scan-assembler-times "\\tushll2\\tv\[0-9\]+\.4s" 1 } } */
754
755 uint32x4_t
756 test_vshll_high_n_u16 (uint16x8_t __a)
757 {
758 return vshll_high_n_u16 (__a, 3);
759 }
760
761 /* { dg-final { scan-assembler-times "\\tshll2\\tv\[0-9\]+\.4s" 2 } } */
762
763 int32x4_t
764 test_vshll_high_n_s16_2 (int16x8_t __a)
765 {
766 return vshll_high_n_s16 (__a, 16);
767 }
768
769 uint32x4_t
770 test_vshll_high_n_u16_2 (uint16x8_t __a)
771 {
772 return vshll_high_n_u16 (__a, 16);
773 }
774
775 /* { dg-final { scan-assembler-times "\\tsshll2\\tv\[0-9\]+\.8h" 1 } } */
776
777 int16x8_t
778 test_vshll_high_n_s8 (int8x16_t __a)
779 {
780 return vshll_high_n_s8 (__a, 3);
781 }
782
783 /* { dg-final { scan-assembler-times "\\tushll2\\tv\[0-9\]+\.8h" 1 } } */
784
785 uint16x8_t
786 test_vshll_high_n_u8 (uint8x16_t __a)
787 {
788 return vshll_high_n_u8 (__a, 3);
789 }
790
791 /* { dg-final { scan-assembler-times "\\tshll2\\tv\[0-9\]+\.8h" 2 } } */
792
793 int16x8_t
794 test_vshll_high_n_s8_2 (int8x16_t __a)
795 {
796 return vshll_high_n_s8 (__a, 8);
797 }
798
799 uint16x8_t
800 test_vshll_high_n_u8_2 (uint8x16_t __a)
801 {
802 return vshll_high_n_u8 (__a, 8);
803 }