1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** mls_lane_0_f64_tied1:
       7  **	fmls	z0\.d, z1\.d, z2\.d\[0\]
       8  **	ret
       9  */
      10  TEST_UNIFORM_Z (mls_lane_0_f64_tied1, svfloat64_t,
      11  		z0 = svmls_lane_f64 (z0, z1, z2, 0),
      12  		z0 = svmls_lane (z0, z1, z2, 0))
      13  
      14  /*
      15  ** mls_lane_0_f64_tied2:
      16  **	mov	(z[0-9]+\.d), z0\.d
      17  **	movprfx	z0, z1
      18  **	fmls	z0\.d, \1, z2\.d\[0\]
      19  **	ret
      20  */
      21  TEST_UNIFORM_Z (mls_lane_0_f64_tied2, svfloat64_t,
      22  		z0 = svmls_lane_f64 (z1, z0, z2, 0),
      23  		z0 = svmls_lane (z1, z0, z2, 0))
      24  
      25  /*
      26  ** mls_lane_0_f64_tied3:
      27  **	mov	(z[0-9]+\.d), z0\.d
      28  **	movprfx	z0, z1
      29  **	fmls	z0\.d, z2\.d, \1\[0\]
      30  **	ret
      31  */
      32  TEST_UNIFORM_Z (mls_lane_0_f64_tied3, svfloat64_t,
      33  		z0 = svmls_lane_f64 (z1, z2, z0, 0),
      34  		z0 = svmls_lane (z1, z2, z0, 0))
      35  
      36  /*
      37  ** mls_lane_0_f64_untied:
      38  **	movprfx	z0, z1
      39  **	fmls	z0\.d, z2\.d, z3\.d\[0\]
      40  **	ret
      41  */
      42  TEST_UNIFORM_Z (mls_lane_0_f64_untied, svfloat64_t,
      43  		z0 = svmls_lane_f64 (z1, z2, z3, 0),
      44  		z0 = svmls_lane (z1, z2, z3, 0))
      45  
      46  /*
      47  ** mls_lane_1_f64:
      48  **	fmls	z0\.d, z1\.d, z2\.d\[1\]
      49  **	ret
      50  */
      51  TEST_UNIFORM_Z (mls_lane_1_f64, svfloat64_t,
      52  		z0 = svmls_lane_f64 (z0, z1, z2, 1),
      53  		z0 = svmls_lane (z0, z1, z2, 1))
      54  
      55  /*
      56  ** mls_lane_z7_f64:
      57  **	fmls	z0\.d, z1\.d, z7\.d\[1\]
      58  **	ret
      59  */
      60  TEST_DUAL_Z (mls_lane_z7_f64, svfloat64_t, svfloat64_t,
      61  	     z0 = svmls_lane_f64 (z0, z1, z7, 1),
      62  	     z0 = svmls_lane (z0, z1, z7, 1))
      63  
      64  /*
      65  ** mls_lane_z15_f64:
      66  **	str	d15, \[sp, -16\]!
      67  **	fmls	z0\.d, z1\.d, z15\.d\[1\]
      68  **	ldr	d15, \[sp\], 16
      69  **	ret
      70  */
      71  TEST_DUAL_LANE_REG (mls_lane_z15_f64, svfloat64_t, svfloat64_t, z15,
      72  		    z0 = svmls_lane_f64 (z0, z1, z15, 1),
      73  		    z0 = svmls_lane (z0, z1, z15, 1))
      74  
      75  /*
      76  ** mls_lane_z16_f64:
      77  **	mov	(z[0-9]|z1[0-5])\.d, z16\.d
      78  **	fmls	z0\.d, z1\.d, \1\.d\[1\]
      79  **	ret
      80  */
      81  TEST_DUAL_LANE_REG (mls_lane_z16_f64, svfloat64_t, svfloat64_t, z16,
      82  		    z0 = svmls_lane_f64 (z0, z1, z16, 1),
      83  		    z0 = svmls_lane (z0, z1, z16, 1))