1  /* { dg-options "-O2 -fno-tree-loop-distribute-patterns" } */
       2  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
       3  
       4  #include "ldp_stp_14.h"
       5  
       6  /*
       7  ** const_2_int16_t_0:
       8  **	str	wzr, \[x0\]
       9  **	ret
      10  */
      11  CONST_FN (2, int16_t, 0);
      12  
      13  /*
      14  ** const_4_int16_t_0:
      15  **	str	xzr, \[x0\]
      16  **	ret
      17  */
      18  CONST_FN (4, int16_t, 0);
      19  
      20  /*
      21  ** const_8_int16_t_0:
      22  **	stp	xzr, xzr, \[x0\]
      23  **	ret
      24  */
      25  CONST_FN (8, int16_t, 0);
      26  
      27  /* No preference between vectorizing or not vectorizing here.  */
      28  CONST_FN (16, int16_t, 0);
      29  
      30  /*
      31  ** const_32_int16_t_0:
      32  **	movi	v([0-9]+)\.4s, .*
      33  **	stp	q\1, q\1, \[x0\]
      34  **	stp	q\1, q\1, \[x0, #?32\]
      35  **	ret
      36  */
      37  CONST_FN (32, int16_t, 0);
      38  
      39  /* No preference between vectorizing or not vectorizing here.  */
      40  CONST_FN (2, int16_t, 1);
      41  
      42  /*
      43  ** const_4_int16_t_1:
      44  **	movi	v([0-9]+)\.4h, .*
      45  **	str	d\1, \[x0\]
      46  **	ret
      47  */
      48  CONST_FN (4, int16_t, 1);
      49  
      50  /*
      51  ** const_8_int16_t_1:
      52  **	movi	v([0-9]+)\.8h, .*
      53  **	str	q\1, \[x0\]
      54  **	ret
      55  */
      56  CONST_FN (8, int16_t, 1);
      57  
      58  /* Fuzzy match due to PR104387.  */
      59  /*
      60  ** dup_2_int16_t:
      61  **	...
      62  **	strh	w1, \[x0, #?2\]
      63  **	ret
      64  */
      65  DUP_FN (2, int16_t);
      66  
      67  /*
      68  ** dup_4_int16_t:
      69  **	dup	v([0-9]+)\.4h, w1
      70  **	str	d\1, \[x0\]
      71  **	ret
      72  */
      73  DUP_FN (4, int16_t);
      74  
      75  /*
      76  ** dup_8_int16_t:
      77  **	dup	v([0-9]+)\.8h, w1
      78  **	str	q\1, \[x0\]
      79  **	ret
      80  */
      81  DUP_FN (8, int16_t);
      82  
      83  /*
      84  ** cons2_1_int16_t:
      85  **	strh	w1, \[x0\]
      86  **	strh	w2, \[x0, #?2\]
      87  **	ret
      88  */
      89  CONS2_FN (1, int16_t);