1 // REQUIRES: aarch64-registered-target
2 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +neon \
3 // RUN:   -ffp-contract=fast -S -O3 -o - %s | FileCheck %s
4 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +neon \
5 // RUN:   -S -O3 -o - %s | FileCheck %s
6 
7 // Test new aarch64 intrinsics and types
8 
9 #include <arm_neon.h>
10 
11 int16x4_t test_vmla_lane_s16(int16x4_t a, int16x4_t b, int16x4_t v) {
12   // CHECK: test_vmla_lane_s16
13   return vmla_lane_s16(a, b, v, 1);
14   // CHECK: mla {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
15 }
16 
17 int16x8_t test_vmlaq_lane_s16(int16x8_t a, int16x8_t b, int16x4_t v) {
18   // CHECK: test_vmlaq_lane_s16
19   return vmlaq_lane_s16(a, b, v, 1);
20   // CHECK: mla {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
21 }
22 
23 int32x2_t test_vmla_lane_s32(int32x2_t a, int32x2_t b, int32x2_t v) {
24   // CHECK: test_vmla_lane_s32
25   return vmla_lane_s32(a, b, v, 1);
26   // CHECK: mla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
27 }
28 
29 int32x4_t test_vmlaq_lane_s32(int32x4_t a, int32x4_t b, int32x2_t v) {
30   // CHECK: test_vmlaq_lane_s32
31   return vmlaq_lane_s32(a, b, v, 1);
32   // CHECK: mla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
33 }
34 
35 int16x4_t test_vmla_laneq_s16(int16x4_t a, int16x4_t b, int16x8_t v) {
36   // CHECK: test_vmla_laneq_s16
37   return vmla_laneq_s16(a, b, v, 1);
38   // CHECK: mla {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
39 }
40 
41 int16x8_t test_vmlaq_laneq_s16(int16x8_t a, int16x8_t b, int16x8_t v) {
42   // CHECK: test_vmlaq_laneq_s16
43   return vmlaq_laneq_s16(a, b, v, 1);
44   // CHECK: mla {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
45 }
46 
47 int32x2_t test_vmla_laneq_s32(int32x2_t a, int32x2_t b, int32x4_t v) {
48   // CHECK: test_vmla_laneq_s32
49   return vmla_laneq_s32(a, b, v, 1);
50   // CHECK: mla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
51 }
52 
53 int32x4_t test_vmlaq_laneq_s32(int32x4_t a, int32x4_t b, int32x4_t v) {
54   // CHECK: test_vmlaq_laneq_s32
55   return vmlaq_laneq_s32(a, b, v, 1);
56   // CHECK: mla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
57 }
58 
59 int16x4_t test_vmls_lane_s16(int16x4_t a, int16x4_t b, int16x4_t v) {
60   // CHECK: test_vmls_lane_s16
61   return vmls_lane_s16(a, b, v, 1);
62   // CHECK: mls {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
63 }
64 
65 int16x8_t test_vmlsq_lane_s16(int16x8_t a, int16x8_t b, int16x4_t v) {
66   // CHECK: test_vmlsq_lane_s16
67   return vmlsq_lane_s16(a, b, v, 1);
68   // CHECK: mls {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
69 }
70 
71 int32x2_t test_vmls_lane_s32(int32x2_t a, int32x2_t b, int32x2_t v) {
72   // CHECK: test_vmls_lane_s32
73   return vmls_lane_s32(a, b, v, 1);
74   // CHECK: mls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
75 }
76 
77 int32x4_t test_vmlsq_lane_s32(int32x4_t a, int32x4_t b, int32x2_t v) {
78   // CHECK: test_vmlsq_lane_s32
79   return vmlsq_lane_s32(a, b, v, 1);
80   // CHECK: mls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
81 }
82 
83 int16x4_t test_vmls_laneq_s16(int16x4_t a, int16x4_t b, int16x8_t v) {
84   // CHECK: test_vmls_laneq_s16
85   return vmls_laneq_s16(a, b, v, 1);
86   // CHECK: mls {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
87 }
88 
89 int16x8_t test_vmlsq_laneq_s16(int16x8_t a, int16x8_t b, int16x8_t v) {
90   // CHECK: test_vmlsq_laneq_s16
91   return vmlsq_laneq_s16(a, b, v, 1);
92   // CHECK: mls {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
93 }
94 
95 int32x2_t test_vmls_laneq_s32(int32x2_t a, int32x2_t b, int32x4_t v) {
96   // CHECK: test_vmls_laneq_s32
97   return vmls_laneq_s32(a, b, v, 1);
98   // CHECK: mls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
99 }
100 
101 int32x4_t test_vmlsq_laneq_s32(int32x4_t a, int32x4_t b, int32x4_t v) {
102   // CHECK: test_vmlsq_laneq_s32
103   return vmlsq_laneq_s32(a, b, v, 1);
104   // CHECK: mls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
105 }
106 
107 int16x4_t test_vmul_lane_s16(int16x4_t a, int16x4_t v) {
108   // CHECK: test_vmul_lane_s16
109   return vmul_lane_s16(a, v, 1);
110   // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
111 }
112 
113 int16x8_t test_vmulq_lane_s16(int16x8_t a, int16x4_t v) {
114   // CHECK: test_vmulq_lane_s16
115   return vmulq_lane_s16(a, v, 1);
116   // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
117 }
118 
119 int32x2_t test_vmul_lane_s32(int32x2_t a, int32x2_t v) {
120   // CHECK: test_vmul_lane_s32
121   return vmul_lane_s32(a, v, 1);
122   // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
123 }
124 
125 int32x4_t test_vmulq_lane_s32(int32x4_t a, int32x2_t v) {
126   // CHECK: test_vmulq_lane_s32
127   return vmulq_lane_s32(a, v, 1);
128   // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
129 }
130 
131 uint16x4_t test_vmul_lane_u16(uint16x4_t a, uint16x4_t v) {
132   // CHECK: test_vmul_lane_u16
133   return vmul_lane_u16(a, v, 1);
134   // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
135 }
136 
137 uint16x8_t test_vmulq_lane_u16(uint16x8_t a, uint16x4_t v) {
138   // CHECK: test_vmulq_lane_u16
139   return vmulq_lane_u16(a, v, 1);
140   // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
141 }
142 
143 uint32x2_t test_vmul_lane_u32(uint32x2_t a, uint32x2_t v) {
144   // CHECK: test_vmul_lane_u32
145   return vmul_lane_u32(a, v, 1);
146   // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
147 }
148 
149 uint32x4_t test_vmulq_lane_u32(uint32x4_t a, uint32x2_t v) {
150   // CHECK: test_vmulq_lane_u32
151   return vmulq_lane_u32(a, v, 1);
152   // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
153 }
154 
155 int16x4_t test_vmul_laneq_s16(int16x4_t a, int16x8_t v) {
156   // CHECK: test_vmul_laneq_s16
157   return vmul_laneq_s16(a, v, 1);
158   // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
159 }
160 
161 int16x8_t test_vmulq_laneq_s16(int16x8_t a, int16x8_t v) {
162   // CHECK: test_vmulq_laneq_s16
163   return vmulq_laneq_s16(a, v, 1);
164   // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
165 }
166 
167 int32x2_t test_vmul_laneq_s32(int32x2_t a, int32x4_t v) {
168   // CHECK: test_vmul_laneq_s32
169   return vmul_laneq_s32(a, v, 1);
170   // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
171 }
172 
173 int32x4_t test_vmulq_laneq_s32(int32x4_t a, int32x4_t v) {
174   // CHECK: test_vmulq_laneq_s32
175   return vmulq_laneq_s32(a, v, 1);
176   // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
177 }
178 
179 uint16x4_t test_vmul_laneq_u16(uint16x4_t a, uint16x8_t v) {
180   // CHECK: test_vmul_laneq_u16
181   return vmul_laneq_u16(a, v, 1);
182   // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
183 }
184 
185 uint16x8_t test_vmulq_laneq_u16(uint16x8_t a, uint16x8_t v) {
186   // CHECK: test_vmulq_laneq_u16
187   return vmulq_laneq_u16(a, v, 1);
188   // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
189 }
190 
191 uint32x2_t test_vmul_laneq_u32(uint32x2_t a, uint32x4_t v) {
192   // CHECK: test_vmul_laneq_u32
193   return vmul_laneq_u32(a, v, 1);
194   // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
195 }
196 
197 uint32x4_t test_vmulq_laneq_u32(uint32x4_t a, uint32x4_t v) {
198   // CHECK: test_vmulq_laneq_u32
199   return vmulq_laneq_u32(a, v, 1);
200   // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
201 }
202 
203 float32x2_t test_vfma_lane_f32(float32x2_t a, float32x2_t b, float32x2_t v) {
204   // CHECK: test_vfma_lane_f32
205   return vfma_lane_f32(a, b, v, 1);
206   // CHECK: fmla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
207 }
208 
209 float32x4_t test_vfmaq_lane_f32(float32x4_t a, float32x4_t b, float32x2_t v) {
210   // CHECK: test_vfmaq_lane_f32
211   return vfmaq_lane_f32(a, b, v, 1);
212   // CHECK: fmla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
213 }
214 
215 float32x2_t test_vfma_laneq_f32(float32x2_t a, float32x2_t b, float32x4_t v) {
216   // CHECK: test_vfma_laneq_f32
217   return vfma_laneq_f32(a, b, v, 1);
218   // CHECK: fmla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
219 }
220 
221 float32x4_t test_vfmaq_laneq_f32(float32x4_t a, float32x4_t b, float32x4_t v) {
222   // CHECK: test_vfmaq_laneq_f32
223   return vfmaq_laneq_f32(a, b, v, 1);
224   // CHECK: fmla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
225 }
226 
227 float32x2_t test_vfms_lane_f32(float32x2_t a, float32x2_t b, float32x2_t v) {
228   // CHECK: test_vfms_lane_f32
229   return vfms_lane_f32(a, b, v, 1);
230   // CHECK: fmls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
231 }
232 
233 float32x4_t test_vfmsq_lane_f32(float32x4_t a, float32x4_t b, float32x2_t v) {
234   // CHECK: test_vfmsq_lane_f32
235   return vfmsq_lane_f32(a, b, v, 1);
236   // CHECK: fmls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
237 }
238 
239 float32x2_t test_vfms_laneq_f32(float32x2_t a, float32x2_t b, float32x4_t v) {
240   // CHECK: test_vfms_laneq_f32
241   return vfms_laneq_f32(a, b, v, 1);
242   // CHECK: fmls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
243 }
244 
245 float32x4_t test_vfmsq_laneq_f32(float32x4_t a, float32x4_t b, float32x4_t v) {
246   // CHECK: test_vfmsq_laneq_f32
247   return vfmsq_laneq_f32(a, b, v, 1);
248   // CHECK: fmls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
249 }
250 
251 float64x2_t test_vfmaq_lane_f64(float64x2_t a, float64x2_t b, float64x1_t v) {
252   // CHECK: test_vfmaq_lane_f64
253   return vfmaq_lane_f64(a, b, v, 0);
254   // CHECK: fmla {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0]
255 }
256 
257 float64x2_t test_vfmaq_laneq_f64_0(float64x2_t a, float64x2_t b, float64x2_t v) {
258   // CHECK: test_vfmaq_laneq_f64
259   return vfmaq_laneq_f64(a, b, v, 0);
260   // CHECK: fmla {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0]
261 }
262 
263 float64x2_t test_vfmaq_laneq_f64(float64x2_t a, float64x2_t b, float64x2_t v) {
264   // CHECK: test_vfmaq_laneq_f64
265   return vfmaq_laneq_f64(a, b, v, 1);
266   // CHECK: fmla {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[1]
267 }
268 
269 float64x2_t test_vfmsq_lane_f64(float64x2_t a, float64x2_t b, float64x1_t v) {
270   // CHECK: test_vfmsq_lane_f64
271   return vfmsq_lane_f64(a, b, v, 0);
272   // CHECK: fmls {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0]
273 }
274 
275 float64x2_t test_vfmsq_laneq_f64_0(float64x2_t a, float64x2_t b, float64x2_t v) {
276   // CHECK: test_vfmsq_laneq_f64
277   return vfmsq_laneq_f64(a, b, v, 0);
278   // CHECK: fmls {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0]
279 }
280 
281 float64x2_t test_vfmsq_laneq_f64(float64x2_t a, float64x2_t b, float64x2_t v) {
282   // CHECK: test_vfmsq_laneq_f64
283   return vfmsq_laneq_f64(a, b, v, 1);
284   // CHECK: fmls {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[1]
285 }
286 
287 int32x4_t test_vmlal_lane_s16(int32x4_t a, int16x4_t b, int16x4_t v) {
288   // CHECK: test_vmlal_lane_s16
289   return vmlal_lane_s16(a, b, v, 1);
290   // CHECK: smlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
291 }
292 
293 int64x2_t test_vmlal_lane_s32(int64x2_t a, int32x2_t b, int32x2_t v) {
294   // CHECK: test_vmlal_lane_s32
295   return vmlal_lane_s32(a, b, v, 1);
296   // CHECK: smlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
297 }
298 
299 int32x4_t test_vmlal_laneq_s16(int32x4_t a, int16x4_t b, int16x8_t v) {
300   // CHECK: test_vmlal_laneq_s16
301   return vmlal_laneq_s16(a, b, v, 1);
302   // CHECK: smlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
303 }
304 
305 int64x2_t test_vmlal_laneq_s32(int64x2_t a, int32x2_t b, int32x4_t v) {
306   // CHECK: test_vmlal_laneq_s32
307   return vmlal_laneq_s32(a, b, v, 1);
308   // CHECK: smlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
309 }
310 
311 int32x4_t test_vmlal_high_lane_s16(int32x4_t a, int16x8_t b, int16x4_t v) {
312   // CHECK: test_vmlal_high_lane_s16
313   return vmlal_high_lane_s16(a, b, v, 1);
314   // CHECK: smlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
315 }
316 
317 int64x2_t test_vmlal_high_lane_s32(int64x2_t a, int32x4_t b, int32x2_t v) {
318   // CHECK: test_vmlal_high_lane_s32
319   return vmlal_high_lane_s32(a, b, v, 1);
320   // CHECK: smlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
321 }
322 
323 int32x4_t test_vmlal_high_laneq_s16(int32x4_t a, int16x8_t b, int16x8_t v) {
324   // CHECK: test_vmlal_high_laneq_s16
325   return vmlal_high_laneq_s16(a, b, v, 1);
326   // CHECK: smlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
327 }
328 
329 int64x2_t test_vmlal_high_laneq_s32(int64x2_t a, int32x4_t b, int32x4_t v) {
330   // CHECK: test_vmlal_high_laneq_s32
331   return vmlal_high_laneq_s32(a, b, v, 1);
332   // CHECK: smlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
333 }
334 
335 int32x4_t test_vmlsl_lane_s16(int32x4_t a, int16x4_t b, int16x4_t v) {
336   // CHECK: test_vmlsl_lane_s16
337   return vmlsl_lane_s16(a, b, v, 1);
338   // CHECK: smlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
339 }
340 
341 int64x2_t test_vmlsl_lane_s32(int64x2_t a, int32x2_t b, int32x2_t v) {
342   // CHECK: test_vmlsl_lane_s32
343   return vmlsl_lane_s32(a, b, v, 1);
344   // CHECK: smlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
345 }
346 
347 int32x4_t test_vmlsl_laneq_s16(int32x4_t a, int16x4_t b, int16x8_t v) {
348   // CHECK: test_vmlsl_laneq_s16
349   return vmlsl_laneq_s16(a, b, v, 1);
350   // CHECK: smlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
351 }
352 
353 int64x2_t test_vmlsl_laneq_s32(int64x2_t a, int32x2_t b, int32x4_t v) {
354   // CHECK: test_vmlsl_laneq_s32
355   return vmlsl_laneq_s32(a, b, v, 1);
356   // CHECK: smlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
357 }
358 
359 int32x4_t test_vmlsl_high_lane_s16(int32x4_t a, int16x8_t b, int16x4_t v) {
360   // CHECK: test_vmlsl_high_lane_s16
361   return vmlsl_high_lane_s16(a, b, v, 1);
362   // CHECK: smlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
363 }
364 
365 int64x2_t test_vmlsl_high_lane_s32(int64x2_t a, int32x4_t b, int32x2_t v) {
366   // CHECK: test_vmlsl_high_lane_s32
367   return vmlsl_high_lane_s32(a, b, v, 1);
368   // CHECK: smlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
369 }
370 
371 int32x4_t test_vmlsl_high_laneq_s16(int32x4_t a, int16x8_t b, int16x8_t v) {
372   // CHECK: test_vmlsl_high_laneq_s16
373   return vmlsl_high_laneq_s16(a, b, v, 1);
374   // CHECK: smlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
375 }
376 
377 int64x2_t test_vmlsl_high_laneq_s32(int64x2_t a, int32x4_t b, int32x4_t v) {
378   // CHECK: test_vmlsl_high_laneq_s32
379   return vmlsl_high_laneq_s32(a, b, v, 1);
380   // CHECK: smlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
381 }
382 
383 int32x4_t test_vmlal_lane_u16(int32x4_t a, int16x4_t b, int16x4_t v) {
384   // CHECK: test_vmlal_lane_u16
385   return vmlal_lane_u16(a, b, v, 1);
386   // CHECK: umlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
387 }
388 
389 int64x2_t test_vmlal_lane_u32(int64x2_t a, int32x2_t b, int32x2_t v) {
390   // CHECK: test_vmlal_lane_u32
391   return vmlal_lane_u32(a, b, v, 1);
392   // CHECK: umlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
393 }
394 
395 int32x4_t test_vmlal_laneq_u16(int32x4_t a, int16x4_t b, int16x8_t v) {
396   // CHECK: test_vmlal_laneq_u16
397   return vmlal_laneq_u16(a, b, v, 1);
398   // CHECK: umlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
399 }
400 
401 int64x2_t test_vmlal_laneq_u32(int64x2_t a, int32x2_t b, int32x4_t v) {
402   // CHECK: test_vmlal_laneq_u32
403   return vmlal_laneq_u32(a, b, v, 1);
404   // CHECK: umlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
405 }
406 
407 int32x4_t test_vmlal_high_lane_u16(int32x4_t a, int16x8_t b, int16x4_t v) {
408   // CHECK: test_vmlal_high_lane_u16
409   return vmlal_high_lane_u16(a, b, v, 1);
410   // CHECK: umlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
411 }
412 
413 int64x2_t test_vmlal_high_lane_u32(int64x2_t a, int32x4_t b, int32x2_t v) {
414   // CHECK: test_vmlal_high_lane_u32
415   return vmlal_high_lane_u32(a, b, v, 1);
416   // CHECK: umlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
417 }
418 
419 int32x4_t test_vmlal_high_laneq_u16(int32x4_t a, int16x8_t b, int16x8_t v) {
420   // CHECK: test_vmlal_high_laneq_u16
421   return vmlal_high_laneq_u16(a, b, v, 1);
422   // CHECK: umlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
423 }
424 
425 int64x2_t test_vmlal_high_laneq_u32(int64x2_t a, int32x4_t b, int32x4_t v) {
426   // CHECK: test_vmlal_high_laneq_u32
427   return vmlal_high_laneq_u32(a, b, v, 1);
428   // CHECK: umlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
429 }
430 
431 int32x4_t test_vmlsl_lane_u16(int32x4_t a, int16x4_t b, int16x4_t v) {
432   // CHECK: test_vmlsl_lane_u16
433   return vmlsl_lane_u16(a, b, v, 1);
434   // CHECK: umlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
435 }
436 
437 int64x2_t test_vmlsl_lane_u32(int64x2_t a, int32x2_t b, int32x2_t v) {
438   // CHECK: test_vmlsl_lane_u32
439   return vmlsl_lane_u32(a, b, v, 1);
440   // CHECK: umlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
441 }
442 
443 int32x4_t test_vmlsl_laneq_u16(int32x4_t a, int16x4_t b, int16x8_t v) {
444   // CHECK: test_vmlsl_laneq_u16
445   return vmlsl_laneq_u16(a, b, v, 1);
446   // CHECK: umlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
447 }
448 
449 int64x2_t test_vmlsl_laneq_u32(int64x2_t a, int32x2_t b, int32x4_t v) {
450   // CHECK: test_vmlsl_laneq_u32
451   return vmlsl_laneq_u32(a, b, v, 1);
452   // CHECK: umlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
453 }
454 
455 int32x4_t test_vmlsl_high_lane_u16(int32x4_t a, int16x8_t b, int16x4_t v) {
456   // CHECK: test_vmlsl_high_lane_u16
457   return vmlsl_high_lane_u16(a, b, v, 1);
458   // CHECK: umlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
459 }
460 
461 int64x2_t test_vmlsl_high_lane_u32(int64x2_t a, int32x4_t b, int32x2_t v) {
462   // CHECK: test_vmlsl_high_lane_u32
463   return vmlsl_high_lane_u32(a, b, v, 1);
464   // CHECK: umlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
465 }
466 
467 int32x4_t test_vmlsl_high_laneq_u16(int32x4_t a, int16x8_t b, int16x8_t v) {
468   // CHECK: test_vmlsl_high_laneq_u16
469   return vmlsl_high_laneq_u16(a, b, v, 1);
470   // CHECK: umlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
471 }
472 
473 int64x2_t test_vmlsl_high_laneq_u32(int64x2_t a, int32x4_t b, int32x4_t v) {
474   // CHECK: test_vmlsl_high_laneq_u32
475   return vmlsl_high_laneq_u32(a, b, v, 1);
476   // CHECK: umlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
477 }
478 
479 int32x4_t test_vmull_lane_s16(int16x4_t a, int16x4_t v) {
480   // CHECK: test_vmull_lane_s16
481   return vmull_lane_s16(a, v, 1);
482   // CHECK: smull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
483 }
484 
485 int64x2_t test_vmull_lane_s32(int32x2_t a, int32x2_t v) {
486   // CHECK: test_vmull_lane_s32
487   return vmull_lane_s32(a, v, 1);
488   // CHECK: smull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
489 }
490 
491 uint32x4_t test_vmull_lane_u16(uint16x4_t a, uint16x4_t v) {
492   // CHECK: test_vmull_lane_u16
493   return vmull_lane_u16(a, v, 1);
494   // CHECK: umull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
495 }
496 
497 uint64x2_t test_vmull_lane_u32(uint32x2_t a, uint32x2_t v) {
498   // CHECK: test_vmull_lane_u32
499   return vmull_lane_u32(a, v, 1);
500   // CHECK: umull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
501 }
502 
503 int32x4_t test_vmull_high_lane_s16(int16x8_t a, int16x4_t v) {
504   // CHECK: test_vmull_high_lane_s16
505   return vmull_high_lane_s16(a, v, 1);
506   // CHECK: smull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
507 }
508 
509 int64x2_t test_vmull_high_lane_s32(int32x4_t a, int32x2_t v) {
510   // CHECK: test_vmull_high_lane_s32
511   return vmull_high_lane_s32(a, v, 1);
512   // CHECK: smull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
513 }
514 
515 uint32x4_t test_vmull_high_lane_u16(uint16x8_t a, uint16x4_t v) {
516   // CHECK: test_vmull_high_lane_u16
517   return vmull_high_lane_u16(a, v, 1);
518   // CHECK: umull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
519 }
520 
521 uint64x2_t test_vmull_high_lane_u32(uint32x4_t a, uint32x2_t v) {
522   // CHECK: test_vmull_high_lane_u32
523   return vmull_high_lane_u32(a, v, 1);
524   // CHECK: umull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
525 }
526 
527 int32x4_t test_vmull_laneq_s16(int16x4_t a, int16x8_t v) {
528   // CHECK: test_vmull_laneq_s16
529   return vmull_laneq_s16(a, v, 1);
530   // CHECK: smull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
531 }
532 
533 int64x2_t test_vmull_laneq_s32(int32x2_t a, int32x4_t v) {
534   // CHECK: test_vmull_laneq_s32
535   return vmull_laneq_s32(a, v, 1);
536   // CHECK: smull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
537 }
538 
539 uint32x4_t test_vmull_laneq_u16(uint16x4_t a, uint16x8_t v) {
540   // CHECK: test_vmull_laneq_u16
541   return vmull_laneq_u16(a, v, 1);
542   // CHECK: umull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
543 }
544 
545 uint64x2_t test_vmull_laneq_u32(uint32x2_t a, uint32x4_t v) {
546   // CHECK: test_vmull_laneq_u32
547   return vmull_laneq_u32(a, v, 1);
548   // CHECK: umull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
549 }
550 
551 int32x4_t test_vmull_high_laneq_s16(int16x8_t a, int16x8_t v) {
552   // CHECK: test_vmull_high_laneq_s16
553   return vmull_high_laneq_s16(a, v, 1);
554   // CHECK: smull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
555 }
556 
557 int64x2_t test_vmull_high_laneq_s32(int32x4_t a, int32x4_t v) {
558   // CHECK: test_vmull_high_laneq_s32
559   return vmull_high_laneq_s32(a, v, 1);
560   // CHECK: smull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
561 }
562 
563 uint32x4_t test_vmull_high_laneq_u16(uint16x8_t a, uint16x8_t v) {
564   // CHECK: test_vmull_high_laneq_u16
565   return vmull_high_laneq_u16(a, v, 1);
566   // CHECK: umull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
567 }
568 
569 uint64x2_t test_vmull_high_laneq_u32(uint32x4_t a, uint32x4_t v) {
570   // CHECK: test_vmull_high_laneq_u32
571   return vmull_high_laneq_u32(a, v, 1);
572   // CHECK: umull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
573 }
574 
575 int32x4_t test_vqdmlal_lane_s16(int32x4_t a, int16x4_t b, int16x4_t v) {
576   // CHECK: test_vqdmlal_lane_s16
577   return vqdmlal_lane_s16(a, b, v, 1);
578   // CHECK: sqdmlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
579 }
580 
581 int64x2_t test_vqdmlal_lane_s32(int64x2_t a, int32x2_t b, int32x2_t v) {
582   // CHECK: test_vqdmlal_lane_s32
583   return vqdmlal_lane_s32(a, b, v, 1);
584   // CHECK: sqdmlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
585 }
586 
587 int32x4_t test_vqdmlal_high_lane_s16(int32x4_t a, int16x8_t b, int16x4_t v) {
588   // CHECK: test_vqdmlal_high_lane_s16
589   return vqdmlal_high_lane_s16(a, b, v, 1);
590   // CHECK: sqdmlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
591 }
592 
593 int64x2_t test_vqdmlal_high_lane_s32(int64x2_t a, int32x4_t b, int32x2_t v) {
594   // CHECK: test_vqdmlal_high_lane_s32
595   return vqdmlal_high_lane_s32(a, b, v, 1);
596   // CHECK: sqdmlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
597 }
598 
599 int32x4_t test_vqdmlsl_lane_s16(int32x4_t a, int16x4_t b, int16x4_t v) {
600   // CHECK: test_vqdmlsl_lane_s16
601   return vqdmlsl_lane_s16(a, b, v, 1);
602   // CHECK: sqdmlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
603 }
604 
605 int64x2_t test_vqdmlsl_lane_s32(int64x2_t a, int32x2_t b, int32x2_t v) {
606   // CHECK: test_vqdmlsl_lane_s32
607   return vqdmlsl_lane_s32(a, b, v, 1);
608   // CHECK: sqdmlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
609 }
610 
611 int32x4_t test_vqdmlsl_high_lane_s16(int32x4_t a, int16x8_t b, int16x4_t v) {
612   // CHECK: test_vqdmlsl_high_lane_s16
613   return vqdmlsl_high_lane_s16(a, b, v, 1);
614   // CHECK: sqdmlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
615 }
616 
617 int64x2_t test_vqdmlsl_high_lane_s32(int64x2_t a, int32x4_t b, int32x2_t v) {
618   // CHECK: test_vqdmlsl_high_lane_s32
619   return vqdmlsl_high_lane_s32(a, b, v, 1);
620   // CHECK: sqdmlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
621 }
622 
623 int32x4_t test_vqdmull_lane_s16(int16x4_t a, int16x4_t v) {
624   // CHECK: test_vqdmull_lane_s16
625   return vqdmull_lane_s16(a, v, 1);
626   // CHECK: sqdmull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
627 }
628 
629 int64x2_t test_vqdmull_lane_s32(int32x2_t a, int32x2_t v) {
630   // CHECK: test_vqdmull_lane_s32
631   return vqdmull_lane_s32(a, v, 1);
632   // CHECK: sqdmull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
633 }
634 
635 int32x4_t test_vqdmull_laneq_s16(int16x4_t a, int16x8_t v) {
636   // CHECK: test_vqdmull_laneq_s16
637   return vqdmull_laneq_s16(a, v, 1);
638   // CHECK: sqdmull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
639 }
640 
641 int64x2_t test_vqdmull_laneq_s32(int32x2_t a, int32x4_t v) {
642   // CHECK: test_vqdmull_laneq_s32
643   return vqdmull_laneq_s32(a, v, 1);
644   // CHECK: sqdmull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
645 }
646 
647 int32x4_t test_vqdmull_high_lane_s16(int16x8_t a, int16x4_t v) {
648   // CHECK: test_vqdmull_high_lane_s16
649   return vqdmull_high_lane_s16(a, v, 1);
650   // CHECK: sqdmull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
651 }
652 
653 int64x2_t test_vqdmull_high_lane_s32(int32x4_t a, int32x2_t v) {
654   // CHECK: test_vqdmull_high_lane_s32
655   return vqdmull_high_lane_s32(a, v, 1);
656   // CHECK: sqdmull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
657 }
658 
659 int32x4_t test_vqdmull_high_laneq_s16(int16x8_t a, int16x8_t v) {
660   // CHECK: test_vqdmull_high_laneq_s16
661   return vqdmull_high_laneq_s16(a, v, 1);
662   // CHECK: sqdmull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
663 }
664 
665 int64x2_t test_vqdmull_high_laneq_s32(int32x4_t a, int32x4_t v) {
666   // CHECK: test_vqdmull_high_laneq_s32
667   return vqdmull_high_laneq_s32(a, v, 1);
668   // CHECK: sqdmull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
669 }
670 
671 int16x4_t test_vqdmulh_lane_s16(int16x4_t a, int16x4_t v) {
672   // CHECK: test_vqdmulh_lane_s16
673   return vqdmulh_lane_s16(a, v, 1);
674   // CHECK: sqdmulh {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
675 }
676 
677 int16x8_t test_vqdmulhq_lane_s16(int16x8_t a, int16x4_t v) {
678   // CHECK: test_vqdmulhq_lane_s16
679   return vqdmulhq_lane_s16(a, v, 1);
680   // CHECK: sqdmulh {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
681 }
682 
683 int32x2_t test_vqdmulh_lane_s32(int32x2_t a, int32x2_t v) {
684   // CHECK: test_vqdmulh_lane_s32
685   return vqdmulh_lane_s32(a, v, 1);
686   // CHECK: sqdmulh {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
687 }
688 
689 int32x4_t test_vqdmulhq_lane_s32(int32x4_t a, int32x2_t v) {
690   // CHECK: test_vqdmulhq_lane_s32
691   return vqdmulhq_lane_s32(a, v, 1);
692   // CHECK: sqdmulh {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
693 }
694 
695 int16x4_t test_vqrdmulh_lane_s16(int16x4_t a, int16x4_t v) {
696   // CHECK: test_vqrdmulh_lane_s16
697   return vqrdmulh_lane_s16(a, v, 1);
698   // CHECK: sqrdmulh {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1]
699 }
700 
701 int16x8_t test_vqrdmulhq_lane_s16(int16x8_t a, int16x4_t v) {
702   // CHECK: test_vqrdmulhq_lane_s16
703   return vqrdmulhq_lane_s16(a, v, 1);
704   // CHECK: sqrdmulh {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1]
705 }
706 
707 int32x2_t test_vqrdmulh_lane_s32(int32x2_t a, int32x2_t v) {
708   // CHECK: test_vqrdmulh_lane_s32
709   return vqrdmulh_lane_s32(a, v, 1);
710   // CHECK: sqrdmulh {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
711 }
712 
713 int32x4_t test_vqrdmulhq_lane_s32(int32x4_t a, int32x2_t v) {
714   // CHECK: test_vqrdmulhq_lane_s32
715   return vqrdmulhq_lane_s32(a, v, 1);
716   // CHECK: sqrdmulh {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
717 }
718 
719 float32x2_t test_vmul_lane_f32(float32x2_t a, float32x2_t v) {
720   // CHECK: test_vmul_lane_f32
721   return vmul_lane_f32(a, v, 1);
722   // CHECK: fmul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
723 }
724 
725 
726 float64x1_t test_vmul_lane_f64(float64x1_t a, float64x1_t v) {
727   // CHECK: test_vmul_lane_f64
728   return vmul_lane_f64(a, v, 0);
729   // CHECK: fmul {{d[0-9]+}}, {{d[0-9]+}}, {{v[0-9]+}}.d[0]
730 }
731 
732 
733 float32x4_t test_vmulq_lane_f32(float32x4_t a, float32x2_t v) {
734   // CHECK: test_vmulq_lane_f32
735   return vmulq_lane_f32(a, v, 1);
736   // CHECK: fmul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
737 }
738 
739 float64x2_t test_vmulq_lane_f64(float64x2_t a, float64x1_t v) {
740   // CHECK: test_vmulq_lane_f64
741   return vmulq_lane_f64(a, v, 0);
742   // CHECK: fmul {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0]
743 }
744 
745 float32x2_t test_vmul_laneq_f32(float32x2_t a, float32x4_t v) {
746   // CHECK: test_vmul_laneq_f32
747   return vmul_laneq_f32(a, v, 1);
748   // CHECK: fmul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
749 }
750 
751 float64x1_t test_vmul_laneq_f64_0(float64x1_t a, float64x2_t v) {
752   // CHECK: test_vmul_laneq_f64_0
753   return vmul_laneq_f64(a, v, 0);
754   // CHECK: fmul {{d[0-9]+}}, {{d[0-9]+}}, {{v[0-9]+}}.d[0]
755 }
756 
757 
758 float32x4_t test_vmulq_laneq_f32(float32x4_t a, float32x4_t v) {
759   // CHECK: test_vmulq_laneq_f32
760   return vmulq_laneq_f32(a, v, 1);
761   // CHECK: fmul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
762 }
763 
764 float64x2_t test_vmulq_laneq_f64_0(float64x2_t a, float64x2_t v) {
765   // CHECK: test_vmulq_laneq_f64
766   return vmulq_laneq_f64(a, v, 0);
767   // CHECK: fmul {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0]
768 }
769 
770 float64x2_t test_vmulq_laneq_f64(float64x2_t a, float64x2_t v) {
771   // CHECK: test_vmulq_laneq_f64
772   return vmulq_laneq_f64(a, v, 1);
773   // CHECK: fmul {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[1]
774 }
775 
776 float32x2_t test_vmulx_lane_f32(float32x2_t a, float32x2_t v) {
777   // CHECK: test_vmulx_lane_f32
778   return vmulx_lane_f32(a, v, 1);
779   // CHECK: fmulx {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
780 }
781 
782 float32x4_t test_vmulxq_lane_f32(float32x4_t a, float32x2_t v) {
783   // CHECK: test_vmulxq_lane_f32
784   return vmulxq_lane_f32(a, v, 1);
785   // CHECK: fmulx {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
786 }
787 
788 float64x2_t test_vmulxq_lane_f64(float64x2_t a, float64x1_t v) {
789   // CHECK: test_vmulxq_lane_f64
790   return vmulxq_lane_f64(a, v, 0);
791   // CHECK: fmulx {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0]
792 }
793 
794 float32x2_t test_vmulx_laneq_f32(float32x2_t a, float32x4_t v) {
795   // CHECK: test_vmulx_laneq_f32
796   return vmulx_laneq_f32(a, v, 1);
797   // CHECK: fmulx {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1]
798 }
799 
800 float32x4_t test_vmulxq_laneq_f32(float32x4_t a, float32x4_t v) {
801   // CHECK: test_vmulxq_laneq_f32
802   return vmulxq_laneq_f32(a, v, 1);
803   // CHECK: fmulx {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1]
804 }
805 
806 float64x2_t test_vmulxq_laneq_f64_0(float64x2_t a, float64x2_t v) {
807   // CHECK: test_vmulxq_laneq_f64
808   return vmulxq_laneq_f64(a, v, 0);
809   // CHECK: fmulx {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0]
810 }
811 
812 float64x2_t test_vmulxq_laneq_f64(float64x2_t a, float64x2_t v) {
813   // CHECK: test_vmulxq_laneq_f64
814   return vmulxq_laneq_f64(a, v, 1);
815   // CHECK: fmulx {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[1]
816 }
817 
818