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
       8  test_vfmlal_lane_low_f16 (float32x2_t r, float16x4_t a, float16x4_t b)
       9  {
      10    return vfmlal_lane_low_f16 (r, a, b, 0);
      11  }
      12  
      13  float32x2_t
      14  test_vfmlsl_lane_low_f16 (float32x2_t r, float16x4_t a, float16x4_t b)
      15  {
      16    return vfmlsl_lane_low_f16 (r, a, b, 0);
      17  }
      18  
      19  float32x2_t
      20  test_vfmlal_laneq_low_f16 (float32x2_t r, float16x4_t a, float16x8_t b)
      21  {
      22    return vfmlal_laneq_low_f16 (r, a, b, 6);
      23  }
      24  
      25  float32x2_t
      26  test_vfmlsl_laneq_low_f16 (float32x2_t r, float16x4_t a, float16x8_t b)
      27  {
      28    return vfmlsl_laneq_low_f16 (r, a, b, 6);
      29  }
      30  
      31  float32x4_t
      32  test_vfmlalq_lane_low_f16 (float32x4_t r, float16x8_t a, float16x4_t b)
      33  {
      34    return vfmlalq_lane_low_f16 (r, a, b, 1);
      35  }
      36  
      37  float32x4_t
      38  test_vfmlslq_lane_low_f16 (float32x4_t r, float16x8_t a, float16x4_t b)
      39  {
      40    return vfmlslq_lane_low_f16 (r, a, b, 1);
      41  }
      42  
      43  float32x4_t
      44  test_vfmlalq_laneq_low_f16 (float32x4_t r, float16x8_t a, float16x8_t b)
      45  {
      46    return vfmlalq_laneq_low_f16 (r, a, b, 7);
      47  }
      48  
      49  float32x4_t
      50  test_vfmlslq_laneq_low_f16 (float32x4_t r, float16x8_t a, float16x8_t b)
      51  {
      52    return vfmlslq_laneq_low_f16 (r, a, b, 7);
      53  }
      54  
      55  /* { dg-final { scan-assembler-times {vfmal.f16\td[0-9]+, s[123]?[02468], s[123]?[02468]\[0\]} 1 } } */
      56  /* { dg-final { scan-assembler-times {vfmal.f16\td[0-9]+, s[123]?[02468], s[123]?[13579]\[0\]} 1 } } */
      57  /* { dg-final { scan-assembler-times {vfmal.f16\tq[0-9]+, d[123]?[02468], d[0-9]+\[1\]} 1 } } */
      58  /* { dg-final { scan-assembler-times {vfmal.f16\tq[0-9]+, d[123]?[02468], d[123]?[13579]\[3\]} 1 } } */
      59  
      60  /* { dg-final { scan-assembler-times {vfmsl.f16\td[0-9]+, s[123]?[02468], s[123]?[02468]\[0\]} 1 } } */
      61  /* { dg-final { scan-assembler-times {vfmsl.f16\td[0-9]+, s[123]?[02468], s[123]?[13579]\[0\]} 1 } } */
      62  /* { dg-final { scan-assembler-times {vfmsl.f16\tq[0-9]+, d[123]?[02468], d[0-9]+\[1\]} 1 } } */
      63  /* { dg-final { scan-assembler-times {vfmsl.f16\tq[0-9]+, d[123]?[02468], d[123]?[13579]\[3\]} 1 } } */