(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
acle/
asm/
st1_scatter_f64.c
       1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" { target { ! ilp32 } } } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** st1_scatter_f64:
       7  **	st1d	z0\.d, p0, \[z1\.d\]
       8  **	ret
       9  */
      10  TEST_STORE_SCATTER_ZS (st1_scatter_f64, svfloat64_t, svuint64_t,
      11  		       svst1_scatter_u64base_f64 (p0, z1, z0),
      12  		       svst1_scatter (p0, z1, z0))
      13  
      14  /*
      15  ** st1_scatter_x0_f64_offset:
      16  **	st1d	z0\.d, p0, \[x0, z1\.d\]
      17  **	ret
      18  */
      19  TEST_STORE_SCATTER_ZS (st1_scatter_x0_f64_offset, svfloat64_t, svuint64_t,
      20  		       svst1_scatter_u64base_offset_f64 (p0, z1, x0, z0),
      21  		       svst1_scatter_offset (p0, z1, x0, z0))
      22  
      23  /*
      24  ** st1_scatter_m8_f64_offset:
      25  **	mov	(x[0-9]+), #?-8
      26  **	st1d	z0\.d, p0, \[\1, z1\.d\]
      27  **	ret
      28  */
      29  TEST_STORE_SCATTER_ZS (st1_scatter_m8_f64_offset, svfloat64_t, svuint64_t,
      30  		       svst1_scatter_u64base_offset_f64 (p0, z1, -8, z0),
      31  		       svst1_scatter_offset (p0, z1, -8, z0))
      32  
      33  /*
      34  ** st1_scatter_0_f64_offset:
      35  **	st1d	z0\.d, p0, \[z1\.d\]
      36  **	ret
      37  */
      38  TEST_STORE_SCATTER_ZS (st1_scatter_0_f64_offset, svfloat64_t, svuint64_t,
      39  		       svst1_scatter_u64base_offset_f64 (p0, z1, 0, z0),
      40  		       svst1_scatter_offset (p0, z1, 0, z0))
      41  
      42  /*
      43  ** st1_scatter_9_f64_offset:
      44  **	mov	(x[0-9]+), #?9
      45  **	st1d	z0\.d, p0, \[\1, z1\.d\]
      46  **	ret
      47  */
      48  TEST_STORE_SCATTER_ZS (st1_scatter_9_f64_offset, svfloat64_t, svuint64_t,
      49  		       svst1_scatter_u64base_offset_f64 (p0, z1, 9, z0),
      50  		       svst1_scatter_offset (p0, z1, 9, z0))
      51  
      52  /*
      53  ** st1_scatter_10_f64_offset:
      54  **	mov	(x[0-9]+), #?10
      55  **	st1d	z0\.d, p0, \[\1, z1\.d\]
      56  **	ret
      57  */
      58  TEST_STORE_SCATTER_ZS (st1_scatter_10_f64_offset, svfloat64_t, svuint64_t,
      59  		       svst1_scatter_u64base_offset_f64 (p0, z1, 10, z0),
      60  		       svst1_scatter_offset (p0, z1, 10, z0))
      61  
      62  /*
      63  ** st1_scatter_11_f64_offset:
      64  **	mov	(x[0-9]+), #?11
      65  **	st1d	z0\.d, p0, \[\1, z1\.d\]
      66  **	ret
      67  */
      68  TEST_STORE_SCATTER_ZS (st1_scatter_11_f64_offset, svfloat64_t, svuint64_t,
      69  		       svst1_scatter_u64base_offset_f64 (p0, z1, 11, z0),
      70  		       svst1_scatter_offset (p0, z1, 11, z0))
      71  
      72  /*
      73  ** st1_scatter_12_f64_offset:
      74  **	mov	(x[0-9]+), #?12
      75  **	st1d	z0\.d, p0, \[\1, z1\.d\]
      76  **	ret
      77  */
      78  TEST_STORE_SCATTER_ZS (st1_scatter_12_f64_offset, svfloat64_t, svuint64_t,
      79  		       svst1_scatter_u64base_offset_f64 (p0, z1, 12, z0),
      80  		       svst1_scatter_offset (p0, z1, 12, z0))
      81  
      82  /*
      83  ** st1_scatter_13_f64_offset:
      84  **	mov	(x[0-9]+), #?13
      85  **	st1d	z0\.d, p0, \[\1, z1\.d\]
      86  **	ret
      87  */
      88  TEST_STORE_SCATTER_ZS (st1_scatter_13_f64_offset, svfloat64_t, svuint64_t,
      89  		       svst1_scatter_u64base_offset_f64 (p0, z1, 13, z0),
      90  		       svst1_scatter_offset (p0, z1, 13, z0))
      91  
      92  /*
      93  ** st1_scatter_14_f64_offset:
      94  **	mov	(x[0-9]+), #?14
      95  **	st1d	z0\.d, p0, \[\1, z1\.d\]
      96  **	ret
      97  */
      98  TEST_STORE_SCATTER_ZS (st1_scatter_14_f64_offset, svfloat64_t, svuint64_t,
      99  		       svst1_scatter_u64base_offset_f64 (p0, z1, 14, z0),
     100  		       svst1_scatter_offset (p0, z1, 14, z0))
     101  
     102  /*
     103  ** st1_scatter_15_f64_offset:
     104  **	mov	(x[0-9]+), #?15
     105  **	st1d	z0\.d, p0, \[\1, z1\.d\]
     106  **	ret
     107  */
     108  TEST_STORE_SCATTER_ZS (st1_scatter_15_f64_offset, svfloat64_t, svuint64_t,
     109  		       svst1_scatter_u64base_offset_f64 (p0, z1, 15, z0),
     110  		       svst1_scatter_offset (p0, z1, 15, z0))
     111  
     112  /*
     113  ** st1_scatter_16_f64_offset:
     114  **	st1d	z0\.d, p0, \[z1\.d, #16\]
     115  **	ret
     116  */
     117  TEST_STORE_SCATTER_ZS (st1_scatter_16_f64_offset, svfloat64_t, svuint64_t,
     118  		       svst1_scatter_u64base_offset_f64 (p0, z1, 16, z0),
     119  		       svst1_scatter_offset (p0, z1, 16, z0))
     120  
     121  /*
     122  ** st1_scatter_248_f64_offset:
     123  **	st1d	z0\.d, p0, \[z1\.d, #248\]
     124  **	ret
     125  */
     126  TEST_STORE_SCATTER_ZS (st1_scatter_248_f64_offset, svfloat64_t, svuint64_t,
     127  		       svst1_scatter_u64base_offset_f64 (p0, z1, 248, z0),
     128  		       svst1_scatter_offset (p0, z1, 248, z0))
     129  
     130  /*
     131  ** st1_scatter_256_f64_offset:
     132  **	mov	(x[0-9]+), #?256
     133  **	st1d	z0\.d, p0, \[\1, z1\.d\]
     134  **	ret
     135  */
     136  TEST_STORE_SCATTER_ZS (st1_scatter_256_f64_offset, svfloat64_t, svuint64_t,
     137  		       svst1_scatter_u64base_offset_f64 (p0, z1, 256, z0),
     138  		       svst1_scatter_offset (p0, z1, 256, z0))
     139  
     140  /*
     141  ** st1_scatter_x0_f64_index:
     142  **	lsl	(x[0-9]+), x0, #?3
     143  **	st1d	z0\.d, p0, \[\1, z1\.d\]
     144  **	ret
     145  */
     146  TEST_STORE_SCATTER_ZS (st1_scatter_x0_f64_index, svfloat64_t, svuint64_t,
     147  		       svst1_scatter_u64base_index_f64 (p0, z1, x0, z0),
     148  		       svst1_scatter_index (p0, z1, x0, z0))
     149  
     150  /*
     151  ** st1_scatter_m1_f64_index:
     152  **	mov	(x[0-9]+), #?-8
     153  **	st1d	z0\.d, p0, \[\1, z1\.d\]
     154  **	ret
     155  */
     156  TEST_STORE_SCATTER_ZS (st1_scatter_m1_f64_index, svfloat64_t, svuint64_t,
     157  		       svst1_scatter_u64base_index_f64 (p0, z1, -1, z0),
     158  		       svst1_scatter_index (p0, z1, -1, z0))
     159  
     160  /*
     161  ** st1_scatter_0_f64_index:
     162  **	st1d	z0\.d, p0, \[z1\.d\]
     163  **	ret
     164  */
     165  TEST_STORE_SCATTER_ZS (st1_scatter_0_f64_index, svfloat64_t, svuint64_t,
     166  		       svst1_scatter_u64base_index_f64 (p0, z1, 0, z0),
     167  		       svst1_scatter_index (p0, z1, 0, z0))
     168  
     169  /*
     170  ** st1_scatter_5_f64_index:
     171  **	st1d	z0\.d, p0, \[z1\.d, #40\]
     172  **	ret
     173  */
     174  TEST_STORE_SCATTER_ZS (st1_scatter_5_f64_index, svfloat64_t, svuint64_t,
     175  		       svst1_scatter_u64base_index_f64 (p0, z1, 5, z0),
     176  		       svst1_scatter_index (p0, z1, 5, z0))
     177  
     178  /*
     179  ** st1_scatter_31_f64_index:
     180  **	st1d	z0\.d, p0, \[z1\.d, #248\]
     181  **	ret
     182  */
     183  TEST_STORE_SCATTER_ZS (st1_scatter_31_f64_index, svfloat64_t, svuint64_t,
     184  		       svst1_scatter_u64base_index_f64 (p0, z1, 31, z0),
     185  		       svst1_scatter_index (p0, z1, 31, z0))
     186  
     187  /*
     188  ** st1_scatter_32_f64_index:
     189  **	mov	(x[0-9]+), #?256
     190  **	st1d	z0\.d, p0, \[\1, z1\.d\]
     191  **	ret
     192  */
     193  TEST_STORE_SCATTER_ZS (st1_scatter_32_f64_index, svfloat64_t, svuint64_t,
     194  		       svst1_scatter_u64base_index_f64 (p0, z1, 32, z0),
     195  		       svst1_scatter_index (p0, z1, 32, z0))
     196  
     197  /*
     198  ** st1_scatter_x0_f64_s64offset:
     199  **	st1d	z0\.d, p0, \[x0, z1\.d\]
     200  **	ret
     201  */
     202  TEST_STORE_SCATTER_SZ (st1_scatter_x0_f64_s64offset, svfloat64_t, float64_t, svint64_t,
     203  		       svst1_scatter_s64offset_f64 (p0, x0, z1, z0),
     204  		       svst1_scatter_offset (p0, x0, z1, z0))
     205  
     206  /*
     207  ** st1_scatter_f64_s64offset:
     208  **	st1d	z0\.d, p0, \[x0, z1\.d\]
     209  **	ret
     210  */
     211  TEST_STORE_SCATTER_SZ (st1_scatter_f64_s64offset, svfloat64_t, float64_t, svint64_t,
     212  		       svst1_scatter_s64offset_f64 (p0, x0, z1, z0),
     213  		       svst1_scatter_offset (p0, x0, z1, z0))
     214  
     215  /*
     216  ** st1_scatter_ext_f64_s64offset:
     217  **	st1d	z0\.d, p0, \[x0, z1\.d, sxtw\]
     218  **	ret
     219  */
     220  TEST_STORE_SCATTER_SZ (st1_scatter_ext_f64_s64offset, svfloat64_t, float64_t, svint64_t,
     221  		       svst1_scatter_s64offset_f64 (p0, x0, svextw_s64_x (p0, z1), z0),
     222  		       svst1_scatter_offset (p0, x0, svextw_x (p0, z1), z0))
     223  
     224  /*
     225  ** st1_scatter_x0_f64_u64offset:
     226  **	st1d	z0\.d, p0, \[x0, z1\.d\]
     227  **	ret
     228  */
     229  TEST_STORE_SCATTER_SZ (st1_scatter_x0_f64_u64offset, svfloat64_t, float64_t, svuint64_t,
     230  		       svst1_scatter_u64offset_f64 (p0, x0, z1, z0),
     231  		       svst1_scatter_offset (p0, x0, z1, z0))
     232  
     233  /*
     234  ** st1_scatter_f64_u64offset:
     235  **	st1d	z0\.d, p0, \[x0, z1\.d\]
     236  **	ret
     237  */
     238  TEST_STORE_SCATTER_SZ (st1_scatter_f64_u64offset, svfloat64_t, float64_t, svuint64_t,
     239  		       svst1_scatter_u64offset_f64 (p0, x0, z1, z0),
     240  		       svst1_scatter_offset (p0, x0, z1, z0))
     241  
     242  /*
     243  ** st1_scatter_ext_f64_u64offset:
     244  **	st1d	z0\.d, p0, \[x0, z1\.d, uxtw\]
     245  **	ret
     246  */
     247  TEST_STORE_SCATTER_SZ (st1_scatter_ext_f64_u64offset, svfloat64_t, float64_t, svuint64_t,
     248  		       svst1_scatter_u64offset_f64 (p0, x0, svextw_u64_x (p0, z1), z0),
     249  		       svst1_scatter_offset (p0, x0, svextw_x (p0, z1), z0))
     250  
     251  /*
     252  ** st1_scatter_x0_f64_s64index:
     253  **	st1d	z0\.d, p0, \[x0, z1\.d, lsl 3\]
     254  **	ret
     255  */
     256  TEST_STORE_SCATTER_SZ (st1_scatter_x0_f64_s64index, svfloat64_t, float64_t, svint64_t,
     257  		       svst1_scatter_s64index_f64 (p0, x0, z1, z0),
     258  		       svst1_scatter_index (p0, x0, z1, z0))
     259  
     260  /*
     261  ** st1_scatter_f64_s64index:
     262  **	st1d	z0\.d, p0, \[x0, z1\.d, lsl 3\]
     263  **	ret
     264  */
     265  TEST_STORE_SCATTER_SZ (st1_scatter_f64_s64index, svfloat64_t, float64_t, svint64_t,
     266  		       svst1_scatter_s64index_f64 (p0, x0, z1, z0),
     267  		       svst1_scatter_index (p0, x0, z1, z0))
     268  
     269  /*
     270  ** st1_scatter_ext_f64_s64index:
     271  **	st1d	z0\.d, p0, \[x0, z1\.d, sxtw 3\]
     272  **	ret
     273  */
     274  TEST_STORE_SCATTER_SZ (st1_scatter_ext_f64_s64index, svfloat64_t, float64_t, svint64_t,
     275  		       svst1_scatter_s64index_f64 (p0, x0, svextw_s64_x (p0, z1), z0),
     276  		       svst1_scatter_index (p0, x0, svextw_x (p0, z1), z0))
     277  
     278  /*
     279  ** st1_scatter_x0_f64_u64index:
     280  **	st1d	z0\.d, p0, \[x0, z1\.d, lsl 3\]
     281  **	ret
     282  */
     283  TEST_STORE_SCATTER_SZ (st1_scatter_x0_f64_u64index, svfloat64_t, float64_t, svuint64_t,
     284  		       svst1_scatter_u64index_f64 (p0, x0, z1, z0),
     285  		       svst1_scatter_index (p0, x0, z1, z0))
     286  
     287  /*
     288  ** st1_scatter_f64_u64index:
     289  **	st1d	z0\.d, p0, \[x0, z1\.d, lsl 3\]
     290  **	ret
     291  */
     292  TEST_STORE_SCATTER_SZ (st1_scatter_f64_u64index, svfloat64_t, float64_t, svuint64_t,
     293  		       svst1_scatter_u64index_f64 (p0, x0, z1, z0),
     294  		       svst1_scatter_index (p0, x0, z1, z0))
     295  
     296  /*
     297  ** st1_scatter_ext_f64_u64index:
     298  **	st1d	z0\.d, p0, \[x0, z1\.d, uxtw 3\]
     299  **	ret
     300  */
     301  TEST_STORE_SCATTER_SZ (st1_scatter_ext_f64_u64index, svfloat64_t, float64_t, svuint64_t,
     302  		       svst1_scatter_u64index_f64 (p0, x0, svextw_u64_x (p0, z1), z0),
     303  		       svst1_scatter_index (p0, x0, svextw_x (p0, z1), z0))