1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" { target { ! ilp32 } } } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** prfw_gather_u32base:
       7  **	prfw	pldl1keep, p0, \[z0\.s\]
       8  **	ret
       9  */
      10  TEST_PREFETCH_GATHER_ZS (prfw_gather_u32base, svuint32_t,
      11  			 svprfw_gather_u32base (p0, z0, SV_PLDL1KEEP),
      12  			 svprfw_gather (p0, z0, SV_PLDL1KEEP))
      13  
      14  /*
      15  ** prfw_gather_u64base:
      16  **	prfw	pldl1strm, p0, \[z0\.d\]
      17  **	ret
      18  */
      19  TEST_PREFETCH_GATHER_ZS (prfw_gather_u64base, svuint64_t,
      20  			 svprfw_gather_u64base (p0, z0, SV_PLDL1STRM),
      21  			 svprfw_gather (p0, z0, SV_PLDL1STRM))
      22  
      23  /*
      24  ** prfw_gather_x0_u32base_index:
      25  **	lsl	(x[0-9]+), x0, #?2
      26  **	prfb	pldl2keep, p0, \[\1, z0\.s, uxtw\]
      27  **	ret
      28  */
      29  TEST_PREFETCH_GATHER_ZS (prfw_gather_x0_u32base_index, svuint32_t,
      30  			 svprfw_gather_u32base_index (p0, z0, x0, SV_PLDL2KEEP),
      31  			 svprfw_gather_index (p0, z0, x0, SV_PLDL2KEEP))
      32  
      33  /*
      34  ** prfw_gather_m1_u32base_index:
      35  **	mov	(x[0-9]+), #?-4
      36  **	prfb	pldl2strm, p0, \[\1, z0\.s, uxtw\]
      37  **	ret
      38  */
      39  TEST_PREFETCH_GATHER_ZS (prfw_gather_m1_u32base_index, svuint32_t,
      40  			 svprfw_gather_u32base_index (p0, z0, -1, SV_PLDL2STRM),
      41  			 svprfw_gather_index (p0, z0, -1, SV_PLDL2STRM))
      42  
      43  /*
      44  ** prfw_gather_0_u32base_index:
      45  **	prfw	pldl3keep, p0, \[z0\.s\]
      46  **	ret
      47  */
      48  TEST_PREFETCH_GATHER_ZS (prfw_gather_0_u32base_index, svuint32_t,
      49  			 svprfw_gather_u32base_index (p0, z0, 0, SV_PLDL3KEEP),
      50  			 svprfw_gather_index (p0, z0, 0, SV_PLDL3KEEP))
      51  
      52  /*
      53  ** prfw_gather_5_u32base_index:
      54  **	prfw	pldl3strm, p0, \[z0\.s, #20\]
      55  **	ret
      56  */
      57  TEST_PREFETCH_GATHER_ZS (prfw_gather_5_u32base_index, svuint32_t,
      58  			 svprfw_gather_u32base_index (p0, z0, 5, SV_PLDL3STRM),
      59  			 svprfw_gather_index (p0, z0, 5, SV_PLDL3STRM))
      60  
      61  /*
      62  ** prfw_gather_31_u32base_index:
      63  **	prfw	pstl1keep, p0, \[z0\.s, #124\]
      64  **	ret
      65  */
      66  TEST_PREFETCH_GATHER_ZS (prfw_gather_31_u32base_index, svuint32_t,
      67  			 svprfw_gather_u32base_index (p0, z0, 31, SV_PSTL1KEEP),
      68  			 svprfw_gather_index (p0, z0, 31, SV_PSTL1KEEP))
      69  
      70  /*
      71  ** prfw_gather_32_u32base_index:
      72  **	mov	(x[0-9]+), #?128
      73  **	prfb	pstl1strm, p0, \[\1, z0\.s, uxtw\]
      74  **	ret
      75  */
      76  TEST_PREFETCH_GATHER_ZS (prfw_gather_32_u32base_index, svuint32_t,
      77  			 svprfw_gather_u32base_index (p0, z0, 32, SV_PSTL1STRM),
      78  			 svprfw_gather_index (p0, z0, 32, SV_PSTL1STRM))
      79  
      80  /*
      81  ** prfw_gather_x0_u64base_index:
      82  **	lsl	(x[0-9]+), x0, #?2
      83  **	prfb	pstl2keep, p0, \[\1, z0\.d\]
      84  **	ret
      85  */
      86  TEST_PREFETCH_GATHER_ZS (prfw_gather_x0_u64base_index, svuint64_t,
      87  			 svprfw_gather_u64base_index (p0, z0, x0, SV_PSTL2KEEP),
      88  			 svprfw_gather_index (p0, z0, x0, SV_PSTL2KEEP))
      89  
      90  /*
      91  ** prfw_gather_m1_u64base_index:
      92  **	mov	(x[0-9]+), #?-4
      93  **	prfb	pstl2strm, p0, \[\1, z0\.d\]
      94  **	ret
      95  */
      96  TEST_PREFETCH_GATHER_ZS (prfw_gather_m1_u64base_index, svuint64_t,
      97  			 svprfw_gather_u64base_index (p0, z0, -1, SV_PSTL2STRM),
      98  			 svprfw_gather_index (p0, z0, -1, SV_PSTL2STRM))
      99  
     100  /*
     101  ** prfw_gather_0_u64base_index:
     102  **	prfw	pstl3keep, p0, \[z0\.d\]
     103  **	ret
     104  */
     105  TEST_PREFETCH_GATHER_ZS (prfw_gather_0_u64base_index, svuint64_t,
     106  			 svprfw_gather_u64base_index (p0, z0, 0, SV_PSTL3KEEP),
     107  			 svprfw_gather_index (p0, z0, 0, SV_PSTL3KEEP))
     108  
     109  /*
     110  ** prfw_gather_5_u64base_index:
     111  **	prfw	pstl3strm, p0, \[z0\.d, #20\]
     112  **	ret
     113  */
     114  TEST_PREFETCH_GATHER_ZS (prfw_gather_5_u64base_index, svuint64_t,
     115  			 svprfw_gather_u64base_index (p0, z0, 5, SV_PSTL3STRM),
     116  			 svprfw_gather_index (p0, z0, 5, SV_PSTL3STRM))
     117  
     118  /*
     119  ** prfw_gather_31_u64base_index:
     120  **	prfw	pldl1keep, p0, \[z0\.d, #124\]
     121  **	ret
     122  */
     123  TEST_PREFETCH_GATHER_ZS (prfw_gather_31_u64base_index, svuint64_t,
     124  			 svprfw_gather_u64base_index (p0, z0, 31, SV_PLDL1KEEP),
     125  			 svprfw_gather_index (p0, z0, 31, SV_PLDL1KEEP))
     126  
     127  /*
     128  ** prfw_gather_32_u64base_index:
     129  **	mov	(x[0-9]+), #?128
     130  **	prfb	pldl1strm, p0, \[\1, z0\.d\]
     131  **	ret
     132  */
     133  TEST_PREFETCH_GATHER_ZS (prfw_gather_32_u64base_index, svuint64_t,
     134  			 svprfw_gather_u64base_index (p0, z0, 32, SV_PLDL1STRM),
     135  			 svprfw_gather_index (p0, z0, 32, SV_PLDL1STRM))
     136  
     137  /*
     138  ** prfw_gather_x0_s32index:
     139  **	prfw	pldl2keep, p0, \[x0, z0\.s, sxtw 2\]
     140  **	ret
     141  */
     142  TEST_PREFETCH_GATHER_SZ (prfw_gather_x0_s32index, svint32_t,
     143  			 svprfw_gather_s32index (p0, x0, z0, SV_PLDL2KEEP),
     144  			 svprfw_gather_index (p0, x0, z0, SV_PLDL2KEEP))
     145  
     146  /*
     147  ** prfw_gather_s32index:
     148  **	prfw	pldl2strm, p0, \[x0, z1\.s, sxtw 2\]
     149  **	ret
     150  */
     151  TEST_PREFETCH_GATHER_SZ (prfw_gather_s32index, svint32_t,
     152  			 svprfw_gather_s32index (p0, x0, z1, SV_PLDL2STRM),
     153  			 svprfw_gather_index (p0, x0, z1, SV_PLDL2STRM))
     154  
     155  /*
     156  ** prfw_gather_x0_u32index:
     157  **	prfw	pldl3keep, p0, \[x0, z0\.s, uxtw 2\]
     158  **	ret
     159  */
     160  TEST_PREFETCH_GATHER_SZ (prfw_gather_x0_u32index, svuint32_t,
     161  			 svprfw_gather_u32index (p0, x0, z0, SV_PLDL3KEEP),
     162  			 svprfw_gather_index (p0, x0, z0, SV_PLDL3KEEP))
     163  
     164  /*
     165  ** prfw_gather_u32index:
     166  **	prfw	pldl3strm, p0, \[x0, z1\.s, uxtw 2\]
     167  **	ret
     168  */
     169  TEST_PREFETCH_GATHER_SZ (prfw_gather_u32index, svuint32_t,
     170  			 svprfw_gather_u32index (p0, x0, z1, SV_PLDL3STRM),
     171  			 svprfw_gather_index (p0, x0, z1, SV_PLDL3STRM))
     172  
     173  /*
     174  ** prfw_gather_x0_s64index:
     175  **	prfw	pstl1keep, p0, \[x0, z0\.d, lsl 2\]
     176  **	ret
     177  */
     178  TEST_PREFETCH_GATHER_SZ (prfw_gather_x0_s64index, svint64_t,
     179  			 svprfw_gather_s64index (p0, x0, z0, SV_PSTL1KEEP),
     180  			 svprfw_gather_index (p0, x0, z0, SV_PSTL1KEEP))
     181  
     182  /*
     183  ** prfw_gather_s64index:
     184  **	prfw	pstl1strm, p0, \[x0, z1\.d, lsl 2\]
     185  **	ret
     186  */
     187  TEST_PREFETCH_GATHER_SZ (prfw_gather_s64index, svint64_t,
     188  			 svprfw_gather_s64index (p0, x0, z1, SV_PSTL1STRM),
     189  			 svprfw_gather_index (p0, x0, z1, SV_PSTL1STRM))
     190  
     191  /*
     192  ** prfw_gather_ext_s64index:
     193  **	prfw	pstl1strm, p0, \[x0, z1\.d, sxtw 2\]
     194  **	ret
     195  */
     196  TEST_PREFETCH_GATHER_SZ (prfw_gather_ext_s64index, svint64_t,
     197  			 svprfw_gather_s64index (p0, x0, svextw_s64_x (p0, z1), SV_PSTL1STRM),
     198  			 svprfw_gather_index (p0, x0, svextw_x (p0, z1), SV_PSTL1STRM))
     199  
     200  /*
     201  ** prfw_gather_x0_u64index:
     202  **	prfw	pstl2keep, p0, \[x0, z0\.d, lsl 2\]
     203  **	ret
     204  */
     205  TEST_PREFETCH_GATHER_SZ (prfw_gather_x0_u64index, svuint64_t,
     206  			 svprfw_gather_u64index (p0, x0, z0, SV_PSTL2KEEP),
     207  			 svprfw_gather_index (p0, x0, z0, SV_PSTL2KEEP))
     208  
     209  /*
     210  ** prfw_gather_u64index:
     211  **	prfw	pstl2strm, p0, \[x0, z1\.d, lsl 2\]
     212  **	ret
     213  */
     214  TEST_PREFETCH_GATHER_SZ (prfw_gather_u64index, svuint64_t,
     215  			 svprfw_gather_u64index (p0, x0, z1, SV_PSTL2STRM),
     216  			 svprfw_gather_index (p0, x0, z1, SV_PSTL2STRM))
     217  
     218  /*
     219  ** prfw_gather_ext_u64index:
     220  **	prfw	pstl2strm, p0, \[x0, z1\.d, uxtw 2\]
     221  **	ret
     222  */
     223  TEST_PREFETCH_GATHER_SZ (prfw_gather_ext_u64index, svuint64_t,
     224  			 svprfw_gather_u64index (p0, x0, svextw_u64_x (p0, z1), SV_PSTL2STRM),
     225  			 svprfw_gather_index (p0, x0, svextw_x (p0, z1), SV_PSTL2STRM))