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