1  /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" { target { ! ilp32 } } } } */
       2  
       3  #include "test_sve_acle.h"
       4  
       5  /*
       6  ** ldff1sb_gather_s32_tied1:
       7  **	ldff1sb	z0\.s, p0/z, \[z0\.s\]
       8  **	ret
       9  */
      10  TEST_LOAD_GATHER_ZS (ldff1sb_gather_s32_tied1, svint32_t, svuint32_t,
      11  		     z0_res = svldff1sb_gather_u32base_s32 (p0, z0),
      12  		     z0_res = svldff1sb_gather_s32 (p0, z0))
      13  
      14  /*
      15  ** ldff1sb_gather_s32_untied:
      16  **	ldff1sb	z0\.s, p0/z, \[z1\.s\]
      17  **	ret
      18  */
      19  TEST_LOAD_GATHER_ZS (ldff1sb_gather_s32_untied, svint32_t, svuint32_t,
      20  		     z0_res = svldff1sb_gather_u32base_s32 (p0, z1),
      21  		     z0_res = svldff1sb_gather_s32 (p0, z1))
      22  
      23  /*
      24  ** ldff1sb_gather_x0_s32_offset:
      25  **	ldff1sb	z0\.s, p0/z, \[x0, z0\.s, uxtw\]
      26  **	ret
      27  */
      28  TEST_LOAD_GATHER_ZS (ldff1sb_gather_x0_s32_offset, svint32_t, svuint32_t,
      29  		     z0_res = svldff1sb_gather_u32base_offset_s32 (p0, z0, x0),
      30  		     z0_res = svldff1sb_gather_offset_s32 (p0, z0, x0))
      31  
      32  /*
      33  ** ldff1sb_gather_m1_s32_offset:
      34  **	mov	(x[0-9]+), #?-1
      35  **	ldff1sb	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
      36  **	ret
      37  */
      38  TEST_LOAD_GATHER_ZS (ldff1sb_gather_m1_s32_offset, svint32_t, svuint32_t,
      39  		     z0_res = svldff1sb_gather_u32base_offset_s32 (p0, z0, -1),
      40  		     z0_res = svldff1sb_gather_offset_s32 (p0, z0, -1))
      41  
      42  /*
      43  ** ldff1sb_gather_0_s32_offset:
      44  **	ldff1sb	z0\.s, p0/z, \[z0\.s\]
      45  **	ret
      46  */
      47  TEST_LOAD_GATHER_ZS (ldff1sb_gather_0_s32_offset, svint32_t, svuint32_t,
      48  		     z0_res = svldff1sb_gather_u32base_offset_s32 (p0, z0, 0),
      49  		     z0_res = svldff1sb_gather_offset_s32 (p0, z0, 0))
      50  
      51  /*
      52  ** ldff1sb_gather_5_s32_offset:
      53  **	ldff1sb	z0\.s, p0/z, \[z0\.s, #5\]
      54  **	ret
      55  */
      56  TEST_LOAD_GATHER_ZS (ldff1sb_gather_5_s32_offset, svint32_t, svuint32_t,
      57  		     z0_res = svldff1sb_gather_u32base_offset_s32 (p0, z0, 5),
      58  		     z0_res = svldff1sb_gather_offset_s32 (p0, z0, 5))
      59  
      60  /*
      61  ** ldff1sb_gather_31_s32_offset:
      62  **	ldff1sb	z0\.s, p0/z, \[z0\.s, #31\]
      63  **	ret
      64  */
      65  TEST_LOAD_GATHER_ZS (ldff1sb_gather_31_s32_offset, svint32_t, svuint32_t,
      66  		     z0_res = svldff1sb_gather_u32base_offset_s32 (p0, z0, 31),
      67  		     z0_res = svldff1sb_gather_offset_s32 (p0, z0, 31))
      68  
      69  /*
      70  ** ldff1sb_gather_32_s32_offset:
      71  **	mov	(x[0-9]+), #?32
      72  **	ldff1sb	z0\.s, p0/z, \[\1, z0\.s, uxtw\]
      73  **	ret
      74  */
      75  TEST_LOAD_GATHER_ZS (ldff1sb_gather_32_s32_offset, svint32_t, svuint32_t,
      76  		     z0_res = svldff1sb_gather_u32base_offset_s32 (p0, z0, 32),
      77  		     z0_res = svldff1sb_gather_offset_s32 (p0, z0, 32))
      78  
      79  /*
      80  ** ldff1sb_gather_x0_s32_s32offset:
      81  **	ldff1sb	z0\.s, p0/z, \[x0, z0\.s, sxtw\]
      82  **	ret
      83  */
      84  TEST_LOAD_GATHER_SZ (ldff1sb_gather_x0_s32_s32offset, svint32_t, int8_t, svint32_t,
      85  		     z0_res = svldff1sb_gather_s32offset_s32 (p0, x0, z0),
      86  		     z0_res = svldff1sb_gather_offset_s32 (p0, x0, z0))
      87  
      88  /*
      89  ** ldff1sb_gather_tied1_s32_s32offset:
      90  **	ldff1sb	z0\.s, p0/z, \[x0, z0\.s, sxtw\]
      91  **	ret
      92  */
      93  TEST_LOAD_GATHER_SZ (ldff1sb_gather_tied1_s32_s32offset, svint32_t, int8_t, svint32_t,
      94  		     z0_res = svldff1sb_gather_s32offset_s32 (p0, x0, z0),
      95  		     z0_res = svldff1sb_gather_offset_s32 (p0, x0, z0))
      96  
      97  /*
      98  ** ldff1sb_gather_untied_s32_s32offset:
      99  **	ldff1sb	z0\.s, p0/z, \[x0, z1\.s, sxtw\]
     100  **	ret
     101  */
     102  TEST_LOAD_GATHER_SZ (ldff1sb_gather_untied_s32_s32offset, svint32_t, int8_t, svint32_t,
     103  		     z0_res = svldff1sb_gather_s32offset_s32 (p0, x0, z1),
     104  		     z0_res = svldff1sb_gather_offset_s32 (p0, x0, z1))
     105  
     106  /*
     107  ** ldff1sb_gather_x0_s32_u32offset:
     108  **	ldff1sb	z0\.s, p0/z, \[x0, z0\.s, uxtw\]
     109  **	ret
     110  */
     111  TEST_LOAD_GATHER_SZ (ldff1sb_gather_x0_s32_u32offset, svint32_t, int8_t, svuint32_t,
     112  		     z0_res = svldff1sb_gather_u32offset_s32 (p0, x0, z0),
     113  		     z0_res = svldff1sb_gather_offset_s32 (p0, x0, z0))
     114  
     115  /*
     116  ** ldff1sb_gather_tied1_s32_u32offset:
     117  **	ldff1sb	z0\.s, p0/z, \[x0, z0\.s, uxtw\]
     118  **	ret
     119  */
     120  TEST_LOAD_GATHER_SZ (ldff1sb_gather_tied1_s32_u32offset, svint32_t, int8_t, svuint32_t,
     121  		     z0_res = svldff1sb_gather_u32offset_s32 (p0, x0, z0),
     122  		     z0_res = svldff1sb_gather_offset_s32 (p0, x0, z0))
     123  
     124  /*
     125  ** ldff1sb_gather_untied_s32_u32offset:
     126  **	ldff1sb	z0\.s, p0/z, \[x0, z1\.s, uxtw\]
     127  **	ret
     128  */
     129  TEST_LOAD_GATHER_SZ (ldff1sb_gather_untied_s32_u32offset, svint32_t, int8_t, svuint32_t,
     130  		     z0_res = svldff1sb_gather_u32offset_s32 (p0, x0, z1),
     131  		     z0_res = svldff1sb_gather_offset_s32 (p0, x0, z1))