1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" { target { ! ilp32 } } } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** st1_scatter_u32:
       7  **	st1w	z0\.s, p0, \[z1\.s\]
       8  **	ret
       9  */
      10  TEST_STORE_SCATTER_ZS (st1_scatter_u32, svuint32_t, svuint32_t,
      11  		       svst1_scatter_u32base_u32 (p0, z1, z0),
      12  		       svst1_scatter (p0, z1, z0))
      13  
      14  /*
      15  ** st1_scatter_x0_u32_offset:
      16  **	st1w	z0\.s, p0, \[x0, z1\.s, uxtw\]
      17  **	ret
      18  */
      19  TEST_STORE_SCATTER_ZS (st1_scatter_x0_u32_offset, svuint32_t, svuint32_t,
      20  		       svst1_scatter_u32base_offset_u32 (p0, z1, x0, z0),
      21  		       svst1_scatter_offset (p0, z1, x0, z0))
      22  
      23  /*
      24  ** st1_scatter_m4_u32_offset:
      25  **	mov	(x[0-9]+), #?-4
      26  **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
      27  **	ret
      28  */
      29  TEST_STORE_SCATTER_ZS (st1_scatter_m4_u32_offset, svuint32_t, svuint32_t,
      30  		       svst1_scatter_u32base_offset_u32 (p0, z1, -4, z0),
      31  		       svst1_scatter_offset (p0, z1, -4, z0))
      32  
      33  /*
      34  ** st1_scatter_0_u32_offset:
      35  **	st1w	z0\.s, p0, \[z1\.s\]
      36  **	ret
      37  */
      38  TEST_STORE_SCATTER_ZS (st1_scatter_0_u32_offset, svuint32_t, svuint32_t,
      39  		       svst1_scatter_u32base_offset_u32 (p0, z1, 0, z0),
      40  		       svst1_scatter_offset (p0, z1, 0, z0))
      41  
      42  /*
      43  ** st1_scatter_5_u32_offset:
      44  **	mov	(x[0-9]+), #?5
      45  **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
      46  **	ret
      47  */
      48  TEST_STORE_SCATTER_ZS (st1_scatter_5_u32_offset, svuint32_t, svuint32_t,
      49  		       svst1_scatter_u32base_offset_u32 (p0, z1, 5, z0),
      50  		       svst1_scatter_offset (p0, z1, 5, z0))
      51  
      52  /*
      53  ** st1_scatter_6_u32_offset:
      54  **	mov	(x[0-9]+), #?6
      55  **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
      56  **	ret
      57  */
      58  TEST_STORE_SCATTER_ZS (st1_scatter_6_u32_offset, svuint32_t, svuint32_t,
      59  		       svst1_scatter_u32base_offset_u32 (p0, z1, 6, z0),
      60  		       svst1_scatter_offset (p0, z1, 6, z0))
      61  
      62  /*
      63  ** st1_scatter_7_u32_offset:
      64  **	mov	(x[0-9]+), #?7
      65  **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
      66  **	ret
      67  */
      68  TEST_STORE_SCATTER_ZS (st1_scatter_7_u32_offset, svuint32_t, svuint32_t,
      69  		       svst1_scatter_u32base_offset_u32 (p0, z1, 7, z0),
      70  		       svst1_scatter_offset (p0, z1, 7, z0))
      71  
      72  /*
      73  ** st1_scatter_8_u32_offset:
      74  **	st1w	z0\.s, p0, \[z1\.s, #8\]
      75  **	ret
      76  */
      77  TEST_STORE_SCATTER_ZS (st1_scatter_8_u32_offset, svuint32_t, svuint32_t,
      78  		       svst1_scatter_u32base_offset_u32 (p0, z1, 8, z0),
      79  		       svst1_scatter_offset (p0, z1, 8, z0))
      80  
      81  /*
      82  ** st1_scatter_124_u32_offset:
      83  **	st1w	z0\.s, p0, \[z1\.s, #124\]
      84  **	ret
      85  */
      86  TEST_STORE_SCATTER_ZS (st1_scatter_124_u32_offset, svuint32_t, svuint32_t,
      87  		       svst1_scatter_u32base_offset_u32 (p0, z1, 124, z0),
      88  		       svst1_scatter_offset (p0, z1, 124, z0))
      89  
      90  /*
      91  ** st1_scatter_128_u32_offset:
      92  **	mov	(x[0-9]+), #?128
      93  **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
      94  **	ret
      95  */
      96  TEST_STORE_SCATTER_ZS (st1_scatter_128_u32_offset, svuint32_t, svuint32_t,
      97  		       svst1_scatter_u32base_offset_u32 (p0, z1, 128, z0),
      98  		       svst1_scatter_offset (p0, z1, 128, z0))
      99  
     100  /*
     101  ** st1_scatter_x0_u32_index:
     102  **	lsl	(x[0-9]+), x0, #?2
     103  **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
     104  **	ret
     105  */
     106  TEST_STORE_SCATTER_ZS (st1_scatter_x0_u32_index, svuint32_t, svuint32_t,
     107  		       svst1_scatter_u32base_index_u32 (p0, z1, x0, z0),
     108  		       svst1_scatter_index (p0, z1, x0, z0))
     109  
     110  /*
     111  ** st1_scatter_m1_u32_index:
     112  **	mov	(x[0-9]+), #?-4
     113  **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
     114  **	ret
     115  */
     116  TEST_STORE_SCATTER_ZS (st1_scatter_m1_u32_index, svuint32_t, svuint32_t,
     117  		       svst1_scatter_u32base_index_u32 (p0, z1, -1, z0),
     118  		       svst1_scatter_index (p0, z1, -1, z0))
     119  
     120  /*
     121  ** st1_scatter_0_u32_index:
     122  **	st1w	z0\.s, p0, \[z1\.s\]
     123  **	ret
     124  */
     125  TEST_STORE_SCATTER_ZS (st1_scatter_0_u32_index, svuint32_t, svuint32_t,
     126  		       svst1_scatter_u32base_index_u32 (p0, z1, 0, z0),
     127  		       svst1_scatter_index (p0, z1, 0, z0))
     128  
     129  /*
     130  ** st1_scatter_5_u32_index:
     131  **	st1w	z0\.s, p0, \[z1\.s, #20\]
     132  **	ret
     133  */
     134  TEST_STORE_SCATTER_ZS (st1_scatter_5_u32_index, svuint32_t, svuint32_t,
     135  		       svst1_scatter_u32base_index_u32 (p0, z1, 5, z0),
     136  		       svst1_scatter_index (p0, z1, 5, z0))
     137  
     138  /*
     139  ** st1_scatter_31_u32_index:
     140  **	st1w	z0\.s, p0, \[z1\.s, #124\]
     141  **	ret
     142  */
     143  TEST_STORE_SCATTER_ZS (st1_scatter_31_u32_index, svuint32_t, svuint32_t,
     144  		       svst1_scatter_u32base_index_u32 (p0, z1, 31, z0),
     145  		       svst1_scatter_index (p0, z1, 31, z0))
     146  
     147  /*
     148  ** st1_scatter_32_u32_index:
     149  **	mov	(x[0-9]+), #?128
     150  **	st1w	z0\.s, p0, \[\1, z1\.s, uxtw\]
     151  **	ret
     152  */
     153  TEST_STORE_SCATTER_ZS (st1_scatter_32_u32_index, svuint32_t, svuint32_t,
     154  		       svst1_scatter_u32base_index_u32 (p0, z1, 32, z0),
     155  		       svst1_scatter_index (p0, z1, 32, z0))
     156  
     157  /*
     158  ** st1_scatter_x0_u32_s32offset:
     159  **	st1w	z0\.s, p0, \[x0, z1\.s, sxtw\]
     160  **	ret
     161  */
     162  TEST_STORE_SCATTER_SZ (st1_scatter_x0_u32_s32offset, svuint32_t, uint32_t, svint32_t,
     163  		       svst1_scatter_s32offset_u32 (p0, x0, z1, z0),
     164  		       svst1_scatter_offset (p0, x0, z1, z0))
     165  
     166  /*
     167  ** st1_scatter_u32_s32offset:
     168  **	st1w	z0\.s, p0, \[x0, z1\.s, sxtw\]
     169  **	ret
     170  */
     171  TEST_STORE_SCATTER_SZ (st1_scatter_u32_s32offset, svuint32_t, uint32_t, svint32_t,
     172  		       svst1_scatter_s32offset_u32 (p0, x0, z1, z0),
     173  		       svst1_scatter_offset (p0, x0, z1, z0))
     174  
     175  /*
     176  ** st1_scatter_x0_u32_u32offset:
     177  **	st1w	z0\.s, p0, \[x0, z1\.s, uxtw\]
     178  **	ret
     179  */
     180  TEST_STORE_SCATTER_SZ (st1_scatter_x0_u32_u32offset, svuint32_t, uint32_t, svuint32_t,
     181  		       svst1_scatter_u32offset_u32 (p0, x0, z1, z0),
     182  		       svst1_scatter_offset (p0, x0, z1, z0))
     183  
     184  /*
     185  ** st1_scatter_u32_u32offset:
     186  **	st1w	z0\.s, p0, \[x0, z1\.s, uxtw\]
     187  **	ret
     188  */
     189  TEST_STORE_SCATTER_SZ (st1_scatter_u32_u32offset, svuint32_t, uint32_t, svuint32_t,
     190  		       svst1_scatter_u32offset_u32 (p0, x0, z1, z0),
     191  		       svst1_scatter_offset (p0, x0, z1, z0))
     192  
     193  /*
     194  ** st1_scatter_x0_u32_s32index:
     195  **	st1w	z0\.s, p0, \[x0, z1\.s, sxtw 2\]
     196  **	ret
     197  */
     198  TEST_STORE_SCATTER_SZ (st1_scatter_x0_u32_s32index, svuint32_t, uint32_t, svint32_t,
     199  		       svst1_scatter_s32index_u32 (p0, x0, z1, z0),
     200  		       svst1_scatter_index (p0, x0, z1, z0))
     201  
     202  /*
     203  ** st1_scatter_u32_s32index:
     204  **	st1w	z0\.s, p0, \[x0, z1\.s, sxtw 2\]
     205  **	ret
     206  */
     207  TEST_STORE_SCATTER_SZ (st1_scatter_u32_s32index, svuint32_t, uint32_t, svint32_t,
     208  		       svst1_scatter_s32index_u32 (p0, x0, z1, z0),
     209  		       svst1_scatter_index (p0, x0, z1, z0))
     210  
     211  /*
     212  ** st1_scatter_x0_u32_u32index:
     213  **	st1w	z0\.s, p0, \[x0, z1\.s, uxtw 2\]
     214  **	ret
     215  */
     216  TEST_STORE_SCATTER_SZ (st1_scatter_x0_u32_u32index, svuint32_t, uint32_t, svuint32_t,
     217  		       svst1_scatter_u32index_u32 (p0, x0, z1, z0),
     218  		       svst1_scatter_index (p0, x0, z1, z0))
     219  
     220  /*
     221  ** st1_scatter_u32_u32index:
     222  **	st1w	z0\.s, p0, \[x0, z1\.s, uxtw 2\]
     223  **	ret
     224  */
     225  TEST_STORE_SCATTER_SZ (st1_scatter_u32_u32index, svuint32_t, uint32_t, svuint32_t,
     226  		       svst1_scatter_u32index_u32 (p0, x0, z1, z0),
     227  		       svst1_scatter_index (p0, x0, z1, z0))