(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
ldp_stp_16.c
       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_float_0:
       8  **	str	xzr, \[x0\]
       9  **	ret
      10  */
      11  CONST_FN (2, float, 0);
      12  
      13  /*
      14  ** const_4_float_0:
      15  **	stp	xzr, xzr, \[x0\]
      16  **	ret
      17  */
      18  CONST_FN (4, float, 0);
      19  
      20  /* No preference between vectorizing or not vectorizing here.  */
      21  CONST_FN (8, float, 0);
      22  
      23  /*
      24  ** const_16_float_0:
      25  **	movi	v([0-9]+)\.4s, .*
      26  **	stp	q\1, q\1, \[x0\]
      27  **	stp	q\1, q\1, \[x0, #?32\]
      28  **	ret
      29  */
      30  CONST_FN (16, float, 0);
      31  
      32  /*
      33  ** const_2_float_1:
      34  **	fmov	v([0-9]+)\.2s, .*
      35  **	str	d\1, \[x0\]
      36  **	ret
      37  */
      38  CONST_FN (2, float, 1);
      39  
      40  /*
      41  ** const_4_float_1:
      42  **	fmov	v([0-9]+)\.4s, .*
      43  **	str	q\1, \[x0\]
      44  **	ret
      45  */
      46  CONST_FN (4, float, 1);
      47  
      48  /*
      49  ** dup_2_float:
      50  **	stp	s0, s0, \[x0\]
      51  **	ret
      52  */
      53  DUP_FN (2, float);
      54  
      55  /* No preference between vectorizing or not vectorizing here.  */
      56  DUP_FN (4, float);
      57  
      58  /*
      59  ** dup_8_float:
      60  **	dup	v([0-9]+)\.4s, v0.s\[0\]
      61  **	stp	q\1, q\1, \[x0\]
      62  **	ret
      63  */
      64  DUP_FN (8, float);
      65  
      66  /*
      67  ** cons2_1_float:
      68  **	stp	s0, s1, \[x0\]
      69  **	ret
      70  */
      71  CONS2_FN (1, float);
      72  
      73  /*
      74  ** cons2_2_float:
      75  **	stp	s0, s1, \[x0\]
      76  **	stp	s0, s1, \[x0, #?8\]
      77  **	ret
      78  */
      79  CONS2_FN (2, float);
      80  
      81  /*
      82  ** cons2_4_float:	{ target aarch64_little_endian }
      83  **	ins	v0.s\[1\], v1.s\[0\]
      84  **	stp	d0, d0, \[x0\]
      85  **	stp	d0, d0, \[x0, #?16\]
      86  **	ret
      87  */
      88  /*
      89  ** cons2_4_float:	{ target aarch64_big_endian }
      90  **	ins	v1.s\[1\], v0.s\[0\]
      91  **	stp	d1, d1, \[x0\]
      92  **	stp	d1, d1, \[x0, #?16\]
      93  **	ret
      94  */
      95  CONS2_FN (4, float);
      96  
      97  /*
      98  ** cons2_8_float:
      99  **	dup	v([0-9]+)\.4s, .*
     100  **	...
     101  **	stp	q\1, q\1, \[x0\]
     102  **	stp	q\1, q\1, \[x0, #?32\]
     103  **	ret
     104  */
     105  CONS2_FN (8, float);
     106  
     107  /*
     108  ** cons4_1_float:
     109  **	stp	s0, s1, \[x0\]
     110  **	stp	s2, s3, \[x0, #?8\]
     111  **	ret
     112  */
     113  CONS4_FN (1, float);
     114  
     115  /*
     116  ** cons4_2_float:
     117  **	stp	s0, s1, \[x0\]
     118  **	stp	s2, s3, \[x0, #?8\]
     119  **	stp	s0, s1, \[x0, #?16\]
     120  **	stp	s2, s3, \[x0, #?24\]
     121  **	ret
     122  */
     123  CONS4_FN (2, float);
     124  
     125  /*
     126  ** cons4_4_float:
     127  **	ins	v([0-9]+)\.s.*
     128  **	...
     129  **	stp	q\1, q\1, \[x0\]
     130  **	stp	q\1, q\1, \[x0, #?32\]
     131  **	ret
     132  */
     133  CONS4_FN (4, float);