(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
vector_structure_intrinsics.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O3 -march=armv8.2-a+bf16" } */
       3  
       4  #include <arm_neon.h>
       5  
       6  #define TEST_TBL(name, rettype, tbltype, idxtype, ts) \
       7    rettype test_ ## name ## _ ## ts (tbltype a, idxtype b) \
       8  	{ \
       9  		return name ## _ ## ts (a, b); \
      10  	}
      11  
      12  TEST_TBL (vqtbl2, int8x8_t, int8x16x2_t, uint8x8_t, s8)
      13  TEST_TBL (vqtbl2, uint8x8_t, uint8x16x2_t, uint8x8_t, u8)
      14  TEST_TBL (vqtbl2, poly8x8_t, poly8x16x2_t, uint8x8_t, p8)
      15  
      16  TEST_TBL (vqtbl2q, int8x16_t, int8x16x2_t, uint8x16_t, s8)
      17  TEST_TBL (vqtbl2q, uint8x16_t, uint8x16x2_t, uint8x16_t, u8)
      18  TEST_TBL (vqtbl2q, poly8x16_t, poly8x16x2_t, uint8x16_t, p8)
      19  
      20  TEST_TBL (vqtbl3, int8x8_t, int8x16x3_t, uint8x8_t, s8)
      21  TEST_TBL (vqtbl3, uint8x8_t, uint8x16x3_t, uint8x8_t, u8)
      22  TEST_TBL (vqtbl3, poly8x8_t, poly8x16x3_t, uint8x8_t, p8)
      23  
      24  TEST_TBL (vqtbl3q, int8x16_t, int8x16x3_t, uint8x16_t, s8)
      25  TEST_TBL (vqtbl3q, uint8x16_t, uint8x16x3_t, uint8x16_t, u8)
      26  TEST_TBL (vqtbl3q, poly8x16_t, poly8x16x3_t, uint8x16_t, p8)
      27  
      28  TEST_TBL (vqtbl4, int8x8_t, int8x16x4_t, uint8x8_t, s8)
      29  TEST_TBL (vqtbl4, uint8x8_t, uint8x16x4_t, uint8x8_t, u8)
      30  TEST_TBL (vqtbl4, poly8x8_t, poly8x16x4_t, uint8x8_t, p8)
      31  
      32  TEST_TBL (vqtbl4q, int8x16_t, int8x16x4_t, uint8x16_t, s8)
      33  TEST_TBL (vqtbl4q, uint8x16_t, uint8x16x4_t, uint8x16_t, u8)
      34  TEST_TBL (vqtbl4q, poly8x16_t, poly8x16x4_t, uint8x16_t, p8)
      35  
      36  #define TEST_TBX(name, rettype, tbltype, idxtype, ts) \
      37    rettype test_ ## name ## _ ## ts (rettype a, tbltype b, idxtype c) \
      38  	{ \
      39  		return name ## _ ## ts (a, b, c); \
      40  	}
      41  
      42  TEST_TBX (vqtbx2, int8x8_t, int8x16x2_t, uint8x8_t, s8)
      43  TEST_TBX (vqtbx2, uint8x8_t, uint8x16x2_t, uint8x8_t, u8)
      44  TEST_TBX (vqtbx2, poly8x8_t, poly8x16x2_t, uint8x8_t, p8)
      45  
      46  TEST_TBX (vqtbx2q, int8x16_t, int8x16x2_t, uint8x16_t, s8)
      47  TEST_TBX (vqtbx2q, uint8x16_t, uint8x16x2_t, uint8x16_t, u8)
      48  TEST_TBX (vqtbx2q, poly8x16_t, poly8x16x2_t, uint8x16_t, p8)
      49  
      50  TEST_TBX (vqtbx3, int8x8_t, int8x16x3_t, uint8x8_t, s8)
      51  TEST_TBX (vqtbx3, uint8x8_t, uint8x16x3_t, uint8x8_t, u8)
      52  TEST_TBX (vqtbx3, poly8x8_t, poly8x16x3_t, uint8x8_t, p8)
      53  
      54  TEST_TBX (vqtbx3q, int8x16_t, int8x16x3_t, uint8x16_t, s8)
      55  TEST_TBX (vqtbx3q, uint8x16_t, uint8x16x3_t, uint8x16_t, u8)
      56  TEST_TBX (vqtbx3q, poly8x16_t, poly8x16x3_t, uint8x16_t, p8)
      57  
      58  TEST_TBX (vqtbx4, int8x8_t, int8x16x4_t, uint8x8_t, s8)
      59  TEST_TBX (vqtbx4, uint8x8_t, uint8x16x4_t, uint8x8_t, u8)
      60  TEST_TBX (vqtbx4, poly8x8_t, poly8x16x4_t, uint8x8_t, p8)
      61  
      62  TEST_TBX (vqtbx4q, int8x16_t, int8x16x4_t, uint8x16_t, s8)
      63  TEST_TBX (vqtbx4q, uint8x16_t, uint8x16x4_t, uint8x16_t, u8)
      64  TEST_TBX (vqtbx4q, poly8x16_t, poly8x16x4_t, uint8x16_t, p8)
      65  
      66  #define TEST_STX(name, tbltype, ptrtype, ts) \
      67    void test_ ## name ## _ ## ts (ptrtype a, tbltype b) \
      68  	{ \
      69  		name ## _ ## ts (a, b); \
      70  	}
      71  
      72  TEST_STX (vst2, int8x8x2_t, int8_t*, s8);
      73  TEST_STX (vst2, uint8x8x2_t, uint8_t*, u8);
      74  TEST_STX (vst2, poly8x8x2_t, poly8_t*, p8);
      75  TEST_STX (vst2, int16x4x2_t, int16_t*, s16);
      76  TEST_STX (vst2, uint16x4x2_t, uint16_t*, u16);
      77  TEST_STX (vst2, poly16x4x2_t, poly16_t*, p16);
      78  TEST_STX (vst2, float16x4x2_t, float16_t*, f16);
      79  TEST_STX (vst2, bfloat16x4x2_t, bfloat16_t*, bf16);
      80  TEST_STX (vst2, int32x2x2_t, int32_t*, s32);
      81  TEST_STX (vst2, uint32x2x2_t, uint32_t*, u32);
      82  TEST_STX (vst2, float32x2x2_t, float32_t*, f32);
      83  TEST_STX (vst2, int64x1x2_t, int64_t*, s64);
      84  TEST_STX (vst2, uint64x1x2_t, uint64_t*, u64);
      85  TEST_STX (vst2, float64x1x2_t, float64_t*, f64);
      86  TEST_STX (vst2, poly64x1x2_t, poly64_t*, p64);
      87  
      88  TEST_STX (vst2q, int8x16x2_t, int8_t*, s8);
      89  TEST_STX (vst2q, uint8x16x2_t, uint8_t*, u8);
      90  TEST_STX (vst2q, poly8x16x2_t, poly8_t*, p8);
      91  TEST_STX (vst2q, int16x8x2_t, int16_t*, s16);
      92  TEST_STX (vst2q, uint16x8x2_t, uint16_t*, u16);
      93  TEST_STX (vst2q, poly16x8x2_t, poly16_t*, p16);
      94  TEST_STX (vst2q, float16x8x2_t, float16_t*, f16);
      95  TEST_STX (vst2q, bfloat16x8x2_t, bfloat16_t*, bf16);
      96  TEST_STX (vst2q, int32x4x2_t, int32_t*, s32);
      97  TEST_STX (vst2q, uint32x4x2_t, uint32_t*, u32);
      98  TEST_STX (vst2q, float32x4x2_t, float32_t*, f32);
      99  TEST_STX (vst2q, int64x2x2_t, int64_t*, s64);
     100  TEST_STX (vst2q, uint64x2x2_t, uint64_t*, u64);
     101  TEST_STX (vst2q, float64x2x2_t, float64_t*, f64);
     102  TEST_STX (vst2q, poly64x2x2_t, poly64_t*, p64);
     103  
     104  TEST_STX (vst3, int8x8x3_t, int8_t*, s8);
     105  TEST_STX (vst3, uint8x8x3_t, uint8_t*, u8);
     106  TEST_STX (vst3, poly8x8x3_t, poly8_t*, p8);
     107  TEST_STX (vst3, int16x4x3_t, int16_t*, s16);
     108  TEST_STX (vst3, uint16x4x3_t, uint16_t*, u16);
     109  TEST_STX (vst3, poly16x4x3_t, poly16_t*, p16);
     110  TEST_STX (vst3, float16x4x3_t, float16_t*, f16);
     111  TEST_STX (vst3, bfloat16x4x3_t, bfloat16_t*, bf16);
     112  TEST_STX (vst3, int32x2x3_t, int32_t*, s32);
     113  TEST_STX (vst3, uint32x2x3_t, uint32_t*, u32);
     114  TEST_STX (vst3, float32x2x3_t, float32_t*, f32);
     115  TEST_STX (vst3, int64x1x3_t, int64_t*, s64);
     116  TEST_STX (vst3, uint64x1x3_t, uint64_t*, u64);
     117  TEST_STX (vst3, float64x1x3_t, float64_t*, f64);
     118  TEST_STX (vst3, poly64x1x3_t, poly64_t*, p64);
     119  
     120  TEST_STX (vst3q, int8x16x3_t, int8_t*, s8);
     121  TEST_STX (vst3q, uint8x16x3_t, uint8_t*, u8);
     122  TEST_STX (vst3q, poly8x16x3_t, poly8_t*, p8);
     123  TEST_STX (vst3q, int16x8x3_t, int16_t*, s16);
     124  TEST_STX (vst3q, uint16x8x3_t, uint16_t*, u16);
     125  TEST_STX (vst3q, poly16x8x3_t, poly16_t*, p16);
     126  TEST_STX (vst3q, float16x8x3_t, float16_t*, f16);
     127  TEST_STX (vst3q, bfloat16x8x3_t, bfloat16_t*, bf16);
     128  TEST_STX (vst3q, int32x4x3_t, int32_t*, s32);
     129  TEST_STX (vst3q, uint32x4x3_t, uint32_t*, u32);
     130  TEST_STX (vst3q, float32x4x3_t, float32_t*, f32);
     131  TEST_STX (vst3q, int64x2x3_t, int64_t*, s64);
     132  TEST_STX (vst3q, uint64x2x3_t, uint64_t*, u64);
     133  TEST_STX (vst3q, float64x2x3_t, float64_t*, f64);
     134  TEST_STX (vst3q, poly64x2x3_t, poly64_t*, p64);
     135  
     136  TEST_STX (vst4, int8x8x4_t, int8_t*, s8);
     137  TEST_STX (vst4, uint8x8x4_t, uint8_t*, u8);
     138  TEST_STX (vst4, poly8x8x4_t, poly8_t*, p8);
     139  TEST_STX (vst4, int16x4x4_t, int16_t*, s16);
     140  TEST_STX (vst4, uint16x4x4_t, uint16_t*, u16);
     141  TEST_STX (vst4, poly16x4x4_t, poly16_t*, p16);
     142  TEST_STX (vst4, float16x4x4_t, float16_t*, f16);
     143  TEST_STX (vst4, bfloat16x4x4_t, bfloat16_t*, bf16);
     144  TEST_STX (vst4, int32x2x4_t, int32_t*, s32);
     145  TEST_STX (vst4, uint32x2x4_t, uint32_t*, u32);
     146  TEST_STX (vst4, float32x2x4_t, float32_t*, f32);
     147  TEST_STX (vst4, int64x1x4_t, int64_t*, s64);
     148  TEST_STX (vst4, uint64x1x4_t, uint64_t*, u64);
     149  TEST_STX (vst4, float64x1x4_t, float64_t*, f64);
     150  TEST_STX (vst4, poly64x1x4_t, poly64_t*, p64);
     151  
     152  TEST_STX (vst4q, int8x16x4_t, int8_t*, s8);
     153  TEST_STX (vst4q, uint8x16x4_t, uint8_t*, u8);
     154  TEST_STX (vst4q, poly8x16x4_t, poly8_t*, p8);
     155  TEST_STX (vst4q, int16x8x4_t, int16_t*, s16);
     156  TEST_STX (vst4q, uint16x8x4_t, uint16_t*, u16);
     157  TEST_STX (vst4q, poly16x8x4_t, poly16_t*, p16);
     158  TEST_STX (vst4q, float16x8x4_t, float16_t*, f16);
     159  TEST_STX (vst4q, bfloat16x8x4_t, bfloat16_t*, bf16);
     160  TEST_STX (vst4q, int32x4x4_t, int32_t*, s32);
     161  TEST_STX (vst4q, uint32x4x4_t, uint32_t*, u32);
     162  TEST_STX (vst4q, float32x4x4_t, float32_t*, f32);
     163  TEST_STX (vst4q, int64x2x4_t, int64_t*, s64);
     164  TEST_STX (vst4q, uint64x2x4_t, uint64_t*, u64);
     165  TEST_STX (vst4q, float64x2x4_t, float64_t*, f64);
     166  TEST_STX (vst4q, poly64x2x4_t, poly64_t*, p64);
     167  
     168  #define TEST_LDX(name, rettype, ptrtype, ts) \
     169    rettype test_ ## name ## _ ## ts (ptrtype a) \
     170  	{ \
     171  		return name ## _ ## ts (a); \
     172  	}
     173  
     174  TEST_LDX (vld2, int8x8x2_t, int8_t*, s8);
     175  TEST_LDX (vld2, uint8x8x2_t, uint8_t*, u8);
     176  TEST_LDX (vld2, poly8x8x2_t, poly8_t*, p8);
     177  TEST_LDX (vld2, int16x4x2_t, int16_t*, s16);
     178  TEST_LDX (vld2, uint16x4x2_t, uint16_t*, u16);
     179  TEST_LDX (vld2, poly16x4x2_t, poly16_t*, p16);
     180  TEST_LDX (vld2, float16x4x2_t, float16_t*, f16);
     181  TEST_LDX (vld2, bfloat16x4x2_t, bfloat16_t*, bf16);
     182  TEST_LDX (vld2, int32x2x2_t, int32_t*, s32);
     183  TEST_LDX (vld2, uint32x2x2_t, uint32_t*, u32);
     184  TEST_LDX (vld2, float32x2x2_t, float32_t*, f32);
     185  TEST_LDX (vld2, int64x1x2_t, int64_t*, s64);
     186  TEST_LDX (vld2, uint64x1x2_t, uint64_t*, u64);
     187  TEST_LDX (vld2, float64x1x2_t, float64_t*, f64);
     188  TEST_LDX (vld2, poly64x1x2_t, poly64_t*, p64);
     189  
     190  TEST_LDX (vld2q, int8x16x2_t, int8_t*, s8);
     191  TEST_LDX (vld2q, uint8x16x2_t, uint8_t*, u8);
     192  TEST_LDX (vld2q, poly8x16x2_t, poly8_t*, p8);
     193  TEST_LDX (vld2q, int16x8x2_t, int16_t*, s16);
     194  TEST_LDX (vld2q, uint16x8x2_t, uint16_t*, u16);
     195  TEST_LDX (vld2q, poly16x8x2_t, poly16_t*, p16);
     196  TEST_LDX (vld2q, float16x8x2_t, float16_t*, f16);
     197  TEST_LDX (vld2q, bfloat16x8x2_t, bfloat16_t*, bf16);
     198  TEST_LDX (vld2q, int32x4x2_t, int32_t*, s32);
     199  TEST_LDX (vld2q, uint32x4x2_t, uint32_t*, u32);
     200  TEST_LDX (vld2q, float32x4x2_t, float32_t*, f32);
     201  TEST_LDX (vld2q, int64x2x2_t, int64_t*, s64);
     202  TEST_LDX (vld2q, uint64x2x2_t, uint64_t*, u64);
     203  TEST_LDX (vld2q, float64x2x2_t, float64_t*, f64);
     204  TEST_LDX (vld2q, poly64x2x2_t, poly64_t*, p64);
     205  
     206  TEST_LDX (vld3, int8x8x3_t, int8_t*, s8);
     207  TEST_LDX (vld3, uint8x8x3_t, uint8_t*, u8);
     208  TEST_LDX (vld3, poly8x8x3_t, poly8_t*, p8);
     209  TEST_LDX (vld3, int16x4x3_t, int16_t*, s16);
     210  TEST_LDX (vld3, uint16x4x3_t, uint16_t*, u16);
     211  TEST_LDX (vld3, poly16x4x3_t, poly16_t*, p16);
     212  TEST_LDX (vld3, float16x4x3_t, float16_t*, f16);
     213  TEST_LDX (vld3, bfloat16x4x3_t, bfloat16_t*, bf16);
     214  TEST_LDX (vld3, int32x2x3_t, int32_t*, s32);
     215  TEST_LDX (vld3, uint32x2x3_t, uint32_t*, u32);
     216  TEST_LDX (vld3, float32x2x3_t, float32_t*, f32);
     217  TEST_LDX (vld3, int64x1x3_t, int64_t*, s64);
     218  TEST_LDX (vld3, uint64x1x3_t, uint64_t*, u64);
     219  TEST_LDX (vld3, float64x1x3_t, float64_t*, f64);
     220  TEST_LDX (vld3, poly64x1x3_t, poly64_t*, p64);
     221  
     222  TEST_LDX (vld3q, int8x16x3_t, int8_t*, s8);
     223  TEST_LDX (vld3q, uint8x16x3_t, uint8_t*, u8);
     224  TEST_LDX (vld3q, poly8x16x3_t, poly8_t*, p8);
     225  TEST_LDX (vld3q, int16x8x3_t, int16_t*, s16);
     226  TEST_LDX (vld3q, uint16x8x3_t, uint16_t*, u16);
     227  TEST_LDX (vld3q, poly16x8x3_t, poly16_t*, p16);
     228  TEST_LDX (vld3q, float16x8x3_t, float16_t*, f16);
     229  TEST_LDX (vld3q, bfloat16x8x3_t, bfloat16_t*, bf16);
     230  TEST_LDX (vld3q, int32x4x3_t, int32_t*, s32);
     231  TEST_LDX (vld3q, uint32x4x3_t, uint32_t*, u32);
     232  TEST_LDX (vld3q, float32x4x3_t, float32_t*, f32);
     233  TEST_LDX (vld3q, int64x2x3_t, int64_t*, s64);
     234  TEST_LDX (vld3q, uint64x2x3_t, uint64_t*, u64);
     235  TEST_LDX (vld3q, float64x2x3_t, float64_t*, f64);
     236  TEST_LDX (vld3q, poly64x2x3_t, poly64_t*, p64);
     237  
     238  TEST_LDX (vld4, int8x8x4_t, int8_t*, s8);
     239  TEST_LDX (vld4, uint8x8x4_t, uint8_t*, u8);
     240  TEST_LDX (vld4, poly8x8x4_t, poly8_t*, p8);
     241  TEST_LDX (vld4, int16x4x4_t, int16_t*, s16);
     242  TEST_LDX (vld4, uint16x4x4_t, uint16_t*, u16);
     243  TEST_LDX (vld4, poly16x4x4_t, poly16_t*, p16);
     244  TEST_LDX (vld4, float16x4x4_t, float16_t*, f16);
     245  TEST_LDX (vld4, bfloat16x4x4_t, bfloat16_t*, bf16);
     246  TEST_LDX (vld4, int32x2x4_t, int32_t*, s32);
     247  TEST_LDX (vld4, uint32x2x4_t, uint32_t*, u32);
     248  TEST_LDX (vld4, float32x2x4_t, float32_t*, f32);
     249  TEST_LDX (vld4, int64x1x4_t, int64_t*, s64);
     250  TEST_LDX (vld4, uint64x1x4_t, uint64_t*, u64);
     251  TEST_LDX (vld4, float64x1x4_t, float64_t*, f64);
     252  TEST_LDX (vld4, poly64x1x4_t, poly64_t*, p64);
     253  
     254  TEST_LDX (vld4q, int8x16x4_t, int8_t*, s8);
     255  TEST_LDX (vld4q, uint8x16x4_t, uint8_t*, u8);
     256  TEST_LDX (vld4q, poly8x16x4_t, poly8_t*, p8);
     257  TEST_LDX (vld4q, int16x8x4_t, int16_t*, s16);
     258  TEST_LDX (vld4q, uint16x8x4_t, uint16_t*, u16);
     259  TEST_LDX (vld4q, poly16x8x4_t, poly16_t*, p16);
     260  TEST_LDX (vld4q, float16x8x4_t, float16_t*, f16);
     261  TEST_LDX (vld4q, bfloat16x8x4_t, bfloat16_t*, bf16);
     262  TEST_LDX (vld4q, int32x4x4_t, int32_t*, s32);
     263  TEST_LDX (vld4q, uint32x4x4_t, uint32_t*, u32);
     264  TEST_LDX (vld4q, float32x4x4_t, float32_t*, f32);
     265  TEST_LDX (vld4q, int64x2x4_t, int64_t*, s64);
     266  TEST_LDX (vld4q, uint64x2x4_t, uint64_t*, u64);
     267  TEST_LDX (vld4q, float64x2x4_t, float64_t*, f64);
     268  TEST_LDX (vld4q, poly64x2x4_t, poly64_t*, p64);
     269  
     270  #define TEST_STX_LANE(name, tbltype, ptrtype, ts) \
     271    void test_ ## name ## _ ## ts (ptrtype a, tbltype b) \
     272  	{ \
     273  		name ## _ ## ts (a, b, 0); \
     274  	}
     275  
     276  TEST_STX_LANE (vst2_lane, int8x8x2_t, int8_t*, s8);
     277  TEST_STX_LANE (vst2_lane, uint8x8x2_t, uint8_t*, u8);
     278  TEST_STX_LANE (vst2_lane, poly8x8x2_t, poly8_t*, p8);
     279  TEST_STX_LANE (vst2_lane, int16x4x2_t, int16_t*, s16);
     280  TEST_STX_LANE (vst2_lane, uint16x4x2_t, uint16_t*, u16);
     281  TEST_STX_LANE (vst2_lane, poly16x4x2_t, poly16_t*, p16);
     282  TEST_STX_LANE (vst2_lane, float16x4x2_t, float16_t*, f16);
     283  TEST_STX_LANE (vst2_lane, bfloat16x4x2_t, bfloat16_t*, bf16);
     284  TEST_STX_LANE (vst2_lane, int32x2x2_t, int32_t*, s32);
     285  TEST_STX_LANE (vst2_lane, uint32x2x2_t, uint32_t*, u32);
     286  TEST_STX_LANE (vst2_lane, float32x2x2_t, float32_t*, f32);
     287  TEST_STX_LANE (vst2_lane, int64x1x2_t, int64_t*, s64);
     288  TEST_STX_LANE (vst2_lane, uint64x1x2_t, uint64_t*, u64);
     289  TEST_STX_LANE (vst2_lane, float64x1x2_t, float64_t*, f64);
     290  TEST_STX_LANE (vst2_lane, poly64x1x2_t, poly64_t*, p64);
     291  
     292  TEST_STX_LANE (vst2q_lane, int8x16x2_t, int8_t*, s8);
     293  TEST_STX_LANE (vst2q_lane, uint8x16x2_t, uint8_t*, u8);
     294  TEST_STX_LANE (vst2q_lane, poly8x16x2_t, poly8_t*, p8);
     295  TEST_STX_LANE (vst2q_lane, int16x8x2_t, int16_t*, s16);
     296  TEST_STX_LANE (vst2q_lane, uint16x8x2_t, uint16_t*, u16);
     297  TEST_STX_LANE (vst2q_lane, poly16x8x2_t, poly16_t*, p16);
     298  TEST_STX_LANE (vst2q_lane, float16x8x2_t, float16_t*, f16);
     299  TEST_STX_LANE (vst2q_lane, bfloat16x8x2_t, bfloat16_t*, bf16);
     300  TEST_STX_LANE (vst2q_lane, int32x4x2_t, int32_t*, s32);
     301  TEST_STX_LANE (vst2q_lane, uint32x4x2_t, uint32_t*, u32);
     302  TEST_STX_LANE (vst2q_lane, float32x4x2_t, float32_t*, f32);
     303  TEST_STX_LANE (vst2q_lane, int64x2x2_t, int64_t*, s64);
     304  TEST_STX_LANE (vst2q_lane, uint64x2x2_t, uint64_t*, u64);
     305  TEST_STX_LANE (vst2q_lane, float64x2x2_t, float64_t*, f64);
     306  TEST_STX_LANE (vst2q_lane, poly64x2x2_t, poly64_t*, p64);
     307  
     308  TEST_STX_LANE (vst3_lane, int8x8x3_t, int8_t*, s8);
     309  TEST_STX_LANE (vst3_lane, uint8x8x3_t, uint8_t*, u8);
     310  TEST_STX_LANE (vst3_lane, poly8x8x3_t, poly8_t*, p8);
     311  TEST_STX_LANE (vst3_lane, int16x4x3_t, int16_t*, s16);
     312  TEST_STX_LANE (vst3_lane, uint16x4x3_t, uint16_t*, u16);
     313  TEST_STX_LANE (vst3_lane, poly16x4x3_t, poly16_t*, p16);
     314  TEST_STX_LANE (vst3_lane, float16x4x3_t, float16_t*, f16);
     315  TEST_STX_LANE (vst3_lane, bfloat16x4x3_t, bfloat16_t*, bf16);
     316  TEST_STX_LANE (vst3_lane, int32x2x3_t, int32_t*, s32);
     317  TEST_STX_LANE (vst3_lane, uint32x2x3_t, uint32_t*, u32);
     318  TEST_STX_LANE (vst3_lane, float32x2x3_t, float32_t*, f32);
     319  TEST_STX_LANE (vst3_lane, int64x1x3_t, int64_t*, s64);
     320  TEST_STX_LANE (vst3_lane, uint64x1x3_t, uint64_t*, u64);
     321  TEST_STX_LANE (vst3_lane, float64x1x3_t, float64_t*, f64);
     322  TEST_STX_LANE (vst3_lane, poly64x1x3_t, poly64_t*, p64);
     323  
     324  TEST_STX_LANE (vst3q_lane, int8x16x3_t, int8_t*, s8);
     325  TEST_STX_LANE (vst3q_lane, uint8x16x3_t, uint8_t*, u8);
     326  TEST_STX_LANE (vst3q_lane, poly8x16x3_t, poly8_t*, p8);
     327  TEST_STX_LANE (vst3q_lane, int16x8x3_t, int16_t*, s16);
     328  TEST_STX_LANE (vst3q_lane, uint16x8x3_t, uint16_t*, u16);
     329  TEST_STX_LANE (vst3q_lane, poly16x8x3_t, poly16_t*, p16);
     330  TEST_STX_LANE (vst3q_lane, float16x8x3_t, float16_t*, f16);
     331  TEST_STX_LANE (vst3q_lane, bfloat16x8x3_t, bfloat16_t*, bf16);
     332  TEST_STX_LANE (vst3q_lane, int32x4x3_t, int32_t*, s32);
     333  TEST_STX_LANE (vst3q_lane, uint32x4x3_t, uint32_t*, u32);
     334  TEST_STX_LANE (vst3q_lane, float32x4x3_t, float32_t*, f32);
     335  TEST_STX_LANE (vst3q_lane, int64x2x3_t, int64_t*, s64);
     336  TEST_STX_LANE (vst3q_lane, uint64x2x3_t, uint64_t*, u64);
     337  TEST_STX_LANE (vst3q_lane, float64x2x3_t, float64_t*, f64);
     338  TEST_STX_LANE (vst3q_lane, poly64x2x3_t, poly64_t*, p64);
     339  
     340  TEST_STX_LANE (vst4_lane, int8x8x4_t, int8_t*, s8);
     341  TEST_STX_LANE (vst4_lane, uint8x8x4_t, uint8_t*, u8);
     342  TEST_STX_LANE (vst4_lane, poly8x8x4_t, poly8_t*, p8);
     343  TEST_STX_LANE (vst4_lane, int16x4x4_t, int16_t*, s16);
     344  TEST_STX_LANE (vst4_lane, uint16x4x4_t, uint16_t*, u16);
     345  TEST_STX_LANE (vst4_lane, poly16x4x4_t, poly16_t*, p16);
     346  TEST_STX_LANE (vst4_lane, float16x4x4_t, float16_t*, f16);
     347  TEST_STX_LANE (vst4_lane, bfloat16x4x4_t, bfloat16_t*, bf16);
     348  TEST_STX_LANE (vst4_lane, int32x2x4_t, int32_t*, s32);
     349  TEST_STX_LANE (vst4_lane, uint32x2x4_t, uint32_t*, u32);
     350  TEST_STX_LANE (vst4_lane, float32x2x4_t, float32_t*, f32);
     351  TEST_STX_LANE (vst4_lane, int64x1x4_t, int64_t*, s64);
     352  TEST_STX_LANE (vst4_lane, uint64x1x4_t, uint64_t*, u64);
     353  TEST_STX_LANE (vst4_lane, float64x1x4_t, float64_t*, f64);
     354  TEST_STX_LANE (vst4_lane, poly64x1x4_t, poly64_t*, p64);
     355  
     356  TEST_STX_LANE (vst4q_lane, int8x16x4_t, int8_t*, s8);
     357  TEST_STX_LANE (vst4q_lane, uint8x16x4_t, uint8_t*, u8);
     358  TEST_STX_LANE (vst4q_lane, poly8x16x4_t, poly8_t*, p8);
     359  TEST_STX_LANE (vst4q_lane, int16x8x4_t, int16_t*, s16);
     360  TEST_STX_LANE (vst4q_lane, uint16x8x4_t, uint16_t*, u16);
     361  TEST_STX_LANE (vst4q_lane, poly16x8x4_t, poly16_t*, p16);
     362  TEST_STX_LANE (vst4q_lane, float16x8x4_t, float16_t*, f16);
     363  TEST_STX_LANE (vst4q_lane, bfloat16x8x4_t, bfloat16_t*, bf16);
     364  TEST_STX_LANE (vst4q_lane, int32x4x4_t, int32_t*, s32);
     365  TEST_STX_LANE (vst4q_lane, uint32x4x4_t, uint32_t*, u32);
     366  TEST_STX_LANE (vst4q_lane, float32x4x4_t, float32_t*, f32);
     367  TEST_STX_LANE (vst4q_lane, int64x2x4_t, int64_t*, s64);
     368  TEST_STX_LANE (vst4q_lane, uint64x2x4_t, uint64_t*, u64);
     369  TEST_STX_LANE (vst4q_lane, float64x2x4_t, float64_t*, f64);
     370  TEST_STX_LANE (vst4q_lane, poly64x2x4_t, poly64_t*, p64);
     371  
     372  #define TEST_LDX_LANE(name, rettype, ptrtype, ts) \
     373    rettype test_ ## name ## _ ## ts (ptrtype a, rettype b) \
     374  	{ \
     375  		return name ## _ ## ts (a, b, 0); \
     376  	}
     377  
     378  TEST_LDX_LANE (vld2_lane, int8x8x2_t, int8_t*, s8);
     379  TEST_LDX_LANE (vld2_lane, uint8x8x2_t, uint8_t*, u8);
     380  TEST_LDX_LANE (vld2_lane, poly8x8x2_t, poly8_t*, p8);
     381  TEST_LDX_LANE (vld2_lane, int16x4x2_t, int16_t*, s16);
     382  TEST_LDX_LANE (vld2_lane, uint16x4x2_t, uint16_t*, u16);
     383  TEST_LDX_LANE (vld2_lane, poly16x4x2_t, poly16_t*, p16);
     384  TEST_LDX_LANE (vld2_lane, float16x4x2_t, float16_t*, f16);
     385  TEST_LDX_LANE (vld2_lane, bfloat16x4x2_t, bfloat16_t*, bf16);
     386  TEST_LDX_LANE (vld2_lane, int32x2x2_t, int32_t*, s32);
     387  TEST_LDX_LANE (vld2_lane, uint32x2x2_t, uint32_t*, u32);
     388  TEST_LDX_LANE (vld2_lane, float32x2x2_t, float32_t*, f32);
     389  TEST_LDX_LANE (vld2_lane, int64x1x2_t, int64_t*, s64);
     390  TEST_LDX_LANE (vld2_lane, uint64x1x2_t, uint64_t*, u64);
     391  TEST_LDX_LANE (vld2_lane, float64x1x2_t, float64_t*, f64);
     392  TEST_LDX_LANE (vld2_lane, poly64x1x2_t, poly64_t*, p64);
     393  
     394  TEST_LDX_LANE (vld2q_lane, int8x16x2_t, int8_t*, s8);
     395  TEST_LDX_LANE (vld2q_lane, uint8x16x2_t, uint8_t*, u8);
     396  TEST_LDX_LANE (vld2q_lane, poly8x16x2_t, poly8_t*, p8);
     397  TEST_LDX_LANE (vld2q_lane, int16x8x2_t, int16_t*, s16);
     398  TEST_LDX_LANE (vld2q_lane, uint16x8x2_t, uint16_t*, u16);
     399  TEST_LDX_LANE (vld2q_lane, poly16x8x2_t, poly16_t*, p16);
     400  TEST_LDX_LANE (vld2q_lane, float16x8x2_t, float16_t*, f16);
     401  TEST_LDX_LANE (vld2q_lane, bfloat16x8x2_t, bfloat16_t*, bf16);
     402  TEST_LDX_LANE (vld2q_lane, int32x4x2_t, int32_t*, s32);
     403  TEST_LDX_LANE (vld2q_lane, uint32x4x2_t, uint32_t*, u32);
     404  TEST_LDX_LANE (vld2q_lane, float32x4x2_t, float32_t*, f32);
     405  TEST_LDX_LANE (vld2q_lane, int64x2x2_t, int64_t*, s64);
     406  TEST_LDX_LANE (vld2q_lane, uint64x2x2_t, uint64_t*, u64);
     407  TEST_LDX_LANE (vld2q_lane, float64x2x2_t, float64_t*, f64);
     408  TEST_LDX_LANE (vld2q_lane, poly64x2x2_t, poly64_t*, p64);
     409  
     410  TEST_LDX_LANE (vld3_lane, int8x8x3_t, int8_t*, s8);
     411  TEST_LDX_LANE (vld3_lane, uint8x8x3_t, uint8_t*, u8);
     412  TEST_LDX_LANE (vld3_lane, poly8x8x3_t, poly8_t*, p8);
     413  TEST_LDX_LANE (vld3_lane, int16x4x3_t, int16_t*, s16);
     414  TEST_LDX_LANE (vld3_lane, uint16x4x3_t, uint16_t*, u16);
     415  TEST_LDX_LANE (vld3_lane, poly16x4x3_t, poly16_t*, p16);
     416  TEST_LDX_LANE (vld3_lane, float16x4x3_t, float16_t*, f16);
     417  TEST_LDX_LANE (vld3_lane, bfloat16x4x3_t, bfloat16_t*, bf16);
     418  TEST_LDX_LANE (vld3_lane, int32x2x3_t, int32_t*, s32);
     419  TEST_LDX_LANE (vld3_lane, uint32x2x3_t, uint32_t*, u32);
     420  TEST_LDX_LANE (vld3_lane, float32x2x3_t, float32_t*, f32);
     421  TEST_LDX_LANE (vld3_lane, int64x1x3_t, int64_t*, s64);
     422  TEST_LDX_LANE (vld3_lane, uint64x1x3_t, uint64_t*, u64);
     423  TEST_LDX_LANE (vld3_lane, float64x1x3_t, float64_t*, f64);
     424  TEST_LDX_LANE (vld3_lane, poly64x1x3_t, poly64_t*, p64);
     425  
     426  TEST_LDX_LANE (vld3q_lane, int8x16x3_t, int8_t*, s8);
     427  TEST_LDX_LANE (vld3q_lane, uint8x16x3_t, uint8_t*, u8);
     428  TEST_LDX_LANE (vld3q_lane, poly8x16x3_t, poly8_t*, p8);
     429  TEST_LDX_LANE (vld3q_lane, int16x8x3_t, int16_t*, s16);
     430  TEST_LDX_LANE (vld3q_lane, uint16x8x3_t, uint16_t*, u16);
     431  TEST_LDX_LANE (vld3q_lane, poly16x8x3_t, poly16_t*, p16);
     432  TEST_LDX_LANE (vld3q_lane, float16x8x3_t, float16_t*, f16);
     433  TEST_LDX_LANE (vld3q_lane, bfloat16x8x3_t, bfloat16_t*, bf16);
     434  TEST_LDX_LANE (vld3q_lane, int32x4x3_t, int32_t*, s32);
     435  TEST_LDX_LANE (vld3q_lane, uint32x4x3_t, uint32_t*, u32);
     436  TEST_LDX_LANE (vld3q_lane, float32x4x3_t, float32_t*, f32);
     437  TEST_LDX_LANE (vld3q_lane, int64x2x3_t, int64_t*, s64);
     438  TEST_LDX_LANE (vld3q_lane, uint64x2x3_t, uint64_t*, u64);
     439  TEST_LDX_LANE (vld3q_lane, float64x2x3_t, float64_t*, f64);
     440  TEST_LDX_LANE (vld3q_lane, poly64x2x3_t, poly64_t*, p64);
     441  
     442  TEST_LDX_LANE (vld4_lane, int8x8x4_t, int8_t*, s8);
     443  TEST_LDX_LANE (vld4_lane, uint8x8x4_t, uint8_t*, u8);
     444  TEST_LDX_LANE (vld4_lane, poly8x8x4_t, poly8_t*, p8);
     445  TEST_LDX_LANE (vld4_lane, int16x4x4_t, int16_t*, s16);
     446  TEST_LDX_LANE (vld4_lane, uint16x4x4_t, uint16_t*, u16);
     447  TEST_LDX_LANE (vld4_lane, poly16x4x4_t, poly16_t*, p16);
     448  TEST_LDX_LANE (vld4_lane, float16x4x4_t, float16_t*, f16);
     449  TEST_LDX_LANE (vld4_lane, bfloat16x4x4_t, bfloat16_t*, bf16);
     450  TEST_LDX_LANE (vld4_lane, int32x2x4_t, int32_t*, s32);
     451  TEST_LDX_LANE (vld4_lane, uint32x2x4_t, uint32_t*, u32);
     452  TEST_LDX_LANE (vld4_lane, float32x2x4_t, float32_t*, f32);
     453  TEST_LDX_LANE (vld4_lane, int64x1x4_t, int64_t*, s64);
     454  TEST_LDX_LANE (vld4_lane, uint64x1x4_t, uint64_t*, u64);
     455  TEST_LDX_LANE (vld4_lane, float64x1x4_t, float64_t*, f64);
     456  TEST_LDX_LANE (vld4_lane, poly64x1x4_t, poly64_t*, p64);
     457  
     458  TEST_LDX_LANE (vld4q_lane, int8x16x4_t, int8_t*, s8);
     459  TEST_LDX_LANE (vld4q_lane, uint8x16x4_t, uint8_t*, u8);
     460  TEST_LDX_LANE (vld4q_lane, poly8x16x4_t, poly8_t*, p8);
     461  TEST_LDX_LANE (vld4q_lane, int16x8x4_t, int16_t*, s16);
     462  TEST_LDX_LANE (vld4q_lane, uint16x8x4_t, uint16_t*, u16);
     463  TEST_LDX_LANE (vld4q_lane, poly16x8x4_t, poly16_t*, p16);
     464  TEST_LDX_LANE (vld4q_lane, float16x8x4_t, float16_t*, f16);
     465  TEST_LDX_LANE (vld4q_lane, bfloat16x8x4_t, bfloat16_t*, bf16);
     466  TEST_LDX_LANE (vld4q_lane, int32x4x4_t, int32_t*, s32);
     467  TEST_LDX_LANE (vld4q_lane, uint32x4x4_t, uint32_t*, u32);
     468  TEST_LDX_LANE (vld4q_lane, float32x4x4_t, float32_t*, f32);
     469  TEST_LDX_LANE (vld4q_lane, int64x2x4_t, int64_t*, s64);
     470  TEST_LDX_LANE (vld4q_lane, uint64x2x4_t, uint64_t*, u64);
     471  TEST_LDX_LANE (vld4q_lane, float64x2x4_t, float64_t*, f64);
     472  TEST_LDX_LANE (vld4q_lane, poly64x2x4_t, poly64_t*, p64);
     473  
     474  #define TEST_ST1xN(name, tbltype, ptrtype, ts, xn) \
     475    void test_ ## name ## _ ## ts ## _ ## xn (ptrtype a, tbltype b) \
     476  	{ \
     477  		name ## _ ## ts ## _ ## xn (a, b); \
     478  	}
     479  
     480  TEST_ST1xN (vst1, int8x8x2_t, int8_t*, s8, x2);
     481  TEST_ST1xN (vst1, uint8x8x2_t, uint8_t*, u8, x2);
     482  TEST_ST1xN (vst1, poly8x8x2_t, poly8_t*, p8, x2);
     483  TEST_ST1xN (vst1, int16x4x2_t, int16_t*, s16, x2);
     484  TEST_ST1xN (vst1, uint16x4x2_t, uint16_t*, u16, x2);
     485  TEST_ST1xN (vst1, poly16x4x2_t, poly16_t*, p16, x2);
     486  TEST_ST1xN (vst1, float16x4x2_t, float16_t*, f16, x2);
     487  TEST_ST1xN (vst1, bfloat16x4x2_t, bfloat16_t*, bf16, x2);
     488  TEST_ST1xN (vst1, int32x2x2_t, int32_t*, s32, x2);
     489  TEST_ST1xN (vst1, uint32x2x2_t, uint32_t*, u32, x2);
     490  TEST_ST1xN (vst1, float32x2x2_t, float32_t*, f32, x2);
     491  TEST_ST1xN (vst1, int64x1x2_t, int64_t*, s64, x2);
     492  TEST_ST1xN (vst1, uint64x1x2_t, uint64_t*, u64, x2);
     493  TEST_ST1xN (vst1, poly64x1x2_t, poly64_t*, p64, x2);
     494  TEST_ST1xN (vst1, float64x1x2_t, float64_t*, f64, x2);
     495  
     496  TEST_ST1xN (vst1q, int8x16x2_t, int8_t*, s8, x2);
     497  TEST_ST1xN (vst1q, uint8x16x2_t, uint8_t*, u8, x2);
     498  TEST_ST1xN (vst1q, poly8x16x2_t, poly8_t*, p8, x2);
     499  TEST_ST1xN (vst1q, int16x8x2_t, int16_t*, s16, x2);
     500  TEST_ST1xN (vst1q, uint16x8x2_t, uint16_t*, u16, x2);
     501  TEST_ST1xN (vst1q, poly16x8x2_t, poly16_t*, p16, x2);
     502  TEST_ST1xN (vst1q, float16x8x2_t, float16_t*, f16, x2);
     503  TEST_ST1xN (vst1q, bfloat16x8x2_t, bfloat16_t*, bf16, x2);
     504  TEST_ST1xN (vst1q, int32x4x2_t, int32_t*, s32, x2);
     505  TEST_ST1xN (vst1q, uint32x4x2_t, uint32_t*, u32, x2);
     506  TEST_ST1xN (vst1q, float32x4x2_t, float32_t*, f32, x2);
     507  TEST_ST1xN (vst1q, int64x2x2_t, int64_t*, s64, x2);
     508  TEST_ST1xN (vst1q, uint64x2x2_t, uint64_t*, u64, x2);
     509  TEST_ST1xN (vst1q, poly64x2x2_t, poly64_t*, p64, x2);
     510  TEST_ST1xN (vst1q, float64x2x2_t, float64_t*, f64, x2);
     511  
     512  TEST_ST1xN (vst1, int8x8x3_t, int8_t*, s8, x3);
     513  TEST_ST1xN (vst1, uint8x8x3_t, uint8_t*, u8, x3);
     514  TEST_ST1xN (vst1, poly8x8x3_t, poly8_t*, p8, x3);
     515  TEST_ST1xN (vst1, int16x4x3_t, int16_t*, s16, x3);
     516  TEST_ST1xN (vst1, uint16x4x3_t, uint16_t*, u16, x3);
     517  TEST_ST1xN (vst1, poly16x4x3_t, poly16_t*, p16, x3);
     518  TEST_ST1xN (vst1, float16x4x3_t, float16_t*, f16, x3);
     519  TEST_ST1xN (vst1, bfloat16x4x3_t, bfloat16_t*, bf16, x3);
     520  TEST_ST1xN (vst1, int32x2x3_t, int32_t*, s32, x3);
     521  TEST_ST1xN (vst1, uint32x2x3_t, uint32_t*, u32, x3);
     522  TEST_ST1xN (vst1, float32x2x3_t, float32_t*, f32, x3);
     523  TEST_ST1xN (vst1, int64x1x3_t, int64_t*, s64, x3);
     524  TEST_ST1xN (vst1, uint64x1x3_t, uint64_t*, u64, x3);
     525  TEST_ST1xN (vst1, poly64x1x3_t, poly64_t*, p64, x3);
     526  TEST_ST1xN (vst1, float64x1x3_t, float64_t*, f64, x3);
     527  
     528  TEST_ST1xN (vst1q, int8x16x3_t, int8_t*, s8, x3);
     529  TEST_ST1xN (vst1q, uint8x16x3_t, uint8_t*, u8, x3);
     530  TEST_ST1xN (vst1q, poly8x16x3_t, poly8_t*, p8, x3);
     531  TEST_ST1xN (vst1q, int16x8x3_t, int16_t*, s16, x3);
     532  TEST_ST1xN (vst1q, uint16x8x3_t, uint16_t*, u16, x3);
     533  TEST_ST1xN (vst1q, poly16x8x3_t, poly16_t*, p16, x3);
     534  TEST_ST1xN (vst1q, float16x8x3_t, float16_t*, f16, x3);
     535  TEST_ST1xN (vst1q, bfloat16x8x3_t, bfloat16_t*, bf16, x3);
     536  TEST_ST1xN (vst1q, int32x4x3_t, int32_t*, s32, x3);
     537  TEST_ST1xN (vst1q, uint32x4x3_t, uint32_t*, u32, x3);
     538  TEST_ST1xN (vst1q, float32x4x3_t, float32_t*, f32, x3);
     539  TEST_ST1xN (vst1q, int64x2x3_t, int64_t*, s64, x3);
     540  TEST_ST1xN (vst1q, uint64x2x3_t, uint64_t*, u64, x3);
     541  TEST_ST1xN (vst1q, poly64x2x3_t, poly64_t*, p64, x3);
     542  TEST_ST1xN (vst1q, float64x2x3_t, float64_t*, f64, x3);
     543  
     544  TEST_ST1xN (vst1, int8x8x4_t, int8_t*, s8, x4);
     545  TEST_ST1xN (vst1, uint8x8x4_t, uint8_t*, u8, x4);
     546  TEST_ST1xN (vst1, poly8x8x4_t, poly8_t*, p8, x4);
     547  TEST_ST1xN (vst1, int16x4x4_t, int16_t*, s16, x4);
     548  TEST_ST1xN (vst1, uint16x4x4_t, uint16_t*, u16, x4);
     549  TEST_ST1xN (vst1, poly16x4x4_t, poly16_t*, p16, x4);
     550  TEST_ST1xN (vst1, float16x4x4_t, float16_t*, f16, x4);
     551  TEST_ST1xN (vst1, bfloat16x4x4_t, bfloat16_t*, bf16, x4);
     552  TEST_ST1xN (vst1, int32x2x4_t, int32_t*, s32, x4);
     553  TEST_ST1xN (vst1, uint32x2x4_t, uint32_t*, u32, x4);
     554  TEST_ST1xN (vst1, float32x2x4_t, float32_t*, f32, x4);
     555  TEST_ST1xN (vst1, int64x1x4_t, int64_t*, s64, x4);
     556  TEST_ST1xN (vst1, uint64x1x4_t, uint64_t*, u64, x4);
     557  TEST_ST1xN (vst1, poly64x1x4_t, poly64_t*, p64, x4);
     558  TEST_ST1xN (vst1, float64x1x4_t, float64_t*, f64, x4);
     559  
     560  TEST_ST1xN (vst1q, int8x16x4_t, int8_t*, s8, x4);
     561  TEST_ST1xN (vst1q, uint8x16x4_t, uint8_t*, u8, x4);
     562  TEST_ST1xN (vst1q, poly8x16x4_t, poly8_t*, p8, x4);
     563  TEST_ST1xN (vst1q, int16x8x4_t, int16_t*, s16, x4);
     564  TEST_ST1xN (vst1q, uint16x8x4_t, uint16_t*, u16, x4);
     565  TEST_ST1xN (vst1q, poly16x8x4_t, poly16_t*, p16, x4);
     566  TEST_ST1xN (vst1q, float16x8x4_t, float16_t*, f16, x4);
     567  TEST_ST1xN (vst1q, bfloat16x8x4_t, bfloat16_t*, bf16, x4);
     568  TEST_ST1xN (vst1q, int32x4x4_t, int32_t*, s32, x4);
     569  TEST_ST1xN (vst1q, uint32x4x4_t, uint32_t*, u32, x4);
     570  TEST_ST1xN (vst1q, float32x4x4_t, float32_t*, f32, x4);
     571  TEST_ST1xN (vst1q, int64x2x4_t, int64_t*, s64, x4);
     572  TEST_ST1xN (vst1q, uint64x2x4_t, uint64_t*, u64, x4);
     573  TEST_ST1xN (vst1q, poly64x2x4_t, poly64_t*, p64, x4);
     574  TEST_ST1xN (vst1q, float64x2x4_t, float64_t*, f64, x4);
     575  
     576  #define TEST_LD1xN(name, rettype, ptrtype, ts, xn) \
     577    rettype test_ ## name ## _ ## ts ## _ ## xn (ptrtype a) \
     578  	{ \
     579  		return name ## _ ## ts ## _ ## xn (a); \
     580  	}
     581  
     582  TEST_LD1xN (vld1, int8x8x2_t, int8_t*, s8, x2);
     583  TEST_LD1xN (vld1, uint8x8x2_t, uint8_t*, u8, x2);
     584  TEST_LD1xN (vld1, poly8x8x2_t, poly8_t*, p8, x2);
     585  TEST_LD1xN (vld1, int16x4x2_t, int16_t*, s16, x2);
     586  TEST_LD1xN (vld1, uint16x4x2_t, uint16_t*, u16, x2);
     587  TEST_LD1xN (vld1, poly16x4x2_t, poly16_t*, p16, x2);
     588  TEST_LD1xN (vld1, float16x4x2_t, float16_t*, f16, x2);
     589  TEST_LD1xN (vld1, bfloat16x4x2_t, bfloat16_t*, bf16, x2);
     590  TEST_LD1xN (vld1, int32x2x2_t, int32_t*, s32, x2);
     591  TEST_LD1xN (vld1, uint32x2x2_t, uint32_t*, u32, x2);
     592  TEST_LD1xN (vld1, float32x2x2_t, float32_t*, f32, x2);
     593  TEST_LD1xN (vld1, int64x1x2_t, int64_t*, s64, x2);
     594  TEST_LD1xN (vld1, uint64x1x2_t, uint64_t*, u64, x2);
     595  TEST_LD1xN (vld1, poly64x1x2_t, poly64_t*, p64, x2);
     596  TEST_LD1xN (vld1, float64x1x2_t, float64_t*, f64, x2);
     597  
     598  TEST_LD1xN (vld1q, int8x16x2_t, int8_t*, s8, x2);
     599  TEST_LD1xN (vld1q, uint8x16x2_t, uint8_t*, u8, x2);
     600  TEST_LD1xN (vld1q, poly8x16x2_t, poly8_t*, p8, x2);
     601  TEST_LD1xN (vld1q, int16x8x2_t, int16_t*, s16, x2);
     602  TEST_LD1xN (vld1q, uint16x8x2_t, uint16_t*, u16, x2);
     603  TEST_LD1xN (vld1q, poly16x8x2_t, poly16_t*, p16, x2);
     604  TEST_LD1xN (vld1q, float16x8x2_t, float16_t*, f16, x2);
     605  TEST_LD1xN (vld1q, bfloat16x8x2_t, bfloat16_t*, bf16, x2);
     606  TEST_LD1xN (vld1q, int32x4x2_t, int32_t*, s32, x2);
     607  TEST_LD1xN (vld1q, uint32x4x2_t, uint32_t*, u32, x2);
     608  TEST_LD1xN (vld1q, float32x4x2_t, float32_t*, f32, x2);
     609  TEST_LD1xN (vld1q, int64x2x2_t, int64_t*, s64, x2);
     610  TEST_LD1xN (vld1q, uint64x2x2_t, uint64_t*, u64, x2);
     611  TEST_LD1xN (vld1q, poly64x2x2_t, poly64_t*, p64, x2);
     612  TEST_LD1xN (vld1q, float64x2x2_t, float64_t*, f64, x2);
     613  
     614  TEST_LD1xN (vld1, int8x8x3_t, int8_t*, s8, x3);
     615  TEST_LD1xN (vld1, uint8x8x3_t, uint8_t*, u8, x3);
     616  TEST_LD1xN (vld1, poly8x8x3_t, poly8_t*, p8, x3);
     617  TEST_LD1xN (vld1, int16x4x3_t, int16_t*, s16, x3);
     618  TEST_LD1xN (vld1, uint16x4x3_t, uint16_t*, u16, x3);
     619  TEST_LD1xN (vld1, poly16x4x3_t, poly16_t*, p16, x3);
     620  TEST_LD1xN (vld1, float16x4x3_t, float16_t*, f16, x3);
     621  TEST_LD1xN (vld1, bfloat16x4x3_t, bfloat16_t*, bf16, x3);
     622  TEST_LD1xN (vld1, int32x2x3_t, int32_t*, s32, x3);
     623  TEST_LD1xN (vld1, uint32x2x3_t, uint32_t*, u32, x3);
     624  TEST_LD1xN (vld1, float32x2x3_t, float32_t*, f32, x3);
     625  TEST_LD1xN (vld1, int64x1x3_t, int64_t*, s64, x3);
     626  TEST_LD1xN (vld1, uint64x1x3_t, uint64_t*, u64, x3);
     627  TEST_LD1xN (vld1, poly64x1x3_t, poly64_t*, p64, x3);
     628  TEST_LD1xN (vld1, float64x1x3_t, float64_t*, f64, x3);
     629  
     630  TEST_LD1xN (vld1q, int8x16x3_t, int8_t*, s8, x3);
     631  TEST_LD1xN (vld1q, uint8x16x3_t, uint8_t*, u8, x3);
     632  TEST_LD1xN (vld1q, poly8x16x3_t, poly8_t*, p8, x3);
     633  TEST_LD1xN (vld1q, int16x8x3_t, int16_t*, s16, x3);
     634  TEST_LD1xN (vld1q, uint16x8x3_t, uint16_t*, u16, x3);
     635  TEST_LD1xN (vld1q, poly16x8x3_t, poly16_t*, p16, x3);
     636  TEST_LD1xN (vld1q, float16x8x3_t, float16_t*, f16, x3);
     637  TEST_LD1xN (vld1q, bfloat16x8x3_t, bfloat16_t*, bf16, x3);
     638  TEST_LD1xN (vld1q, int32x4x3_t, int32_t*, s32, x3);
     639  TEST_LD1xN (vld1q, uint32x4x3_t, uint32_t*, u32, x3);
     640  TEST_LD1xN (vld1q, float32x4x3_t, float32_t*, f32, x3);
     641  TEST_LD1xN (vld1q, int64x2x3_t, int64_t*, s64, x3);
     642  TEST_LD1xN (vld1q, uint64x2x3_t, uint64_t*, u64, x3);
     643  TEST_LD1xN (vld1q, poly64x2x3_t, poly64_t*, p64, x3);
     644  TEST_LD1xN (vld1q, float64x2x3_t, float64_t*, f64, x3);
     645  
     646  TEST_LD1xN (vld1, int8x8x4_t, int8_t*, s8, x4);
     647  TEST_LD1xN (vld1, uint8x8x4_t, uint8_t*, u8, x4);
     648  TEST_LD1xN (vld1, poly8x8x4_t, poly8_t*, p8, x4);
     649  TEST_LD1xN (vld1, int16x4x4_t, int16_t*, s16, x4);
     650  TEST_LD1xN (vld1, uint16x4x4_t, uint16_t*, u16, x4);
     651  TEST_LD1xN (vld1, poly16x4x4_t, poly16_t*, p16, x4);
     652  TEST_LD1xN (vld1, float16x4x4_t, float16_t*, f16, x4);
     653  TEST_LD1xN (vld1, bfloat16x4x4_t, bfloat16_t*, bf16, x4);
     654  TEST_LD1xN (vld1, int32x2x4_t, int32_t*, s32, x4);
     655  TEST_LD1xN (vld1, uint32x2x4_t, uint32_t*, u32, x4);
     656  TEST_LD1xN (vld1, float32x2x4_t, float32_t*, f32, x4);
     657  TEST_LD1xN (vld1, int64x1x4_t, int64_t*, s64, x4);
     658  TEST_LD1xN (vld1, uint64x1x4_t, uint64_t*, u64, x4);
     659  TEST_LD1xN (vld1, poly64x1x4_t, poly64_t*, p64, x4);
     660  TEST_LD1xN (vld1, float64x1x4_t, float64_t*, f64, x4);
     661  
     662  TEST_LD1xN (vld1q, int8x16x4_t, int8_t*, s8, x4);
     663  TEST_LD1xN (vld1q, uint8x16x4_t, uint8_t*, u8, x4);
     664  TEST_LD1xN (vld1q, poly8x16x4_t, poly8_t*, p8, x4);
     665  TEST_LD1xN (vld1q, int16x8x4_t, int16_t*, s16, x4);
     666  TEST_LD1xN (vld1q, uint16x8x4_t, uint16_t*, u16, x4);
     667  TEST_LD1xN (vld1q, poly16x8x4_t, poly16_t*, p16, x4);
     668  TEST_LD1xN (vld1q, float16x8x4_t, float16_t*, f16, x4);
     669  TEST_LD1xN (vld1q, bfloat16x8x4_t, bfloat16_t*, bf16, x4);
     670  TEST_LD1xN (vld1q, int32x4x4_t, int32_t*, s32, x4);
     671  TEST_LD1xN (vld1q, uint32x4x4_t, uint32_t*, u32, x4);
     672  TEST_LD1xN (vld1q, float32x4x4_t, float32_t*, f32, x4);
     673  TEST_LD1xN (vld1q, int64x2x4_t, int64_t*, s64, x4);
     674  TEST_LD1xN (vld1q, uint64x2x4_t, uint64_t*, u64, x4);
     675  TEST_LD1xN (vld1q, poly64x2x4_t, poly64_t*, p64, x4);
     676  TEST_LD1xN (vld1q, float64x2x4_t, float64_t*, f64, x4);
     677  
     678  /* { dg-final { scan-assembler-not "mov\\t" { target aarch64_little_endian } } } */
     679  /* { dg-final { scan-assembler-not "ldr\\t" { target aarch64_little_endian } } } */
     680  /* { dg-final { scan-assembler-not "str\\t" { target aarch64_little_endian } } } */
     681  /* { dg-final { scan-assembler-not "sp" { target aarch64_little_endian } } } */
     682  
     683  /* { dg-final { scan-assembler-times "tbl\\t" 18} }  */
     684  /* { dg-final { scan-assembler-times "tbx\\t" 18} }  */
     685  /* { dg-final { scan-assembler-times "st4\\t" 56} }  */
     686  /* { dg-final { scan-assembler-times "st3\\t" 56} }  */
     687  /* { dg-final { scan-assembler-times "st2\\t" 56} }  */
     688  /* { dg-final { scan-assembler-times "st1\\t" 102} }  */
     689  /* { dg-final { scan-assembler-times "ld4\\t" 56} }  */
     690  /* { dg-final { scan-assembler-times "ld3\\t" 56} }  */
     691  /* { dg-final { scan-assembler-times "ld2\\t" 56} }  */
     692  /* { dg-final { scan-assembler-times "ld1\\t" 102} }  */