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_int64_t_0:
       8  **	stp	xzr, xzr, \[x0\]
       9  **	ret
      10  */
      11  CONST_FN (2, int64_t, 0);
      12  
      13  /* No preference between vectorizing or not vectorizing here.  */
      14  CONST_FN (4, int64_t, 0);
      15  
      16  /*
      17  ** const_8_int64_t_0:
      18  **	movi	v([0-9]+)\.4s, .*
      19  **	stp	q\1, q\1, \[x0\]
      20  **	stp	q\1, q\1, \[x0, #?32\]
      21  **	ret
      22  */
      23  CONST_FN (8, int64_t, 0);
      24  
      25  /*
      26  ** dup_2_int64_t:
      27  **	stp	x1, x1, \[x0\]
      28  **	ret
      29  */
      30  DUP_FN (2, int64_t);
      31  
      32  /*
      33  ** dup_4_int64_t:
      34  **	stp	x1, x1, \[x0\]
      35  **	stp	x1, x1, \[x0, #?16\]
      36  **	ret
      37  */
      38  DUP_FN (4, int64_t);
      39  
      40  /* No preference between vectorizing or not vectorizing here.  */
      41  DUP_FN (8, int64_t);
      42  
      43  /*
      44  ** dup_16_int64_t:
      45  **	dup	v([0-9])\.2d, x1
      46  **	stp	q\1, q\1, \[x0\]
      47  **	stp	q\1, q\1, \[x0, #?32\]
      48  **	stp	q\1, q\1, \[x0, #?64\]
      49  **	stp	q\1, q\1, \[x0, #?96\]
      50  **	ret
      51  */
      52  DUP_FN (16, int64_t);
      53  
      54  /*
      55  ** cons2_1_int64_t:
      56  **	stp	x1, x2, \[x0\]
      57  **	ret
      58  */
      59  CONS2_FN (1, int64_t);
      60  
      61  /*
      62  ** cons2_2_int64_t:
      63  **	stp	x1, x2, \[x0\]
      64  **	stp	x1, x2, \[x0, #?16\]
      65  **	ret
      66  */
      67  CONS2_FN (2, int64_t);
      68  
      69  /*
      70  ** cons2_4_int64_t:
      71  **	stp	x1, x2, \[x0\]
      72  **	stp	x1, x2, \[x0, #?16\]
      73  **	stp	x1, x2, \[x0, #?32\]
      74  **	stp	x1, x2, \[x0, #?48\]
      75  **	ret
      76  */
      77  CONS2_FN (4, int64_t);
      78  
      79  /* No preference between vectorizing or not vectorizing here.  */
      80  CONS2_FN (8, int64_t);
      81  
      82  /*
      83  ** cons2_16_int64_t:
      84  **	...
      85  **	stp	q[0-9]+, .*
      86  **	ret
      87  */
      88  CONS2_FN (16, int64_t);
      89  
      90  /*
      91  ** cons4_1_int64_t:
      92  **	stp	x1, x2, \[x0\]
      93  **	stp	x3, x4, \[x0, #?16\]
      94  **	ret
      95  */
      96  CONS4_FN (1, int64_t);
      97  
      98  /*
      99  ** cons4_2_int64_t:
     100  **	stp	x1, x2, \[x0\]
     101  **	stp	x3, x4, \[x0, #?16\]
     102  **	stp	x1, x2, \[x0, #?32\]
     103  **	stp	x3, x4, \[x0, #?48\]
     104  **	ret
     105  */
     106  CONS4_FN (2, int64_t);
     107  
     108  /* No preference between vectorizing or not vectorizing here.  */
     109  CONS4_FN (4, int64_t);
     110  
     111  /* We should probably vectorize this, but currently don't.  */
     112  CONS4_FN (8, int64_t);
     113  
     114  /*
     115  ** cons4_16_int64_t:
     116  **	...
     117  **	stp	q[0-9]+, .*
     118  **	ret
     119  */
     120  CONS4_FN (16, int64_t);