1 /* { dg-do compile } */
2 /* { dg-require-effective-target arm_v8_2a_fp16_neon_ok } */
3 /* { dg-options "-O2 -ffast-math" } */
4 /* { dg-add-options arm_v8_2a_fp16_neon } */
6 /* Test instructions generated for the FP16 vector intrinsics with
11 #define MSTRCAT(L, str) L##str
13 #define UNOP_TEST(insn) \
15 MSTRCAT (test_##insn, _16x4) (float16x4_t a) \
17 return MSTRCAT (insn, _f16) (a); \
20 MSTRCAT (test_##insn, _16x8) (float16x8_t a) \
22 return MSTRCAT (insn, q_f16) (a); \
25 #define BINOP_TEST(insn) \
27 MSTRCAT (test_##insn, _16x4) (float16x4_t a, float16x4_t b) \
29 return MSTRCAT (insn, _f16) (a, b); \
32 MSTRCAT (test_##insn, _16x8) (float16x8_t a, float16x8_t b) \
34 return MSTRCAT (insn, q_f16) (a, b); \
37 #define BINOP_LANE_TEST(insn, I) \
39 MSTRCAT (test_##insn##_lane, _16x4) (float16x4_t a, float16x4_t b) \
41 return MSTRCAT (insn, _lane_f16) (a, b, I); \
44 MSTRCAT (test_##insn##_lane, _16x8) (float16x8_t a, float16x4_t b) \
46 return MSTRCAT (insn, q_lane_f16) (a, b, I); \
49 #define BINOP_LANEQ_TEST(insn, I) \
51 MSTRCAT (test_##insn##_laneq, _16x4) (float16x4_t a, float16x8_t b) \
53 return MSTRCAT (insn, _laneq_f16) (a, b, I); \
56 MSTRCAT (test_##insn##_laneq, _16x8) (float16x8_t a, float16x8_t b) \
58 return MSTRCAT (insn, q_laneq_f16) (a, b, I); \
61 #define BINOP_N_TEST(insn) \
63 MSTRCAT (test_##insn##_n, _16x4) (float16x4_t a, float16_t b) \
65 return MSTRCAT (insn, _n_f16) (a, b); \
68 MSTRCAT (test_##insn##_n, _16x8) (float16x8_t a, float16_t b) \
70 return MSTRCAT (insn, q_n_f16) (a, b); \
73 #define TERNOP_TEST(insn) \
75 MSTRCAT (test_##insn, _16) (float16_t a, float16_t b, float16_t c) \
77 return MSTRCAT (insn, h_f16) (a, b, c); \
80 MSTRCAT (test_##insn, _16x4) (float16x4_t a, float16x4_t b, \
83 return MSTRCAT (insn, _f16) (a, b, c); \
86 MSTRCAT (test_##insn, _16x8) (float16x8_t a, float16x8_t b, \
89 return MSTRCAT (insn, q_f16) (a, b, c); \
92 #define VCMP1_TEST(insn) \
94 MSTRCAT (test_##insn, _16x4) (float16x4_t a) \
96 return MSTRCAT (insn, _f16) (a); \
99 MSTRCAT (test_##insn, _16x8) (float16x8_t a) \
101 return MSTRCAT (insn, q_f16) (a); \
104 #define VCMP2_TEST(insn) \
106 MSTRCAT (test_##insn, _16x4) (float16x4_t a, float16x4_t b) \
108 return MSTRCAT (insn, _f16) (a, b); \
111 MSTRCAT (test_##insn, _16x8) (float16x8_t a, float16x8_t b) \
113 return MSTRCAT (insn, q_f16) (a, b); \
116 #define VCVT_TEST(insn, TY, TO, FR) \
117 MSTRCAT (TO, 16x4_t) \
118 MSTRCAT (test_##insn, TY) (MSTRCAT (FR, 16x4_t) a) \
120 return MSTRCAT (insn, TY) (a); \
122 MSTRCAT (TO, 16x8_t) \
123 MSTRCAT (test_##insn##_q, TY) (MSTRCAT (FR, 16x8_t) a) \
125 return MSTRCAT (insn, q##TY) (a); \
128 #define VCVT_N_TEST(insn, TY, TO, FR) \
129 MSTRCAT (TO, 16x4_t) \
130 MSTRCAT (test_##insn##_n, TY) (MSTRCAT (FR, 16x4_t) a) \
132 return MSTRCAT (insn, _n##TY) (a, 1); \
134 MSTRCAT (TO, 16x8_t) \
135 MSTRCAT (test_##insn##_n_q, TY) (MSTRCAT (FR, 16x8_t) a) \
137 return MSTRCAT (insn, q_n##TY) (a, 1); \
141 /* { dg-final { scan-assembler-times {vceq\.f16\td[0-9]+, d[0-9]+, #0} 1 } } */
142 /* { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */
145 /* { dg-final { scan-assembler-times {vcgt\.f16\td[0-9]+, d[0-9]+, #0} 1 } } */
146 /* { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */
149 /* { dg-final { scan-assembler-times {vcge\.f16\td[0-9]+, d[0-9]+, #0} 1 } } */
150 /* { dg-final { scan-assembler-times {vcge\.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */
153 /* { dg-final { scan-assembler-times {vclt.f16\td[0-9]+, d[0-9]+, #0} 1 } } */
154 /* { dg-final { scan-assembler-times {vclt.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */
157 /* { dg-final { scan-assembler-times {vcle\.f16\td[0-9]+, d[0-9]+, #0} 1 } } */
158 /* { dg-final { scan-assembler-times {vcle\.f16\tq[0-9]+, q[0-9]+, #0} 1 } } */
160 VCVT_TEST (vcvt
, _f16_s16
, float, int)
161 VCVT_N_TEST (vcvt
, _f16_s16
, float, int)
162 /* { dg-final { scan-assembler-times {vcvt\.f16\.s16\td[0-9]+, d[0-9]+} 2 } }
163 { dg-final { scan-assembler-times {vcvt\.f16\.s16\tq[0-9]+, q[0-9]+} 2 } }
164 { dg-final { scan-assembler-times {vcvt\.f16\.s16\td[0-9]+, d[0-9]+, #1} 1 } }
165 { dg-final { scan-assembler-times {vcvt\.f16\.s16\tq[0-9]+, q[0-9]+, #1} 1 } } */
167 VCVT_TEST (vcvt
, _f16_u16
, float, uint
)
168 VCVT_N_TEST (vcvt
, _f16_u16
, float, uint
)
169 /* { dg-final { scan-assembler-times {vcvt\.f16\.u16\td[0-9]+, d[0-9]+} 2 } }
170 { dg-final { scan-assembler-times {vcvt\.f16\.u16\tq[0-9]+, q[0-9]+} 2 } }
171 { dg-final { scan-assembler-times {vcvt\.f16\.u16\td[0-9]+, d[0-9]+, #1} 1 } }
172 { dg-final { scan-assembler-times {vcvt\.f16\.u16\tq[0-9]+, q[0-9]+, #1} 1 } } */
174 VCVT_TEST (vcvt
, _s16_f16
, int, float)
175 VCVT_N_TEST (vcvt
, _s16_f16
, int, float)
176 /* { dg-final { scan-assembler-times {vcvt\.s16\.f16\td[0-9]+, d[0-9]+} 2 } }
177 { dg-final { scan-assembler-times {vcvt\.s16\.f16\tq[0-9]+, q[0-9]+} 2 } }
178 { dg-final { scan-assembler-times {vcvt\.s16\.f16\td[0-9]+, d[0-9]+, #1} 1 } }
179 { dg-final { scan-assembler-times {vcvt\.s16\.f16\tq[0-9]+, q[0-9]+, #1} 1 } } */
181 VCVT_TEST (vcvt
, _u16_f16
, uint
, float)
182 VCVT_N_TEST (vcvt
, _u16_f16
, uint
, float)
183 /* { dg-final { scan-assembler-times {vcvt\.u16\.f16\td[0-9]+, d[0-9]+} 2 } }
184 { dg-final { scan-assembler-times {vcvt\.u16\.f16\tq[0-9]+, q[0-9]+} 2 } }
185 { dg-final { scan-assembler-times {vcvt\.u16\.f16\td[0-9]+, d[0-9]+, #1} 1 } }
186 { dg-final { scan-assembler-times {vcvt\.u16\.f16\tq[0-9]+, q[0-9]+, #1} 1 } } */
188 VCVT_TEST (vcvta
, _s16_f16
, int, float)
189 /* { dg-final { scan-assembler-times {vcvta\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
190 { dg-final { scan-assembler-times {vcvta\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
193 VCVT_TEST (vcvta
, _u16_f16
, uint
, float)
194 /* { dg-final { scan-assembler-times {vcvta\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
195 { dg-final { scan-assembler-times {vcvta\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
198 VCVT_TEST (vcvtm
, _s16_f16
, int, float)
199 /* { dg-final { scan-assembler-times {vcvtm\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
200 { dg-final { scan-assembler-times {vcvtm\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
203 VCVT_TEST (vcvtm
, _u16_f16
, uint
, float)
204 /* { dg-final { scan-assembler-times {vcvtm\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
205 { dg-final { scan-assembler-times {vcvtm\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
208 VCVT_TEST (vcvtn
, _s16_f16
, int, float)
209 /* { dg-final { scan-assembler-times {vcvtn\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
210 { dg-final { scan-assembler-times {vcvtn\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
213 VCVT_TEST (vcvtn
, _u16_f16
, uint
, float)
214 /* { dg-final { scan-assembler-times {vcvtn\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
215 { dg-final { scan-assembler-times {vcvtn\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
218 VCVT_TEST (vcvtp
, _s16_f16
, int, float)
219 /* { dg-final { scan-assembler-times {vcvtp\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
220 { dg-final { scan-assembler-times {vcvtp\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
223 VCVT_TEST (vcvtp
, _u16_f16
, uint
, float)
224 /* { dg-final { scan-assembler-times {vcvtp\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
225 { dg-final { scan-assembler-times {vcvtp\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
229 /* { dg-final { scan-assembler-times {vabs\.f16\td[0-9]+, d[0-9]+} 1 } }
230 { dg-final { scan-assembler-times {vabs\.f16\tq[0-9]+, q[0-9]+} 1 } } */
233 /* { dg-final { scan-assembler-times {vneg\.f16\td[0-9]+, d[0-9]+} 1 } }
234 { dg-final { scan-assembler-times {vneg\.f16\tq[0-9]+, q[0-9]+} 1 } } */
237 /* { dg-final { scan-assembler-times {vrecpe\.f16\td[0-9]+, d[0-9]+} 1 } }
238 { dg-final { scan-assembler-times {vrecpe\.f16\tq[0-9]+, q[0-9]+} 1 } } */
241 /* { dg-final { scan-assembler-times {vrintz\.f16\td[0-9]+, d[0-9]+} 1 } }
242 { dg-final { scan-assembler-times {vrintz\.f16\tq[0-9]+, q[0-9]+} 1 } } */
245 /* { dg-final { scan-assembler-times {vrinta\.f16\td[0-9]+, d[0-9]+} 1 } }
246 { dg-final { scan-assembler-times {vrinta\.f16\tq[0-9]+, q[0-9]+} 1 } } */
249 /* { dg-final { scan-assembler-times {vrintm\.f16\td[0-9]+, d[0-9]+} 1 } }
250 { dg-final { scan-assembler-times {vrintm\.f16\tq[0-9]+, q[0-9]+} 1 } } */
253 /* { dg-final { scan-assembler-times {vrintn\.f16\td[0-9]+, d[0-9]+} 1 } }
254 { dg-final { scan-assembler-times {vrintn\.f16\tq[0-9]+, q[0-9]+} 1 } } */
257 /* { dg-final { scan-assembler-times {vrintp\.f16\td[0-9]+, d[0-9]+} 1 } }
258 { dg-final { scan-assembler-times {vrintp\.f16\tq[0-9]+, q[0-9]+} 1 } } */
261 /* { dg-final { scan-assembler-times {vrintx\.f16\td[0-9]+, d[0-9]+} 1 } }
262 { dg-final { scan-assembler-times {vrintx\.f16\tq[0-9]+, q[0-9]+} 1 } } */
265 /* { dg-final { scan-assembler-times {vrsqrte\.f16\td[0-9]+, d[0-9]+} 1 } }
266 { dg-final { scan-assembler-times {vrsqrte\.f16\tq[0-9]+, q[0-9]+} 1 } } */
269 /* { dg-final { scan-assembler-times {vadd\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
270 { dg-final { scan-assembler-times {vadd\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
273 /* { dg-final { scan-assembler-times {vabd\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
274 { dg-final { scan-assembler-times {vabd\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
277 /* { dg-final { scan-assembler-times {vacge\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
278 { dg-final { scan-assembler-times {vacge\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
281 /* { dg-final { scan-assembler-times {vacgt\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
282 { dg-final { scan-assembler-times {vacgt\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
285 /* { dg-final { scan-assembler-times {vacle\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
286 { dg-final { scan-assembler-times {vacle\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
289 /* { dg-final { scan-assembler-times {vaclt\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
290 { dg-final { scan-assembler-times {vaclt\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
293 /* { dg-final { scan-assembler-times {vceq\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
294 { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
297 /* { dg-final { scan-assembler-times {vcge\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
298 { dg-final { scan-assembler-times {vcge\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
301 /* { dg-final { scan-assembler-times {vcgt\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
302 { dg-final { scan-assembler-times {vcgt\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
305 /* { dg-final { scan-assembler-times {vcle\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
306 { dg-final { scan-assembler-times {vcle\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
309 /* { dg-final { scan-assembler-times {vclt\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
310 { dg-final { scan-assembler-times {vclt\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
313 /* { dg-final { scan-assembler-times {vmax\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
314 { dg-final { scan-assembler-times {vmax\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
317 /* { dg-final { scan-assembler-times {vmin\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
318 { dg-final { scan-assembler-times {vmin\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
321 /* { dg-final { scan-assembler-times {vmaxnm\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
322 { dg-final { scan-assembler-times {vmaxnm\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
325 /* { dg-final { scan-assembler-times {vminnm\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
326 { dg-final { scan-assembler-times {vminnm\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
329 /* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 3 } }
330 { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
331 BINOP_LANE_TEST (vmul
, 2)
332 /* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+\[2\]} 1 } }
333 { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, d[0-9]+\[2\]} 1 } } */
335 /* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+\[0\]} 1 } }
336 { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, d[0-9]+\[0\]} 1 } }*/
339 test_vpadd_16x4 (float16x4_t a
, float16x4_t b
)
341 return vpadd_f16 (a
, b
);
343 /* { dg-final { scan-assembler-times {vpadd\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */
346 test_vpmax_16x4 (float16x4_t a
, float16x4_t b
)
348 return vpmax_f16 (a
, b
);
350 /* { dg-final { scan-assembler-times {vpmax\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */
353 test_vpmin_16x4 (float16x4_t a
, float16x4_t b
)
355 return vpmin_f16 (a
, b
);
357 /* { dg-final { scan-assembler-times {vpmin\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */
360 /* { dg-final { scan-assembler-times {vsub\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
361 { dg-final { scan-assembler-times {vsub\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
364 /* { dg-final { scan-assembler-times {vrecps\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
365 { dg-final { scan-assembler-times {vrecps\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
368 /* { dg-final { scan-assembler-times {vrsqrts\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
369 { dg-final { scan-assembler-times {vrsqrts\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
372 /* { dg-final { scan-assembler-times {vfma\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
373 { dg-final { scan-assembler-times {vfma\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
376 /* { dg-final { scan-assembler-times {vfms\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 1 } }
377 { dg-final { scan-assembler-times {vfms\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
380 test_vmov_n_f16 (float16_t a
)
382 return vmov_n_f16 (a
);
386 test_vdup_n_f16 (float16_t a
)
388 return vdup_n_f16 (a
);
390 /* { dg-final { scan-assembler-times {vdup\.16\td[0-9]+, r[0-9]+} 2 } } */
393 test_vmovq_n_f16 (float16_t a
)
395 return vmovq_n_f16 (a
);
399 test_vdupq_n_f16 (float16_t a
)
401 return vdupq_n_f16 (a
);
403 /* { dg-final { scan-assembler-times {vdup\.16\tq[0-9]+, r[0-9]+} 2 } } */
406 test_vdup_lane_f16 (float16x4_t a
)
408 return vdup_lane_f16 (a
, 1);
410 /* { dg-final { scan-assembler-times {vdup\.16\td[0-9]+, d[0-9]+\[1\]} 1 } } */
413 test_vdupq_lane_f16 (float16x4_t a
)
415 return vdupq_lane_f16 (a
, 1);
417 /* { dg-final { scan-assembler-times {vdup\.16\tq[0-9]+, d[0-9]+\[1\]} 1 } } */
420 test_vext_f16 (float16x4_t a
, float16x4_t b
)
422 return vext_f16 (a
, b
, 1);
424 /* { dg-final { scan-assembler-times {vext\.16\td[0-9]+, d[0-9]+, d[0-9]+, #1} 1 } } */
427 test_vextq_f16 (float16x8_t a
, float16x8_t b
)
429 return vextq_f16 (a
, b
, 1);
431 /* { dg-final { scan-assembler-times {vext\.16\tq[0-9]+, q[0-9]+, q[0-9]+, #1} 1 } } */
434 /* { dg-final { scan-assembler-times {vrev64\.16\td[0-9]+, d[0-9]+} 1 } }
435 { dg-final { scan-assembler-times {vrev64\.16\tq[0-9]+, q[0-9]+} 1 } } */
438 test_vbsl16x4 (uint16x4_t a
, float16x4_t b
, float16x4_t c
)
440 return vbsl_f16 (a
, b
, c
);
442 /* { dg-final { scan-assembler-times {vbsl\td[0-9]+, d[0-9]+, d[0-9]+} 1 } } */
445 test_vbslq16x8 (uint16x8_t a
, float16x8_t b
, float16x8_t c
)
447 return vbslq_f16 (a
, b
, c
);
449 /*{ dg-final { scan-assembler-times {vbsl\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } } */
452 test_vzip16x4 (float16x4_t a
, float16x4_t b
)
454 return vzip_f16 (a
, b
);
456 /* { dg-final { scan-assembler-times {vzip\.16\td[0-9]+, d[0-9]+} 1 } } */
459 test_vzipq16x8 (float16x8_t a
, float16x8_t b
)
461 return vzipq_f16 (a
, b
);
463 /*{ dg-final { scan-assembler-times {vzip\.16\tq[0-9]+, q[0-9]+} 1 } } */
466 test_vuzp16x4 (float16x4_t a
, float16x4_t b
)
468 return vuzp_f16 (a
, b
);
470 /* { dg-final { scan-assembler-times {vuzp\.16\td[0-9]+, d[0-9]+} 1 } } */
473 test_vuzpq16x8 (float16x8_t a
, float16x8_t b
)
475 return vuzpq_f16 (a
, b
);
477 /*{ dg-final { scan-assembler-times {vuzp\.16\tq[0-9]+, q[0-9]+} 1 } } */
480 test_vtrn16x4 (float16x4_t a
, float16x4_t b
)
482 return vtrn_f16 (a
, b
);
484 /* { dg-final { scan-assembler-times {vtrn\.16\td[0-9]+, d[0-9]+} 1 } } */
487 test_vtrnq16x8 (float16x8_t a
, float16x8_t b
)
489 return vtrnq_f16 (a
, b
);
491 /*{ dg-final { scan-assembler-times {vtrn\.16\tq[0-9]+, q[0-9]+} 1 } } */