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