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
test_vmax_f32(float32x2_t __a,float32x2_t __b)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
test_vmax_s8(int8x8_t __a,int8x8_t __b)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
test_vmax_u8(uint8x8_t __a,uint8x8_t __b)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
test_vmax_s16(int16x4_t __a,int16x4_t __b)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
test_vmax_u16(uint16x4_t __a,uint16x4_t __b)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
test_vmax_s32(int32x2_t __a,int32x2_t __b)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
test_vmax_u32(uint32x2_t __a,uint32x2_t __b)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
test_vmaxq_f32(float32x4_t __a,float32x4_t __b)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
test_vmaxq_f64(float64x2_t __a,float64x2_t __b)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
test_vmaxq_s8(int8x16_t __a,int8x16_t __b)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
test_vmaxq_u8(uint8x16_t __a,uint8x16_t __b)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
test_vmaxq_s16(int16x8_t __a,int16x8_t __b)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
test_vmaxq_u16(uint16x8_t __a,uint16x8_t __b)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
test_vmaxq_s32(int32x4_t __a,int32x4_t __b)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
test_vmaxq_u32(uint32x4_t __a,uint32x4_t __b)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
test_vmin_f32(float32x2_t __a,float32x2_t __b)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
test_vmin_s8(int8x8_t __a,int8x8_t __b)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
test_vmin_u8(uint8x8_t __a,uint8x8_t __b)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
test_vmin_s16(int16x4_t __a,int16x4_t __b)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
test_vmin_u16(uint16x4_t __a,uint16x4_t __b)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
test_vmin_s32(int32x2_t __a,int32x2_t __b)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
test_vmin_u32(uint32x2_t __a,uint32x2_t __b)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
test_vminq_f32(float32x4_t __a,float32x4_t __b)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
test_vminq_f64(float64x2_t __a,float64x2_t __b)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
test_vminq_s8(int8x16_t __a,int8x16_t __b)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
test_vminq_u8(uint8x16_t __a,uint8x16_t __b)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
test_vminq_s16(int16x8_t __a,int16x8_t __b)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
test_vminq_u16(uint16x8_t __a,uint16x8_t __b)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
test_vminq_s32(int32x4_t __a,int32x4_t __b)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
test_vminq_u32(uint32x4_t __a,uint32x4_t __b)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
test_vpadd_s8(int8x8_t __a,int8x8_t __b)250 test_vpadd_s8 (int8x8_t __a, int8x8_t __b)
251 {
252 return vpadd_s8(__a, __b);
253 }
254
255 uint8x8_t
test_vpadd_u8(uint8x8_t __a,uint8x8_t __b)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
test_vpadd_s16(int16x4_t __a,int16x4_t __b)264 test_vpadd_s16 (int16x4_t __a, int16x4_t __b)
265 {
266 return vpadd_s16(__a, __b);
267 }
268
269 uint16x4_t
test_vpadd_u16(uint16x4_t __a,uint16x4_t __b)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
test_vpadd_s32(int32x2_t __a,int32x2_t __b)278 test_vpadd_s32 (int32x2_t __a, int32x2_t __b)
279 {
280 return vpadd_s32(__a, __b);
281 }
282
283 uint32x2_t
test_vpadd_u32(uint32x2_t __a,uint32x2_t __b)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
test_vqdmlal_s16(int32x4_t __a,int16x4_t __b,int16x4_t __c)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
test_vqdmlal_high_s16(int32x4_t __a,int16x8_t __b,int16x8_t __c)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
test_vqdmlal_high_lane_s16(int32x4_t a,int16x8_t b,int16x4_t c)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
test_vqdmlal_high_laneq_s16(int32x4_t a,int16x8_t b,int16x8_t c)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
test_vqdmlal_high_n_s16(int32x4_t __a,int16x8_t __b,int16_t __c)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
test_vqdmlal_lane_s16(int32x4_t a,int16x4_t b,int16x4_t c)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
test_vqdmlal_laneq_s16(int32x4_t a,int16x4_t b,int16x8_t c)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
test_vqdmlal_n_s16(int32x4_t __a,int16x4_t __b,int16_t __c)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
test_vqdmlal_s32(int64x2_t __a,int32x2_t __b,int32x2_t __c)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
test_vqdmlal_high_s32(int64x2_t __a,int32x4_t __b,int32x4_t __c)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
test_vqdmlal_high_lane_s32(int64x2_t __a,int32x4_t __b,int32x2_t __c)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
test_vqdmlal_high_laneq_s32(int64x2_t __a,int32x4_t __b,int32x4_t __c)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
test_vqdmlal_high_n_s32(int64x2_t __a,int32x4_t __b,int32_t __c)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
test_vqdmlal_lane_s32(int64x2_t __a,int32x2_t __b,int32x2_t __c)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
test_vqdmlal_laneq_s32(int64x2_t __a,int32x2_t __b,int32x4_t __c)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
test_vqdmlal_n_s32(int64x2_t __a,int32x2_t __b,int32_t __c)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
test_vqdmlsl_s16(int32x4_t __a,int16x4_t __b,int16x4_t __c)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
test_vqdmlsl_high_s16(int32x4_t __a,int16x8_t __b,int16x8_t __c)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
test_vqdmlsl_high_lane_s16(int32x4_t a,int16x8_t b,int16x4_t c)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
test_vqdmlsl_high_laneq_s16(int32x4_t a,int16x8_t b,int16x8_t c)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
test_vqdmlsl_high_n_s16(int32x4_t __a,int16x8_t __b,int16_t __c)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
test_vqdmlsl_lane_s16(int32x4_t a,int16x4_t b,int16x4_t c)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
test_vqdmlsl_laneq_s16(int32x4_t a,int16x4_t b,int16x8_t c)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
test_vqdmlsl_n_s16(int32x4_t __a,int16x4_t __b,int16_t __c)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
test_vqdmlsl_s32(int64x2_t __a,int32x2_t __b,int32x2_t __c)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
test_vqdmlsl_high_s32(int64x2_t __a,int32x4_t __b,int32x4_t __c)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
test_vqdmlsl_high_lane_s32(int64x2_t __a,int32x4_t __b,int32x2_t __c)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
test_vqdmlsl_high_laneq_s32(int64x2_t __a,int32x4_t __b,int32x4_t __c)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
test_vqdmlsl_high_n_s32(int64x2_t __a,int32x4_t __b,int32_t __c)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
test_vqdmlsl_lane_s32(int64x2_t __a,int32x2_t __b,int32x2_t __c)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
test_vqdmlsl_laneq_s32(int64x2_t __a,int32x2_t __b,int32x4_t __c)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
test_vqdmlsl_n_s32(int64x2_t __a,int32x2_t __b,int32_t __c)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
test_vqdmull_s16(int16x4_t __a,int16x4_t __b)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
test_vqdmull_high_s16(int16x8_t __a,int16x8_t __b)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
test_vqdmull_high_lane_s16(int16x8_t a,int16x4_t b)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
test_vqdmull_high_laneq_s16(int16x8_t a,int16x8_t b)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
test_vqdmull_high_n_s16(int16x8_t __a,int16_t __b)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
test_vqdmull_lane_s16(int16x4_t a,int16x4_t b)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
test_vqdmull_laneq_s16(int16x4_t a,int16x8_t b)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
test_vqdmull_n_s16(int16x4_t __a,int16_t __b)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
test_vqdmull_s32(int32x2_t __a,int32x2_t __b)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
test_vqdmull_high_s32(int32x4_t __a,int32x4_t __b)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
test_vqdmull_high_lane_s32(int32x4_t __a,int32x2_t __b)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
test_vqdmull_high_laneq_s32(int32x4_t __a,int32x4_t __b)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
test_vqdmull_high_n_s32(int32x4_t __a,int32_t __b)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
test_vqdmull_lane_s32(int32x2_t __a,int32x2_t __b)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
test_vqdmull_laneq_s32(int32x2_t __a,int32x4_t __b)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
test_vqdmull_n_s32(int32x2_t __a,int32_t __b)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
test_vshll_n_s32(int32x2_t __a)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
test_vshll_n_u32(uint32x2_t __a)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
test_vshll_n_s32_2(int32x2_t __a)644 test_vshll_n_s32_2 (int32x2_t __a)
645 {
646 return vshll_n_s32 (__a, 32);
647 }
648
649 uint64x2_t
test_vshll_n_u32_2(uint32x2_t __a)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
test_vshll_n_s16(int16x4_t __a)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
test_vshll_n_u16(uint16x4_t __a)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
test_vshll_n_s16_2(int16x4_t __a)674 test_vshll_n_s16_2 (int16x4_t __a)
675 {
676 return vshll_n_s16 (__a, 16);
677 }
678
679 uint32x4_t
test_vshll_n_u16_2(uint16x4_t __a)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
test_vshll_n_s8(int8x8_t __a)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
test_vshll_n_u8(uint8x8_t __a)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
test_vshll_n_s8_2(int8x8_t __a)704 test_vshll_n_s8_2 (int8x8_t __a)
705 {
706 return vshll_n_s8 (__a, 8);
707 }
708
709 uint16x8_t
test_vshll_n_u8_2(uint8x8_t __a)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
test_vshll_high_n_s32(int32x4_t __a)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
test_vshll_high_n_u32(uint32x4_t __a)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
test_vshll_high_n_s32_2(int32x4_t __a)734 test_vshll_high_n_s32_2 (int32x4_t __a)
735 {
736 return vshll_high_n_s32 (__a, 32);
737 }
738
739 uint64x2_t
test_vshll_high_n_u32_2(uint32x4_t __a)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
test_vshll_high_n_s16(int16x8_t __a)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
test_vshll_high_n_u16(uint16x8_t __a)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
test_vshll_high_n_s16_2(int16x8_t __a)764 test_vshll_high_n_s16_2 (int16x8_t __a)
765 {
766 return vshll_high_n_s16 (__a, 16);
767 }
768
769 uint32x4_t
test_vshll_high_n_u16_2(uint16x8_t __a)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
test_vshll_high_n_s8(int8x16_t __a)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
test_vshll_high_n_u8(uint8x16_t __a)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
test_vshll_high_n_s8_2(int8x16_t __a)794 test_vshll_high_n_s8_2 (int8x16_t __a)
795 {
796 return vshll_high_n_s8 (__a, 8);
797 }
798
799 uint16x8_t
test_vshll_high_n_u8_2(uint8x16_t __a)800 test_vshll_high_n_u8_2 (uint8x16_t __a)
801 {
802 return vshll_high_n_u8 (__a, 8);
803 }
804