Home | History | Annotate | Download | only in CodeGen
      1 // REQUIRES: aarch64-registered-target
      2 // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
      3 // RUN:   -ffp-contract=fast -S -O3 -o - %s | FileCheck %s
      4 
      5 #include <arm_neon.h>
      6 
      7 uint8x16_t test_vld1q_dup_u8(uint8_t  *a) {
      8   // CHECK-LABEL: test_vld1q_dup_u8
      9   return vld1q_dup_u8(a);
     10   // CHECK: ld1r {{{ *v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
     11 }
     12 
     13 uint16x8_t test_vld1q_dup_u16(uint16_t  *a) {
     14   // CHECK-LABEL: test_vld1q_dup_u16
     15   return vld1q_dup_u16(a);
     16   // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
     17 }
     18 
     19 uint32x4_t test_vld1q_dup_u32(uint32_t  *a) {
     20   // CHECK-LABEL: test_vld1q_dup_u32
     21   return vld1q_dup_u32(a);
     22   // CHECK: ld1r {{{ *v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
     23 }
     24 
     25 uint64x2_t test_vld1q_dup_u64(uint64_t  *a) {
     26   // CHECK-LABEL: test_vld1q_dup_u64
     27   return vld1q_dup_u64(a);
     28   // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
     29 }
     30 
     31 int8x16_t test_vld1q_dup_s8(int8_t  *a) {
     32   // CHECK-LABEL: test_vld1q_dup_s8
     33   return vld1q_dup_s8(a);
     34   // CHECK: ld1r {{{ *v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
     35 }
     36 
     37 int16x8_t test_vld1q_dup_s16(int16_t  *a) {
     38   // CHECK-LABEL: test_vld1q_dup_s16
     39   return vld1q_dup_s16(a);
     40   // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
     41 }
     42 
     43 int32x4_t test_vld1q_dup_s32(int32_t  *a) {
     44   // CHECK-LABEL: test_vld1q_dup_s32
     45   return vld1q_dup_s32(a);
     46   // CHECK: ld1r {{{ *v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
     47 }
     48 
     49 int64x2_t test_vld1q_dup_s64(int64_t  *a) {
     50   // CHECK-LABEL: test_vld1q_dup_s64
     51   return vld1q_dup_s64(a);
     52   // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
     53 }
     54 
     55 float16x8_t test_vld1q_dup_f16(float16_t  *a) {
     56   // CHECK-LABEL: test_vld1q_dup_f16
     57   return vld1q_dup_f16(a);
     58   // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
     59 }
     60 
     61 float32x4_t test_vld1q_dup_f32(float32_t  *a) {
     62   // CHECK-LABEL: test_vld1q_dup_f32
     63   return vld1q_dup_f32(a);
     64   // CHECK: ld1r {{{ *v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
     65 }
     66 
     67 float64x2_t test_vld1q_dup_f64(float64_t  *a) {
     68   // CHECK-LABEL: test_vld1q_dup_f64
     69   return vld1q_dup_f64(a);
     70   // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
     71 }
     72 
     73 poly8x16_t test_vld1q_dup_p8(poly8_t  *a) {
     74   // CHECK-LABEL: test_vld1q_dup_p8
     75   return vld1q_dup_p8(a);
     76   // CHECK: ld1r {{{ *v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
     77 }
     78 
     79 poly16x8_t test_vld1q_dup_p16(poly16_t  *a) {
     80   // CHECK-LABEL: test_vld1q_dup_p16
     81   return vld1q_dup_p16(a);
     82   // CHECK: ld1r {{{ *v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
     83 }
     84 
     85 poly64x2_t test_vld1q_dup_p64(poly64_t  *a) {
     86   // CHECK-LABEL: test_vld1q_dup_p64
     87   return vld1q_dup_p64(a);
     88   // CHECK: ld1r {{{ *v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
     89 }
     90 
     91 uint8x8_t test_vld1_dup_u8(uint8_t  *a) {
     92   // CHECK-LABEL: test_vld1_dup_u8
     93   return vld1_dup_u8(a);
     94   // CHECK: ld1r {{{ *v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
     95 }
     96 
     97 uint16x4_t test_vld1_dup_u16(uint16_t  *a) {
     98   // CHECK-LABEL: test_vld1_dup_u16
     99   return vld1_dup_u16(a);
    100   // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    101 }
    102 
    103 uint32x2_t test_vld1_dup_u32(uint32_t  *a) {
    104   // CHECK-LABEL: test_vld1_dup_u32
    105   return vld1_dup_u32(a);
    106   // CHECK: ld1r {{{ *v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
    107 }
    108 
    109 uint64x1_t test_vld1_dup_u64(uint64_t  *a) {
    110   // CHECK-LABEL: test_vld1_dup_u64
    111   return vld1_dup_u64(a);
    112   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
    113 }
    114 
    115 int8x8_t test_vld1_dup_s8(int8_t  *a) {
    116   // CHECK-LABEL: test_vld1_dup_s8
    117   return vld1_dup_s8(a);
    118   // CHECK: ld1r {{{ *v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
    119 }
    120 
    121 int16x4_t test_vld1_dup_s16(int16_t  *a) {
    122   // CHECK-LABEL: test_vld1_dup_s16
    123   return vld1_dup_s16(a);
    124   // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    125 }
    126 
    127 int32x2_t test_vld1_dup_s32(int32_t  *a) {
    128   // CHECK-LABEL: test_vld1_dup_s32
    129   return vld1_dup_s32(a);
    130   // CHECK: ld1r {{{ *v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
    131 }
    132 
    133 int64x1_t test_vld1_dup_s64(int64_t  *a) {
    134   // CHECK-LABEL: test_vld1_dup_s64
    135   return vld1_dup_s64(a);
    136   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
    137 }
    138 
    139 float16x4_t test_vld1_dup_f16(float16_t  *a) {
    140   // CHECK-LABEL: test_vld1_dup_f16
    141   return vld1_dup_f16(a);
    142   // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    143 }
    144 
    145 float32x2_t test_vld1_dup_f32(float32_t  *a) {
    146   // CHECK-LABEL: test_vld1_dup_f32
    147   return vld1_dup_f32(a);
    148   // CHECK: ld1r {{{ *v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
    149 }
    150 
    151 float64x1_t test_vld1_dup_f64(float64_t  *a) {
    152   // CHECK-LABEL: test_vld1_dup_f64
    153   return vld1_dup_f64(a);
    154   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
    155 }
    156 
    157 poly8x8_t test_vld1_dup_p8(poly8_t  *a) {
    158   // CHECK-LABEL: test_vld1_dup_p8
    159   return vld1_dup_p8(a);
    160   // CHECK: ld1r {{{ *v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
    161 }
    162 
    163 poly16x4_t test_vld1_dup_p16(poly16_t  *a) {
    164   // CHECK-LABEL: test_vld1_dup_p16
    165   return vld1_dup_p16(a);
    166   // CHECK: ld1r {{{ *v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    167 }
    168 
    169 poly64x1_t test_vld1_dup_p64(poly64_t  *a) {
    170   // CHECK-LABEL: test_vld1_dup_p64
    171   return vld1_dup_p64(a);
    172   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
    173 }
    174 
    175 uint8x16x2_t test_vld2q_dup_u8(uint8_t  *a) {
    176   // CHECK-LABEL: test_vld2q_dup_u8
    177   return vld2q_dup_u8(a);
    178   // CHECK: ld2r {{{ *v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
    179 }
    180 
    181 uint16x8x2_t test_vld2q_dup_u16(uint16_t  *a) {
    182   // CHECK-LABEL: test_vld2q_dup_u16
    183   return vld2q_dup_u16(a);
    184   // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
    185 }
    186 
    187 uint32x4x2_t test_vld2q_dup_u32(uint32_t  *a) {
    188   // CHECK-LABEL: test_vld2q_dup_u32
    189   return vld2q_dup_u32(a);
    190   // CHECK: ld2r {{{ *v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
    191 }
    192 
    193 uint64x2x2_t test_vld2q_dup_u64(uint64_t  *a) {
    194   // CHECK-LABEL: test_vld2q_dup_u64
    195   return vld2q_dup_u64(a);
    196   // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
    197 }
    198 
    199 int8x16x2_t test_vld2q_dup_s8(int8_t  *a) {
    200   // CHECK-LABEL: test_vld2q_dup_s8
    201   return vld2q_dup_s8(a);
    202   // CHECK: ld2r {{{ *v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
    203 }
    204 
    205 int16x8x2_t test_vld2q_dup_s16(int16_t  *a) {
    206   // CHECK-LABEL: test_vld2q_dup_s16
    207   return vld2q_dup_s16(a);
    208   // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
    209 }
    210 
    211 int32x4x2_t test_vld2q_dup_s32(int32_t  *a) {
    212   // CHECK-LABEL: test_vld2q_dup_s32
    213   return vld2q_dup_s32(a);
    214   // CHECK: ld2r {{{ *v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
    215 }
    216 
    217 int64x2x2_t test_vld2q_dup_s64(int64_t  *a) {
    218   // CHECK-LABEL: test_vld2q_dup_s64
    219   return vld2q_dup_s64(a);
    220   // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
    221 }
    222 
    223 float16x8x2_t test_vld2q_dup_f16(float16_t  *a) {
    224   // CHECK-LABEL: test_vld2q_dup_f16
    225   return vld2q_dup_f16(a);
    226   // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
    227 }
    228 
    229 float32x4x2_t test_vld2q_dup_f32(float32_t  *a) {
    230   // CHECK-LABEL: test_vld2q_dup_f32
    231   return vld2q_dup_f32(a);
    232   // CHECK: ld2r {{{ *v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
    233 }
    234 
    235 float64x2x2_t test_vld2q_dup_f64(float64_t  *a) {
    236   // CHECK-LABEL: test_vld2q_dup_f64
    237   return vld2q_dup_f64(a);
    238   // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
    239 }
    240 
    241 poly8x16x2_t test_vld2q_dup_p8(poly8_t  *a) {
    242   // CHECK-LABEL: test_vld2q_dup_p8
    243   return vld2q_dup_p8(a);
    244   // CHECK: ld2r {{{ *v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
    245 }
    246 
    247 poly16x8x2_t test_vld2q_dup_p16(poly16_t  *a) {
    248   // CHECK-LABEL: test_vld2q_dup_p16
    249   return vld2q_dup_p16(a);
    250   // CHECK: ld2r {{{ *v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
    251 }
    252 
    253 poly64x2x2_t test_vld2q_dup_p64(poly64_t  *a) {
    254   // CHECK-LABEL: test_vld2q_dup_p64
    255   return vld2q_dup_p64(a);
    256   // CHECK: ld2r {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
    257 }
    258 
    259 uint8x8x2_t test_vld2_dup_u8(uint8_t  *a) {
    260   // CHECK-LABEL: test_vld2_dup_u8
    261   return vld2_dup_u8(a);
    262   // CHECK: ld2r {{{ *v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
    263 }
    264 
    265 uint16x4x2_t test_vld2_dup_u16(uint16_t  *a) {
    266   // CHECK-LABEL: test_vld2_dup_u16
    267   return vld2_dup_u16(a);
    268   // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    269 }
    270 
    271 uint32x2x2_t test_vld2_dup_u32(uint32_t  *a) {
    272   // CHECK-LABEL: test_vld2_dup_u32
    273   return vld2_dup_u32(a);
    274   // CHECK: ld2r {{{ *v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
    275 }
    276 
    277 uint64x1x2_t test_vld2_dup_u64(uint64_t  *a) {
    278   // CHECK-LABEL: test_vld2_dup_u64
    279   return vld2_dup_u64(a);
    280   // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
    281 }
    282 
    283 int8x8x2_t test_vld2_dup_s8(int8_t  *a) {
    284   // CHECK-LABEL: test_vld2_dup_s8
    285   return vld2_dup_s8(a);
    286   // CHECK: ld2r {{{ *v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
    287 }
    288 
    289 int16x4x2_t test_vld2_dup_s16(int16_t  *a) {
    290   // CHECK-LABEL: test_vld2_dup_s16
    291   return vld2_dup_s16(a);
    292   // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    293 }
    294 
    295 int32x2x2_t test_vld2_dup_s32(int32_t  *a) {
    296   // CHECK-LABEL: test_vld2_dup_s32
    297   return vld2_dup_s32(a);
    298   // CHECK: ld2r {{{ *v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
    299 }
    300 
    301 int64x1x2_t test_vld2_dup_s64(int64_t  *a) {
    302   // CHECK-LABEL: test_vld2_dup_s64
    303   return vld2_dup_s64(a);
    304   // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
    305 }
    306 
    307 float16x4x2_t test_vld2_dup_f16(float16_t  *a) {
    308   // CHECK-LABEL: test_vld2_dup_f16
    309   return vld2_dup_f16(a);
    310   // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    311 }
    312 
    313 float32x2x2_t test_vld2_dup_f32(float32_t  *a) {
    314   // CHECK-LABEL: test_vld2_dup_f32
    315   return vld2_dup_f32(a);
    316   // CHECK: ld2r {{{ *v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
    317 }
    318 
    319 float64x1x2_t test_vld2_dup_f64(float64_t  *a) {
    320   // CHECK-LABEL: test_vld2_dup_f64
    321   return vld2_dup_f64(a);
    322   // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
    323 }
    324 
    325 poly8x8x2_t test_vld2_dup_p8(poly8_t  *a) {
    326   // CHECK-LABEL: test_vld2_dup_p8
    327   return vld2_dup_p8(a);
    328   // CHECK: ld2r {{{ *v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
    329 }
    330 
    331 poly16x4x2_t test_vld2_dup_p16(poly16_t  *a) {
    332   // CHECK-LABEL: test_vld2_dup_p16
    333   return vld2_dup_p16(a);
    334   // CHECK: ld2r {{{ *v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    335 }
    336 
    337 poly64x1x2_t test_vld2_dup_p64(poly64_t  *a) {
    338   // CHECK-LABEL: test_vld2_dup_p64
    339   return vld2_dup_p64(a);
    340   // CHECK: {{ld1|ld2r}} {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
    341 }
    342 
    343 uint8x16x3_t test_vld3q_dup_u8(uint8_t  *a) {
    344   // CHECK-LABEL: test_vld3q_dup_u8
    345   return vld3q_dup_u8(a);
    346   // CHECK: ld3r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}},
    347   // [{{x[0-9]+|sp}}]
    348 }
    349 
    350 uint16x8x3_t test_vld3q_dup_u16(uint16_t  *a) {
    351   // CHECK-LABEL: test_vld3q_dup_u16
    352   return vld3q_dup_u16(a);
    353   // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
    354   // [{{x[0-9]+|sp}}]
    355 }
    356 
    357 uint32x4x3_t test_vld3q_dup_u32(uint32_t  *a) {
    358   // CHECK-LABEL: test_vld3q_dup_u32
    359   return vld3q_dup_u32(a);
    360   // CHECK: ld3r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}},
    361   // [{{x[0-9]+|sp}}]
    362 }
    363 
    364 uint64x2x3_t test_vld3q_dup_u64(uint64_t  *a) {
    365   // CHECK-LABEL: test_vld3q_dup_u64
    366   return vld3q_dup_u64(a);
    367   // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
    368   // [{{x[0-9]+|sp}}]
    369 }
    370 
    371 int8x16x3_t test_vld3q_dup_s8(int8_t  *a) {
    372   // CHECK-LABEL: test_vld3q_dup_s8
    373   return vld3q_dup_s8(a);
    374   // CHECK: ld3r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}},
    375   // [{{x[0-9]+|sp}}]
    376 }
    377 
    378 int16x8x3_t test_vld3q_dup_s16(int16_t  *a) {
    379   // CHECK-LABEL: test_vld3q_dup_s16
    380   return vld3q_dup_s16(a);
    381   // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
    382   // [{{x[0-9]+|sp}}]
    383 }
    384 
    385 int32x4x3_t test_vld3q_dup_s32(int32_t  *a) {
    386   // CHECK-LABEL: test_vld3q_dup_s32
    387   return vld3q_dup_s32(a);
    388   // CHECK: ld3r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}},
    389   // [{{x[0-9]+|sp}}]
    390 }
    391 
    392 int64x2x3_t test_vld3q_dup_s64(int64_t  *a) {
    393   // CHECK-LABEL: test_vld3q_dup_s64
    394   return vld3q_dup_s64(a);
    395   // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
    396   // [{{x[0-9]+|sp}}]
    397 }
    398 
    399 float16x8x3_t test_vld3q_dup_f16(float16_t  *a) {
    400   // CHECK-LABEL: test_vld3q_dup_f16
    401   return vld3q_dup_f16(a);
    402   // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
    403   // [{{x[0-9]+|sp}}]
    404 }
    405 
    406 float32x4x3_t test_vld3q_dup_f32(float32_t  *a) {
    407   // CHECK-LABEL: test_vld3q_dup_f32
    408   return vld3q_dup_f32(a);
    409   // CHECK: ld3r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}},
    410   // [{{x[0-9]+|sp}}]
    411 }
    412 
    413 float64x2x3_t test_vld3q_dup_f64(float64_t  *a) {
    414   // CHECK-LABEL: test_vld3q_dup_f64
    415   return vld3q_dup_f64(a);
    416   // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
    417   // [{{x[0-9]+|sp}}]
    418 }
    419 
    420 poly8x16x3_t test_vld3q_dup_p8(poly8_t  *a) {
    421   // CHECK-LABEL: test_vld3q_dup_p8
    422   return vld3q_dup_p8(a);
    423   // CHECK: ld3r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}},
    424   // [{{x[0-9]+|sp}}]
    425 }
    426 
    427 poly16x8x3_t test_vld3q_dup_p16(poly16_t  *a) {
    428   // CHECK-LABEL: test_vld3q_dup_p16
    429   return vld3q_dup_p16(a);
    430   // CHECK: ld3r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}},
    431   // [{{x[0-9]+|sp}}]
    432 }
    433 
    434 poly64x2x3_t test_vld3q_dup_p64(poly64_t  *a) {
    435   // CHECK-LABEL: test_vld3q_dup_p64
    436   return vld3q_dup_p64(a);
    437   // CHECK: ld3r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}},
    438   // [{{x[0-9]+|sp}}]
    439 }
    440 
    441 uint8x8x3_t test_vld3_dup_u8(uint8_t  *a) {
    442   // CHECK-LABEL: test_vld3_dup_u8
    443   return vld3_dup_u8(a);
    444   // CHECK: ld3r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}},
    445   // [{{x[0-9]+|sp}}]
    446 }
    447 
    448 uint16x4x3_t test_vld3_dup_u16(uint16_t  *a) {
    449   // CHECK-LABEL: test_vld3_dup_u16
    450   return vld3_dup_u16(a);
    451   // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
    452   // [{{x[0-9]+|sp}}]
    453 }
    454 
    455 uint32x2x3_t test_vld3_dup_u32(uint32_t  *a) {
    456   // CHECK-LABEL: test_vld3_dup_u32
    457   return vld3_dup_u32(a);
    458   // CHECK: ld3r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}},
    459   // [{{x[0-9]+|sp}}]
    460 }
    461 
    462 uint64x1x3_t test_vld3_dup_u64(uint64_t  *a) {
    463   // CHECK-LABEL: test_vld3_dup_u64
    464   return vld3_dup_u64(a);
    465   // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
    466   // [{{x[0-9]+|sp}}]
    467 }
    468 
    469 int8x8x3_t test_vld3_dup_s8(int8_t  *a) {
    470   // CHECK-LABEL: test_vld3_dup_s8
    471   return vld3_dup_s8(a);
    472   // CHECK: ld3r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}},
    473   // [{{x[0-9]+|sp}}]
    474 }
    475 
    476 int16x4x3_t test_vld3_dup_s16(int16_t  *a) {
    477   // CHECK-LABEL: test_vld3_dup_s16
    478   return vld3_dup_s16(a);
    479   // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
    480   // [{{x[0-9]+|sp}}]
    481 }
    482 
    483 int32x2x3_t test_vld3_dup_s32(int32_t  *a) {
    484   // CHECK-LABEL: test_vld3_dup_s32
    485   return vld3_dup_s32(a);
    486   // CHECK: ld3r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}},
    487   // [{{x[0-9]+|sp}}]
    488 }
    489 
    490 int64x1x3_t test_vld3_dup_s64(int64_t  *a) {
    491   // CHECK-LABEL: test_vld3_dup_s64
    492   return vld3_dup_s64(a);
    493   // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
    494   // [{{x[0-9]+|sp}}]
    495 }
    496 
    497 float16x4x3_t test_vld3_dup_f16(float16_t  *a) {
    498   // CHECK-LABEL: test_vld3_dup_f16
    499   return vld3_dup_f16(a);
    500   // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
    501   // [{{x[0-9]+|sp}}]
    502 }
    503 
    504 float32x2x3_t test_vld3_dup_f32(float32_t  *a) {
    505   // CHECK-LABEL: test_vld3_dup_f32
    506   return vld3_dup_f32(a);
    507   // CHECK: ld3r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}},
    508   // [{{x[0-9]+|sp}}]
    509 }
    510 
    511 float64x1x3_t test_vld3_dup_f64(float64_t  *a) {
    512   // CHECK-LABEL: test_vld3_dup_f64
    513   return vld3_dup_f64(a);
    514   // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
    515   // [{{x[0-9]+|sp}}]
    516 }
    517 
    518 poly8x8x3_t test_vld3_dup_p8(poly8_t  *a) {
    519   // CHECK-LABEL: test_vld3_dup_p8
    520   return vld3_dup_p8(a);
    521   // CHECK: ld3r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}},
    522   // [{{x[0-9]+|sp}}]
    523 }
    524 
    525 poly16x4x3_t test_vld3_dup_p16(poly16_t  *a) {
    526   // CHECK-LABEL: test_vld3_dup_p16
    527   return vld3_dup_p16(a);
    528   // CHECK: ld3r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}},
    529   // [{{x[0-9]+|sp}}]
    530 }
    531 
    532 poly64x1x3_t test_vld3_dup_p64(poly64_t  *a) {
    533   // CHECK-LABEL: test_vld3_dup_p64
    534   return vld3_dup_p64(a);
    535   // CHECK: {{ld1|ld3r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}},
    536   // [{{x[0-9]+|sp}}]
    537 }
    538 
    539 uint8x16x4_t test_vld4q_dup_u8(uint8_t  *a) {
    540   // CHECK-LABEL: test_vld4q_dup_u8
    541   return vld4q_dup_u8(a);
    542   // CHECK: ld4r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
    543 }
    544 
    545 uint16x8x4_t test_vld4q_dup_u16(uint16_t  *a) {
    546   // CHECK-LABEL: test_vld4q_dup_u16
    547   return vld4q_dup_u16(a);
    548   // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
    549 }
    550 
    551 uint32x4x4_t test_vld4q_dup_u32(uint32_t  *a) {
    552   // CHECK-LABEL: test_vld4q_dup_u32
    553   return vld4q_dup_u32(a);
    554   // CHECK: ld4r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
    555 }
    556 
    557 uint64x2x4_t test_vld4q_dup_u64(uint64_t  *a) {
    558   // CHECK-LABEL: test_vld4q_dup_u64
    559   return vld4q_dup_u64(a);
    560   // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
    561 }
    562 
    563 int8x16x4_t test_vld4q_dup_s8(int8_t  *a) {
    564   // CHECK-LABEL: test_vld4q_dup_s8
    565   return vld4q_dup_s8(a);
    566   // CHECK: ld4r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
    567 }
    568 
    569 int16x8x4_t test_vld4q_dup_s16(int16_t  *a) {
    570   // CHECK-LABEL: test_vld4q_dup_s16
    571   return vld4q_dup_s16(a);
    572   // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
    573 }
    574 
    575 int32x4x4_t test_vld4q_dup_s32(int32_t  *a) {
    576   // CHECK-LABEL: test_vld4q_dup_s32
    577   return vld4q_dup_s32(a);
    578   // CHECK: ld4r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
    579 }
    580 
    581 int64x2x4_t test_vld4q_dup_s64(int64_t  *a) {
    582   // CHECK-LABEL: test_vld4q_dup_s64
    583   return vld4q_dup_s64(a);
    584   // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
    585 }
    586 
    587 float16x8x4_t test_vld4q_dup_f16(float16_t  *a) {
    588   // CHECK-LABEL: test_vld4q_dup_f16
    589   return vld4q_dup_f16(a);
    590   // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
    591 }
    592 
    593 float32x4x4_t test_vld4q_dup_f32(float32_t  *a) {
    594   // CHECK-LABEL: test_vld4q_dup_f32
    595   return vld4q_dup_f32(a);
    596   // CHECK: ld4r {{{ *v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s *}}}, [{{x[0-9]+|sp}}]
    597 }
    598 
    599 float64x2x4_t test_vld4q_dup_f64(float64_t  *a) {
    600   // CHECK-LABEL: test_vld4q_dup_f64
    601   return vld4q_dup_f64(a);
    602   // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
    603 }
    604 
    605 poly8x16x4_t test_vld4q_dup_p8(poly8_t  *a) {
    606   // CHECK-LABEL: test_vld4q_dup_p8
    607   return vld4q_dup_p8(a);
    608   // CHECK: ld4r {{{ *v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b *}}}, [{{x[0-9]+|sp}}]
    609 }
    610 
    611 poly16x8x4_t test_vld4q_dup_p16(poly16_t  *a) {
    612   // CHECK-LABEL: test_vld4q_dup_p16
    613   return vld4q_dup_p16(a);
    614   // CHECK: ld4r {{{ *v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h *}}}, [{{x[0-9]+|sp}}]
    615 }
    616 
    617 poly64x2x4_t test_vld4q_dup_p64(poly64_t  *a) {
    618   // CHECK-LABEL: test_vld4q_dup_p64
    619   return vld4q_dup_p64(a);
    620   // CHECK: ld4r {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
    621 }
    622 
    623 uint8x8x4_t test_vld4_dup_u8(uint8_t  *a) {
    624   // CHECK-LABEL: test_vld4_dup_u8
    625   return vld4_dup_u8(a);
    626   // CHECK: ld4r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
    627 }
    628 
    629 uint16x4x4_t test_vld4_dup_u16(uint16_t  *a) {
    630   // CHECK-LABEL: test_vld4_dup_u16
    631   return vld4_dup_u16(a);
    632   // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    633 }
    634 
    635 uint32x2x4_t test_vld4_dup_u32(uint32_t  *a) {
    636   // CHECK-LABEL: test_vld4_dup_u32
    637   return vld4_dup_u32(a);
    638   // CHECK: ld4r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
    639 }
    640 
    641 uint64x1x4_t test_vld4_dup_u64(uint64_t  *a) {
    642   // CHECK-LABEL: test_vld4_dup_u64
    643   return vld4_dup_u64(a);
    644   // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
    645 }
    646 
    647 int8x8x4_t test_vld4_dup_s8(int8_t  *a) {
    648   // CHECK-LABEL: test_vld4_dup_s8
    649   return vld4_dup_s8(a);
    650   // CHECK: ld4r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
    651 }
    652 
    653 int16x4x4_t test_vld4_dup_s16(int16_t  *a) {
    654   // CHECK-LABEL: test_vld4_dup_s16
    655   return vld4_dup_s16(a);
    656   // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    657 }
    658 
    659 int32x2x4_t test_vld4_dup_s32(int32_t  *a) {
    660   // CHECK-LABEL: test_vld4_dup_s32
    661   return vld4_dup_s32(a);
    662   // CHECK: ld4r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
    663 }
    664 
    665 int64x1x4_t test_vld4_dup_s64(int64_t  *a) {
    666   // CHECK-LABEL: test_vld4_dup_s64
    667   return vld4_dup_s64(a);
    668   // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
    669 }
    670 
    671 float16x4x4_t test_vld4_dup_f16(float16_t  *a) {
    672   // CHECK-LABEL: test_vld4_dup_f16
    673   return vld4_dup_f16(a);
    674   // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    675 }
    676 
    677 float32x2x4_t test_vld4_dup_f32(float32_t  *a) {
    678   // CHECK-LABEL: test_vld4_dup_f32
    679   return vld4_dup_f32(a);
    680   // CHECK: ld4r {{{ *v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s *}}}, [{{x[0-9]+|sp}}]
    681 }
    682 
    683 float64x1x4_t test_vld4_dup_f64(float64_t  *a) {
    684   // CHECK-LABEL: test_vld4_dup_f64
    685   return vld4_dup_f64(a);
    686   // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
    687 }
    688 
    689 poly8x8x4_t test_vld4_dup_p8(poly8_t  *a) {
    690   // CHECK-LABEL: test_vld4_dup_p8
    691   return vld4_dup_p8(a);
    692   // CHECK: ld4r {{{ *v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b *}}}, [{{x[0-9]+|sp}}]
    693 }
    694 
    695 poly16x4x4_t test_vld4_dup_p16(poly16_t  *a) {
    696   // CHECK-LABEL: test_vld4_dup_p16
    697   return vld4_dup_p16(a);
    698   // CHECK: ld4r {{{ *v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h *}}}, [{{x[0-9]+|sp}}]
    699 }
    700 
    701 poly64x1x4_t test_vld4_dup_p64(poly64_t  *a) {
    702   // CHECK-LABEL: test_vld4_dup_p64
    703   return vld4_dup_p64(a);
    704   // CHECK: {{ld1|ld4r}} {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
    705 }
    706 
    707 uint8x16_t test_vld1q_lane_u8(uint8_t  *a, uint8x16_t b) {
    708   // CHECK-LABEL: test_vld1q_lane_u8
    709   return vld1q_lane_u8(a, b, 15);
    710   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
    711 }
    712 
    713 uint16x8_t test_vld1q_lane_u16(uint16_t  *a, uint16x8_t b) {
    714   // CHECK-LABEL: test_vld1q_lane_u16
    715   return vld1q_lane_u16(a, b, 7);
    716   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
    717 }
    718 
    719 uint32x4_t test_vld1q_lane_u32(uint32_t  *a, uint32x4_t b) {
    720   // CHECK-LABEL: test_vld1q_lane_u32
    721   return vld1q_lane_u32(a, b, 3);
    722   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
    723 }
    724 
    725 uint64x2_t test_vld1q_lane_u64(uint64_t  *a, uint64x2_t b) {
    726   // CHECK-LABEL: test_vld1q_lane_u64
    727   return vld1q_lane_u64(a, b, 1);
    728   // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
    729 }
    730 
    731 int8x16_t test_vld1q_lane_s8(int8_t  *a, int8x16_t b) {
    732   // CHECK-LABEL: test_vld1q_lane_s8
    733   return vld1q_lane_s8(a, b, 15);
    734   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
    735 }
    736 
    737 int16x8_t test_vld1q_lane_s16(int16_t  *a, int16x8_t b) {
    738   // CHECK-LABEL: test_vld1q_lane_s16
    739   return vld1q_lane_s16(a, b, 7);
    740   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
    741 }
    742 
    743 int32x4_t test_vld1q_lane_s32(int32_t  *a, int32x4_t b) {
    744   // CHECK-LABEL: test_vld1q_lane_s32
    745   return vld1q_lane_s32(a, b, 3);
    746   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
    747 }
    748 
    749 int64x2_t test_vld1q_lane_s64(int64_t  *a, int64x2_t b) {
    750   // CHECK-LABEL: test_vld1q_lane_s64
    751   return vld1q_lane_s64(a, b, 1);
    752   // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
    753 }
    754 
    755 float16x8_t test_vld1q_lane_f16(float16_t  *a, float16x8_t b) {
    756   // CHECK-LABEL: test_vld1q_lane_f16
    757   return vld1q_lane_f16(a, b, 7);
    758   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
    759 }
    760 
    761 float32x4_t test_vld1q_lane_f32(float32_t  *a, float32x4_t b) {
    762   // CHECK-LABEL: test_vld1q_lane_f32
    763   return vld1q_lane_f32(a, b, 3);
    764   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
    765 }
    766 
    767 float64x2_t test_vld1q_lane_f64(float64_t  *a, float64x2_t b) {
    768   // CHECK-LABEL: test_vld1q_lane_f64
    769   return vld1q_lane_f64(a, b, 1);
    770   // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
    771 }
    772 
    773 poly8x16_t test_vld1q_lane_p8(poly8_t  *a, poly8x16_t b) {
    774   // CHECK-LABEL: test_vld1q_lane_p8
    775   return vld1q_lane_p8(a, b, 15);
    776   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
    777 }
    778 
    779 poly16x8_t test_vld1q_lane_p16(poly16_t  *a, poly16x8_t b) {
    780   // CHECK-LABEL: test_vld1q_lane_p16
    781   return vld1q_lane_p16(a, b, 7);
    782   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
    783 }
    784 
    785 poly64x2_t test_vld1q_lane_p64(poly64_t  *a, poly64x2_t b) {
    786   // CHECK-LABEL: test_vld1q_lane_p64
    787   return vld1q_lane_p64(a, b, 1);
    788   // CHECK: ld1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
    789 }
    790 
    791 uint8x8_t test_vld1_lane_u8(uint8_t  *a, uint8x8_t b) {
    792   // CHECK-LABEL: test_vld1_lane_u8
    793   return vld1_lane_u8(a, b, 7);
    794   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
    795 }
    796 
    797 uint16x4_t test_vld1_lane_u16(uint16_t  *a, uint16x4_t b) {
    798   // CHECK-LABEL: test_vld1_lane_u16
    799   return vld1_lane_u16(a, b, 3);
    800   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
    801 }
    802 
    803 uint32x2_t test_vld1_lane_u32(uint32_t  *a, uint32x2_t b) {
    804   // CHECK-LABEL: test_vld1_lane_u32
    805   return vld1_lane_u32(a, b, 1);
    806   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
    807 }
    808 
    809 uint64x1_t test_vld1_lane_u64(uint64_t  *a, uint64x1_t b) {
    810   // CHECK-LABEL: test_vld1_lane_u64
    811   return vld1_lane_u64(a, b, 0);
    812   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
    813 }
    814 
    815 int8x8_t test_vld1_lane_s8(int8_t  *a, int8x8_t b) {
    816   // CHECK-LABEL: test_vld1_lane_s8
    817   return vld1_lane_s8(a, b, 7);
    818   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
    819 }
    820 
    821 int16x4_t test_vld1_lane_s16(int16_t  *a, int16x4_t b) {
    822   // CHECK-LABEL: test_vld1_lane_s16
    823   return vld1_lane_s16(a, b, 3);
    824   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
    825 }
    826 
    827 int32x2_t test_vld1_lane_s32(int32_t  *a, int32x2_t b) {
    828   // CHECK-LABEL: test_vld1_lane_s32
    829   return vld1_lane_s32(a, b, 1);
    830   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
    831 }
    832 
    833 int64x1_t test_vld1_lane_s64(int64_t  *a, int64x1_t b) {
    834   // CHECK-LABEL: test_vld1_lane_s64
    835   return vld1_lane_s64(a, b, 0);
    836   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
    837 }
    838 
    839 float16x4_t test_vld1_lane_f16(float16_t  *a, float16x4_t b) {
    840   // CHECK-LABEL: test_vld1_lane_f16
    841   return vld1_lane_f16(a, b, 3);
    842   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
    843 }
    844 
    845 float32x2_t test_vld1_lane_f32(float32_t  *a, float32x2_t b) {
    846   // CHECK-LABEL: test_vld1_lane_f32
    847   return vld1_lane_f32(a, b, 1);
    848   // CHECK: ld1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
    849 }
    850 
    851 float64x1_t test_vld1_lane_f64(float64_t  *a, float64x1_t b) {
    852   // CHECK-LABEL: test_vld1_lane_f64
    853   return vld1_lane_f64(a, b, 0);
    854   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
    855 }
    856 
    857 poly8x8_t test_vld1_lane_p8(poly8_t  *a, poly8x8_t b) {
    858   // CHECK-LABEL: test_vld1_lane_p8
    859   return vld1_lane_p8(a, b, 7);
    860   // CHECK: ld1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
    861 }
    862 
    863 poly16x4_t test_vld1_lane_p16(poly16_t  *a, poly16x4_t b) {
    864   // CHECK-LABEL: test_vld1_lane_p16
    865   return vld1_lane_p16(a, b, 3);
    866   // CHECK: ld1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
    867 }
    868 
    869 poly64x1_t test_vld1_lane_p64(poly64_t  *a, poly64x1_t b) {
    870   // CHECK-LABEL: test_vld1_lane_p64
    871   return vld1_lane_p64(a, b, 0);
    872   // CHECK: {{ld1r { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
    873 }
    874 
    875 int8x16x2_t test_vld2q_lane_s8(int8_t const * ptr, int8x16x2_t src) {
    876   // CHECK-LABEL: test_vld2q_lane_s8
    877   return vld2q_lane_s8(ptr, src, 15);
    878   // CHECK: ld2 {{{ *v[0-9]+.b,  v[0-9]+.b *}}}[15], [x0]
    879 }
    880 
    881 uint8x16x2_t test_vld2q_lane_u8(uint8_t const * ptr, uint8x16x2_t src) {
    882   // CHECK-LABEL: test_vld2q_lane_u8
    883   return vld2q_lane_u8(ptr, src, 15);
    884   // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
    885 }
    886 
    887 poly8x16x2_t test_vld2q_lane_p8(poly8_t const * ptr, poly8x16x2_t src) {
    888   // CHECK-LABEL: test_vld2q_lane_p8
    889   return vld2q_lane_p8(ptr, src, 15);
    890   // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
    891 }
    892 
    893 int8x16x3_t test_vld3q_lane_s8(int8_t const * ptr, int8x16x3_t src) {
    894   // CHECK-LABEL: test_vld3q_lane_s8
    895   return vld3q_lane_s8(ptr, src, 15);
    896   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
    897 }
    898 
    899 uint8x16x3_t test_vld3q_lane_u8(uint8_t const * ptr, uint8x16x3_t src) {
    900   // CHECK-LABEL: test_vld3q_lane_u8
    901   return vld3q_lane_u8(ptr, src, 15);
    902   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [x0]
    903 }
    904 
    905 uint16x8x2_t test_vld2q_lane_u16(uint16_t  *a, uint16x8x2_t b) {
    906   // CHECK-LABEL: test_vld2q_lane_u16
    907   return vld2q_lane_u16(a, b, 7);
    908   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
    909 }
    910 
    911 uint32x4x2_t test_vld2q_lane_u32(uint32_t  *a, uint32x4x2_t b) {
    912   // CHECK-LABEL: test_vld2q_lane_u32
    913   return vld2q_lane_u32(a, b, 3);
    914   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
    915 }
    916 
    917 uint64x2x2_t test_vld2q_lane_u64(uint64_t  *a, uint64x2x2_t b) {
    918   // CHECK-LABEL: test_vld2q_lane_u64
    919   return vld2q_lane_u64(a, b, 1);
    920   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
    921 }
    922 
    923 int16x8x2_t test_vld2q_lane_s16(int16_t  *a, int16x8x2_t b) {
    924   // CHECK-LABEL: test_vld2q_lane_s16
    925   return vld2q_lane_s16(a, b, 7);
    926   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
    927 }
    928 
    929 int32x4x2_t test_vld2q_lane_s32(int32_t  *a, int32x4x2_t b) {
    930   // CHECK-LABEL: test_vld2q_lane_s32
    931   return vld2q_lane_s32(a, b, 3);
    932   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
    933 }
    934 
    935 int64x2x2_t test_vld2q_lane_s64(int64_t  *a, int64x2x2_t b) {
    936   // CHECK-LABEL: test_vld2q_lane_s64
    937   return vld2q_lane_s64(a, b, 1);
    938   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
    939 }
    940 
    941 float16x8x2_t test_vld2q_lane_f16(float16_t  *a, float16x8x2_t b) {
    942   // CHECK-LABEL: test_vld2q_lane_f16
    943   return vld2q_lane_f16(a, b, 7);
    944   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
    945 }
    946 
    947 float32x4x2_t test_vld2q_lane_f32(float32_t  *a, float32x4x2_t b) {
    948   // CHECK-LABEL: test_vld2q_lane_f32
    949   return vld2q_lane_f32(a, b, 3);
    950   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
    951 }
    952 
    953 float64x2x2_t test_vld2q_lane_f64(float64_t  *a, float64x2x2_t b) {
    954   // CHECK-LABEL: test_vld2q_lane_f64
    955   return vld2q_lane_f64(a, b, 1);
    956   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
    957 }
    958 
    959 poly16x8x2_t test_vld2q_lane_p16(poly16_t  *a, poly16x8x2_t b) {
    960   // CHECK-LABEL: test_vld2q_lane_p16
    961   return vld2q_lane_p16(a, b, 7);
    962   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
    963 }
    964 
    965 poly64x2x2_t test_vld2q_lane_p64(poly64_t  *a, poly64x2x2_t b) {
    966   // CHECK-LABEL: test_vld2q_lane_p64
    967   return vld2q_lane_p64(a, b, 1);
    968   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
    969 }
    970 
    971 uint8x8x2_t test_vld2_lane_u8(uint8_t  *a, uint8x8x2_t b) {
    972   // CHECK-LABEL: test_vld2_lane_u8
    973   return vld2_lane_u8(a, b, 7);
    974   // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
    975 }
    976 
    977 uint16x4x2_t test_vld2_lane_u16(uint16_t  *a, uint16x4x2_t b) {
    978   // CHECK-LABEL: test_vld2_lane_u16
    979   return vld2_lane_u16(a, b, 3);
    980   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
    981 }
    982 
    983 uint32x2x2_t test_vld2_lane_u32(uint32_t  *a, uint32x2x2_t b) {
    984   // CHECK-LABEL: test_vld2_lane_u32
    985   return vld2_lane_u32(a, b, 1);
    986   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
    987 }
    988 
    989 uint64x1x2_t test_vld2_lane_u64(uint64_t  *a, uint64x1x2_t b) {
    990   // CHECK-LABEL: test_vld2_lane_u64
    991   return vld2_lane_u64(a, b, 0);
    992   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
    993 }
    994 
    995 int8x8x2_t test_vld2_lane_s8(int8_t  *a, int8x8x2_t b) {
    996   // CHECK-LABEL: test_vld2_lane_s8
    997   return vld2_lane_s8(a, b, 7);
    998   // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
    999 }
   1000 
   1001 int16x4x2_t test_vld2_lane_s16(int16_t  *a, int16x4x2_t b) {
   1002   // CHECK-LABEL: test_vld2_lane_s16
   1003   return vld2_lane_s16(a, b, 3);
   1004   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1005 }
   1006 
   1007 int32x2x2_t test_vld2_lane_s32(int32_t  *a, int32x2x2_t b) {
   1008   // CHECK-LABEL: test_vld2_lane_s32
   1009   return vld2_lane_s32(a, b, 1);
   1010   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1011 }
   1012 
   1013 int64x1x2_t test_vld2_lane_s64(int64_t  *a, int64x1x2_t b) {
   1014   // CHECK-LABEL: test_vld2_lane_s64
   1015   return vld2_lane_s64(a, b, 0);
   1016   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1017 }
   1018 
   1019 float16x4x2_t test_vld2_lane_f16(float16_t  *a, float16x4x2_t b) {
   1020   // CHECK-LABEL: test_vld2_lane_f16
   1021   return vld2_lane_f16(a, b, 3);
   1022   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1023 }
   1024 
   1025 float32x2x2_t test_vld2_lane_f32(float32_t  *a, float32x2x2_t b) {
   1026   // CHECK-LABEL: test_vld2_lane_f32
   1027   return vld2_lane_f32(a, b, 1);
   1028   // CHECK: ld2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1029 }
   1030 
   1031 float64x1x2_t test_vld2_lane_f64(float64_t  *a, float64x1x2_t b) {
   1032   // CHECK-LABEL: test_vld2_lane_f64
   1033   return vld2_lane_f64(a, b, 0);
   1034   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1035 }
   1036 
   1037 poly8x8x2_t test_vld2_lane_p8(poly8_t  *a, poly8x8x2_t b) {
   1038   // CHECK-LABEL: test_vld2_lane_p8
   1039   return vld2_lane_p8(a, b, 7);
   1040   // CHECK: ld2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1041 }
   1042 
   1043 poly16x4x2_t test_vld2_lane_p16(poly16_t  *a, poly16x4x2_t b) {
   1044   // CHECK-LABEL: test_vld2_lane_p16
   1045   return vld2_lane_p16(a, b, 3);
   1046   // CHECK: ld2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1047 }
   1048 
   1049 poly64x1x2_t test_vld2_lane_p64(poly64_t  *a, poly64x1x2_t b) {
   1050   // CHECK-LABEL: test_vld2_lane_p64
   1051   return vld2_lane_p64(a, b, 0);
   1052   // CHECK: ld2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1053 }
   1054 
   1055 uint16x8x3_t test_vld3q_lane_u16(uint16_t  *a, uint16x8x3_t b) {
   1056   // CHECK-LABEL: test_vld3q_lane_u16
   1057   return vld3q_lane_u16(a, b, 7);
   1058   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1059 }
   1060 
   1061 uint32x4x3_t test_vld3q_lane_u32(uint32_t  *a, uint32x4x3_t b) {
   1062   // CHECK-LABEL: test_vld3q_lane_u32
   1063   return vld3q_lane_u32(a, b, 3);
   1064   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1065 }
   1066 
   1067 uint64x2x3_t test_vld3q_lane_u64(uint64_t  *a, uint64x2x3_t b) {
   1068   // CHECK-LABEL: test_vld3q_lane_u64
   1069   return vld3q_lane_u64(a, b, 1);
   1070   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1071 }
   1072 
   1073 int16x8x3_t test_vld3q_lane_s16(int16_t  *a, int16x8x3_t b) {
   1074   // CHECK-LABEL: test_vld3q_lane_s16
   1075   return vld3q_lane_s16(a, b, 7);
   1076   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1077 }
   1078 
   1079 int32x4x3_t test_vld3q_lane_s32(int32_t  *a, int32x4x3_t b) {
   1080   // CHECK-LABEL: test_vld3q_lane_s32
   1081   return vld3q_lane_s32(a, b, 3);
   1082   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1083 }
   1084 
   1085 int64x2x3_t test_vld3q_lane_s64(int64_t  *a, int64x2x3_t b) {
   1086   // CHECK-LABEL: test_vld3q_lane_s64
   1087   return vld3q_lane_s64(a, b, 1);
   1088   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1089 }
   1090 
   1091 float16x8x3_t test_vld3q_lane_f16(float16_t  *a, float16x8x3_t b) {
   1092   // CHECK-LABEL: test_vld3q_lane_f16
   1093   return vld3q_lane_f16(a, b, 7);
   1094   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1095 }
   1096 
   1097 float32x4x3_t test_vld3q_lane_f32(float32_t  *a, float32x4x3_t b) {
   1098   // CHECK-LABEL: test_vld3q_lane_f32
   1099   return vld3q_lane_f32(a, b, 3);
   1100   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1101 }
   1102 
   1103 float64x2x3_t test_vld3q_lane_f64(float64_t  *a, float64x2x3_t b) {
   1104   // CHECK-LABEL: test_vld3q_lane_f64
   1105   return vld3q_lane_f64(a, b, 1);
   1106   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1107 }
   1108 
   1109 poly8x16x3_t test_vld3q_lane_p8(poly8_t  *a, poly8x16x3_t b) {
   1110   // CHECK-LABEL: test_vld3q_lane_p8
   1111   return vld3q_lane_p8(a, b, 15);
   1112   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1113 }
   1114 
   1115 poly16x8x3_t test_vld3q_lane_p16(poly16_t  *a, poly16x8x3_t b) {
   1116   // CHECK-LABEL: test_vld3q_lane_p16
   1117   return vld3q_lane_p16(a, b, 7);
   1118   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1119 }
   1120 
   1121 poly64x2x3_t test_vld3q_lane_p64(poly64_t  *a, poly64x2x3_t b) {
   1122   // CHECK-LABEL: test_vld3q_lane_p64
   1123   return vld3q_lane_p64(a, b, 1);
   1124   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1125 }
   1126 
   1127 uint8x8x3_t test_vld3_lane_u8(uint8_t  *a, uint8x8x3_t b) {
   1128   // CHECK-LABEL: test_vld3_lane_u8
   1129   return vld3_lane_u8(a, b, 7);
   1130   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1131 }
   1132 
   1133 uint16x4x3_t test_vld3_lane_u16(uint16_t  *a, uint16x4x3_t b) {
   1134   // CHECK-LABEL: test_vld3_lane_u16
   1135   return vld3_lane_u16(a, b, 3);
   1136   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1137 }
   1138 
   1139 uint32x2x3_t test_vld3_lane_u32(uint32_t  *a, uint32x2x3_t b) {
   1140   // CHECK-LABEL: test_vld3_lane_u32
   1141   return vld3_lane_u32(a, b, 1);
   1142   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1143 }
   1144 
   1145 uint64x1x3_t test_vld3_lane_u64(uint64_t  *a, uint64x1x3_t b) {
   1146   // CHECK-LABEL: test_vld3_lane_u64
   1147   return vld3_lane_u64(a, b, 0);
   1148   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1149 }
   1150 
   1151 int8x8x3_t test_vld3_lane_s8(int8_t  *a, int8x8x3_t b) {
   1152   // CHECK-LABEL: test_vld3_lane_s8
   1153   return vld3_lane_s8(a, b, 7);
   1154   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1155 }
   1156 
   1157 int16x4x3_t test_vld3_lane_s16(int16_t  *a, int16x4x3_t b) {
   1158   // CHECK-LABEL: test_vld3_lane_s16
   1159   return vld3_lane_s16(a, b, 3);
   1160   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1161 }
   1162 
   1163 int32x2x3_t test_vld3_lane_s32(int32_t  *a, int32x2x3_t b) {
   1164   // CHECK-LABEL: test_vld3_lane_s32
   1165   return vld3_lane_s32(a, b, 1);
   1166   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1167 }
   1168 
   1169 int64x1x3_t test_vld3_lane_s64(int64_t  *a, int64x1x3_t b) {
   1170   // CHECK-LABEL: test_vld3_lane_s64
   1171   return vld3_lane_s64(a, b, 0);
   1172   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1173 }
   1174 
   1175 float16x4x3_t test_vld3_lane_f16(float16_t  *a, float16x4x3_t b) {
   1176   // CHECK-LABEL: test_vld3_lane_f16
   1177   return vld3_lane_f16(a, b, 3);
   1178   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1179 }
   1180 
   1181 float32x2x3_t test_vld3_lane_f32(float32_t  *a, float32x2x3_t b) {
   1182   // CHECK-LABEL: test_vld3_lane_f32
   1183   return vld3_lane_f32(a, b, 1);
   1184   // CHECK: ld3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1185 }
   1186 
   1187 float64x1x3_t test_vld3_lane_f64(float64_t  *a, float64x1x3_t b) {
   1188   // CHECK-LABEL: test_vld3_lane_f64
   1189   return vld3_lane_f64(a, b, 0);
   1190   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1191 }
   1192 
   1193 poly8x8x3_t test_vld3_lane_p8(poly8_t  *a, poly8x8x3_t b) {
   1194   // CHECK-LABEL: test_vld3_lane_p8
   1195   return vld3_lane_p8(a, b, 7);
   1196   // CHECK: ld3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1197 }
   1198 
   1199 poly16x4x3_t test_vld3_lane_p16(poly16_t  *a, poly16x4x3_t b) {
   1200   // CHECK-LABEL: test_vld3_lane_p16
   1201   return vld3_lane_p16(a, b, 3);
   1202   // CHECK: ld3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1203 }
   1204 
   1205 poly64x1x3_t test_vld3_lane_p64(poly64_t  *a, poly64x1x3_t b) {
   1206   // CHECK-LABEL: test_vld3_lane_p64
   1207   return vld3_lane_p64(a, b, 0);
   1208   // CHECK: ld3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1209 }
   1210 
   1211 uint8x16x4_t test_vld4q_lane_u8(uint8_t  *a, uint8x16x4_t b) {
   1212   // CHECK-LABEL: test_vld4q_lane_u8
   1213   return vld4q_lane_u8(a, b, 15);
   1214   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1215 }
   1216 
   1217 uint16x8x4_t test_vld4q_lane_u16(uint16_t  *a, uint16x8x4_t b) {
   1218   // CHECK-LABEL: test_vld4q_lane_u16
   1219   return vld4q_lane_u16(a, b, 7);
   1220   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1221 }
   1222 
   1223 uint32x4x4_t test_vld4q_lane_u32(uint32_t  *a, uint32x4x4_t b) {
   1224   // CHECK-LABEL: test_vld4q_lane_u32
   1225   return vld4q_lane_u32(a, b, 3);
   1226   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1227 }
   1228 
   1229 uint64x2x4_t test_vld4q_lane_u64(uint64_t  *a, uint64x2x4_t b) {
   1230   // CHECK-LABEL: test_vld4q_lane_u64
   1231   return vld4q_lane_u64(a, b, 1);
   1232   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1233 }
   1234 
   1235 int8x16x4_t test_vld4q_lane_s8(int8_t  *a, int8x16x4_t b) {
   1236   // CHECK-LABEL: test_vld4q_lane_s8
   1237   return vld4q_lane_s8(a, b, 15);
   1238   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1239 }
   1240 
   1241 int16x8x4_t test_vld4q_lane_s16(int16_t  *a, int16x8x4_t b) {
   1242   // CHECK-LABEL: test_vld4q_lane_s16
   1243   return vld4q_lane_s16(a, b, 7);
   1244   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1245 }
   1246 
   1247 int32x4x4_t test_vld4q_lane_s32(int32_t  *a, int32x4x4_t b) {
   1248   // CHECK-LABEL: test_vld4q_lane_s32
   1249   return vld4q_lane_s32(a, b, 3);
   1250   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1251 }
   1252 
   1253 int64x2x4_t test_vld4q_lane_s64(int64_t  *a, int64x2x4_t b) {
   1254   // CHECK-LABEL: test_vld4q_lane_s64
   1255   return vld4q_lane_s64(a, b, 1);
   1256   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1257 }
   1258 
   1259 float16x8x4_t test_vld4q_lane_f16(float16_t  *a, float16x8x4_t b) {
   1260   // CHECK-LABEL: test_vld4q_lane_f16
   1261   return vld4q_lane_f16(a, b, 7);
   1262   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1263 }
   1264 
   1265 float32x4x4_t test_vld4q_lane_f32(float32_t  *a, float32x4x4_t b) {
   1266   // CHECK-LABEL: test_vld4q_lane_f32
   1267   return vld4q_lane_f32(a, b, 3);
   1268   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1269 }
   1270 
   1271 float64x2x4_t test_vld4q_lane_f64(float64_t  *a, float64x2x4_t b) {
   1272   // CHECK-LABEL: test_vld4q_lane_f64
   1273   return vld4q_lane_f64(a, b, 1);
   1274   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1275 }
   1276 
   1277 poly8x16x4_t test_vld4q_lane_p8(poly8_t  *a, poly8x16x4_t b) {
   1278   // CHECK-LABEL: test_vld4q_lane_p8
   1279   return vld4q_lane_p8(a, b, 15);
   1280   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1281 }
   1282 
   1283 poly16x8x4_t test_vld4q_lane_p16(poly16_t  *a, poly16x8x4_t b) {
   1284   // CHECK-LABEL: test_vld4q_lane_p16
   1285   return vld4q_lane_p16(a, b, 7);
   1286   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1287 }
   1288 
   1289 poly64x2x4_t test_vld4q_lane_p64(poly64_t  *a, poly64x2x4_t b) {
   1290   // CHECK-LABEL: test_vld4q_lane_p64
   1291   return vld4q_lane_p64(a, b, 1);
   1292   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1293 }
   1294 
   1295 uint8x8x4_t test_vld4_lane_u8(uint8_t  *a, uint8x8x4_t b) {
   1296   // CHECK-LABEL: test_vld4_lane_u8
   1297   return vld4_lane_u8(a, b, 7);
   1298   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1299 }
   1300 
   1301 uint16x4x4_t test_vld4_lane_u16(uint16_t  *a, uint16x4x4_t b) {
   1302   // CHECK-LABEL: test_vld4_lane_u16
   1303   return vld4_lane_u16(a, b, 3);
   1304   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1305 }
   1306 
   1307 uint32x2x4_t test_vld4_lane_u32(uint32_t  *a, uint32x2x4_t b) {
   1308   // CHECK-LABEL: test_vld4_lane_u32
   1309   return vld4_lane_u32(a, b, 1);
   1310   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1311 }
   1312 
   1313 uint64x1x4_t test_vld4_lane_u64(uint64_t  *a, uint64x1x4_t b) {
   1314   // CHECK-LABEL: test_vld4_lane_u64
   1315   return vld4_lane_u64(a, b, 0);
   1316   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1317 }
   1318 
   1319 int8x8x4_t test_vld4_lane_s8(int8_t  *a, int8x8x4_t b) {
   1320   // CHECK-LABEL: test_vld4_lane_s8
   1321   return vld4_lane_s8(a, b, 7);
   1322   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1323 }
   1324 
   1325 int16x4x4_t test_vld4_lane_s16(int16_t  *a, int16x4x4_t b) {
   1326   // CHECK-LABEL: test_vld4_lane_s16
   1327   return vld4_lane_s16(a, b, 3);
   1328   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1329 }
   1330 
   1331 int32x2x4_t test_vld4_lane_s32(int32_t  *a, int32x2x4_t b) {
   1332   // CHECK-LABEL: test_vld4_lane_s32
   1333   return vld4_lane_s32(a, b, 1);
   1334   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1335 }
   1336 
   1337 int64x1x4_t test_vld4_lane_s64(int64_t  *a, int64x1x4_t b) {
   1338   // CHECK-LABEL: test_vld4_lane_s64
   1339   return vld4_lane_s64(a, b, 0);
   1340   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1341 }
   1342 
   1343 float16x4x4_t test_vld4_lane_f16(float16_t  *a, float16x4x4_t b) {
   1344   // CHECK-LABEL: test_vld4_lane_f16
   1345   return vld4_lane_f16(a, b, 3);
   1346   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1347 }
   1348 
   1349 float32x2x4_t test_vld4_lane_f32(float32_t  *a, float32x2x4_t b) {
   1350   // CHECK-LABEL: test_vld4_lane_f32
   1351   return vld4_lane_f32(a, b, 1);
   1352   // CHECK: ld4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1353 }
   1354 
   1355 float64x1x4_t test_vld4_lane_f64(float64_t  *a, float64x1x4_t b) {
   1356   // CHECK-LABEL: test_vld4_lane_f64
   1357   return vld4_lane_f64(a, b, 0);
   1358   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1359 }
   1360 
   1361 poly8x8x4_t test_vld4_lane_p8(poly8_t  *a, poly8x8x4_t b) {
   1362   // CHECK-LABEL: test_vld4_lane_p8
   1363   return vld4_lane_p8(a, b, 7);
   1364   // CHECK: ld4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1365 }
   1366 
   1367 poly16x4x4_t test_vld4_lane_p16(poly16_t  *a, poly16x4x4_t b) {
   1368   // CHECK-LABEL: test_vld4_lane_p16
   1369   return vld4_lane_p16(a, b, 3);
   1370   // CHECK: ld4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1371 }
   1372 
   1373 poly64x1x4_t test_vld4_lane_p64(poly64_t  *a, poly64x1x4_t b) {
   1374   // CHECK-LABEL: test_vld4_lane_p64
   1375   return vld4_lane_p64(a, b, 0);
   1376   // CHECK: ld4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1377 }
   1378 
   1379 void test_vst1q_lane_u8(uint8_t  *a, uint8x16_t b) {
   1380   // CHECK-LABEL: test_vst1q_lane_u8
   1381   vst1q_lane_u8(a, b, 15);
   1382   // CHECK: st1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1383 }
   1384 
   1385 void test_vst1q_lane_u16(uint16_t  *a, uint16x8_t b) {
   1386   // CHECK-LABEL: test_vst1q_lane_u16
   1387   vst1q_lane_u16(a, b, 7);
   1388   // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1389 }
   1390 
   1391 void test_vst1q_lane_u32(uint32_t  *a, uint32x4_t b) {
   1392   // CHECK-LABEL: test_vst1q_lane_u32
   1393   vst1q_lane_u32(a, b, 3);
   1394   // CHECK: st1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1395 }
   1396 
   1397 void test_vst1q_lane_u64(uint64_t  *a, uint64x2_t b) {
   1398   // CHECK-LABEL: test_vst1q_lane_u64
   1399   vst1q_lane_u64(a, b, 1);
   1400   // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1401 }
   1402 
   1403 void test_vst1q_lane_s8(int8_t  *a, int8x16_t b) {
   1404   // CHECK-LABEL: test_vst1q_lane_s8
   1405   vst1q_lane_s8(a, b, 15);
   1406   // CHECK: st1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1407 }
   1408 
   1409 void test_vst1q_lane_s16(int16_t  *a, int16x8_t b) {
   1410   // CHECK-LABEL: test_vst1q_lane_s16
   1411   vst1q_lane_s16(a, b, 7);
   1412   // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1413 }
   1414 
   1415 void test_vst1q_lane_s32(int32_t  *a, int32x4_t b) {
   1416   // CHECK-LABEL: test_vst1q_lane_s32
   1417   vst1q_lane_s32(a, b, 3);
   1418   // CHECK: st1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1419 }
   1420 
   1421 void test_vst1q_lane_s64(int64_t  *a, int64x2_t b) {
   1422   // CHECK-LABEL: test_vst1q_lane_s64
   1423   vst1q_lane_s64(a, b, 1);
   1424   // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1425 }
   1426 
   1427 void test_vst1q_lane_f16(float16_t  *a, float16x8_t b) {
   1428   // CHECK-LABEL: test_vst1q_lane_f16
   1429   vst1q_lane_f16(a, b, 7);
   1430   // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1431 }
   1432 
   1433 void test_vst1q_lane_f32(float32_t  *a, float32x4_t b) {
   1434   // CHECK-LABEL: test_vst1q_lane_f32
   1435   vst1q_lane_f32(a, b, 3);
   1436   // CHECK: st1 {{{ *v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1437 }
   1438 
   1439 void test_vst1q_lane_f64(float64_t  *a, float64x2_t b) {
   1440   // CHECK-LABEL: test_vst1q_lane_f64
   1441   vst1q_lane_f64(a, b, 1);
   1442   // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1443 }
   1444 
   1445 void test_vst1q_lane_p8(poly8_t  *a, poly8x16_t b) {
   1446   // CHECK-LABEL: test_vst1q_lane_p8
   1447   vst1q_lane_p8(a, b, 15);
   1448   // CHECK: st1 {{{ *v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1449 }
   1450 
   1451 void test_vst1q_lane_p16(poly16_t  *a, poly16x8_t b) {
   1452   // CHECK-LABEL: test_vst1q_lane_p16
   1453   vst1q_lane_p16(a, b, 7);
   1454   // CHECK: st1 {{{ *v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1455 }
   1456 
   1457 void test_vst1q_lane_p64(poly64_t  *a, poly64x2_t b) {
   1458   // CHECK-LABEL: test_vst1q_lane_p64
   1459   vst1q_lane_p64(a, b, 1);
   1460   // CHECK: st1 {{{ *v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1461 }
   1462 
   1463 void test_vst1_lane_u8(uint8_t  *a, uint8x8_t b) {
   1464   // CHECK-LABEL: test_vst1_lane_u8
   1465   vst1_lane_u8(a, b, 7);
   1466   // CHECK: st1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1467 }
   1468 
   1469 void test_vst1_lane_u16(uint16_t  *a, uint16x4_t b) {
   1470   // CHECK-LABEL: test_vst1_lane_u16
   1471   vst1_lane_u16(a, b, 3);
   1472   // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1473 }
   1474 
   1475 void test_vst1_lane_u32(uint32_t  *a, uint32x2_t b) {
   1476   // CHECK-LABEL: test_vst1_lane_u32
   1477   vst1_lane_u32(a, b, 1);
   1478   // CHECK: st1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1479 }
   1480 
   1481 void test_vst1_lane_u64(uint64_t  *a, uint64x1_t b) {
   1482   // CHECK-LABEL: test_vst1_lane_u64
   1483   vst1_lane_u64(a, b, 0);
   1484   // CHECK: st1 {{{ *v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1485 }
   1486 
   1487 void test_vst1_lane_s8(int8_t  *a, int8x8_t b) {
   1488   // CHECK-LABEL: test_vst1_lane_s8
   1489   vst1_lane_s8(a, b, 7);
   1490   // CHECK: st1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1491 }
   1492 
   1493 void test_vst1_lane_s16(int16_t  *a, int16x4_t b) {
   1494   // CHECK-LABEL: test_vst1_lane_s16
   1495   vst1_lane_s16(a, b, 3);
   1496   // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1497 }
   1498 
   1499 void test_vst1_lane_s32(int32_t  *a, int32x2_t b) {
   1500   // CHECK-LABEL: test_vst1_lane_s32
   1501   vst1_lane_s32(a, b, 1);
   1502   // CHECK: st1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1503 }
   1504 
   1505 void test_vst1_lane_s64(int64_t  *a, int64x1_t b) {
   1506   // CHECK-LABEL: test_vst1_lane_s64
   1507   vst1_lane_s64(a, b, 0);
   1508   // CHECK: st1 {{{ *v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1509 }
   1510 
   1511 void test_vst1_lane_f16(float16_t  *a, float16x4_t b) {
   1512   // CHECK-LABEL: test_vst1_lane_f16
   1513   vst1_lane_f16(a, b, 3);
   1514   // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1515 }
   1516 
   1517 void test_vst1_lane_f32(float32_t  *a, float32x2_t b) {
   1518   // CHECK-LABEL: test_vst1_lane_f32
   1519   vst1_lane_f32(a, b, 1);
   1520   // CHECK: st1 {{{ *v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1521 }
   1522 
   1523 void test_vst1_lane_f64(float64_t  *a, float64x1_t b) {
   1524   // CHECK-LABEL: test_vst1_lane_f64
   1525   vst1_lane_f64(a, b, 0);
   1526   // CHECK: {{st1 { v[0-9]+.d }\[0]|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   1527 }
   1528 
   1529 void test_vst1_lane_p8(poly8_t  *a, poly8x8_t b) {
   1530   // CHECK-LABEL: test_vst1_lane_p8
   1531   vst1_lane_p8(a, b, 7);
   1532   // CHECK: st1 {{{ *v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1533 }
   1534 
   1535 void test_vst1_lane_p16(poly16_t  *a, poly16x4_t b) {
   1536   // CHECK-LABEL: test_vst1_lane_p16
   1537   vst1_lane_p16(a, b, 3);
   1538   // CHECK: st1 {{{ *v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1539 }
   1540 
   1541 void test_vst1_lane_p64(poly64_t  *a, poly64x1_t b) {
   1542   // CHECK-LABEL: test_vst1_lane_p64
   1543   vst1_lane_p64(a, b, 0);
   1544   // CHECK: st1 {{{ *v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1545 }
   1546 
   1547 void test_vst2q_lane_u8(uint8_t  *a, uint8x16x2_t b) {
   1548   // CHECK-LABEL: test_vst2q_lane_u8
   1549   vst2q_lane_u8(a, b, 15);
   1550   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1551 }
   1552 
   1553 void test_vst2q_lane_u16(uint16_t  *a, uint16x8x2_t b) {
   1554   // CHECK-LABEL: test_vst2q_lane_u16
   1555   vst2q_lane_u16(a, b, 7);
   1556   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1557 }
   1558 
   1559 void test_vst2q_lane_u32(uint32_t  *a, uint32x4x2_t b) {
   1560   // CHECK-LABEL: test_vst2q_lane_u32
   1561   vst2q_lane_u32(a, b, 3);
   1562   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1563 }
   1564 
   1565 void test_vst2q_lane_u64(uint64_t  *a, uint64x2x2_t b) {
   1566   // CHECK-LABEL: test_vst2q_lane_u64
   1567   vst2q_lane_u64(a, b, 1);
   1568   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1569 }
   1570 
   1571 void test_vst2q_lane_s8(int8_t  *a, int8x16x2_t b) {
   1572   // CHECK-LABEL: test_vst2q_lane_s8
   1573   vst2q_lane_s8(a, b, 15);
   1574   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1575 }
   1576 
   1577 void test_vst2q_lane_s16(int16_t  *a, int16x8x2_t b) {
   1578   // CHECK-LABEL: test_vst2q_lane_s16
   1579   vst2q_lane_s16(a, b, 7);
   1580   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1581 }
   1582 
   1583 void test_vst2q_lane_s32(int32_t  *a, int32x4x2_t b) {
   1584   // CHECK-LABEL: test_vst2q_lane_s32
   1585   vst2q_lane_s32(a, b, 3);
   1586   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1587 }
   1588 
   1589 void test_vst2q_lane_s64(int64_t  *a, int64x2x2_t b) {
   1590   // CHECK-LABEL: test_vst2q_lane_s64
   1591   vst2q_lane_s64(a, b, 1);
   1592   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1593 }
   1594 
   1595 void test_vst2q_lane_f16(float16_t  *a, float16x8x2_t b) {
   1596   // CHECK-LABEL: test_vst2q_lane_f16
   1597   vst2q_lane_f16(a, b, 7);
   1598   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1599 }
   1600 
   1601 void test_vst2q_lane_f32(float32_t  *a, float32x4x2_t b) {
   1602   // CHECK-LABEL: test_vst2q_lane_f32
   1603   vst2q_lane_f32(a, b, 3);
   1604   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1605 }
   1606 
   1607 void test_vst2q_lane_f64(float64_t  *a, float64x2x2_t b) {
   1608   // CHECK-LABEL: test_vst2q_lane_f64
   1609   vst2q_lane_f64(a, b, 1);
   1610   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1611 }
   1612 
   1613 void test_vst2q_lane_p8(poly8_t  *a, poly8x16x2_t b) {
   1614   // CHECK-LABEL: test_vst2q_lane_p8
   1615   vst2q_lane_p8(a, b, 15);
   1616   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1617 }
   1618 
   1619 void test_vst2q_lane_p16(poly16_t  *a, poly16x8x2_t b) {
   1620   // CHECK-LABEL: test_vst2q_lane_p16
   1621   vst2q_lane_p16(a, b, 7);
   1622   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1623 }
   1624 
   1625 void test_vst2q_lane_p64(poly64_t  *a, poly64x2x2_t b) {
   1626   // CHECK-LABEL: test_vst2q_lane_p64
   1627   vst2q_lane_p64(a, b, 1);
   1628   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1629 }
   1630 
   1631 void test_vst2_lane_u8(uint8_t  *a, uint8x8x2_t b) {
   1632   // CHECK-LABEL: test_vst2_lane_u8
   1633   vst2_lane_u8(a, b, 7);
   1634   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1635 }
   1636 
   1637 void test_vst2_lane_u16(uint16_t  *a, uint16x4x2_t b) {
   1638   // CHECK-LABEL: test_vst2_lane_u16
   1639   vst2_lane_u16(a, b, 3);
   1640   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1641 }
   1642 
   1643 void test_vst2_lane_u32(uint32_t  *a, uint32x2x2_t b) {
   1644   // CHECK-LABEL: test_vst2_lane_u32
   1645   vst2_lane_u32(a, b, 1);
   1646   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1647 }
   1648 
   1649 void test_vst2_lane_u64(uint64_t  *a, uint64x1x2_t b) {
   1650   // CHECK-LABEL: test_vst2_lane_u64
   1651   vst2_lane_u64(a, b, 0);
   1652   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1653 }
   1654 
   1655 void test_vst2_lane_s8(int8_t  *a, int8x8x2_t b) {
   1656   // CHECK-LABEL: test_vst2_lane_s8
   1657   vst2_lane_s8(a, b, 7);
   1658   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1659 }
   1660 
   1661 void test_vst2_lane_s16(int16_t  *a, int16x4x2_t b) {
   1662   // CHECK-LABEL: test_vst2_lane_s16
   1663   vst2_lane_s16(a, b, 3);
   1664   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1665 }
   1666 
   1667 void test_vst2_lane_s32(int32_t  *a, int32x2x2_t b) {
   1668   // CHECK-LABEL: test_vst2_lane_s32
   1669   vst2_lane_s32(a, b, 1);
   1670   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1671 }
   1672 
   1673 void test_vst2_lane_s64(int64_t  *a, int64x1x2_t b) {
   1674   // CHECK-LABEL: test_vst2_lane_s64
   1675   vst2_lane_s64(a, b, 0);
   1676   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1677 }
   1678 
   1679 void test_vst2_lane_f16(float16_t  *a, float16x4x2_t b) {
   1680   // CHECK-LABEL: test_vst2_lane_f16
   1681   vst2_lane_f16(a, b, 3);
   1682   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1683 }
   1684 
   1685 void test_vst2_lane_f32(float32_t  *a, float32x2x2_t b) {
   1686   // CHECK-LABEL: test_vst2_lane_f32
   1687   vst2_lane_f32(a, b, 1);
   1688   // CHECK: st2 {{{ *v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1689 }
   1690 
   1691 void test_vst2_lane_f64(float64_t  *a, float64x1x2_t b) {
   1692   // CHECK-LABEL: test_vst2_lane_f64
   1693   vst2_lane_f64(a, b, 0);
   1694   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1695 }
   1696 
   1697 void test_vst2_lane_p8(poly8_t  *a, poly8x8x2_t b) {
   1698   // CHECK-LABEL: test_vst2_lane_p8
   1699   vst2_lane_p8(a, b, 7);
   1700   // CHECK: st2 {{{ *v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1701 }
   1702 
   1703 void test_vst2_lane_p16(poly16_t  *a, poly16x4x2_t b) {
   1704   // CHECK-LABEL: test_vst2_lane_p16
   1705   vst2_lane_p16(a, b, 3);
   1706   // CHECK: st2 {{{ *v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1707 }
   1708 
   1709 void test_vst2_lane_p64(poly64_t  *a, poly64x1x2_t b) {
   1710   // CHECK-LABEL: test_vst2_lane_p64
   1711   vst2_lane_p64(a, b, 0);
   1712   // CHECK: st2 {{{ *v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1713 }
   1714 
   1715 void test_vst3q_lane_u8(uint8_t  *a, uint8x16x3_t b) {
   1716   // CHECK-LABEL: test_vst3q_lane_u8
   1717   vst3q_lane_u8(a, b, 15);
   1718   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1719 }
   1720 
   1721 void test_vst3q_lane_u16(uint16_t  *a, uint16x8x3_t b) {
   1722   // CHECK-LABEL: test_vst3q_lane_u16
   1723   vst3q_lane_u16(a, b, 7);
   1724   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1725 }
   1726 
   1727 void test_vst3q_lane_u32(uint32_t  *a, uint32x4x3_t b) {
   1728   // CHECK-LABEL: test_vst3q_lane_u32
   1729   vst3q_lane_u32(a, b, 3);
   1730   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1731 }
   1732 
   1733 void test_vst3q_lane_u64(uint64_t  *a, uint64x2x3_t b) {
   1734   // CHECK-LABEL: test_vst3q_lane_u64
   1735   vst3q_lane_u64(a, b, 1);
   1736   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1737 }
   1738 
   1739 void test_vst3q_lane_s8(int8_t  *a, int8x16x3_t b) {
   1740   // CHECK-LABEL: test_vst3q_lane_s8
   1741   vst3q_lane_s8(a, b, 15);
   1742   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1743 }
   1744 
   1745 void test_vst3q_lane_s16(int16_t  *a, int16x8x3_t b) {
   1746   // CHECK-LABEL: test_vst3q_lane_s16
   1747   vst3q_lane_s16(a, b, 7);
   1748   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1749 }
   1750 
   1751 void test_vst3q_lane_s32(int32_t  *a, int32x4x3_t b) {
   1752   // CHECK-LABEL: test_vst3q_lane_s32
   1753   vst3q_lane_s32(a, b, 3);
   1754   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1755 }
   1756 
   1757 void test_vst3q_lane_s64(int64_t  *a, int64x2x3_t b) {
   1758   // CHECK-LABEL: test_vst3q_lane_s64
   1759   vst3q_lane_s64(a, b, 1);
   1760   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1761 }
   1762 
   1763 void test_vst3q_lane_f16(float16_t  *a, float16x8x3_t b) {
   1764   // CHECK-LABEL: test_vst3q_lane_f16
   1765   vst3q_lane_f16(a, b, 7);
   1766   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1767 }
   1768 
   1769 void test_vst3q_lane_f32(float32_t  *a, float32x4x3_t b) {
   1770   // CHECK-LABEL: test_vst3q_lane_f32
   1771   vst3q_lane_f32(a, b, 3);
   1772   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1773 }
   1774 
   1775 void test_vst3q_lane_f64(float64_t  *a, float64x2x3_t b) {
   1776   // CHECK-LABEL: test_vst3q_lane_f64
   1777   vst3q_lane_f64(a, b, 1);
   1778   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1779 }
   1780 
   1781 void test_vst3q_lane_p8(poly8_t  *a, poly8x16x3_t b) {
   1782   // CHECK-LABEL: test_vst3q_lane_p8
   1783   vst3q_lane_p8(a, b, 15);
   1784   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1785 }
   1786 
   1787 void test_vst3q_lane_p16(poly16_t  *a, poly16x8x3_t b) {
   1788   // CHECK-LABEL: test_vst3q_lane_p16
   1789   vst3q_lane_p16(a, b, 7);
   1790   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1791 }
   1792 
   1793 void test_vst3q_lane_p64(poly64_t  *a, poly64x2x3_t b) {
   1794   // CHECK-LABEL: test_vst3q_lane_p64
   1795   vst3q_lane_p64(a, b, 1);
   1796   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1797 }
   1798 
   1799 void test_vst3_lane_u8(uint8_t  *a, uint8x8x3_t b) {
   1800   // CHECK-LABEL: test_vst3_lane_u8
   1801   vst3_lane_u8(a, b, 7);
   1802   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1803 }
   1804 
   1805 void test_vst3_lane_u16(uint16_t  *a, uint16x4x3_t b) {
   1806   // CHECK-LABEL: test_vst3_lane_u16
   1807   vst3_lane_u16(a, b, 3);
   1808   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1809 }
   1810 
   1811 void test_vst3_lane_u32(uint32_t  *a, uint32x2x3_t b) {
   1812   // CHECK-LABEL: test_vst3_lane_u32
   1813   vst3_lane_u32(a, b, 1);
   1814   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1815 }
   1816 
   1817 void test_vst3_lane_u64(uint64_t  *a, uint64x1x3_t b) {
   1818   // CHECK-LABEL: test_vst3_lane_u64
   1819   vst3_lane_u64(a, b, 0);
   1820   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1821 }
   1822 
   1823 void test_vst3_lane_s8(int8_t  *a, int8x8x3_t b) {
   1824   // CHECK-LABEL: test_vst3_lane_s8
   1825   vst3_lane_s8(a, b, 7);
   1826   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1827 }
   1828 
   1829 void test_vst3_lane_s16(int16_t  *a, int16x4x3_t b) {
   1830   // CHECK-LABEL: test_vst3_lane_s16
   1831   vst3_lane_s16(a, b, 3);
   1832   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1833 }
   1834 
   1835 void test_vst3_lane_s32(int32_t  *a, int32x2x3_t b) {
   1836   // CHECK-LABEL: test_vst3_lane_s32
   1837   vst3_lane_s32(a, b, 1);
   1838   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1839 }
   1840 
   1841 void test_vst3_lane_s64(int64_t  *a, int64x1x3_t b) {
   1842   // CHECK-LABEL: test_vst3_lane_s64
   1843   vst3_lane_s64(a, b, 0);
   1844   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1845 }
   1846 
   1847 void test_vst3_lane_f16(float16_t  *a, float16x4x3_t b) {
   1848   // CHECK-LABEL: test_vst3_lane_f16
   1849   vst3_lane_f16(a, b, 3);
   1850   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1851 }
   1852 
   1853 void test_vst3_lane_f32(float32_t  *a, float32x2x3_t b) {
   1854   // CHECK-LABEL: test_vst3_lane_f32
   1855   vst3_lane_f32(a, b, 1);
   1856   // CHECK: st3 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1857 }
   1858 
   1859 void test_vst3_lane_f64(float64_t  *a, float64x1x3_t b) {
   1860   // CHECK-LABEL: test_vst3_lane_f64
   1861   vst3_lane_f64(a, b, 0);
   1862   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1863 }
   1864 
   1865 void test_vst3_lane_p8(poly8_t  *a, poly8x8x3_t b) {
   1866   // CHECK-LABEL: test_vst3_lane_p8
   1867   vst3_lane_p8(a, b, 7);
   1868   // CHECK: st3 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1869 }
   1870 
   1871 void test_vst3_lane_p16(poly16_t  *a, poly16x4x3_t b) {
   1872   // CHECK-LABEL: test_vst3_lane_p16
   1873   vst3_lane_p16(a, b, 3);
   1874   // CHECK: st3 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1875 }
   1876 
   1877 void test_vst3_lane_p64(poly64_t  *a, poly64x1x3_t b) {
   1878   // CHECK-LABEL: test_vst3_lane_p64
   1879   vst3_lane_p64(a, b, 0);
   1880   // CHECK: st3 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1881 }
   1882 
   1883 void test_vst4q_lane_u8(uint8_t  *a, uint8x16x4_t b) {
   1884   // CHECK-LABEL: test_vst4q_lane_u8
   1885   vst4q_lane_u8(a, b, 15);
   1886   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1887 }
   1888 
   1889 void test_vst4q_lane_u16(uint16_t  *a, uint16x8x4_t b) {
   1890   // CHECK-LABEL: test_vst4q_lane_u16
   1891   vst4q_lane_u16(a, b, 7);
   1892   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1893 }
   1894 
   1895 void test_vst4q_lane_u32(uint32_t  *a, uint32x4x4_t b) {
   1896   // CHECK-LABEL: test_vst4q_lane_u32
   1897   vst4q_lane_u32(a, b, 3);
   1898   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1899 }
   1900 
   1901 void test_vst4q_lane_u64(uint64_t  *a, uint64x2x4_t b) {
   1902   // CHECK-LABEL: test_vst4q_lane_u64
   1903   vst4q_lane_u64(a, b, 1);
   1904   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1905 }
   1906 
   1907 void test_vst4q_lane_s8(int8_t  *a, int8x16x4_t b) {
   1908   // CHECK-LABEL: test_vst4q_lane_s8
   1909   vst4q_lane_s8(a, b, 15);
   1910   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1911 }
   1912 
   1913 void test_vst4q_lane_s16(int16_t  *a, int16x8x4_t b) {
   1914   // CHECK-LABEL: test_vst4q_lane_s16
   1915   vst4q_lane_s16(a, b, 7);
   1916   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1917 }
   1918 
   1919 void test_vst4q_lane_s32(int32_t  *a, int32x4x4_t b) {
   1920   // CHECK-LABEL: test_vst4q_lane_s32
   1921   vst4q_lane_s32(a, b, 3);
   1922   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1923 }
   1924 
   1925 void test_vst4q_lane_s64(int64_t  *a, int64x2x4_t b) {
   1926   // CHECK-LABEL: test_vst4q_lane_s64
   1927   vst4q_lane_s64(a, b, 1);
   1928   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1929 }
   1930 
   1931 void test_vst4q_lane_f16(float16_t  *a, float16x8x4_t b) {
   1932   // CHECK-LABEL: test_vst4q_lane_f16
   1933   vst4q_lane_f16(a, b, 7);
   1934   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1935 }
   1936 
   1937 void test_vst4q_lane_f32(float32_t  *a, float32x4x4_t b) {
   1938   // CHECK-LABEL: test_vst4q_lane_f32
   1939   vst4q_lane_f32(a, b, 3);
   1940   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[3], [{{x[0-9]+|sp}}]
   1941 }
   1942 
   1943 void test_vst4q_lane_f64(float64_t  *a, float64x2x4_t b) {
   1944   // CHECK-LABEL: test_vst4q_lane_f64
   1945   vst4q_lane_f64(a, b, 1);
   1946   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1947 }
   1948 
   1949 void test_vst4q_lane_p8(poly8_t  *a, poly8x16x4_t b) {
   1950   // CHECK-LABEL: test_vst4q_lane_p8
   1951   vst4q_lane_p8(a, b, 15);
   1952   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[15], [{{x[0-9]+|sp}}]
   1953 }
   1954 
   1955 void test_vst4q_lane_p16(poly16_t  *a, poly16x8x4_t b) {
   1956   // CHECK-LABEL: test_vst4q_lane_p16
   1957   vst4q_lane_p16(a, b, 7);
   1958   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[7], [{{x[0-9]+|sp}}]
   1959 }
   1960 
   1961 void test_vst4q_lane_p64(poly64_t  *a, poly64x2x4_t b) {
   1962   // CHECK-LABEL: test_vst4q_lane_p64
   1963   vst4q_lane_p64(a, b, 1);
   1964   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[1], [{{x[0-9]+|sp}}]
   1965 }
   1966 
   1967 void test_vst4_lane_u8(uint8_t  *a, uint8x8x4_t b) {
   1968   // CHECK-LABEL: test_vst4_lane_u8
   1969   vst4_lane_u8(a, b, 7);
   1970   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1971 }
   1972 
   1973 void test_vst4_lane_u16(uint16_t  *a, uint16x4x4_t b) {
   1974   // CHECK-LABEL: test_vst4_lane_u16
   1975   vst4_lane_u16(a, b, 3);
   1976   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   1977 }
   1978 
   1979 void test_vst4_lane_u32(uint32_t  *a, uint32x2x4_t b) {
   1980   // CHECK-LABEL: test_vst4_lane_u32
   1981   vst4_lane_u32(a, b, 1);
   1982   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   1983 }
   1984 
   1985 void test_vst4_lane_u64(uint64_t  *a, uint64x1x4_t b) {
   1986   // CHECK-LABEL: test_vst4_lane_u64
   1987   vst4_lane_u64(a, b, 0);
   1988   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   1989 }
   1990 
   1991 void test_vst4_lane_s8(int8_t  *a, int8x8x4_t b) {
   1992   // CHECK-LABEL: test_vst4_lane_s8
   1993   vst4_lane_s8(a, b, 7);
   1994   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   1995 }
   1996 
   1997 void test_vst4_lane_s16(int16_t  *a, int16x4x4_t b) {
   1998   // CHECK-LABEL: test_vst4_lane_s16
   1999   vst4_lane_s16(a, b, 3);
   2000   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   2001 }
   2002 
   2003 void test_vst4_lane_s32(int32_t  *a, int32x2x4_t b) {
   2004   // CHECK-LABEL: test_vst4_lane_s32
   2005   vst4_lane_s32(a, b, 1);
   2006   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   2007 }
   2008 
   2009 void test_vst4_lane_s64(int64_t  *a, int64x1x4_t b) {
   2010   // CHECK-LABEL: test_vst4_lane_s64
   2011   vst4_lane_s64(a, b, 0);
   2012   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   2013 }
   2014 
   2015 void test_vst4_lane_f16(float16_t  *a, float16x4x4_t b) {
   2016   // CHECK-LABEL: test_vst4_lane_f16
   2017   vst4_lane_f16(a, b, 3);
   2018   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   2019 }
   2020 
   2021 void test_vst4_lane_f32(float32_t  *a, float32x2x4_t b) {
   2022   // CHECK-LABEL: test_vst4_lane_f32
   2023   vst4_lane_f32(a, b, 1);
   2024   // CHECK: st4 {{{ *v[0-9]+.s, v[0-9]+.s, v[0-9]+.s, v[0-9]+.s *}}}[1], [{{x[0-9]+|sp}}]
   2025 }
   2026 
   2027 void test_vst4_lane_f64(float64_t  *a, float64x1x4_t b) {
   2028   // CHECK-LABEL: test_vst4_lane_f64
   2029   vst4_lane_f64(a, b, 0);
   2030   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   2031 }
   2032 
   2033 void test_vst4_lane_p8(poly8_t  *a, poly8x8x4_t b) {
   2034   // CHECK-LABEL: test_vst4_lane_p8
   2035   vst4_lane_p8(a, b, 7);
   2036   // CHECK: st4 {{{ *v[0-9]+.b, v[0-9]+.b, v[0-9]+.b, v[0-9]+.b *}}}[7], [{{x[0-9]+|sp}}]
   2037 }
   2038 
   2039 void test_vst4_lane_p16(poly16_t  *a, poly16x4x4_t b) {
   2040   // CHECK-LABEL: test_vst4_lane_p16
   2041   vst4_lane_p16(a, b, 3);
   2042   // CHECK: st4 {{{ *v[0-9]+.h, v[0-9]+.h, v[0-9]+.h, v[0-9]+.h *}}}[3], [{{x[0-9]+|sp}}]
   2043 }
   2044 
   2045 void test_vst4_lane_p64(poly64_t  *a, poly64x1x4_t b) {
   2046   // CHECK-LABEL: test_vst4_lane_p64
   2047   vst4_lane_p64(a, b, 0);
   2048   // CHECK: st4 {{{ *v[0-9]+.d, v[0-9]+.d, v[0-9]+.d, v[0-9]+.d *}}}[0], [{{x[0-9]+|sp}}]
   2049 }
   2050