(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
acle/
asm/
st1_u8.c
       1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" { target { ! ilp32 } } } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** st1_u8_base:
       7  **	st1b	z0\.b, p0, \[x0\]
       8  **	ret
       9  */
      10  TEST_STORE (st1_u8_base, svuint8_t, uint8_t,
      11  	    svst1_u8 (p0, x0, z0),
      12  	    svst1 (p0, x0, z0))
      13  
      14  /*
      15  ** st1_u8_index:
      16  **	st1b	z0\.b, p0, \[x0, x1\]
      17  **	ret
      18  */
      19  TEST_STORE (st1_u8_index, svuint8_t, uint8_t,
      20  	    svst1_u8 (p0, x0 + x1, z0),
      21  	    svst1 (p0, x0 + x1, z0))
      22  
      23  /*
      24  ** st1_u8_1:
      25  **	st1b	z0\.b, p0, \[x0, #1, mul vl\]
      26  **	ret
      27  */
      28  TEST_STORE (st1_u8_1, svuint8_t, uint8_t,
      29  	    svst1_u8 (p0, x0 + svcntb (), z0),
      30  	    svst1 (p0, x0 + svcntb (), z0))
      31  
      32  /*
      33  ** st1_u8_7:
      34  **	st1b	z0\.b, p0, \[x0, #7, mul vl\]
      35  **	ret
      36  */
      37  TEST_STORE (st1_u8_7, svuint8_t, uint8_t,
      38  	    svst1_u8 (p0, x0 + svcntb () * 7, z0),
      39  	    svst1 (p0, x0 + svcntb () * 7, z0))
      40  
      41  /* Moving the constant into a register would also be OK.  */
      42  /*
      43  ** st1_u8_8:
      44  **	incb	x0, all, mul #8
      45  **	st1b	z0\.b, p0, \[x0\]
      46  **	ret
      47  */
      48  TEST_STORE (st1_u8_8, svuint8_t, uint8_t,
      49  	    svst1_u8 (p0, x0 + svcntb () * 8, z0),
      50  	    svst1 (p0, x0 + svcntb () * 8, z0))
      51  
      52  /*
      53  ** st1_u8_m1:
      54  **	st1b	z0\.b, p0, \[x0, #-1, mul vl\]
      55  **	ret
      56  */
      57  TEST_STORE (st1_u8_m1, svuint8_t, uint8_t,
      58  	    svst1_u8 (p0, x0 - svcntb (), z0),
      59  	    svst1 (p0, x0 - svcntb (), z0))
      60  
      61  /*
      62  ** st1_u8_m8:
      63  **	st1b	z0\.b, p0, \[x0, #-8, mul vl\]
      64  **	ret
      65  */
      66  TEST_STORE (st1_u8_m8, svuint8_t, uint8_t,
      67  	    svst1_u8 (p0, x0 - svcntb () * 8, z0),
      68  	    svst1 (p0, x0 - svcntb () * 8, z0))
      69  
      70  /* Moving the constant into a register would also be OK.  */
      71  /*
      72  ** st1_u8_m9:
      73  **	decb	x0, all, mul #9
      74  **	st1b	z0\.b, p0, \[x0\]
      75  **	ret
      76  */
      77  TEST_STORE (st1_u8_m9, svuint8_t, uint8_t,
      78  	    svst1_u8 (p0, x0 - svcntb () * 9, z0),
      79  	    svst1 (p0, x0 - svcntb () * 9, z0))
      80  
      81  /*
      82  ** st1_vnum_u8_0:
      83  **	st1b	z0\.b, p0, \[x0\]
      84  **	ret
      85  */
      86  TEST_STORE (st1_vnum_u8_0, svuint8_t, uint8_t,
      87  	    svst1_vnum_u8 (p0, x0, 0, z0),
      88  	    svst1_vnum (p0, x0, 0, z0))
      89  
      90  /*
      91  ** st1_vnum_u8_1:
      92  **	st1b	z0\.b, p0, \[x0, #1, mul vl\]
      93  **	ret
      94  */
      95  TEST_STORE (st1_vnum_u8_1, svuint8_t, uint8_t,
      96  	    svst1_vnum_u8 (p0, x0, 1, z0),
      97  	    svst1_vnum (p0, x0, 1, z0))
      98  
      99  /*
     100  ** st1_vnum_u8_7:
     101  **	st1b	z0\.b, p0, \[x0, #7, mul vl\]
     102  **	ret
     103  */
     104  TEST_STORE (st1_vnum_u8_7, svuint8_t, uint8_t,
     105  	    svst1_vnum_u8 (p0, x0, 7, z0),
     106  	    svst1_vnum (p0, x0, 7, z0))
     107  
     108  /* Moving the constant into a register would also be OK.  */
     109  /*
     110  ** st1_vnum_u8_8:
     111  **	incb	x0, all, mul #8
     112  **	st1b	z0\.b, p0, \[x0\]
     113  **	ret
     114  */
     115  TEST_STORE (st1_vnum_u8_8, svuint8_t, uint8_t,
     116  	    svst1_vnum_u8 (p0, x0, 8, z0),
     117  	    svst1_vnum (p0, x0, 8, z0))
     118  
     119  /*
     120  ** st1_vnum_u8_m1:
     121  **	st1b	z0\.b, p0, \[x0, #-1, mul vl\]
     122  **	ret
     123  */
     124  TEST_STORE (st1_vnum_u8_m1, svuint8_t, uint8_t,
     125  	    svst1_vnum_u8 (p0, x0, -1, z0),
     126  	    svst1_vnum (p0, x0, -1, z0))
     127  
     128  /*
     129  ** st1_vnum_u8_m8:
     130  **	st1b	z0\.b, p0, \[x0, #-8, mul vl\]
     131  **	ret
     132  */
     133  TEST_STORE (st1_vnum_u8_m8, svuint8_t, uint8_t,
     134  	    svst1_vnum_u8 (p0, x0, -8, z0),
     135  	    svst1_vnum (p0, x0, -8, z0))
     136  
     137  /* Moving the constant into a register would also be OK.  */
     138  /*
     139  ** st1_vnum_u8_m9:
     140  **	decb	x0, all, mul #9
     141  **	st1b	z0\.b, p0, \[x0\]
     142  **	ret
     143  */
     144  TEST_STORE (st1_vnum_u8_m9, svuint8_t, uint8_t,
     145  	    svst1_vnum_u8 (p0, x0, -9, z0),
     146  	    svst1_vnum (p0, x0, -9, z0))
     147  
     148  /*
     149  ** st1_vnum_u8_x1:
     150  **	cntb	(x[0-9]+)
     151  ** (
     152  **	madd	(x[0-9]+), (?:x1, \1|\1, x1), x0
     153  **	st1b	z0\.b, p0, \[\2\]
     154  ** |
     155  **	mul	(x[0-9]+), (?:x1, \1|\1, x1)
     156  **	st1b	z0\.b, p0, \[x0, \3\]
     157  ** )
     158  **	ret
     159  */
     160  TEST_STORE (st1_vnum_u8_x1, svuint8_t, uint8_t,
     161  	    svst1_vnum_u8 (p0, x0, x1, z0),
     162  	    svst1_vnum (p0, x0, x1, z0))