1 /* { dg-do compile } */
2 /* { dg-require-effective-target arm_fp16fml_neon_ok } */
3 /* { dg-add-options arm_fp16fml_neon }  */
4 
5 #include "arm_neon.h"
6 
7 float32x2_t
test_vfmlal_lane_high_u32(float32x2_t r,float16x4_t a,float16x4_t b)8 test_vfmlal_lane_high_u32 (float32x2_t r, float16x4_t a, float16x4_t b)
9 {
10   return vfmlal_lane_high_u32 (r, a, b, 0);
11 }
12 
13 float32x2_t
tets_vfmlsl_lane_high_u32(float32x2_t r,float16x4_t a,float16x4_t b)14 tets_vfmlsl_lane_high_u32  (float32x2_t r, float16x4_t a, float16x4_t b)
15 {
16   return vfmlsl_lane_high_u32 (r, a, b, 0);
17 }
18 
19 float32x2_t
test_vfmlal_laneq_high_u32(float32x2_t r,float16x4_t a,float16x8_t b)20 test_vfmlal_laneq_high_u32 (float32x2_t r, float16x4_t a, float16x8_t b)
21 {
22   return vfmlal_laneq_high_u32 (r, a, b, 6);
23 }
24 
25 float32x2_t
test_vfmlsl_laneq_high_u32(float32x2_t r,float16x4_t a,float16x8_t b)26 test_vfmlsl_laneq_high_u32 (float32x2_t r, float16x4_t a, float16x8_t b)
27 {
28   return vfmlsl_laneq_high_u32 (r, a, b, 6);
29 }
30 
31 float32x4_t
test_vfmlalq_lane_high_u32(float32x4_t r,float16x8_t a,float16x4_t b)32 test_vfmlalq_lane_high_u32 (float32x4_t r, float16x8_t a, float16x4_t b)
33 {
34   return vfmlalq_lane_high_u32 (r, a, b, 1);
35 }
36 
37 float32x4_t
test_vfmlslq_lane_high_u32(float32x4_t r,float16x8_t a,float16x4_t b)38 test_vfmlslq_lane_high_u32 (float32x4_t r, float16x8_t a, float16x4_t b)
39 {
40   return vfmlslq_lane_high_u32 (r, a, b, 1);
41 }
42 
43 float32x4_t
test_vfmlalq_laneq_high_u32(float32x4_t r,float16x8_t a,float16x8_t b)44 test_vfmlalq_laneq_high_u32  (float32x4_t r, float16x8_t a, float16x8_t b)
45 {
46   return vfmlalq_laneq_high_u32 (r, a, b, 7);
47 }
48 
49 float32x4_t
test_vfmlslq_laneq_high_u32(float32x4_t r,float16x8_t a,float16x8_t b)50 test_vfmlslq_laneq_high_u32 (float32x4_t r, float16x8_t a, float16x8_t b)
51 {
52   return vfmlslq_laneq_high_u32 (r, a, b, 7);
53 }
54 
55 /* { dg-final { scan-assembler-times {vfmal.f16\td[0-9]+, s[123]?[13579], s[123]?[02468]\[0\]} 1 } } */
56 /* { dg-final { scan-assembler-times {vfmal.f16\td[0-9]+, s[123]?[13579], s[123]?[13579]\[0\]} 1 } } */
57 /* { dg-final { scan-assembler-times {vfmal.f16\tq[0-9]+, d[123]?[13579], d[0-9]+\[1\]} 1 } } */
58 /* { dg-final { scan-assembler-times {vfmal.f16\tq[0-9]+, d[123]?[13579], d[123]?[13579]\[3\]} 1 } } */
59 
60 /* { dg-final { scan-assembler-times {vfmsl.f16\td[0-9]+, s[123]?[13579], s[123]?[02468]\[0\]} 1 } } */
61 /* { dg-final { scan-assembler-times {vfmsl.f16\td[0-9]+, s[123]?[13579], s[123]?[13579]\[0\]} 1 } } */
62 /* { dg-final { scan-assembler-times {vfmsl.f16\tq[0-9]+, d[123]?[13579], d[0-9]+\[1\]} 1 } } */
63 /* { dg-final { scan-assembler-times {vfmsl.f16\tq[0-9]+, d[123]?[13579], d[123]?[13579]\[3\]} 1 } } */
64