1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" { target { ! ilp32 } } } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** ldff1sw_gather_s64_tied1:
       7  **	ldff1sw	z0\.d, p0/z, \[z0\.d\]
       8  **	ret
       9  */
      10  TEST_LOAD_GATHER_ZS (ldff1sw_gather_s64_tied1, svint64_t, svuint64_t,
      11  		     z0_res = svldff1sw_gather_u64base_s64 (p0, z0),
      12  		     z0_res = svldff1sw_gather_s64 (p0, z0))
      13  
      14  /*
      15  ** ldff1sw_gather_s64_untied:
      16  **	ldff1sw	z0\.d, p0/z, \[z1\.d\]
      17  **	ret
      18  */
      19  TEST_LOAD_GATHER_ZS (ldff1sw_gather_s64_untied, svint64_t, svuint64_t,
      20  		     z0_res = svldff1sw_gather_u64base_s64 (p0, z1),
      21  		     z0_res = svldff1sw_gather_s64 (p0, z1))
      22  
      23  /*
      24  ** ldff1sw_gather_x0_s64_offset:
      25  **	ldff1sw	z0\.d, p0/z, \[x0, z0\.d\]
      26  **	ret
      27  */
      28  TEST_LOAD_GATHER_ZS (ldff1sw_gather_x0_s64_offset, svint64_t, svuint64_t,
      29  		     z0_res = svldff1sw_gather_u64base_offset_s64 (p0, z0, x0),
      30  		     z0_res = svldff1sw_gather_offset_s64 (p0, z0, x0))
      31  
      32  /*
      33  ** ldff1sw_gather_m4_s64_offset:
      34  **	mov	(x[0-9]+), #?-4
      35  **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
      36  **	ret
      37  */
      38  TEST_LOAD_GATHER_ZS (ldff1sw_gather_m4_s64_offset, svint64_t, svuint64_t,
      39  		     z0_res = svldff1sw_gather_u64base_offset_s64 (p0, z0, -4),
      40  		     z0_res = svldff1sw_gather_offset_s64 (p0, z0, -4))
      41  
      42  /*
      43  ** ldff1sw_gather_0_s64_offset:
      44  **	ldff1sw	z0\.d, p0/z, \[z0\.d\]
      45  **	ret
      46  */
      47  TEST_LOAD_GATHER_ZS (ldff1sw_gather_0_s64_offset, svint64_t, svuint64_t,
      48  		     z0_res = svldff1sw_gather_u64base_offset_s64 (p0, z0, 0),
      49  		     z0_res = svldff1sw_gather_offset_s64 (p0, z0, 0))
      50  
      51  /*
      52  ** ldff1sw_gather_5_s64_offset:
      53  **	mov	(x[0-9]+), #?5
      54  **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
      55  **	ret
      56  */
      57  TEST_LOAD_GATHER_ZS (ldff1sw_gather_5_s64_offset, svint64_t, svuint64_t,
      58  		     z0_res = svldff1sw_gather_u64base_offset_s64 (p0, z0, 5),
      59  		     z0_res = svldff1sw_gather_offset_s64 (p0, z0, 5))
      60  
      61  /*
      62  ** ldff1sw_gather_6_s64_offset:
      63  **	mov	(x[0-9]+), #?6
      64  **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
      65  **	ret
      66  */
      67  TEST_LOAD_GATHER_ZS (ldff1sw_gather_6_s64_offset, svint64_t, svuint64_t,
      68  		     z0_res = svldff1sw_gather_u64base_offset_s64 (p0, z0, 6),
      69  		     z0_res = svldff1sw_gather_offset_s64 (p0, z0, 6))
      70  
      71  /*
      72  ** ldff1sw_gather_7_s64_offset:
      73  **	mov	(x[0-9]+), #?7
      74  **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
      75  **	ret
      76  */
      77  TEST_LOAD_GATHER_ZS (ldff1sw_gather_7_s64_offset, svint64_t, svuint64_t,
      78  		     z0_res = svldff1sw_gather_u64base_offset_s64 (p0, z0, 7),
      79  		     z0_res = svldff1sw_gather_offset_s64 (p0, z0, 7))
      80  
      81  /*
      82  ** ldff1sw_gather_8_s64_offset:
      83  **	ldff1sw	z0\.d, p0/z, \[z0\.d, #8\]
      84  **	ret
      85  */
      86  TEST_LOAD_GATHER_ZS (ldff1sw_gather_8_s64_offset, svint64_t, svuint64_t,
      87  		     z0_res = svldff1sw_gather_u64base_offset_s64 (p0, z0, 8),
      88  		     z0_res = svldff1sw_gather_offset_s64 (p0, z0, 8))
      89  
      90  /*
      91  ** ldff1sw_gather_124_s64_offset:
      92  **	ldff1sw	z0\.d, p0/z, \[z0\.d, #124\]
      93  **	ret
      94  */
      95  TEST_LOAD_GATHER_ZS (ldff1sw_gather_124_s64_offset, svint64_t, svuint64_t,
      96  		     z0_res = svldff1sw_gather_u64base_offset_s64 (p0, z0, 124),
      97  		     z0_res = svldff1sw_gather_offset_s64 (p0, z0, 124))
      98  
      99  /*
     100  ** ldff1sw_gather_128_s64_offset:
     101  **	mov	(x[0-9]+), #?128
     102  **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
     103  **	ret
     104  */
     105  TEST_LOAD_GATHER_ZS (ldff1sw_gather_128_s64_offset, svint64_t, svuint64_t,
     106  		     z0_res = svldff1sw_gather_u64base_offset_s64 (p0, z0, 128),
     107  		     z0_res = svldff1sw_gather_offset_s64 (p0, z0, 128))
     108  
     109  /*
     110  ** ldff1sw_gather_x0_s64_index:
     111  **	lsl	(x[0-9]+), x0, #?2
     112  **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
     113  **	ret
     114  */
     115  TEST_LOAD_GATHER_ZS (ldff1sw_gather_x0_s64_index, svint64_t, svuint64_t,
     116  		     z0_res = svldff1sw_gather_u64base_index_s64 (p0, z0, x0),
     117  		     z0_res = svldff1sw_gather_index_s64 (p0, z0, x0))
     118  
     119  /*
     120  ** ldff1sw_gather_m1_s64_index:
     121  **	mov	(x[0-9]+), #?-4
     122  **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
     123  **	ret
     124  */
     125  TEST_LOAD_GATHER_ZS (ldff1sw_gather_m1_s64_index, svint64_t, svuint64_t,
     126  		     z0_res = svldff1sw_gather_u64base_index_s64 (p0, z0, -1),
     127  		     z0_res = svldff1sw_gather_index_s64 (p0, z0, -1))
     128  
     129  /*
     130  ** ldff1sw_gather_0_s64_index:
     131  **	ldff1sw	z0\.d, p0/z, \[z0\.d\]
     132  **	ret
     133  */
     134  TEST_LOAD_GATHER_ZS (ldff1sw_gather_0_s64_index, svint64_t, svuint64_t,
     135  		     z0_res = svldff1sw_gather_u64base_index_s64 (p0, z0, 0),
     136  		     z0_res = svldff1sw_gather_index_s64 (p0, z0, 0))
     137  
     138  /*
     139  ** ldff1sw_gather_5_s64_index:
     140  **	ldff1sw	z0\.d, p0/z, \[z0\.d, #20\]
     141  **	ret
     142  */
     143  TEST_LOAD_GATHER_ZS (ldff1sw_gather_5_s64_index, svint64_t, svuint64_t,
     144  		     z0_res = svldff1sw_gather_u64base_index_s64 (p0, z0, 5),
     145  		     z0_res = svldff1sw_gather_index_s64 (p0, z0, 5))
     146  
     147  /*
     148  ** ldff1sw_gather_31_s64_index:
     149  **	ldff1sw	z0\.d, p0/z, \[z0\.d, #124\]
     150  **	ret
     151  */
     152  TEST_LOAD_GATHER_ZS (ldff1sw_gather_31_s64_index, svint64_t, svuint64_t,
     153  		     z0_res = svldff1sw_gather_u64base_index_s64 (p0, z0, 31),
     154  		     z0_res = svldff1sw_gather_index_s64 (p0, z0, 31))
     155  
     156  /*
     157  ** ldff1sw_gather_32_s64_index:
     158  **	mov	(x[0-9]+), #?128
     159  **	ldff1sw	z0\.d, p0/z, \[\1, z0\.d\]
     160  **	ret
     161  */
     162  TEST_LOAD_GATHER_ZS (ldff1sw_gather_32_s64_index, svint64_t, svuint64_t,
     163  		     z0_res = svldff1sw_gather_u64base_index_s64 (p0, z0, 32),
     164  		     z0_res = svldff1sw_gather_index_s64 (p0, z0, 32))
     165  
     166  /*
     167  ** ldff1sw_gather_x0_s64_s64offset:
     168  **	ldff1sw	z0\.d, p0/z, \[x0, z0\.d\]
     169  **	ret
     170  */
     171  TEST_LOAD_GATHER_SZ (ldff1sw_gather_x0_s64_s64offset, svint64_t, int32_t, svint64_t,
     172  		     z0_res = svldff1sw_gather_s64offset_s64 (p0, x0, z0),
     173  		     z0_res = svldff1sw_gather_offset_s64 (p0, x0, z0))
     174  
     175  /*
     176  ** ldff1sw_gather_tied1_s64_s64offset:
     177  **	ldff1sw	z0\.d, p0/z, \[x0, z0\.d\]
     178  **	ret
     179  */
     180  TEST_LOAD_GATHER_SZ (ldff1sw_gather_tied1_s64_s64offset, svint64_t, int32_t, svint64_t,
     181  		     z0_res = svldff1sw_gather_s64offset_s64 (p0, x0, z0),
     182  		     z0_res = svldff1sw_gather_offset_s64 (p0, x0, z0))
     183  
     184  /*
     185  ** ldff1sw_gather_untied_s64_s64offset:
     186  **	ldff1sw	z0\.d, p0/z, \[x0, z1\.d\]
     187  **	ret
     188  */
     189  TEST_LOAD_GATHER_SZ (ldff1sw_gather_untied_s64_s64offset, svint64_t, int32_t, svint64_t,
     190  		     z0_res = svldff1sw_gather_s64offset_s64 (p0, x0, z1),
     191  		     z0_res = svldff1sw_gather_offset_s64 (p0, x0, z1))
     192  
     193  /*
     194  ** ldff1sw_gather_ext_s64_s64offset:
     195  **	ldff1sw	z0\.d, p0/z, \[x0, z1\.d, sxtw\]
     196  **	ret
     197  */
     198  TEST_LOAD_GATHER_SZ (ldff1sw_gather_ext_s64_s64offset, svint64_t, int32_t, svint64_t,
     199  		     z0_res = svldff1sw_gather_s64offset_s64 (p0, x0, svextw_s64_x (p0, z1)),
     200  		     z0_res = svldff1sw_gather_offset_s64 (p0, x0, svextw_x (p0, z1)))
     201  
     202  /*
     203  ** ldff1sw_gather_x0_s64_u64offset:
     204  **	ldff1sw	z0\.d, p0/z, \[x0, z0\.d\]
     205  **	ret
     206  */
     207  TEST_LOAD_GATHER_SZ (ldff1sw_gather_x0_s64_u64offset, svint64_t, int32_t, svuint64_t,
     208  		     z0_res = svldff1sw_gather_u64offset_s64 (p0, x0, z0),
     209  		     z0_res = svldff1sw_gather_offset_s64 (p0, x0, z0))
     210  
     211  /*
     212  ** ldff1sw_gather_tied1_s64_u64offset:
     213  **	ldff1sw	z0\.d, p0/z, \[x0, z0\.d\]
     214  **	ret
     215  */
     216  TEST_LOAD_GATHER_SZ (ldff1sw_gather_tied1_s64_u64offset, svint64_t, int32_t, svuint64_t,
     217  		     z0_res = svldff1sw_gather_u64offset_s64 (p0, x0, z0),
     218  		     z0_res = svldff1sw_gather_offset_s64 (p0, x0, z0))
     219  
     220  /*
     221  ** ldff1sw_gather_untied_s64_u64offset:
     222  **	ldff1sw	z0\.d, p0/z, \[x0, z1\.d\]
     223  **	ret
     224  */
     225  TEST_LOAD_GATHER_SZ (ldff1sw_gather_untied_s64_u64offset, svint64_t, int32_t, svuint64_t,
     226  		     z0_res = svldff1sw_gather_u64offset_s64 (p0, x0, z1),
     227  		     z0_res = svldff1sw_gather_offset_s64 (p0, x0, z1))
     228  
     229  /*
     230  ** ldff1sw_gather_ext_s64_u64offset:
     231  **	ldff1sw	z0\.d, p0/z, \[x0, z1\.d, uxtw\]
     232  **	ret
     233  */
     234  TEST_LOAD_GATHER_SZ (ldff1sw_gather_ext_s64_u64offset, svint64_t, int32_t, svuint64_t,
     235  		     z0_res = svldff1sw_gather_u64offset_s64 (p0, x0, svextw_u64_x (p0, z1)),
     236  		     z0_res = svldff1sw_gather_offset_s64 (p0, x0, svextw_x (p0, z1)))
     237  
     238  /*
     239  ** ldff1sw_gather_x0_s64_s64index:
     240  **	ldff1sw	z0\.d, p0/z, \[x0, z0\.d, lsl 2\]
     241  **	ret
     242  */
     243  TEST_LOAD_GATHER_SZ (ldff1sw_gather_x0_s64_s64index, svint64_t, int32_t, svint64_t,
     244  		     z0_res = svldff1sw_gather_s64index_s64 (p0, x0, z0),
     245  		     z0_res = svldff1sw_gather_index_s64 (p0, x0, z0))
     246  
     247  /*
     248  ** ldff1sw_gather_tied1_s64_s64index:
     249  **	ldff1sw	z0\.d, p0/z, \[x0, z0\.d, lsl 2\]
     250  **	ret
     251  */
     252  TEST_LOAD_GATHER_SZ (ldff1sw_gather_tied1_s64_s64index, svint64_t, int32_t, svint64_t,
     253  		     z0_res = svldff1sw_gather_s64index_s64 (p0, x0, z0),
     254  		     z0_res = svldff1sw_gather_index_s64 (p0, x0, z0))
     255  
     256  /*
     257  ** ldff1sw_gather_untied_s64_s64index:
     258  **	ldff1sw	z0\.d, p0/z, \[x0, z1\.d, lsl 2\]
     259  **	ret
     260  */
     261  TEST_LOAD_GATHER_SZ (ldff1sw_gather_untied_s64_s64index, svint64_t, int32_t, svint64_t,
     262  		     z0_res = svldff1sw_gather_s64index_s64 (p0, x0, z1),
     263  		     z0_res = svldff1sw_gather_index_s64 (p0, x0, z1))
     264  
     265  /*
     266  ** ldff1sw_gather_ext_s64_s64index:
     267  **	ldff1sw	z0\.d, p0/z, \[x0, z1\.d, sxtw 2\]
     268  **	ret
     269  */
     270  TEST_LOAD_GATHER_SZ (ldff1sw_gather_ext_s64_s64index, svint64_t, int32_t, svint64_t,
     271  		     z0_res = svldff1sw_gather_s64index_s64 (p0, x0, svextw_s64_x (p0, z1)),
     272  		     z0_res = svldff1sw_gather_index_s64 (p0, x0, svextw_x (p0, z1)))
     273  
     274  /*
     275  ** ldff1sw_gather_x0_s64_u64index:
     276  **	ldff1sw	z0\.d, p0/z, \[x0, z0\.d, lsl 2\]
     277  **	ret
     278  */
     279  TEST_LOAD_GATHER_SZ (ldff1sw_gather_x0_s64_u64index, svint64_t, int32_t, svuint64_t,
     280  		     z0_res = svldff1sw_gather_u64index_s64 (p0, x0, z0),
     281  		     z0_res = svldff1sw_gather_index_s64 (p0, x0, z0))
     282  
     283  /*
     284  ** ldff1sw_gather_tied1_s64_u64index:
     285  **	ldff1sw	z0\.d, p0/z, \[x0, z0\.d, lsl 2\]
     286  **	ret
     287  */
     288  TEST_LOAD_GATHER_SZ (ldff1sw_gather_tied1_s64_u64index, svint64_t, int32_t, svuint64_t,
     289  		     z0_res = svldff1sw_gather_u64index_s64 (p0, x0, z0),
     290  		     z0_res = svldff1sw_gather_index_s64 (p0, x0, z0))
     291  
     292  /*
     293  ** ldff1sw_gather_untied_s64_u64index:
     294  **	ldff1sw	z0\.d, p0/z, \[x0, z1\.d, lsl 2\]
     295  **	ret
     296  */
     297  TEST_LOAD_GATHER_SZ (ldff1sw_gather_untied_s64_u64index, svint64_t, int32_t, svuint64_t,
     298  		     z0_res = svldff1sw_gather_u64index_s64 (p0, x0, z1),
     299  		     z0_res = svldff1sw_gather_index_s64 (p0, x0, z1))
     300  
     301  /*
     302  ** ldff1sw_gather_ext_s64_u64index:
     303  **	ldff1sw	z0\.d, p0/z, \[x0, z1\.d, uxtw 2\]
     304  **	ret
     305  */
     306  TEST_LOAD_GATHER_SZ (ldff1sw_gather_ext_s64_u64index, svint64_t, int32_t, svuint64_t,
     307  		     z0_res = svldff1sw_gather_u64index_s64 (p0, x0, svextw_u64_x (p0, z1)),
     308  		     z0_res = svldff1sw_gather_index_s64 (p0, x0, svextw_x (p0, z1)))