Home | History | Annotate | Download | only in CodeGen
      1 // RUN: %clang_cc1 -triple thumbv7s-apple-darwin -target-abi apcs-gnu\
      2 // RUN:  -target-cpu swift -ffreestanding -Os -S -o - %s\
      3 // RUN:  | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-SWIFT
      4 // RUN: %clang_cc1 -triple armv8-linux-gnu \
      5 // RUN:  -target-cpu cortex-a57 -mfloat-abi soft -ffreestanding -Os -S -o - %s\
      6 // RUN:  | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-A57
      7 
      8 // REQUIRES: long_tests
      9 
     10 #include <arm_neon.h>
     11 
     12 // CHECK-LABEL: test_vaba_s8
     13 // CHECK: vaba.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
     14 int8x8_t test_vaba_s8(int8x8_t a, int8x8_t b, int8x8_t c) {
     15   return vaba_s8(a, b, c);
     16 }
     17 
     18 // CHECK-LABEL: test_vaba_s16
     19 // CHECK: vaba.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
     20 int16x4_t test_vaba_s16(int16x4_t a, int16x4_t b, int16x4_t c) {
     21   return vaba_s16(a, b, c);
     22 }
     23 
     24 // CHECK-LABEL: test_vaba_s32
     25 // CHECK: vaba.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
     26 int32x2_t test_vaba_s32(int32x2_t a, int32x2_t b, int32x2_t c) {
     27   return vaba_s32(a, b, c);
     28 }
     29 
     30 // CHECK-LABEL: test_vaba_u8
     31 // CHECK: vaba.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
     32 uint8x8_t test_vaba_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c) {
     33   return vaba_u8(a, b, c);
     34 }
     35 
     36 // CHECK-LABEL: test_vaba_u16
     37 // CHECK: vaba.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
     38 uint16x4_t test_vaba_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
     39   return vaba_u16(a, b, c);
     40 }
     41 
     42 // CHECK-LABEL: test_vaba_u32
     43 // CHECK: vaba.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
     44 uint32x2_t test_vaba_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
     45   return vaba_u32(a, b, c);
     46 }
     47 
     48 // CHECK-LABEL: test_vabaq_s8
     49 // CHECK: vaba.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
     50 int8x16_t test_vabaq_s8(int8x16_t a, int8x16_t b, int8x16_t c) {
     51   return vabaq_s8(a, b, c);
     52 }
     53 
     54 // CHECK-LABEL: test_vabaq_s16
     55 // CHECK: vaba.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
     56 int16x8_t test_vabaq_s16(int16x8_t a, int16x8_t b, int16x8_t c) {
     57   return vabaq_s16(a, b, c);
     58 }
     59 
     60 // CHECK-LABEL: test_vabaq_s32
     61 // CHECK: vaba.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
     62 int32x4_t test_vabaq_s32(int32x4_t a, int32x4_t b, int32x4_t c) {
     63   return vabaq_s32(a, b, c);
     64 }
     65 
     66 // CHECK-LABEL: test_vabaq_u8
     67 // CHECK: vaba.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
     68 uint8x16_t test_vabaq_u8(uint8x16_t a, uint8x16_t b, uint8x16_t c) {
     69   return vabaq_u8(a, b, c);
     70 }
     71 
     72 // CHECK-LABEL: test_vabaq_u16
     73 // CHECK: vaba.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
     74 uint16x8_t test_vabaq_u16(uint16x8_t a, uint16x8_t b, uint16x8_t c) {
     75   return vabaq_u16(a, b, c);
     76 }
     77 
     78 // CHECK-LABEL: test_vabaq_u32
     79 // CHECK: vaba.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
     80 uint32x4_t test_vabaq_u32(uint32x4_t a, uint32x4_t b, uint32x4_t c) {
     81   return vabaq_u32(a, b, c);
     82 }
     83 
     84 
     85 // CHECK-LABEL: test_vabal_s8
     86 // CHECK: vabal.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
     87 int16x8_t test_vabal_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
     88   return vabal_s8(a, b, c);
     89 }
     90 
     91 // CHECK-LABEL: test_vabal_s16
     92 // CHECK: vabal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
     93 int32x4_t test_vabal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
     94   return vabal_s16(a, b, c);
     95 }
     96 
     97 // CHECK-LABEL: test_vabal_s32
     98 // CHECK: vabal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
     99 int64x2_t test_vabal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
    100   return vabal_s32(a, b, c);
    101 }
    102 
    103 // CHECK-LABEL: test_vabal_u8
    104 // CHECK: vabal.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    105 uint16x8_t test_vabal_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
    106   return vabal_u8(a, b, c);
    107 }
    108 
    109 // CHECK-LABEL: test_vabal_u16
    110 // CHECK: vabal.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    111 uint32x4_t test_vabal_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
    112   return vabal_u16(a, b, c);
    113 }
    114 
    115 // CHECK-LABEL: test_vabal_u32
    116 // CHECK: vabal.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    117 uint64x2_t test_vabal_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
    118   return vabal_u32(a, b, c);
    119 }
    120 
    121 
    122 // CHECK-LABEL: test_vabd_s8
    123 // CHECK: vabd.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    124 int8x8_t test_vabd_s8(int8x8_t a, int8x8_t b) {
    125   return vabd_s8(a, b);
    126 }
    127 
    128 // CHECK-LABEL: test_vabd_s16
    129 // CHECK: vabd.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    130 int16x4_t test_vabd_s16(int16x4_t a, int16x4_t b) {
    131   return vabd_s16(a, b);
    132 }
    133 
    134 // CHECK-LABEL: test_vabd_s32
    135 // CHECK: vabd.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    136 int32x2_t test_vabd_s32(int32x2_t a, int32x2_t b) {
    137   return vabd_s32(a, b);
    138 }
    139 
    140 // CHECK-LABEL: test_vabd_u8
    141 // CHECK: vabd.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    142 uint8x8_t test_vabd_u8(uint8x8_t a, uint8x8_t b) {
    143   return vabd_u8(a, b);
    144 }
    145 
    146 // CHECK-LABEL: test_vabd_u16
    147 // CHECK: vabd.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    148 uint16x4_t test_vabd_u16(uint16x4_t a, uint16x4_t b) {
    149   return vabd_u16(a, b);
    150 }
    151 
    152 // CHECK-LABEL: test_vabd_u32
    153 // CHECK: vabd.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    154 uint32x2_t test_vabd_u32(uint32x2_t a, uint32x2_t b) {
    155   return vabd_u32(a, b);
    156 }
    157 
    158 // CHECK-LABEL: test_vabd_f32
    159 // CHECK: vabd.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    160 float32x2_t test_vabd_f32(float32x2_t a, float32x2_t b) {
    161   return vabd_f32(a, b);
    162 }
    163 
    164 // CHECK-LABEL: test_vabdq_s8
    165 // CHECK: vabd.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    166 int8x16_t test_vabdq_s8(int8x16_t a, int8x16_t b) {
    167   return vabdq_s8(a, b);
    168 }
    169 
    170 // CHECK-LABEL: test_vabdq_s16
    171 // CHECK: vabd.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    172 int16x8_t test_vabdq_s16(int16x8_t a, int16x8_t b) {
    173   return vabdq_s16(a, b);
    174 }
    175 
    176 // CHECK-LABEL: test_vabdq_s32
    177 // CHECK: vabd.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    178 int32x4_t test_vabdq_s32(int32x4_t a, int32x4_t b) {
    179   return vabdq_s32(a, b);
    180 }
    181 
    182 // CHECK-LABEL: test_vabdq_u8
    183 // CHECK: vabd.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    184 uint8x16_t test_vabdq_u8(uint8x16_t a, uint8x16_t b) {
    185   return vabdq_u8(a, b);
    186 }
    187 
    188 // CHECK-LABEL: test_vabdq_u16
    189 // CHECK: vabd.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    190 uint16x8_t test_vabdq_u16(uint16x8_t a, uint16x8_t b) {
    191   return vabdq_u16(a, b);
    192 }
    193 
    194 // CHECK-LABEL: test_vabdq_u32
    195 // CHECK: vabd.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    196 uint32x4_t test_vabdq_u32(uint32x4_t a, uint32x4_t b) {
    197   return vabdq_u32(a, b);
    198 }
    199 
    200 // CHECK-LABEL: test_vabdq_f32
    201 // CHECK: vabd.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    202 float32x4_t test_vabdq_f32(float32x4_t a, float32x4_t b) {
    203   return vabdq_f32(a, b);
    204 }
    205 
    206 
    207 // CHECK-LABEL: test_vabdl_s8
    208 // CHECK: vabdl.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    209 int16x8_t test_vabdl_s8(int8x8_t a, int8x8_t b) {
    210   return vabdl_s8(a, b);
    211 }
    212 
    213 // CHECK-LABEL: test_vabdl_s16
    214 // CHECK: vabdl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    215 int32x4_t test_vabdl_s16(int16x4_t a, int16x4_t b) {
    216   return vabdl_s16(a, b);
    217 }
    218 
    219 // CHECK-LABEL: test_vabdl_s32
    220 // CHECK: vabdl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    221 int64x2_t test_vabdl_s32(int32x2_t a, int32x2_t b) {
    222   return vabdl_s32(a, b);
    223 }
    224 
    225 // CHECK-LABEL: test_vabdl_u8
    226 // CHECK: vabdl.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    227 uint16x8_t test_vabdl_u8(uint8x8_t a, uint8x8_t b) {
    228   return vabdl_u8(a, b);
    229 }
    230 
    231 // CHECK-LABEL: test_vabdl_u16
    232 // CHECK: vabdl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    233 uint32x4_t test_vabdl_u16(uint16x4_t a, uint16x4_t b) {
    234   return vabdl_u16(a, b);
    235 }
    236 
    237 // CHECK-LABEL: test_vabdl_u32
    238 // CHECK: vabdl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    239 uint64x2_t test_vabdl_u32(uint32x2_t a, uint32x2_t b) {
    240   return vabdl_u32(a, b);
    241 }
    242 
    243 
    244 // CHECK-LABEL: test_vabs_s8
    245 // CHECK: vabs.s8 d{{[0-9]+}}, d{{[0-9]+}}
    246 int8x8_t test_vabs_s8(int8x8_t a) {
    247   return vabs_s8(a);
    248 }
    249 
    250 // CHECK-LABEL: test_vabs_s16
    251 // CHECK: vabs.s16 d{{[0-9]+}}, d{{[0-9]+}}
    252 int16x4_t test_vabs_s16(int16x4_t a) {
    253   return vabs_s16(a);
    254 }
    255 
    256 // CHECK-LABEL: test_vabs_s32
    257 // CHECK: vabs.s32 d{{[0-9]+}}, d{{[0-9]+}}
    258 int32x2_t test_vabs_s32(int32x2_t a) {
    259   return vabs_s32(a);
    260 }
    261 
    262 // CHECK-LABEL: test_vabs_f32
    263 // CHECK: vabs.f32 d{{[0-9]+}}, d{{[0-9]+}}
    264 float32x2_t test_vabs_f32(float32x2_t a) {
    265   return vabs_f32(a);
    266 }
    267 
    268 // CHECK-LABEL: test_vabsq_s8
    269 // CHECK: vabs.s8 q{{[0-9]+}}, q{{[0-9]+}}
    270 int8x16_t test_vabsq_s8(int8x16_t a) {
    271   return vabsq_s8(a);
    272 }
    273 
    274 // CHECK-LABEL: test_vabsq_s16
    275 // CHECK: vabs.s16 q{{[0-9]+}}, q{{[0-9]+}}
    276 int16x8_t test_vabsq_s16(int16x8_t a) {
    277   return vabsq_s16(a);
    278 }
    279 
    280 // CHECK-LABEL: test_vabsq_s32
    281 // CHECK: vabs.s32 q{{[0-9]+}}, q{{[0-9]+}}
    282 int32x4_t test_vabsq_s32(int32x4_t a) {
    283   return vabsq_s32(a);
    284 }
    285 
    286 // CHECK-LABEL: test_vabsq_f32
    287 // CHECK: vabs.f32 q{{[0-9]+}}, q{{[0-9]+}}
    288 float32x4_t test_vabsq_f32(float32x4_t a) {
    289   return vabsq_f32(a);
    290 }
    291 
    292 
    293 // CHECK-LABEL: test_vadd_s8
    294 // CHECK: vadd.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    295 int8x8_t test_vadd_s8(int8x8_t a, int8x8_t b) {
    296   return vadd_s8(a, b);
    297 }
    298 
    299 // CHECK-LABEL: test_vadd_s16
    300 // CHECK: vadd.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    301 int16x4_t test_vadd_s16(int16x4_t a, int16x4_t b) {
    302   return vadd_s16(a, b);
    303 }
    304 
    305 // CHECK-LABEL: test_vadd_s32
    306 // CHECK: vadd.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    307 int32x2_t test_vadd_s32(int32x2_t a, int32x2_t b) {
    308   return vadd_s32(a, b);
    309 }
    310 
    311 // CHECK-LABEL: test_vadd_s64
    312 // CHECK: vadd.i64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    313 int64x1_t test_vadd_s64(int64x1_t a, int64x1_t b) {
    314   return vadd_s64(a, b);
    315 }
    316 
    317 // CHECK-LABEL: test_vadd_f32
    318 // CHECK: vadd.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    319 float32x2_t test_vadd_f32(float32x2_t a, float32x2_t b) {
    320   return vadd_f32(a, b);
    321 }
    322 
    323 // CHECK-LABEL: test_vadd_u8
    324 // CHECK: vadd.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    325 uint8x8_t test_vadd_u8(uint8x8_t a, uint8x8_t b) {
    326   return vadd_u8(a, b);
    327 }
    328 
    329 // CHECK-LABEL: test_vadd_u16
    330 // CHECK: vadd.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    331 uint16x4_t test_vadd_u16(uint16x4_t a, uint16x4_t b) {
    332   return vadd_u16(a, b);
    333 }
    334 
    335 // CHECK-LABEL: test_vadd_u32
    336 // CHECK: vadd.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    337 uint32x2_t test_vadd_u32(uint32x2_t a, uint32x2_t b) {
    338   return vadd_u32(a, b);
    339 }
    340 
    341 // CHECK-LABEL: test_vadd_u64
    342 // CHECK: vadd.i64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    343 uint64x1_t test_vadd_u64(uint64x1_t a, uint64x1_t b) {
    344   return vadd_u64(a, b);
    345 }
    346 
    347 // CHECK-LABEL: test_vaddq_s8
    348 // CHECK: vadd.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    349 int8x16_t test_vaddq_s8(int8x16_t a, int8x16_t b) {
    350   return vaddq_s8(a, b);
    351 }
    352 
    353 // CHECK-LABEL: test_vaddq_s16
    354 // CHECK: vadd.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    355 int16x8_t test_vaddq_s16(int16x8_t a, int16x8_t b) {
    356   return vaddq_s16(a, b);
    357 }
    358 
    359 // CHECK-LABEL: test_vaddq_s32
    360 // CHECK: vadd.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    361 int32x4_t test_vaddq_s32(int32x4_t a, int32x4_t b) {
    362   return vaddq_s32(a, b);
    363 }
    364 
    365 // CHECK-LABEL: test_vaddq_s64
    366 // CHECK: vadd.i64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    367 int64x2_t test_vaddq_s64(int64x2_t a, int64x2_t b) {
    368   return vaddq_s64(a, b);
    369 }
    370 
    371 // CHECK-LABEL: test_vaddq_f32
    372 // CHECK: vadd.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    373 float32x4_t test_vaddq_f32(float32x4_t a, float32x4_t b) {
    374   return vaddq_f32(a, b);
    375 }
    376 
    377 // CHECK-LABEL: test_vaddq_u8
    378 // CHECK: vadd.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    379 uint8x16_t test_vaddq_u8(uint8x16_t a, uint8x16_t b) {
    380   return vaddq_u8(a, b);
    381 }
    382 
    383 // CHECK-LABEL: test_vaddq_u16
    384 // CHECK: vadd.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    385 uint16x8_t test_vaddq_u16(uint16x8_t a, uint16x8_t b) {
    386   return vaddq_u16(a, b);
    387 }
    388 
    389 // CHECK-LABEL: test_vaddq_u32
    390 // CHECK: vadd.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    391 uint32x4_t test_vaddq_u32(uint32x4_t a, uint32x4_t b) {
    392   return vaddq_u32(a, b);
    393 }
    394 
    395 // CHECK-LABEL: test_vaddq_u64
    396 // CHECK: vadd.i64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    397 uint64x2_t test_vaddq_u64(uint64x2_t a, uint64x2_t b) {
    398   return vaddq_u64(a, b);
    399 }
    400 
    401 
    402 // CHECK-LABEL: test_vaddhn_s16
    403 // CHECK: vaddhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    404 int8x8_t test_vaddhn_s16(int16x8_t a, int16x8_t b) {
    405   return vaddhn_s16(a, b);
    406 }
    407 
    408 // CHECK-LABEL: test_vaddhn_s32
    409 // CHECK: vaddhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    410 int16x4_t test_vaddhn_s32(int32x4_t a, int32x4_t b) {
    411   return vaddhn_s32(a, b);
    412 }
    413 
    414 // CHECK-LABEL: test_vaddhn_s64
    415 // CHECK: vaddhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    416 int32x2_t test_vaddhn_s64(int64x2_t a, int64x2_t b) {
    417   return vaddhn_s64(a, b);
    418 }
    419 
    420 // CHECK-LABEL: test_vaddhn_u16
    421 // CHECK: vaddhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    422 uint8x8_t test_vaddhn_u16(uint16x8_t a, uint16x8_t b) {
    423   return vaddhn_u16(a, b);
    424 }
    425 
    426 // CHECK-LABEL: test_vaddhn_u32
    427 // CHECK: vaddhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    428 uint16x4_t test_vaddhn_u32(uint32x4_t a, uint32x4_t b) {
    429   return vaddhn_u32(a, b);
    430 }
    431 
    432 // CHECK-LABEL: test_vaddhn_u64
    433 // CHECK: vaddhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    434 uint32x2_t test_vaddhn_u64(uint64x2_t a, uint64x2_t b) {
    435   return vaddhn_u64(a, b);
    436 }
    437 
    438 
    439 // CHECK-LABEL: test_vaddl_s8
    440 // CHECK: vaddl.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    441 int16x8_t test_vaddl_s8(int8x8_t a, int8x8_t b) {
    442   return vaddl_s8(a, b);
    443 }
    444 
    445 // CHECK-LABEL: test_vaddl_s16
    446 // CHECK: vaddl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    447 int32x4_t test_vaddl_s16(int16x4_t a, int16x4_t b) {
    448   return vaddl_s16(a, b);
    449 }
    450 
    451 // CHECK-LABEL: test_vaddl_s32
    452 // CHECK: vaddl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    453 int64x2_t test_vaddl_s32(int32x2_t a, int32x2_t b) {
    454   return vaddl_s32(a, b);
    455 }
    456 
    457 // CHECK-LABEL: test_vaddl_u8
    458 // CHECK: vaddl.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    459 uint16x8_t test_vaddl_u8(uint8x8_t a, uint8x8_t b) {
    460   return vaddl_u8(a, b);
    461 }
    462 
    463 // CHECK-LABEL: test_vaddl_u16
    464 // CHECK: vaddl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    465 uint32x4_t test_vaddl_u16(uint16x4_t a, uint16x4_t b) {
    466   return vaddl_u16(a, b);
    467 }
    468 
    469 // CHECK-LABEL: test_vaddl_u32
    470 // CHECK: vaddl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    471 uint64x2_t test_vaddl_u32(uint32x2_t a, uint32x2_t b) {
    472   return vaddl_u32(a, b);
    473 }
    474 
    475 
    476 // CHECK-LABEL: test_vaddw_s8
    477 // CHECK: vaddw.s8 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
    478 int16x8_t test_vaddw_s8(int16x8_t a, int8x8_t b) {
    479   return vaddw_s8(a, b);
    480 }
    481 
    482 // CHECK-LABEL: test_vaddw_s16
    483 // CHECK: vaddw.s16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
    484 int32x4_t test_vaddw_s16(int32x4_t a, int16x4_t b) {
    485   return vaddw_s16(a, b);
    486 }
    487 
    488 // CHECK-LABEL: test_vaddw_s32
    489 // CHECK: vaddw.s32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
    490 int64x2_t test_vaddw_s32(int64x2_t a, int32x2_t b) {
    491   return vaddw_s32(a, b);
    492 }
    493 
    494 // CHECK-LABEL: test_vaddw_u8
    495 // CHECK: vaddw.u8 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
    496 uint16x8_t test_vaddw_u8(uint16x8_t a, uint8x8_t b) {
    497   return vaddw_u8(a, b);
    498 }
    499 
    500 // CHECK-LABEL: test_vaddw_u16
    501 // CHECK: vaddw.u16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
    502 uint32x4_t test_vaddw_u16(uint32x4_t a, uint16x4_t b) {
    503   return vaddw_u16(a, b);
    504 }
    505 
    506 // CHECK-LABEL: test_vaddw_u32
    507 // CHECK: vaddw.u32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
    508 uint64x2_t test_vaddw_u32(uint64x2_t a, uint32x2_t b) {
    509   return vaddw_u32(a, b);
    510 }
    511 
    512 
    513 // CHECK-LABEL: test_vand_s8
    514 // CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    515 int8x8_t test_vand_s8(int8x8_t a, int8x8_t b) {
    516   return vand_s8(a, b);
    517 }
    518 
    519 // CHECK-LABEL: test_vand_s16
    520 // CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    521 int16x4_t test_vand_s16(int16x4_t a, int16x4_t b) {
    522   return vand_s16(a, b);
    523 }
    524 
    525 // CHECK-LABEL: test_vand_s32
    526 // CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    527 int32x2_t test_vand_s32(int32x2_t a, int32x2_t b) {
    528   return vand_s32(a, b);
    529 }
    530 
    531 // CHECK-LABEL: test_vand_s64
    532 // CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    533 int64x1_t test_vand_s64(int64x1_t a, int64x1_t b) {
    534   return vand_s64(a, b);
    535 }
    536 
    537 // CHECK-LABEL: test_vand_u8
    538 // CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    539 uint8x8_t test_vand_u8(uint8x8_t a, uint8x8_t b) {
    540   return vand_u8(a, b);
    541 }
    542 
    543 // CHECK-LABEL: test_vand_u16
    544 // CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    545 uint16x4_t test_vand_u16(uint16x4_t a, uint16x4_t b) {
    546   return vand_u16(a, b);
    547 }
    548 
    549 // CHECK-LABEL: test_vand_u32
    550 // CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    551 uint32x2_t test_vand_u32(uint32x2_t a, uint32x2_t b) {
    552   return vand_u32(a, b);
    553 }
    554 
    555 // CHECK-LABEL: test_vand_u64
    556 // CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    557 uint64x1_t test_vand_u64(uint64x1_t a, uint64x1_t b) {
    558   return vand_u64(a, b);
    559 }
    560 
    561 // CHECK-LABEL: test_vandq_s8
    562 // CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    563 int8x16_t test_vandq_s8(int8x16_t a, int8x16_t b) {
    564   return vandq_s8(a, b);
    565 }
    566 
    567 // CHECK-LABEL: test_vandq_s16
    568 // CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    569 int16x8_t test_vandq_s16(int16x8_t a, int16x8_t b) {
    570   return vandq_s16(a, b);
    571 }
    572 
    573 // CHECK-LABEL: test_vandq_s32
    574 // CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    575 int32x4_t test_vandq_s32(int32x4_t a, int32x4_t b) {
    576   return vandq_s32(a, b);
    577 }
    578 
    579 // CHECK-LABEL: test_vandq_s64
    580 // CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    581 int64x2_t test_vandq_s64(int64x2_t a, int64x2_t b) {
    582   return vandq_s64(a, b);
    583 }
    584 
    585 // CHECK-LABEL: test_vandq_u8
    586 // CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    587 uint8x16_t test_vandq_u8(uint8x16_t a, uint8x16_t b) {
    588   return vandq_u8(a, b);
    589 }
    590 
    591 // CHECK-LABEL: test_vandq_u16
    592 // CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    593 uint16x8_t test_vandq_u16(uint16x8_t a, uint16x8_t b) {
    594   return vandq_u16(a, b);
    595 }
    596 
    597 // CHECK-LABEL: test_vandq_u32
    598 // CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    599 uint32x4_t test_vandq_u32(uint32x4_t a, uint32x4_t b) {
    600   return vandq_u32(a, b);
    601 }
    602 
    603 // CHECK-LABEL: test_vandq_u64
    604 // CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    605 uint64x2_t test_vandq_u64(uint64x2_t a, uint64x2_t b) {
    606   return vandq_u64(a, b);
    607 }
    608 
    609 
    610 // CHECK-LABEL: test_vbic_s8
    611 // CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    612 int8x8_t test_vbic_s8(int8x8_t a, int8x8_t b) {
    613   return vbic_s8(a, b);
    614 }
    615 
    616 // CHECK-LABEL: test_vbic_s16
    617 // CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    618 int16x4_t test_vbic_s16(int16x4_t a, int16x4_t b) {
    619   return vbic_s16(a, b);
    620 }
    621 
    622 // CHECK-LABEL: test_vbic_s32
    623 // CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    624 int32x2_t test_vbic_s32(int32x2_t a, int32x2_t b) {
    625   return vbic_s32(a, b);
    626 }
    627 
    628 // CHECK-LABEL: test_vbic_s64
    629 // CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    630 int64x1_t test_vbic_s64(int64x1_t a, int64x1_t b) {
    631   return vbic_s64(a, b);
    632 }
    633 
    634 // CHECK-LABEL: test_vbic_u8
    635 // CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    636 uint8x8_t test_vbic_u8(uint8x8_t a, uint8x8_t b) {
    637   return vbic_u8(a, b);
    638 }
    639 
    640 // CHECK-LABEL: test_vbic_u16
    641 // CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    642 uint16x4_t test_vbic_u16(uint16x4_t a, uint16x4_t b) {
    643   return vbic_u16(a, b);
    644 }
    645 
    646 // CHECK-LABEL: test_vbic_u32
    647 // CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    648 uint32x2_t test_vbic_u32(uint32x2_t a, uint32x2_t b) {
    649   return vbic_u32(a, b);
    650 }
    651 
    652 // CHECK-LABEL: test_vbic_u64
    653 // CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    654 uint64x1_t test_vbic_u64(uint64x1_t a, uint64x1_t b) {
    655   return vbic_u64(a, b);
    656 }
    657 
    658 // CHECK-LABEL: test_vbicq_s8
    659 // CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    660 int8x16_t test_vbicq_s8(int8x16_t a, int8x16_t b) {
    661   return vbicq_s8(a, b);
    662 }
    663 
    664 // CHECK-LABEL: test_vbicq_s16
    665 // CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    666 int16x8_t test_vbicq_s16(int16x8_t a, int16x8_t b) {
    667   return vbicq_s16(a, b);
    668 }
    669 
    670 // CHECK-LABEL: test_vbicq_s32
    671 // CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    672 int32x4_t test_vbicq_s32(int32x4_t a, int32x4_t b) {
    673   return vbicq_s32(a, b);
    674 }
    675 
    676 // CHECK-LABEL: test_vbicq_s64
    677 // CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    678 int64x2_t test_vbicq_s64(int64x2_t a, int64x2_t b) {
    679   return vbicq_s64(a, b);
    680 }
    681 
    682 // CHECK-LABEL: test_vbicq_u8
    683 // CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    684 uint8x16_t test_vbicq_u8(uint8x16_t a, uint8x16_t b) {
    685   return vbicq_u8(a, b);
    686 }
    687 
    688 // CHECK-LABEL: test_vbicq_u16
    689 // CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    690 uint16x8_t test_vbicq_u16(uint16x8_t a, uint16x8_t b) {
    691   return vbicq_u16(a, b);
    692 }
    693 
    694 // CHECK-LABEL: test_vbicq_u32
    695 // CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    696 uint32x4_t test_vbicq_u32(uint32x4_t a, uint32x4_t b) {
    697   return vbicq_u32(a, b);
    698 }
    699 
    700 // CHECK-LABEL: test_vbicq_u64
    701 // CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    702 uint64x2_t test_vbicq_u64(uint64x2_t a, uint64x2_t b) {
    703   return vbicq_u64(a, b);
    704 }
    705 
    706 
    707 // CHECK-LABEL: test_vbsl_s8
    708 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    709 int8x8_t test_vbsl_s8(uint8x8_t a, int8x8_t b, int8x8_t c) {
    710   return vbsl_s8(a, b, c);
    711 }
    712 
    713 // CHECK-LABEL: test_vbsl_s16
    714 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    715 int16x4_t test_vbsl_s16(uint16x4_t a, int16x4_t b, int16x4_t c) {
    716   return vbsl_s16(a, b, c);
    717 }
    718 
    719 // CHECK-LABEL: test_vbsl_s32
    720 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    721 int32x2_t test_vbsl_s32(uint32x2_t a, int32x2_t b, int32x2_t c) {
    722   return vbsl_s32(a, b, c);
    723 }
    724 
    725 // CHECK-LABEL: test_vbsl_s64
    726 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    727 int64x1_t test_vbsl_s64(uint64x1_t a, int64x1_t b, int64x1_t c) {
    728   return vbsl_s64(a, b, c);
    729 }
    730 
    731 // CHECK-LABEL: test_vbsl_u8
    732 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    733 uint8x8_t test_vbsl_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c) {
    734   return vbsl_u8(a, b, c);
    735 }
    736 
    737 // CHECK-LABEL: test_vbsl_u16
    738 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    739 uint16x4_t test_vbsl_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
    740   return vbsl_u16(a, b, c);
    741 }
    742 
    743 // CHECK-LABEL: test_vbsl_u32
    744 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    745 uint32x2_t test_vbsl_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
    746   return vbsl_u32(a, b, c);
    747 }
    748 
    749 // CHECK-LABEL: test_vbsl_u64
    750 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    751 uint64x1_t test_vbsl_u64(uint64x1_t a, uint64x1_t b, uint64x1_t c) {
    752   return vbsl_u64(a, b, c);
    753 }
    754 
    755 // CHECK-LABEL: test_vbsl_f32
    756 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    757 float32x2_t test_vbsl_f32(uint32x2_t a, float32x2_t b, float32x2_t c) {
    758   return vbsl_f32(a, b, c);
    759 }
    760 
    761 // CHECK-LABEL: test_vbsl_p8
    762 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    763 poly8x8_t test_vbsl_p8(uint8x8_t a, poly8x8_t b, poly8x8_t c) {
    764   return vbsl_p8(a, b, c);
    765 }
    766 
    767 // CHECK-LABEL: test_vbsl_p16
    768 // CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    769 poly16x4_t test_vbsl_p16(uint16x4_t a, poly16x4_t b, poly16x4_t c) {
    770   return vbsl_p16(a, b, c);
    771 }
    772 
    773 // CHECK-LABEL: test_vbslq_s8
    774 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    775 int8x16_t test_vbslq_s8(uint8x16_t a, int8x16_t b, int8x16_t c) {
    776   return vbslq_s8(a, b, c);
    777 }
    778 
    779 // CHECK-LABEL: test_vbslq_s16
    780 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    781 int16x8_t test_vbslq_s16(uint16x8_t a, int16x8_t b, int16x8_t c) {
    782   return vbslq_s16(a, b, c);
    783 }
    784 
    785 // CHECK-LABEL: test_vbslq_s32
    786 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    787 int32x4_t test_vbslq_s32(uint32x4_t a, int32x4_t b, int32x4_t c) {
    788   return vbslq_s32(a, b, c);
    789 }
    790 
    791 // CHECK-LABEL: test_vbslq_s64
    792 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    793 int64x2_t test_vbslq_s64(uint64x2_t a, int64x2_t b, int64x2_t c) {
    794   return vbslq_s64(a, b, c);
    795 }
    796 
    797 // CHECK-LABEL: test_vbslq_u8
    798 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    799 uint8x16_t test_vbslq_u8(uint8x16_t a, uint8x16_t b, uint8x16_t c) {
    800   return vbslq_u8(a, b, c);
    801 }
    802 
    803 // CHECK-LABEL: test_vbslq_u16
    804 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    805 uint16x8_t test_vbslq_u16(uint16x8_t a, uint16x8_t b, uint16x8_t c) {
    806   return vbslq_u16(a, b, c);
    807 }
    808 
    809 // CHECK-LABEL: test_vbslq_u32
    810 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    811 uint32x4_t test_vbslq_u32(uint32x4_t a, uint32x4_t b, uint32x4_t c) {
    812   return vbslq_u32(a, b, c);
    813 }
    814 
    815 // CHECK-LABEL: test_vbslq_u64
    816 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    817 uint64x2_t test_vbslq_u64(uint64x2_t a, uint64x2_t b, uint64x2_t c) {
    818   return vbslq_u64(a, b, c);
    819 }
    820 
    821 // CHECK-LABEL: test_vbslq_f32
    822 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    823 float32x4_t test_vbslq_f32(uint32x4_t a, float32x4_t b, float32x4_t c) {
    824   return vbslq_f32(a, b, c);
    825 }
    826 
    827 // CHECK-LABEL: test_vbslq_p8
    828 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    829 poly8x16_t test_vbslq_p8(uint8x16_t a, poly8x16_t b, poly8x16_t c) {
    830   return vbslq_p8(a, b, c);
    831 }
    832 
    833 // CHECK-LABEL: test_vbslq_p16
    834 // CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    835 poly16x8_t test_vbslq_p16(uint16x8_t a, poly16x8_t b, poly16x8_t c) {
    836   return vbslq_p16(a, b, c);
    837 }
    838 
    839 
    840 // CHECK-LABEL: test_vcage_f32
    841 // CHECK: vacge.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    842 uint32x2_t test_vcage_f32(float32x2_t a, float32x2_t b) {
    843   return vcage_f32(a, b);
    844 }
    845 
    846 // CHECK-LABEL: test_vcageq_f32
    847 // CHECK: vacge.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    848 uint32x4_t test_vcageq_f32(float32x4_t a, float32x4_t b) {
    849   return vcageq_f32(a, b);
    850 }
    851 
    852 
    853 // CHECK-LABEL: test_vcagt_f32
    854 // CHECK: vacgt.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    855 uint32x2_t test_vcagt_f32(float32x2_t a, float32x2_t b) {
    856   return vcagt_f32(a, b);
    857 }
    858 
    859 // CHECK-LABEL: test_vcagtq_f32
    860 // CHECK: vacgt.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    861 uint32x4_t test_vcagtq_f32(float32x4_t a, float32x4_t b) {
    862   return vcagtq_f32(a, b);
    863 }
    864 
    865 
    866 // CHECK-LABEL: test_vcale_f32
    867 // CHECK: vacge.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    868 uint32x2_t test_vcale_f32(float32x2_t a, float32x2_t b) {
    869   return vcale_f32(a, b);
    870 }
    871 
    872 // CHECK-LABEL: test_vcaleq_f32
    873 // CHECK: vacge.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    874 uint32x4_t test_vcaleq_f32(float32x4_t a, float32x4_t b) {
    875   return vcaleq_f32(a, b);
    876 }
    877 
    878 
    879 // CHECK-LABEL: test_vcalt_f32
    880 // CHECK: vacgt.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    881 uint32x2_t test_vcalt_f32(float32x2_t a, float32x2_t b) {
    882   return vcalt_f32(a, b);
    883 }
    884 
    885 // CHECK-LABEL: test_vcaltq_f32
    886 // CHECK: vacgt.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    887 uint32x4_t test_vcaltq_f32(float32x4_t a, float32x4_t b) {
    888   return vcaltq_f32(a, b);
    889 }
    890 
    891 
    892 // CHECK-LABEL: test_vceq_s8
    893 // CHECK: vceq.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    894 uint8x8_t test_vceq_s8(int8x8_t a, int8x8_t b) {
    895   return vceq_s8(a, b);
    896 }
    897 
    898 // CHECK-LABEL: test_vceq_s16
    899 // CHECK: vceq.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    900 uint16x4_t test_vceq_s16(int16x4_t a, int16x4_t b) {
    901   return vceq_s16(a, b);
    902 }
    903 
    904 // CHECK-LABEL: test_vceq_s32
    905 // CHECK: vceq.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    906 uint32x2_t test_vceq_s32(int32x2_t a, int32x2_t b) {
    907   return vceq_s32(a, b);
    908 }
    909 
    910 // CHECK-LABEL: test_vceq_f32
    911 // CHECK: vceq.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    912 uint32x2_t test_vceq_f32(float32x2_t a, float32x2_t b) {
    913   return vceq_f32(a, b);
    914 }
    915 
    916 // CHECK-LABEL: test_vceq_u8
    917 // CHECK: vceq.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    918 uint8x8_t test_vceq_u8(uint8x8_t a, uint8x8_t b) {
    919   return vceq_u8(a, b);
    920 }
    921 
    922 // CHECK-LABEL: test_vceq_u16
    923 // CHECK: vceq.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    924 uint16x4_t test_vceq_u16(uint16x4_t a, uint16x4_t b) {
    925   return vceq_u16(a, b);
    926 }
    927 
    928 // CHECK-LABEL: test_vceq_u32
    929 // CHECK: vceq.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    930 uint32x2_t test_vceq_u32(uint32x2_t a, uint32x2_t b) {
    931   return vceq_u32(a, b);
    932 }
    933 
    934 // CHECK-LABEL: test_vceq_p8
    935 // CHECK: vceq.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    936 uint8x8_t test_vceq_p8(poly8x8_t a, poly8x8_t b) {
    937   return vceq_p8(a, b);
    938 }
    939 
    940 // CHECK-LABEL: test_vceqq_s8
    941 // CHECK: vceq.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    942 uint8x16_t test_vceqq_s8(int8x16_t a, int8x16_t b) {
    943   return vceqq_s8(a, b);
    944 }
    945 
    946 // CHECK-LABEL: test_vceqq_s16
    947 // CHECK: vceq.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    948 uint16x8_t test_vceqq_s16(int16x8_t a, int16x8_t b) {
    949   return vceqq_s16(a, b);
    950 }
    951 
    952 // CHECK-LABEL: test_vceqq_s32
    953 // CHECK: vceq.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    954 uint32x4_t test_vceqq_s32(int32x4_t a, int32x4_t b) {
    955   return vceqq_s32(a, b);
    956 }
    957 
    958 // CHECK-LABEL: test_vceqq_f32
    959 // CHECK: vceq.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    960 uint32x4_t test_vceqq_f32(float32x4_t a, float32x4_t b) {
    961   return vceqq_f32(a, b);
    962 }
    963 
    964 // CHECK-LABEL: test_vceqq_u8
    965 // CHECK: vceq.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    966 uint8x16_t test_vceqq_u8(uint8x16_t a, uint8x16_t b) {
    967   return vceqq_u8(a, b);
    968 }
    969 
    970 // CHECK-LABEL: test_vceqq_u16
    971 // CHECK: vceq.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    972 uint16x8_t test_vceqq_u16(uint16x8_t a, uint16x8_t b) {
    973   return vceqq_u16(a, b);
    974 }
    975 
    976 // CHECK-LABEL: test_vceqq_u32
    977 // CHECK: vceq.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    978 uint32x4_t test_vceqq_u32(uint32x4_t a, uint32x4_t b) {
    979   return vceqq_u32(a, b);
    980 }
    981 
    982 // CHECK-LABEL: test_vceqq_p8
    983 // CHECK: vceq.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
    984 uint8x16_t test_vceqq_p8(poly8x16_t a, poly8x16_t b) {
    985   return vceqq_p8(a, b);
    986 }
    987 
    988 
    989 // CHECK-LABEL: test_vcge_s8
    990 // CHECK: vcge.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    991 uint8x8_t test_vcge_s8(int8x8_t a, int8x8_t b) {
    992   return vcge_s8(a, b);
    993 }
    994 
    995 // CHECK-LABEL: test_vcge_s16
    996 // CHECK: vcge.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
    997 uint16x4_t test_vcge_s16(int16x4_t a, int16x4_t b) {
    998   return vcge_s16(a, b);
    999 }
   1000 
   1001 // CHECK-LABEL: test_vcge_s32
   1002 // CHECK: vcge.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1003 uint32x2_t test_vcge_s32(int32x2_t a, int32x2_t b) {
   1004   return vcge_s32(a, b);
   1005 }
   1006 
   1007 // CHECK-LABEL: test_vcge_f32
   1008 // CHECK: vcge.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1009 uint32x2_t test_vcge_f32(float32x2_t a, float32x2_t b) {
   1010   return vcge_f32(a, b);
   1011 }
   1012 
   1013 // CHECK-LABEL: test_vcge_u8
   1014 // CHECK: vcge.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1015 uint8x8_t test_vcge_u8(uint8x8_t a, uint8x8_t b) {
   1016   return vcge_u8(a, b);
   1017 }
   1018 
   1019 // CHECK-LABEL: test_vcge_u16
   1020 // CHECK: vcge.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1021 uint16x4_t test_vcge_u16(uint16x4_t a, uint16x4_t b) {
   1022   return vcge_u16(a, b);
   1023 }
   1024 
   1025 // CHECK-LABEL: test_vcge_u32
   1026 // CHECK: vcge.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1027 uint32x2_t test_vcge_u32(uint32x2_t a, uint32x2_t b) {
   1028   return vcge_u32(a, b);
   1029 }
   1030 
   1031 // CHECK-LABEL: test_vcgeq_s8
   1032 // CHECK: vcge.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1033 uint8x16_t test_vcgeq_s8(int8x16_t a, int8x16_t b) {
   1034   return vcgeq_s8(a, b);
   1035 }
   1036 
   1037 // CHECK-LABEL: test_vcgeq_s16
   1038 // CHECK: vcge.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1039 uint16x8_t test_vcgeq_s16(int16x8_t a, int16x8_t b) {
   1040   return vcgeq_s16(a, b);
   1041 }
   1042 
   1043 // CHECK-LABEL: test_vcgeq_s32
   1044 // CHECK: vcge.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1045 uint32x4_t test_vcgeq_s32(int32x4_t a, int32x4_t b) {
   1046   return vcgeq_s32(a, b);
   1047 }
   1048 
   1049 // CHECK-LABEL: test_vcgeq_f32
   1050 // CHECK: vcge.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1051 uint32x4_t test_vcgeq_f32(float32x4_t a, float32x4_t b) {
   1052   return vcgeq_f32(a, b);
   1053 }
   1054 
   1055 // CHECK-LABEL: test_vcgeq_u8
   1056 // CHECK: vcge.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1057 uint8x16_t test_vcgeq_u8(uint8x16_t a, uint8x16_t b) {
   1058   return vcgeq_u8(a, b);
   1059 }
   1060 
   1061 // CHECK-LABEL: test_vcgeq_u16
   1062 // CHECK: vcge.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1063 uint16x8_t test_vcgeq_u16(uint16x8_t a, uint16x8_t b) {
   1064   return vcgeq_u16(a, b);
   1065 }
   1066 
   1067 // CHECK-LABEL: test_vcgeq_u32
   1068 // CHECK: vcge.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1069 uint32x4_t test_vcgeq_u32(uint32x4_t a, uint32x4_t b) {
   1070   return vcgeq_u32(a, b);
   1071 }
   1072 
   1073 
   1074 // CHECK-LABEL: test_vcgt_s8
   1075 // CHECK: vcgt.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1076 uint8x8_t test_vcgt_s8(int8x8_t a, int8x8_t b) {
   1077   return vcgt_s8(a, b);
   1078 }
   1079 
   1080 // CHECK-LABEL: test_vcgt_s16
   1081 // CHECK: vcgt.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1082 uint16x4_t test_vcgt_s16(int16x4_t a, int16x4_t b) {
   1083   return vcgt_s16(a, b);
   1084 }
   1085 
   1086 // CHECK-LABEL: test_vcgt_s32
   1087 // CHECK: vcgt.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1088 uint32x2_t test_vcgt_s32(int32x2_t a, int32x2_t b) {
   1089   return vcgt_s32(a, b);
   1090 }
   1091 
   1092 // CHECK-LABEL: test_vcgt_f32
   1093 // CHECK: vcgt.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1094 uint32x2_t test_vcgt_f32(float32x2_t a, float32x2_t b) {
   1095   return vcgt_f32(a, b);
   1096 }
   1097 
   1098 // CHECK-LABEL: test_vcgt_u8
   1099 // CHECK: vcgt.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1100 uint8x8_t test_vcgt_u8(uint8x8_t a, uint8x8_t b) {
   1101   return vcgt_u8(a, b);
   1102 }
   1103 
   1104 // CHECK-LABEL: test_vcgt_u16
   1105 // CHECK: vcgt.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1106 uint16x4_t test_vcgt_u16(uint16x4_t a, uint16x4_t b) {
   1107   return vcgt_u16(a, b);
   1108 }
   1109 
   1110 // CHECK-LABEL: test_vcgt_u32
   1111 // CHECK: vcgt.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1112 uint32x2_t test_vcgt_u32(uint32x2_t a, uint32x2_t b) {
   1113   return vcgt_u32(a, b);
   1114 }
   1115 
   1116 // CHECK-LABEL: test_vcgtq_s8
   1117 // CHECK: vcgt.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1118 uint8x16_t test_vcgtq_s8(int8x16_t a, int8x16_t b) {
   1119   return vcgtq_s8(a, b);
   1120 }
   1121 
   1122 // CHECK-LABEL: test_vcgtq_s16
   1123 // CHECK: vcgt.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1124 uint16x8_t test_vcgtq_s16(int16x8_t a, int16x8_t b) {
   1125   return vcgtq_s16(a, b);
   1126 }
   1127 
   1128 // CHECK-LABEL: test_vcgtq_s32
   1129 // CHECK: vcgt.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1130 uint32x4_t test_vcgtq_s32(int32x4_t a, int32x4_t b) {
   1131   return vcgtq_s32(a, b);
   1132 }
   1133 
   1134 // CHECK-LABEL: test_vcgtq_f32
   1135 // CHECK: vcgt.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1136 uint32x4_t test_vcgtq_f32(float32x4_t a, float32x4_t b) {
   1137   return vcgtq_f32(a, b);
   1138 }
   1139 
   1140 // CHECK-LABEL: test_vcgtq_u8
   1141 // CHECK: vcgt.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1142 uint8x16_t test_vcgtq_u8(uint8x16_t a, uint8x16_t b) {
   1143   return vcgtq_u8(a, b);
   1144 }
   1145 
   1146 // CHECK-LABEL: test_vcgtq_u16
   1147 // CHECK: vcgt.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1148 uint16x8_t test_vcgtq_u16(uint16x8_t a, uint16x8_t b) {
   1149   return vcgtq_u16(a, b);
   1150 }
   1151 
   1152 // CHECK-LABEL: test_vcgtq_u32
   1153 // CHECK: vcgt.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1154 uint32x4_t test_vcgtq_u32(uint32x4_t a, uint32x4_t b) {
   1155   return vcgtq_u32(a, b);
   1156 }
   1157 
   1158 
   1159 // CHECK-LABEL: test_vcle_s8
   1160 // CHECK: vcge.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1161 uint8x8_t test_vcle_s8(int8x8_t a, int8x8_t b) {
   1162   return vcle_s8(a, b);
   1163 }
   1164 
   1165 // CHECK-LABEL: test_vcle_s16
   1166 // CHECK: vcge.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1167 uint16x4_t test_vcle_s16(int16x4_t a, int16x4_t b) {
   1168   return vcle_s16(a, b);
   1169 }
   1170 
   1171 // CHECK-LABEL: test_vcle_s32
   1172 // CHECK: vcge.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1173 uint32x2_t test_vcle_s32(int32x2_t a, int32x2_t b) {
   1174   return vcle_s32(a, b);
   1175 }
   1176 
   1177 // CHECK-LABEL: test_vcle_f32
   1178 // CHECK: vcge.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1179 uint32x2_t test_vcle_f32(float32x2_t a, float32x2_t b) {
   1180   return vcle_f32(a, b);
   1181 }
   1182 
   1183 // CHECK-LABEL: test_vcle_u8
   1184 // CHECK: vcge.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1185 uint8x8_t test_vcle_u8(uint8x8_t a, uint8x8_t b) {
   1186   return vcle_u8(a, b);
   1187 }
   1188 
   1189 // CHECK-LABEL: test_vcle_u16
   1190 // CHECK: vcge.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1191 uint16x4_t test_vcle_u16(uint16x4_t a, uint16x4_t b) {
   1192   return vcle_u16(a, b);
   1193 }
   1194 
   1195 // CHECK-LABEL: test_vcle_u32
   1196 // CHECK: vcge.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1197 uint32x2_t test_vcle_u32(uint32x2_t a, uint32x2_t b) {
   1198   return vcle_u32(a, b);
   1199 }
   1200 
   1201 // CHECK-LABEL: test_vcleq_s8
   1202 // CHECK: vcge.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1203 uint8x16_t test_vcleq_s8(int8x16_t a, int8x16_t b) {
   1204   return vcleq_s8(a, b);
   1205 }
   1206 
   1207 // CHECK-LABEL: test_vcleq_s16
   1208 // CHECK: vcge.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1209 uint16x8_t test_vcleq_s16(int16x8_t a, int16x8_t b) {
   1210   return vcleq_s16(a, b);
   1211 }
   1212 
   1213 // CHECK-LABEL: test_vcleq_s32
   1214 // CHECK: vcge.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1215 uint32x4_t test_vcleq_s32(int32x4_t a, int32x4_t b) {
   1216   return vcleq_s32(a, b);
   1217 }
   1218 
   1219 // CHECK-LABEL: test_vcleq_f32
   1220 // CHECK: vcge.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1221 uint32x4_t test_vcleq_f32(float32x4_t a, float32x4_t b) {
   1222   return vcleq_f32(a, b);
   1223 }
   1224 
   1225 // CHECK-LABEL: test_vcleq_u8
   1226 // CHECK: vcge.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1227 uint8x16_t test_vcleq_u8(uint8x16_t a, uint8x16_t b) {
   1228   return vcleq_u8(a, b);
   1229 }
   1230 
   1231 // CHECK-LABEL: test_vcleq_u16
   1232 // CHECK: vcge.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1233 uint16x8_t test_vcleq_u16(uint16x8_t a, uint16x8_t b) {
   1234   return vcleq_u16(a, b);
   1235 }
   1236 
   1237 // CHECK-LABEL: test_vcleq_u32
   1238 // CHECK: vcge.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1239 uint32x4_t test_vcleq_u32(uint32x4_t a, uint32x4_t b) {
   1240   return vcleq_u32(a, b);
   1241 }
   1242 
   1243 
   1244 // CHECK-LABEL: test_vcls_s8
   1245 // CHECK: vcls.s8 d{{[0-9]+}}, d{{[0-9]+}}
   1246 int8x8_t test_vcls_s8(int8x8_t a) {
   1247   return vcls_s8(a);
   1248 }
   1249 
   1250 // CHECK-LABEL: test_vcls_s16
   1251 // CHECK: vcls.s16 d{{[0-9]+}}, d{{[0-9]+}}
   1252 int16x4_t test_vcls_s16(int16x4_t a) {
   1253   return vcls_s16(a);
   1254 }
   1255 
   1256 // CHECK-LABEL: test_vcls_s32
   1257 // CHECK: vcls.s32 d{{[0-9]+}}, d{{[0-9]+}}
   1258 int32x2_t test_vcls_s32(int32x2_t a) {
   1259   return vcls_s32(a);
   1260 }
   1261 
   1262 // CHECK-LABEL: test_vclsq_s8
   1263 // CHECK: vcls.s8 q{{[0-9]+}}, q{{[0-9]+}}
   1264 int8x16_t test_vclsq_s8(int8x16_t a) {
   1265   return vclsq_s8(a);
   1266 }
   1267 
   1268 // CHECK-LABEL: test_vclsq_s16
   1269 // CHECK: vcls.s16 q{{[0-9]+}}, q{{[0-9]+}}
   1270 int16x8_t test_vclsq_s16(int16x8_t a) {
   1271   return vclsq_s16(a);
   1272 }
   1273 
   1274 // CHECK-LABEL: test_vclsq_s32
   1275 // CHECK: vcls.s32 q{{[0-9]+}}, q{{[0-9]+}}
   1276 int32x4_t test_vclsq_s32(int32x4_t a) {
   1277   return vclsq_s32(a);
   1278 }
   1279 
   1280 
   1281 // CHECK-LABEL: test_vclt_s8
   1282 // CHECK: vcgt.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1283 uint8x8_t test_vclt_s8(int8x8_t a, int8x8_t b) {
   1284   return vclt_s8(a, b);
   1285 }
   1286 
   1287 // CHECK-LABEL: test_vclt_s16
   1288 // CHECK: vcgt.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1289 uint16x4_t test_vclt_s16(int16x4_t a, int16x4_t b) {
   1290   return vclt_s16(a, b);
   1291 }
   1292 
   1293 // CHECK-LABEL: test_vclt_s32
   1294 // CHECK: vcgt.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1295 uint32x2_t test_vclt_s32(int32x2_t a, int32x2_t b) {
   1296   return vclt_s32(a, b);
   1297 }
   1298 
   1299 // CHECK-LABEL: test_vclt_f32
   1300 // CHECK: vcgt.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1301 uint32x2_t test_vclt_f32(float32x2_t a, float32x2_t b) {
   1302   return vclt_f32(a, b);
   1303 }
   1304 
   1305 // CHECK-LABEL: test_vclt_u8
   1306 // CHECK: vcgt.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1307 uint8x8_t test_vclt_u8(uint8x8_t a, uint8x8_t b) {
   1308   return vclt_u8(a, b);
   1309 }
   1310 
   1311 // CHECK-LABEL: test_vclt_u16
   1312 // CHECK: vcgt.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1313 uint16x4_t test_vclt_u16(uint16x4_t a, uint16x4_t b) {
   1314   return vclt_u16(a, b);
   1315 }
   1316 
   1317 // CHECK-LABEL: test_vclt_u32
   1318 // CHECK: vcgt.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1319 uint32x2_t test_vclt_u32(uint32x2_t a, uint32x2_t b) {
   1320   return vclt_u32(a, b);
   1321 }
   1322 
   1323 // CHECK-LABEL: test_vcltq_s8
   1324 // CHECK: vcgt.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1325 uint8x16_t test_vcltq_s8(int8x16_t a, int8x16_t b) {
   1326   return vcltq_s8(a, b);
   1327 }
   1328 
   1329 // CHECK-LABEL: test_vcltq_s16
   1330 // CHECK: vcgt.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1331 uint16x8_t test_vcltq_s16(int16x8_t a, int16x8_t b) {
   1332   return vcltq_s16(a, b);
   1333 }
   1334 
   1335 // CHECK-LABEL: test_vcltq_s32
   1336 // CHECK: vcgt.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1337 uint32x4_t test_vcltq_s32(int32x4_t a, int32x4_t b) {
   1338   return vcltq_s32(a, b);
   1339 }
   1340 
   1341 // CHECK-LABEL: test_vcltq_f32
   1342 // CHECK: vcgt.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1343 uint32x4_t test_vcltq_f32(float32x4_t a, float32x4_t b) {
   1344   return vcltq_f32(a, b);
   1345 }
   1346 
   1347 // CHECK-LABEL: test_vcltq_u8
   1348 // CHECK: vcgt.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1349 uint8x16_t test_vcltq_u8(uint8x16_t a, uint8x16_t b) {
   1350   return vcltq_u8(a, b);
   1351 }
   1352 
   1353 // CHECK-LABEL: test_vcltq_u16
   1354 // CHECK: vcgt.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1355 uint16x8_t test_vcltq_u16(uint16x8_t a, uint16x8_t b) {
   1356   return vcltq_u16(a, b);
   1357 }
   1358 
   1359 // CHECK-LABEL: test_vcltq_u32
   1360 // CHECK: vcgt.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   1361 uint32x4_t test_vcltq_u32(uint32x4_t a, uint32x4_t b) {
   1362   return vcltq_u32(a, b);
   1363 }
   1364 
   1365 
   1366 // CHECK-LABEL: test_vclz_s8
   1367 // CHECK: vclz.i8 d{{[0-9]+}}, d{{[0-9]+}}
   1368 int8x8_t test_vclz_s8(int8x8_t a) {
   1369   return vclz_s8(a);
   1370 }
   1371 
   1372 // CHECK-LABEL: test_vclz_s16
   1373 // CHECK: vclz.i16 d{{[0-9]+}}, d{{[0-9]+}}
   1374 int16x4_t test_vclz_s16(int16x4_t a) {
   1375   return vclz_s16(a);
   1376 }
   1377 
   1378 // CHECK-LABEL: test_vclz_s32
   1379 // CHECK: vclz.i32 d{{[0-9]+}}, d{{[0-9]+}}
   1380 int32x2_t test_vclz_s32(int32x2_t a) {
   1381   return vclz_s32(a);
   1382 }
   1383 
   1384 // CHECK-LABEL: test_vclz_u8
   1385 // CHECK: vclz.i8 d{{[0-9]+}}, d{{[0-9]+}}
   1386 uint8x8_t test_vclz_u8(uint8x8_t a) {
   1387   return vclz_u8(a);
   1388 }
   1389 
   1390 // CHECK-LABEL: test_vclz_u16
   1391 // CHECK: vclz.i16 d{{[0-9]+}}, d{{[0-9]+}}
   1392 uint16x4_t test_vclz_u16(uint16x4_t a) {
   1393   return vclz_u16(a);
   1394 }
   1395 
   1396 // CHECK-LABEL: test_vclz_u32
   1397 // CHECK: vclz.i32 d{{[0-9]+}}, d{{[0-9]+}}
   1398 uint32x2_t test_vclz_u32(uint32x2_t a) {
   1399   return vclz_u32(a);
   1400 }
   1401 
   1402 // CHECK-LABEL: test_vclzq_s8
   1403 // CHECK: vclz.i8 q{{[0-9]+}}, q{{[0-9]+}}
   1404 int8x16_t test_vclzq_s8(int8x16_t a) {
   1405   return vclzq_s8(a);
   1406 }
   1407 
   1408 // CHECK-LABEL: test_vclzq_s16
   1409 // CHECK: vclz.i16 q{{[0-9]+}}, q{{[0-9]+}}
   1410 int16x8_t test_vclzq_s16(int16x8_t a) {
   1411   return vclzq_s16(a);
   1412 }
   1413 
   1414 // CHECK-LABEL: test_vclzq_s32
   1415 // CHECK: vclz.i32 q{{[0-9]+}}, q{{[0-9]+}}
   1416 int32x4_t test_vclzq_s32(int32x4_t a) {
   1417   return vclzq_s32(a);
   1418 }
   1419 
   1420 // CHECK-LABEL: test_vclzq_u8
   1421 // CHECK: vclz.i8 q{{[0-9]+}}, q{{[0-9]+}}
   1422 uint8x16_t test_vclzq_u8(uint8x16_t a) {
   1423   return vclzq_u8(a);
   1424 }
   1425 
   1426 // CHECK-LABEL: test_vclzq_u16
   1427 // CHECK: vclz.i16 q{{[0-9]+}}, q{{[0-9]+}}
   1428 uint16x8_t test_vclzq_u16(uint16x8_t a) {
   1429   return vclzq_u16(a);
   1430 }
   1431 
   1432 // CHECK-LABEL: test_vclzq_u32
   1433 // CHECK: vclz.i32 q{{[0-9]+}}, q{{[0-9]+}}
   1434 uint32x4_t test_vclzq_u32(uint32x4_t a) {
   1435   return vclzq_u32(a);
   1436 }
   1437 
   1438 
   1439 // CHECK-LABEL: test_vcnt_u8
   1440 // CHECK: vcnt.8 d{{[0-9]+}}, d{{[0-9]+}}
   1441 uint8x8_t test_vcnt_u8(uint8x8_t a) {
   1442   return vcnt_u8(a);
   1443 }
   1444 
   1445 // CHECK-LABEL: test_vcnt_s8
   1446 // CHECK: vcnt.8 d{{[0-9]+}}, d{{[0-9]+}}
   1447 int8x8_t test_vcnt_s8(int8x8_t a) {
   1448   return vcnt_s8(a);
   1449 }
   1450 
   1451 // CHECK-LABEL: test_vcnt_p8
   1452 // CHECK: vcnt.8 d{{[0-9]+}}, d{{[0-9]+}}
   1453 poly8x8_t test_vcnt_p8(poly8x8_t a) {
   1454   return vcnt_p8(a);
   1455 }
   1456 
   1457 // CHECK-LABEL: test_vcntq_u8
   1458 // CHECK: vcnt.8 q{{[0-9]+}}, q{{[0-9]+}}
   1459 uint8x16_t test_vcntq_u8(uint8x16_t a) {
   1460   return vcntq_u8(a);
   1461 }
   1462 
   1463 // CHECK-LABEL: test_vcntq_s8
   1464 // CHECK: vcnt.8 q{{[0-9]+}}, q{{[0-9]+}}
   1465 int8x16_t test_vcntq_s8(int8x16_t a) {
   1466   return vcntq_s8(a);
   1467 }
   1468 
   1469 // CHECK-LABEL: test_vcntq_p8
   1470 // CHECK: vcnt.8 q{{[0-9]+}}, q{{[0-9]+}}
   1471 poly8x16_t test_vcntq_p8(poly8x16_t a) {
   1472   return vcntq_p8(a);
   1473 }
   1474 
   1475 
   1476 // CHECK-LABEL: test_vcombine_s8
   1477 int8x16_t test_vcombine_s8(int8x8_t a, int8x8_t b) {
   1478   return vcombine_s8(a, b);
   1479 }
   1480 
   1481 // CHECK-LABEL: test_vcombine_s16
   1482 int16x8_t test_vcombine_s16(int16x4_t a, int16x4_t b) {
   1483   return vcombine_s16(a, b);
   1484 }
   1485 
   1486 // CHECK-LABEL: test_vcombine_s32
   1487 int32x4_t test_vcombine_s32(int32x2_t a, int32x2_t b) {
   1488   return vcombine_s32(a, b);
   1489 }
   1490 
   1491 // CHECK-LABEL: test_vcombine_s64
   1492 int64x2_t test_vcombine_s64(int64x1_t a, int64x1_t b) {
   1493   return vcombine_s64(a, b);
   1494 }
   1495 
   1496 // CHECK-LABEL: test_vcombine_f16
   1497 float16x8_t test_vcombine_f16(float16x4_t a, float16x4_t b) {
   1498   return vcombine_f16(a, b);
   1499 }
   1500 
   1501 // CHECK-LABEL: test_vcombine_f32
   1502 float32x4_t test_vcombine_f32(float32x2_t a, float32x2_t b) {
   1503   return vcombine_f32(a, b);
   1504 }
   1505 
   1506 // CHECK-LABEL: test_vcombine_u8
   1507 uint8x16_t test_vcombine_u8(uint8x8_t a, uint8x8_t b) {
   1508   return vcombine_u8(a, b);
   1509 }
   1510 
   1511 // CHECK-LABEL: test_vcombine_u16
   1512 uint16x8_t test_vcombine_u16(uint16x4_t a, uint16x4_t b) {
   1513   return vcombine_u16(a, b);
   1514 }
   1515 
   1516 // CHECK-LABEL: test_vcombine_u32
   1517 uint32x4_t test_vcombine_u32(uint32x2_t a, uint32x2_t b) {
   1518   return vcombine_u32(a, b);
   1519 }
   1520 
   1521 // CHECK-LABEL: test_vcombine_u64
   1522 uint64x2_t test_vcombine_u64(uint64x1_t a, uint64x1_t b) {
   1523   return vcombine_u64(a, b);
   1524 }
   1525 
   1526 // CHECK-LABEL: test_vcombine_p8
   1527 poly8x16_t test_vcombine_p8(poly8x8_t a, poly8x8_t b) {
   1528   return vcombine_p8(a, b);
   1529 }
   1530 
   1531 // CHECK-LABEL: test_vcombine_p16
   1532 poly16x8_t test_vcombine_p16(poly16x4_t a, poly16x4_t b) {
   1533   return vcombine_p16(a, b);
   1534 }
   1535 
   1536 
   1537 // CHECK-LABEL: test_vcreate_s8
   1538 int8x8_t test_vcreate_s8(uint64_t a) {
   1539   return vcreate_s8(a);
   1540 }
   1541 
   1542 // CHECK-LABEL: test_vcreate_s16
   1543 int16x4_t test_vcreate_s16(uint64_t a) {
   1544   return vcreate_s16(a);
   1545 }
   1546 
   1547 // CHECK-LABEL: test_vcreate_s32
   1548 int32x2_t test_vcreate_s32(uint64_t a) {
   1549   return vcreate_s32(a);
   1550 }
   1551 
   1552 // CHECK-LABEL: test_vcreate_f16
   1553 float16x4_t test_vcreate_f16(uint64_t a) {
   1554   return vcreate_f16(a);
   1555 }
   1556 
   1557 // CHECK-LABEL: test_vcreate_f32
   1558 float32x2_t test_vcreate_f32(uint64_t a) {
   1559   return vcreate_f32(a);
   1560 }
   1561 
   1562 // CHECK-LABEL: test_vcreate_u8
   1563 uint8x8_t test_vcreate_u8(uint64_t a) {
   1564   return vcreate_u8(a);
   1565 }
   1566 
   1567 // CHECK-LABEL: test_vcreate_u16
   1568 uint16x4_t test_vcreate_u16(uint64_t a) {
   1569   return vcreate_u16(a);
   1570 }
   1571 
   1572 // CHECK-LABEL: test_vcreate_u32
   1573 uint32x2_t test_vcreate_u32(uint64_t a) {
   1574   return vcreate_u32(a);
   1575 }
   1576 
   1577 // CHECK-LABEL: test_vcreate_u64
   1578 uint64x1_t test_vcreate_u64(uint64_t a) {
   1579   return vcreate_u64(a);
   1580 }
   1581 
   1582 // CHECK-LABEL: test_vcreate_p8
   1583 poly8x8_t test_vcreate_p8(uint64_t a) {
   1584   return vcreate_p8(a);
   1585 }
   1586 
   1587 // CHECK-LABEL: test_vcreate_p16
   1588 poly16x4_t test_vcreate_p16(uint64_t a) {
   1589   return vcreate_p16(a);
   1590 }
   1591 
   1592 // CHECK-LABEL: test_vcreate_s64
   1593 int64x1_t test_vcreate_s64(uint64_t a) {
   1594   return vcreate_s64(a);
   1595 }
   1596 
   1597 
   1598 // CHECK-LABEL: test_vcvt_f16_f32
   1599 // CHECK: vcvt.f16.f32 d{{[0-9]+}}, q{{[0-9]+}}
   1600 float16x4_t test_vcvt_f16_f32(float32x4_t a) {
   1601   return vcvt_f16_f32(a);
   1602 }
   1603 
   1604 
   1605 // CHECK-LABEL: test_vcvt_f32_s32
   1606 // CHECK: vcvt.f32.s32 d{{[0-9]+}}, d{{[0-9]+}}
   1607 float32x2_t test_vcvt_f32_s32(int32x2_t a) {
   1608   return vcvt_f32_s32(a);
   1609 }
   1610 
   1611 // CHECK-LABEL: test_vcvt_f32_u32
   1612 // CHECK: vcvt.f32.u32 d{{[0-9]+}}, d{{[0-9]+}}
   1613 float32x2_t test_vcvt_f32_u32(uint32x2_t a) {
   1614   return vcvt_f32_u32(a);
   1615 }
   1616 
   1617 // CHECK-LABEL: test_vcvtq_f32_s32
   1618 // CHECK: vcvt.f32.s32 q{{[0-9]+}}, q{{[0-9]+}}
   1619 float32x4_t test_vcvtq_f32_s32(int32x4_t a) {
   1620   return vcvtq_f32_s32(a);
   1621 }
   1622 
   1623 // CHECK-LABEL: test_vcvtq_f32_u32
   1624 // CHECK: vcvt.f32.u32 q{{[0-9]+}}, q{{[0-9]+}}
   1625 float32x4_t test_vcvtq_f32_u32(uint32x4_t a) {
   1626   return vcvtq_f32_u32(a);
   1627 }
   1628 
   1629 
   1630 // CHECK-LABEL: test_vcvt_f32_f16
   1631 // CHECK: vcvt.f32.f16
   1632 float32x4_t test_vcvt_f32_f16(float16x4_t a) {
   1633   return vcvt_f32_f16(a);
   1634 }
   1635 
   1636 
   1637 // CHECK-LABEL: test_vcvt_n_f32_s32
   1638 // CHECK: vcvt.f32.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   1639 float32x2_t test_vcvt_n_f32_s32(int32x2_t a) {
   1640   return vcvt_n_f32_s32(a, 1);
   1641 }
   1642 
   1643 // CHECK-LABEL: test_vcvt_n_f32_u32
   1644 // CHECK: vcvt.f32.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   1645 float32x2_t test_vcvt_n_f32_u32(uint32x2_t a) {
   1646   return vcvt_n_f32_u32(a, 1);
   1647 }
   1648 
   1649 // CHECK-LABEL: test_vcvtq_n_f32_s32
   1650 // CHECK: vcvt.f32.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   1651 float32x4_t test_vcvtq_n_f32_s32(int32x4_t a) {
   1652   return vcvtq_n_f32_s32(a, 3);
   1653 }
   1654 
   1655 // CHECK-LABEL: test_vcvtq_n_f32_u32
   1656 // CHECK: vcvt.f32.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   1657 float32x4_t test_vcvtq_n_f32_u32(uint32x4_t a) {
   1658   return vcvtq_n_f32_u32(a, 3);
   1659 }
   1660 
   1661 
   1662 // CHECK-LABEL: test_vcvt_n_s32_f32
   1663 // CHECK: vcvt.s32.f32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   1664 int32x2_t test_vcvt_n_s32_f32(float32x2_t a) {
   1665   return vcvt_n_s32_f32(a, 1);
   1666 }
   1667 
   1668 // CHECK-LABEL: test_vcvtq_n_s32_f32
   1669 // CHECK: vcvt.s32.f32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   1670 int32x4_t test_vcvtq_n_s32_f32(float32x4_t a) {
   1671   return vcvtq_n_s32_f32(a, 3);
   1672 }
   1673 
   1674 
   1675 // CHECK-LABEL: test_vcvt_n_u32_f32
   1676 // CHECK: vcvt.u32.f32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   1677 uint32x2_t test_vcvt_n_u32_f32(float32x2_t a) {
   1678   return vcvt_n_u32_f32(a, 1);
   1679 }
   1680 
   1681 // CHECK-LABEL: test_vcvtq_n_u32_f32
   1682 // CHECK: vcvt.u32.f32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   1683 uint32x4_t test_vcvtq_n_u32_f32(float32x4_t a) {
   1684   return vcvtq_n_u32_f32(a, 3);
   1685 }
   1686 
   1687 
   1688 // CHECK-LABEL: test_vcvt_s32_f32
   1689 // CHECK: vcvt.s32.f32 d{{[0-9]+}}, d{{[0-9]+}}
   1690 int32x2_t test_vcvt_s32_f32(float32x2_t a) {
   1691   return vcvt_s32_f32(a);
   1692 }
   1693 
   1694 // CHECK-LABEL: test_vcvtq_s32_f32
   1695 // CHECK: vcvt.s32.f32 q{{[0-9]+}}, q{{[0-9]+}}
   1696 int32x4_t test_vcvtq_s32_f32(float32x4_t a) {
   1697   return vcvtq_s32_f32(a);
   1698 }
   1699 
   1700 
   1701 // CHECK-LABEL: test_vcvt_u32_f32
   1702 // CHECK: vcvt.u32.f32 d{{[0-9]+}}, d{{[0-9]+}}
   1703 uint32x2_t test_vcvt_u32_f32(float32x2_t a) {
   1704   return vcvt_u32_f32(a);
   1705 }
   1706 
   1707 // CHECK-LABEL: test_vcvtq_u32_f32
   1708 // CHECK: vcvt.u32.f32 q{{[0-9]+}}, q{{[0-9]+}}
   1709 uint32x4_t test_vcvtq_u32_f32(float32x4_t a) {
   1710   return vcvtq_u32_f32(a);
   1711 }
   1712 
   1713 
   1714 // CHECK-LABEL: test_vdup_lane_u8
   1715 // CHECK: vdup.8 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1716 uint8x8_t test_vdup_lane_u8(uint8x8_t a) {
   1717   return vdup_lane_u8(a, 7);
   1718 }
   1719 
   1720 // CHECK-LABEL: test_vdup_lane_u16
   1721 // CHECK: vdup.16 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1722 uint16x4_t test_vdup_lane_u16(uint16x4_t a) {
   1723   return vdup_lane_u16(a, 3);
   1724 }
   1725 
   1726 // CHECK-LABEL: test_vdup_lane_u32
   1727 // CHECK: vdup.32 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1728 uint32x2_t test_vdup_lane_u32(uint32x2_t a) {
   1729   return vdup_lane_u32(a, 1);
   1730 }
   1731 
   1732 // CHECK-LABEL: test_vdup_lane_s8
   1733 // CHECK: vdup.8 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1734 int8x8_t test_vdup_lane_s8(int8x8_t a) {
   1735   return vdup_lane_s8(a, 7);
   1736 }
   1737 
   1738 // CHECK-LABEL: test_vdup_lane_s16
   1739 // CHECK: vdup.16 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1740 int16x4_t test_vdup_lane_s16(int16x4_t a) {
   1741   return vdup_lane_s16(a, 3);
   1742 }
   1743 
   1744 // CHECK-LABEL: test_vdup_lane_s32
   1745 // CHECK: vdup.32 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1746 int32x2_t test_vdup_lane_s32(int32x2_t a) {
   1747   return vdup_lane_s32(a, 1);
   1748 }
   1749 
   1750 // CHECK-LABEL: test_vdup_lane_p8
   1751 // CHECK: vdup.8 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1752 poly8x8_t test_vdup_lane_p8(poly8x8_t a) {
   1753   return vdup_lane_p8(a, 7);
   1754 }
   1755 
   1756 // CHECK-LABEL: test_vdup_lane_p16
   1757 // CHECK: vdup.16 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1758 poly16x4_t test_vdup_lane_p16(poly16x4_t a) {
   1759   return vdup_lane_p16(a, 3);
   1760 }
   1761 
   1762 // CHECK-LABEL: test_vdup_lane_f32
   1763 // CHECK: vdup.32 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1764 float32x2_t test_vdup_lane_f32(float32x2_t a) {
   1765   return vdup_lane_f32(a, 1);
   1766 }
   1767 
   1768 // CHECK-LABEL: test_vdupq_lane_u8
   1769 // CHECK: vdup.8 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1770 uint8x16_t test_vdupq_lane_u8(uint8x8_t a) {
   1771   return vdupq_lane_u8(a, 7);
   1772 }
   1773 
   1774 // CHECK-LABEL: test_vdupq_lane_u16
   1775 // CHECK: vdup.16 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1776 uint16x8_t test_vdupq_lane_u16(uint16x4_t a) {
   1777   return vdupq_lane_u16(a, 3);
   1778 }
   1779 
   1780 // CHECK-LABEL: test_vdupq_lane_u32
   1781 // CHECK: vdup.32 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1782 uint32x4_t test_vdupq_lane_u32(uint32x2_t a) {
   1783   return vdupq_lane_u32(a, 1);
   1784 }
   1785 
   1786 // CHECK-LABEL: test_vdupq_lane_s8
   1787 // CHECK: vdup.8 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1788 int8x16_t test_vdupq_lane_s8(int8x8_t a) {
   1789   return vdupq_lane_s8(a, 7);
   1790 }
   1791 
   1792 // CHECK-LABEL: test_vdupq_lane_s16
   1793 // CHECK: vdup.16 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1794 int16x8_t test_vdupq_lane_s16(int16x4_t a) {
   1795   return vdupq_lane_s16(a, 3);
   1796 }
   1797 
   1798 // CHECK-LABEL: test_vdupq_lane_s32
   1799 // CHECK: vdup.32 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1800 int32x4_t test_vdupq_lane_s32(int32x2_t a) {
   1801   return vdupq_lane_s32(a, 1);
   1802 }
   1803 
   1804 // CHECK-LABEL: test_vdupq_lane_p8
   1805 // CHECK: vdup.8 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1806 poly8x16_t test_vdupq_lane_p8(poly8x8_t a) {
   1807   return vdupq_lane_p8(a, 7);
   1808 }
   1809 
   1810 // CHECK-LABEL: test_vdupq_lane_p16
   1811 // CHECK: vdup.16 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1812 poly16x8_t test_vdupq_lane_p16(poly16x4_t a) {
   1813   return vdupq_lane_p16(a, 3);
   1814 }
   1815 
   1816 // CHECK-LABEL: test_vdupq_lane_f32
   1817 // CHECK: vdup.32 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   1818 float32x4_t test_vdupq_lane_f32(float32x2_t a) {
   1819   return vdupq_lane_f32(a, 1);
   1820 }
   1821 
   1822 // CHECK-LABEL: test_vdup_lane_s64
   1823 int64x1_t test_vdup_lane_s64(int64x1_t a) {
   1824   return vdup_lane_s64(a, 0);
   1825 }
   1826 
   1827 // CHECK-LABEL: test_vdup_lane_u64
   1828 uint64x1_t test_vdup_lane_u64(uint64x1_t a) {
   1829   return vdup_lane_u64(a, 0);
   1830 }
   1831 
   1832 // CHECK-LABEL: test_vdupq_lane_s64
   1833 // CHECK: {{vmov|vdup}}
   1834 int64x2_t test_vdupq_lane_s64(int64x1_t a) {
   1835   return vdupq_lane_s64(a, 0);
   1836 }
   1837 
   1838 // CHECK-LABEL: test_vdupq_lane_u64
   1839 // CHECK: {{vmov|vdup}}
   1840 uint64x2_t test_vdupq_lane_u64(uint64x1_t a) {
   1841   return vdupq_lane_u64(a, 0);
   1842 }
   1843 
   1844 
   1845 // CHECK-LABEL: test_vdup_n_u8
   1846 // CHECK: vmov
   1847 uint8x8_t test_vdup_n_u8(uint8_t a) {
   1848   return vdup_n_u8(a);
   1849 }
   1850 
   1851 // CHECK-LABEL: test_vdup_n_u16
   1852 // CHECK: vmov
   1853 uint16x4_t test_vdup_n_u16(uint16_t a) {
   1854   return vdup_n_u16(a);
   1855 }
   1856 
   1857 // CHECK-LABEL: test_vdup_n_u32
   1858 // CHECK: vmov
   1859 uint32x2_t test_vdup_n_u32(uint32_t a) {
   1860   return vdup_n_u32(a);
   1861 }
   1862 
   1863 // CHECK-LABEL: test_vdup_n_s8
   1864 // CHECK: vmov
   1865 int8x8_t test_vdup_n_s8(int8_t a) {
   1866   return vdup_n_s8(a);
   1867 }
   1868 
   1869 // CHECK-LABEL: test_vdup_n_s16
   1870 // CHECK: vmov
   1871 int16x4_t test_vdup_n_s16(int16_t a) {
   1872   return vdup_n_s16(a);
   1873 }
   1874 
   1875 // CHECK-LABEL: test_vdup_n_s32
   1876 // CHECK: vmov
   1877 int32x2_t test_vdup_n_s32(int32_t a) {
   1878   return vdup_n_s32(a);
   1879 }
   1880 
   1881 // CHECK-LABEL: test_vdup_n_p8
   1882 // CHECK: vmov
   1883 poly8x8_t test_vdup_n_p8(poly8_t a) {
   1884   return vdup_n_p8(a);
   1885 }
   1886 
   1887 // CHECK-LABEL: test_vdup_n_p16
   1888 // CHECK: vmov
   1889 poly16x4_t test_vdup_n_p16(poly16_t a) {
   1890   return vdup_n_p16(a);
   1891 }
   1892 
   1893 // CHECK-LABEL: test_vdup_n_f16
   1894 // CHECK: vld1.16 {{{d[0-9]+\[\]}}}
   1895 float16x4_t test_vdup_n_f16(float16_t *a) {
   1896   return vdup_n_f16(*a);
   1897 }
   1898 
   1899 // CHECK-LABEL: test_vdup_n_f32
   1900 // CHECK: vmov
   1901 float32x2_t test_vdup_n_f32(float32_t a) {
   1902   return vdup_n_f32(a);
   1903 }
   1904 
   1905 // CHECK-LABEL: test_vdupq_n_u8
   1906 // CHECK: vmov
   1907 uint8x16_t test_vdupq_n_u8(uint8_t a) {
   1908   return vdupq_n_u8(a);
   1909 }
   1910 
   1911 // CHECK-LABEL: test_vdupq_n_u16
   1912 // CHECK: vmov
   1913 uint16x8_t test_vdupq_n_u16(uint16_t a) {
   1914   return vdupq_n_u16(a);
   1915 }
   1916 
   1917 // CHECK-LABEL: test_vdupq_n_u32
   1918 // CHECK: vmov
   1919 uint32x4_t test_vdupq_n_u32(uint32_t a) {
   1920   return vdupq_n_u32(a);
   1921 }
   1922 
   1923 // CHECK-LABEL: test_vdupq_n_s8
   1924 // CHECK: vmov
   1925 int8x16_t test_vdupq_n_s8(int8_t a) {
   1926   return vdupq_n_s8(a);
   1927 }
   1928 
   1929 // CHECK-LABEL: test_vdupq_n_s16
   1930 // CHECK: vmov
   1931 int16x8_t test_vdupq_n_s16(int16_t a) {
   1932   return vdupq_n_s16(a);
   1933 }
   1934 
   1935 // CHECK-LABEL: test_vdupq_n_s32
   1936 // CHECK: vmov
   1937 int32x4_t test_vdupq_n_s32(int32_t a) {
   1938   return vdupq_n_s32(a);
   1939 }
   1940 
   1941 // CHECK-LABEL: test_vdupq_n_p8
   1942 // CHECK: vmov
   1943 poly8x16_t test_vdupq_n_p8(poly8_t a) {
   1944   return vdupq_n_p8(a);
   1945 }
   1946 
   1947 // CHECK-LABEL: test_vdupq_n_p16
   1948 // CHECK: vmov
   1949 poly16x8_t test_vdupq_n_p16(poly16_t a) {
   1950   return vdupq_n_p16(a);
   1951 }
   1952 
   1953 // CHECK-LABEL: test_vdupq_n_f16
   1954 // CHECK: vld1.16 {{{d[0-9]+\[\], d[0-9]+\[\]}}}
   1955 float16x8_t test_vdupq_n_f16(float16_t *a) {
   1956   return vdupq_n_f16(*a);
   1957 }
   1958 
   1959 // CHECK-LABEL: test_vdupq_n_f32
   1960 // CHECK: vmov
   1961 float32x4_t test_vdupq_n_f32(float32_t a) {
   1962   return vdupq_n_f32(a);
   1963 }
   1964 
   1965 // CHECK-LABEL: test_vdup_n_s64
   1966 // CHECK: vmov
   1967 int64x1_t test_vdup_n_s64(int64_t a) {
   1968   return vdup_n_s64(a);
   1969 }
   1970 
   1971 // CHECK-LABEL: test_vdup_n_u64
   1972 // CHECK: vmov
   1973 uint64x1_t test_vdup_n_u64(uint64_t a) {
   1974   return vdup_n_u64(a);
   1975 }
   1976 
   1977 // CHECK-LABEL: test_vdupq_n_s64
   1978 // CHECK: vmov
   1979 int64x2_t test_vdupq_n_s64(int64_t a) {
   1980   return vdupq_n_s64(a);
   1981 }
   1982 
   1983 // CHECK-LABEL: test_vdupq_n_u64
   1984 // CHECK: vmov
   1985 uint64x2_t test_vdupq_n_u64(uint64_t a) {
   1986   return vdupq_n_u64(a);
   1987 }
   1988 
   1989 
   1990 // CHECK-LABEL: test_veor_s8
   1991 // CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1992 int8x8_t test_veor_s8(int8x8_t a, int8x8_t b) {
   1993   return veor_s8(a, b);
   1994 }
   1995 
   1996 // CHECK-LABEL: test_veor_s16
   1997 // CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   1998 int16x4_t test_veor_s16(int16x4_t a, int16x4_t b) {
   1999   return veor_s16(a, b);
   2000 }
   2001 
   2002 // CHECK-LABEL: test_veor_s32
   2003 // CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2004 int32x2_t test_veor_s32(int32x2_t a, int32x2_t b) {
   2005   return veor_s32(a, b);
   2006 }
   2007 
   2008 // CHECK-LABEL: test_veor_s64
   2009 // CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2010 int64x1_t test_veor_s64(int64x1_t a, int64x1_t b) {
   2011   return veor_s64(a, b);
   2012 }
   2013 
   2014 // CHECK-LABEL: test_veor_u8
   2015 // CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2016 uint8x8_t test_veor_u8(uint8x8_t a, uint8x8_t b) {
   2017   return veor_u8(a, b);
   2018 }
   2019 
   2020 // CHECK-LABEL: test_veor_u16
   2021 // CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2022 uint16x4_t test_veor_u16(uint16x4_t a, uint16x4_t b) {
   2023   return veor_u16(a, b);
   2024 }
   2025 
   2026 // CHECK-LABEL: test_veor_u32
   2027 // CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2028 uint32x2_t test_veor_u32(uint32x2_t a, uint32x2_t b) {
   2029   return veor_u32(a, b);
   2030 }
   2031 
   2032 // CHECK-LABEL: test_veor_u64
   2033 // CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2034 uint64x1_t test_veor_u64(uint64x1_t a, uint64x1_t b) {
   2035   return veor_u64(a, b);
   2036 }
   2037 
   2038 // CHECK-LABEL: test_veorq_s8
   2039 // CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2040 int8x16_t test_veorq_s8(int8x16_t a, int8x16_t b) {
   2041   return veorq_s8(a, b);
   2042 }
   2043 
   2044 // CHECK-LABEL: test_veorq_s16
   2045 // CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2046 int16x8_t test_veorq_s16(int16x8_t a, int16x8_t b) {
   2047   return veorq_s16(a, b);
   2048 }
   2049 
   2050 // CHECK-LABEL: test_veorq_s32
   2051 // CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2052 int32x4_t test_veorq_s32(int32x4_t a, int32x4_t b) {
   2053   return veorq_s32(a, b);
   2054 }
   2055 
   2056 // CHECK-LABEL: test_veorq_s64
   2057 // CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2058 int64x2_t test_veorq_s64(int64x2_t a, int64x2_t b) {
   2059   return veorq_s64(a, b);
   2060 }
   2061 
   2062 // CHECK-LABEL: test_veorq_u8
   2063 // CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2064 uint8x16_t test_veorq_u8(uint8x16_t a, uint8x16_t b) {
   2065   return veorq_u8(a, b);
   2066 }
   2067 
   2068 // CHECK-LABEL: test_veorq_u16
   2069 // CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2070 uint16x8_t test_veorq_u16(uint16x8_t a, uint16x8_t b) {
   2071   return veorq_u16(a, b);
   2072 }
   2073 
   2074 // CHECK-LABEL: test_veorq_u32
   2075 // CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2076 uint32x4_t test_veorq_u32(uint32x4_t a, uint32x4_t b) {
   2077   return veorq_u32(a, b);
   2078 }
   2079 
   2080 // CHECK-LABEL: test_veorq_u64
   2081 // CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2082 uint64x2_t test_veorq_u64(uint64x2_t a, uint64x2_t b) {
   2083   return veorq_u64(a, b);
   2084 }
   2085 
   2086 
   2087 // CHECK-LABEL: test_vext_s8
   2088 // CHECK: vext.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   2089 int8x8_t test_vext_s8(int8x8_t a, int8x8_t b) {
   2090   return vext_s8(a, b, 7);
   2091 }
   2092 
   2093 // CHECK-LABEL: test_vext_u8
   2094 // CHECK: vext.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   2095 uint8x8_t test_vext_u8(uint8x8_t a, uint8x8_t b) {
   2096   return vext_u8(a, b, 7);
   2097 }
   2098 
   2099 // CHECK-LABEL: test_vext_p8
   2100 // CHECK: vext.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   2101 poly8x8_t test_vext_p8(poly8x8_t a, poly8x8_t b) {
   2102   return vext_p8(a, b, 7);
   2103 }
   2104 
   2105 // CHECK-LABEL: test_vext_s16
   2106 // CHECK: vext.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   2107 int16x4_t test_vext_s16(int16x4_t a, int16x4_t b) {
   2108   return vext_s16(a, b, 3);
   2109 }
   2110 
   2111 // CHECK-LABEL: test_vext_u16
   2112 // CHECK: vext.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   2113 uint16x4_t test_vext_u16(uint16x4_t a, uint16x4_t b) {
   2114   return vext_u16(a, b, 3);
   2115 }
   2116 
   2117 // CHECK-LABEL: test_vext_p16
   2118 // CHECK: vext.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   2119 poly16x4_t test_vext_p16(poly16x4_t a, poly16x4_t b) {
   2120   return vext_p16(a, b, 3);
   2121 }
   2122 
   2123 // CHECK-LABEL: test_vext_s32
   2124 // CHECK: vext.32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   2125 int32x2_t test_vext_s32(int32x2_t a, int32x2_t b) {
   2126   return vext_s32(a, b, 1);
   2127 }
   2128 
   2129 // CHECK-LABEL: test_vext_u32
   2130 // CHECK: vext.32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   2131 uint32x2_t test_vext_u32(uint32x2_t a, uint32x2_t b) {
   2132   return vext_u32(a, b, 1);
   2133 }
   2134 
   2135 // CHECK-LABEL: test_vext_s64
   2136 int64x1_t test_vext_s64(int64x1_t a, int64x1_t b) {
   2137   return vext_s64(a, b, 0);
   2138 }
   2139 
   2140 // CHECK-LABEL: test_vext_u64
   2141 uint64x1_t test_vext_u64(uint64x1_t a, uint64x1_t b) {
   2142   return vext_u64(a, b, 0);
   2143 }
   2144 
   2145 // CHECK-LABEL: test_vext_f32
   2146 // CHECK: vext.32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   2147 float32x2_t test_vext_f32(float32x2_t a, float32x2_t b) {
   2148   return vext_f32(a, b, 1);
   2149 }
   2150 
   2151 // CHECK-LABEL: test_vextq_s8
   2152 // CHECK: vext.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   2153 int8x16_t test_vextq_s8(int8x16_t a, int8x16_t b) {
   2154   return vextq_s8(a, b, 15);
   2155 }
   2156 
   2157 // CHECK-LABEL: test_vextq_u8
   2158 // CHECK: vext.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   2159 uint8x16_t test_vextq_u8(uint8x16_t a, uint8x16_t b) {
   2160   return vextq_u8(a, b, 15);
   2161 }
   2162 
   2163 // CHECK-LABEL: test_vextq_p8
   2164 // CHECK: vext.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   2165 poly8x16_t test_vextq_p8(poly8x16_t a, poly8x16_t b) {
   2166   return vextq_p8(a, b, 15);
   2167 }
   2168 
   2169 // CHECK-LABEL: test_vextq_s16
   2170 // CHECK: vext.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   2171 int16x8_t test_vextq_s16(int16x8_t a, int16x8_t b) {
   2172   return vextq_s16(a, b, 7);
   2173 }
   2174 
   2175 // CHECK-LABEL: test_vextq_u16
   2176 // CHECK: vext.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   2177 uint16x8_t test_vextq_u16(uint16x8_t a, uint16x8_t b) {
   2178   return vextq_u16(a, b, 7);
   2179 }
   2180 
   2181 // CHECK-LABEL: test_vextq_p16
   2182 // CHECK: vext.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   2183 poly16x8_t test_vextq_p16(poly16x8_t a, poly16x8_t b) {
   2184   return vextq_p16(a, b, 7);
   2185 }
   2186 
   2187 // CHECK-LABEL: test_vextq_s32
   2188 // CHECK: vext.32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   2189 int32x4_t test_vextq_s32(int32x4_t a, int32x4_t b) {
   2190   return vextq_s32(a, b, 3);
   2191 }
   2192 
   2193 // CHECK-LABEL: test_vextq_u32
   2194 // CHECK: vext.32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   2195 uint32x4_t test_vextq_u32(uint32x4_t a, uint32x4_t b) {
   2196   return vextq_u32(a, b, 3);
   2197 }
   2198 
   2199 // CHECK-LABEL: test_vextq_s64
   2200 // CHECK: {{vmov|vdup}}
   2201 int64x2_t test_vextq_s64(int64x2_t a, int64x2_t b) {
   2202   return vextq_s64(a, b, 1);
   2203 }
   2204 
   2205 // CHECK-LABEL: test_vextq_u64
   2206 // CHECK: {{vmov|vdup}}
   2207 uint64x2_t test_vextq_u64(uint64x2_t a, uint64x2_t b) {
   2208   return vextq_u64(a, b, 1);
   2209 }
   2210 
   2211 // CHECK-LABEL: test_vextq_f32
   2212 // CHECK: vext.32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   2213 float32x4_t test_vextq_f32(float32x4_t a, float32x4_t b) {
   2214   return vextq_f32(a, b, 3);
   2215 }
   2216 
   2217 
   2218 // CHECK-LABEL: test_vfma_f32
   2219 // CHECK: vfma.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2220 float32x2_t test_vfma_f32(float32x2_t a, float32x2_t b, float32x2_t c) {
   2221   return vfma_f32(a, b, c);
   2222 }
   2223 
   2224 // CHECK-LABEL: test_vfmaq_f32
   2225 // CHECK: vfma.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2226 float32x4_t test_vfmaq_f32(float32x4_t a, float32x4_t b, float32x4_t c) {
   2227   return vfmaq_f32(a, b, c);
   2228 }
   2229 
   2230 
   2231 // CHECK-LABEL: test_vget_high_s8
   2232 int8x8_t test_vget_high_s8(int8x16_t a) {
   2233   return vget_high_s8(a);
   2234 }
   2235 
   2236 // CHECK-LABEL: test_vget_high_s16
   2237 int16x4_t test_vget_high_s16(int16x8_t a) {
   2238   return vget_high_s16(a);
   2239 }
   2240 
   2241 // CHECK-LABEL: test_vget_high_s32
   2242 int32x2_t test_vget_high_s32(int32x4_t a) {
   2243   return vget_high_s32(a);
   2244 }
   2245 
   2246 // CHECK-LABEL: test_vget_high_s64
   2247 int64x1_t test_vget_high_s64(int64x2_t a) {
   2248   return vget_high_s64(a);
   2249 }
   2250 
   2251 // CHECK-LABEL: test_vget_high_f16
   2252 float16x4_t test_vget_high_f16(float16x8_t a) {
   2253   return vget_high_f16(a);
   2254 }
   2255 
   2256 // CHECK-LABEL: test_vget_high_f32
   2257 float32x2_t test_vget_high_f32(float32x4_t a) {
   2258   return vget_high_f32(a);
   2259 }
   2260 
   2261 // CHECK-LABEL: test_vget_high_u8
   2262 uint8x8_t test_vget_high_u8(uint8x16_t a) {
   2263   return vget_high_u8(a);
   2264 }
   2265 
   2266 // CHECK-LABEL: test_vget_high_u16
   2267 uint16x4_t test_vget_high_u16(uint16x8_t a) {
   2268   return vget_high_u16(a);
   2269 }
   2270 
   2271 // CHECK-LABEL: test_vget_high_u32
   2272 uint32x2_t test_vget_high_u32(uint32x4_t a) {
   2273   return vget_high_u32(a);
   2274 }
   2275 
   2276 // CHECK-LABEL: test_vget_high_u64
   2277 uint64x1_t test_vget_high_u64(uint64x2_t a) {
   2278   return vget_high_u64(a);
   2279 }
   2280 
   2281 // CHECK-LABEL: test_vget_high_p8
   2282 poly8x8_t test_vget_high_p8(poly8x16_t a) {
   2283   return vget_high_p8(a);
   2284 }
   2285 
   2286 // CHECK-LABEL: test_vget_high_p16
   2287 poly16x4_t test_vget_high_p16(poly16x8_t a) {
   2288   return vget_high_p16(a);
   2289 }
   2290 
   2291 
   2292 // CHECK-LABEL: test_vget_lane_u8
   2293 // CHECK: vmov
   2294 uint8_t test_vget_lane_u8(uint8x8_t a) {
   2295   return vget_lane_u8(a, 7);
   2296 }
   2297 
   2298 // CHECK-LABEL: test_vget_lane_u16
   2299 // CHECK: vmov
   2300 uint16_t test_vget_lane_u16(uint16x4_t a) {
   2301   return vget_lane_u16(a, 3);
   2302 }
   2303 
   2304 // CHECK-LABEL: test_vget_lane_u32
   2305 // CHECK: vmov
   2306 uint32_t test_vget_lane_u32(uint32x2_t a) {
   2307   return vget_lane_u32(a, 1);
   2308 }
   2309 
   2310 // CHECK-LABEL: test_vget_lane_s8
   2311 // CHECK: vmov
   2312 int8_t test_vget_lane_s8(int8x8_t a) {
   2313   return vget_lane_s8(a, 7);
   2314 }
   2315 
   2316 // CHECK-LABEL: test_vget_lane_s16
   2317 // CHECK: vmov
   2318 int16_t test_vget_lane_s16(int16x4_t a) {
   2319   return vget_lane_s16(a, 3);
   2320 }
   2321 
   2322 // CHECK-LABEL: test_vget_lane_s32
   2323 // CHECK: vmov
   2324 int32_t test_vget_lane_s32(int32x2_t a) {
   2325   return vget_lane_s32(a, 1);
   2326 }
   2327 
   2328 // CHECK-LABEL: test_vget_lane_p8
   2329 // CHECK: vmov
   2330 poly8_t test_vget_lane_p8(poly8x8_t a) {
   2331   return vget_lane_p8(a, 7);
   2332 }
   2333 
   2334 // CHECK-LABEL: test_vget_lane_p16
   2335 // CHECK: vmov
   2336 poly16_t test_vget_lane_p16(poly16x4_t a) {
   2337   return vget_lane_p16(a, 3);
   2338 }
   2339 
   2340 // CHECK-LABEL: test_vget_lane_f32
   2341 // CHECK: vmov
   2342 float32_t test_vget_lane_f32(float32x2_t a) {
   2343   return vget_lane_f32(a, 1);
   2344 }
   2345 
   2346 // CHECK-LABEL: test_vgetq_lane_u8
   2347 // CHECK: vmov
   2348 uint8_t test_vgetq_lane_u8(uint8x16_t a) {
   2349   return vgetq_lane_u8(a, 15);
   2350 }
   2351 
   2352 // CHECK-LABEL: test_vgetq_lane_u16
   2353 // CHECK: vmov
   2354 uint16_t test_vgetq_lane_u16(uint16x8_t a) {
   2355   return vgetq_lane_u16(a, 7);
   2356 }
   2357 
   2358 // CHECK-LABEL: test_vgetq_lane_u32
   2359 // CHECK: vmov
   2360 uint32_t test_vgetq_lane_u32(uint32x4_t a) {
   2361   return vgetq_lane_u32(a, 3);
   2362 }
   2363 
   2364 // CHECK-LABEL: test_vgetq_lane_s8
   2365 // CHECK: vmov
   2366 int8_t test_vgetq_lane_s8(int8x16_t a) {
   2367   return vgetq_lane_s8(a, 15);
   2368 }
   2369 
   2370 // CHECK-LABEL: test_vgetq_lane_s16
   2371 // CHECK: vmov
   2372 int16_t test_vgetq_lane_s16(int16x8_t a) {
   2373   return vgetq_lane_s16(a, 7);
   2374 }
   2375 
   2376 // CHECK-LABEL: test_vgetq_lane_s32
   2377 // CHECK: vmov
   2378 int32_t test_vgetq_lane_s32(int32x4_t a) {
   2379   return vgetq_lane_s32(a, 3);
   2380 }
   2381 
   2382 // CHECK-LABEL: test_vgetq_lane_p8
   2383 // CHECK: vmov
   2384 poly8_t test_vgetq_lane_p8(poly8x16_t a) {
   2385   return vgetq_lane_p8(a, 15);
   2386 }
   2387 
   2388 // CHECK-LABEL: test_vgetq_lane_p16
   2389 // CHECK: vmov
   2390 poly16_t test_vgetq_lane_p16(poly16x8_t a) {
   2391   return vgetq_lane_p16(a, 7);
   2392 }
   2393 
   2394 // CHECK-LABEL: test_vgetq_lane_f32
   2395 // CHECK: vmov
   2396 float32_t test_vgetq_lane_f32(float32x4_t a) {
   2397   return vgetq_lane_f32(a, 3);
   2398 }
   2399 
   2400 // CHECK-LABEL: test_vget_lane_s64
   2401 // CHECK: vmov
   2402 int64_t test_vget_lane_s64(int64x1_t a) {
   2403   return vget_lane_s64(a, 0);
   2404 }
   2405 
   2406 // CHECK-LABEL: test_vget_lane_u64
   2407 // CHECK: vmov
   2408 uint64_t test_vget_lane_u64(uint64x1_t a) {
   2409   return vget_lane_u64(a, 0);
   2410 }
   2411 
   2412 // CHECK-LABEL: test_vgetq_lane_s64
   2413 // CHECK: vmov
   2414 int64_t test_vgetq_lane_s64(int64x2_t a) {
   2415   return vgetq_lane_s64(a, 1);
   2416 }
   2417 
   2418 // CHECK-LABEL: test_vgetq_lane_u64
   2419 // CHECK: vmov
   2420 uint64_t test_vgetq_lane_u64(uint64x2_t a) {
   2421   return vgetq_lane_u64(a, 1);
   2422 }
   2423 
   2424 
   2425 // CHECK-LABEL: test_vget_low_s8
   2426 int8x8_t test_vget_low_s8(int8x16_t a) {
   2427   return vget_low_s8(a);
   2428 }
   2429 
   2430 // CHECK-LABEL: test_vget_low_s16
   2431 int16x4_t test_vget_low_s16(int16x8_t a) {
   2432   return vget_low_s16(a);
   2433 }
   2434 
   2435 // CHECK-LABEL: test_vget_low_s32
   2436 int32x2_t test_vget_low_s32(int32x4_t a) {
   2437   return vget_low_s32(a);
   2438 }
   2439 
   2440 // CHECK-LABEL: test_vget_low_s64
   2441 int64x1_t test_vget_low_s64(int64x2_t a) {
   2442   return vget_low_s64(a);
   2443 }
   2444 
   2445 // CHECK-LABEL: test_vget_low_f16
   2446 float16x4_t test_vget_low_f16(float16x8_t a) {
   2447   return vget_low_f16(a);
   2448 }
   2449 
   2450 // CHECK-LABEL: test_vget_low_f32
   2451 float32x2_t test_vget_low_f32(float32x4_t a) {
   2452   return vget_low_f32(a);
   2453 }
   2454 
   2455 // CHECK-LABEL: test_vget_low_u8
   2456 uint8x8_t test_vget_low_u8(uint8x16_t a) {
   2457   return vget_low_u8(a);
   2458 }
   2459 
   2460 // CHECK-LABEL: test_vget_low_u16
   2461 uint16x4_t test_vget_low_u16(uint16x8_t a) {
   2462   return vget_low_u16(a);
   2463 }
   2464 
   2465 // CHECK-LABEL: test_vget_low_u32
   2466 uint32x2_t test_vget_low_u32(uint32x4_t a) {
   2467   return vget_low_u32(a);
   2468 }
   2469 
   2470 // CHECK-LABEL: test_vget_low_u64
   2471 uint64x1_t test_vget_low_u64(uint64x2_t a) {
   2472   return vget_low_u64(a);
   2473 }
   2474 
   2475 // CHECK-LABEL: test_vget_low_p8
   2476 poly8x8_t test_vget_low_p8(poly8x16_t a) {
   2477   return vget_low_p8(a);
   2478 }
   2479 
   2480 // CHECK-LABEL: test_vget_low_p16
   2481 poly16x4_t test_vget_low_p16(poly16x8_t a) {
   2482   return vget_low_p16(a);
   2483 }
   2484 
   2485 
   2486 // CHECK-LABEL: test_vhadd_s8
   2487 // CHECK: vhadd.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2488 int8x8_t test_vhadd_s8(int8x8_t a, int8x8_t b) {
   2489   return vhadd_s8(a, b);
   2490 }
   2491 
   2492 // CHECK-LABEL: test_vhadd_s16
   2493 // CHECK: vhadd.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2494 int16x4_t test_vhadd_s16(int16x4_t a, int16x4_t b) {
   2495   return vhadd_s16(a, b);
   2496 }
   2497 
   2498 // CHECK-LABEL: test_vhadd_s32
   2499 // CHECK: vhadd.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2500 int32x2_t test_vhadd_s32(int32x2_t a, int32x2_t b) {
   2501   return vhadd_s32(a, b);
   2502 }
   2503 
   2504 // CHECK-LABEL: test_vhadd_u8
   2505 // CHECK: vhadd.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2506 uint8x8_t test_vhadd_u8(uint8x8_t a, uint8x8_t b) {
   2507   return vhadd_u8(a, b);
   2508 }
   2509 
   2510 // CHECK-LABEL: test_vhadd_u16
   2511 // CHECK: vhadd.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2512 uint16x4_t test_vhadd_u16(uint16x4_t a, uint16x4_t b) {
   2513   return vhadd_u16(a, b);
   2514 }
   2515 
   2516 // CHECK-LABEL: test_vhadd_u32
   2517 // CHECK: vhadd.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2518 uint32x2_t test_vhadd_u32(uint32x2_t a, uint32x2_t b) {
   2519   return vhadd_u32(a, b);
   2520 }
   2521 
   2522 // CHECK-LABEL: test_vhaddq_s8
   2523 // CHECK: vhadd.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2524 int8x16_t test_vhaddq_s8(int8x16_t a, int8x16_t b) {
   2525   return vhaddq_s8(a, b);
   2526 }
   2527 
   2528 // CHECK-LABEL: test_vhaddq_s16
   2529 // CHECK: vhadd.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2530 int16x8_t test_vhaddq_s16(int16x8_t a, int16x8_t b) {
   2531   return vhaddq_s16(a, b);
   2532 }
   2533 
   2534 // CHECK-LABEL: test_vhaddq_s32
   2535 // CHECK: vhadd.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2536 int32x4_t test_vhaddq_s32(int32x4_t a, int32x4_t b) {
   2537   return vhaddq_s32(a, b);
   2538 }
   2539 
   2540 // CHECK-LABEL: test_vhaddq_u8
   2541 // CHECK: vhadd.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2542 uint8x16_t test_vhaddq_u8(uint8x16_t a, uint8x16_t b) {
   2543   return vhaddq_u8(a, b);
   2544 }
   2545 
   2546 // CHECK-LABEL: test_vhaddq_u16
   2547 // CHECK: vhadd.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2548 uint16x8_t test_vhaddq_u16(uint16x8_t a, uint16x8_t b) {
   2549   return vhaddq_u16(a, b);
   2550 }
   2551 
   2552 // CHECK-LABEL: test_vhaddq_u32
   2553 // CHECK: vhadd.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2554 uint32x4_t test_vhaddq_u32(uint32x4_t a, uint32x4_t b) {
   2555   return vhaddq_u32(a, b);
   2556 }
   2557 
   2558 
   2559 // CHECK-LABEL: test_vhsub_s8
   2560 // CHECK: vhsub.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2561 int8x8_t test_vhsub_s8(int8x8_t a, int8x8_t b) {
   2562   return vhsub_s8(a, b);
   2563 }
   2564 
   2565 // CHECK-LABEL: test_vhsub_s16
   2566 // CHECK: vhsub.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2567 int16x4_t test_vhsub_s16(int16x4_t a, int16x4_t b) {
   2568   return vhsub_s16(a, b);
   2569 }
   2570 
   2571 // CHECK-LABEL: test_vhsub_s32
   2572 // CHECK: vhsub.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2573 int32x2_t test_vhsub_s32(int32x2_t a, int32x2_t b) {
   2574   return vhsub_s32(a, b);
   2575 }
   2576 
   2577 // CHECK-LABEL: test_vhsub_u8
   2578 // CHECK: vhsub.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2579 uint8x8_t test_vhsub_u8(uint8x8_t a, uint8x8_t b) {
   2580   return vhsub_u8(a, b);
   2581 }
   2582 
   2583 // CHECK-LABEL: test_vhsub_u16
   2584 // CHECK: vhsub.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2585 uint16x4_t test_vhsub_u16(uint16x4_t a, uint16x4_t b) {
   2586   return vhsub_u16(a, b);
   2587 }
   2588 
   2589 // CHECK-LABEL: test_vhsub_u32
   2590 // CHECK: vhsub.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   2591 uint32x2_t test_vhsub_u32(uint32x2_t a, uint32x2_t b) {
   2592   return vhsub_u32(a, b);
   2593 }
   2594 
   2595 // CHECK-LABEL: test_vhsubq_s8
   2596 // CHECK: vhsub.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2597 int8x16_t test_vhsubq_s8(int8x16_t a, int8x16_t b) {
   2598   return vhsubq_s8(a, b);
   2599 }
   2600 
   2601 // CHECK-LABEL: test_vhsubq_s16
   2602 // CHECK: vhsub.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2603 int16x8_t test_vhsubq_s16(int16x8_t a, int16x8_t b) {
   2604   return vhsubq_s16(a, b);
   2605 }
   2606 
   2607 // CHECK-LABEL: test_vhsubq_s32
   2608 // CHECK: vhsub.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2609 int32x4_t test_vhsubq_s32(int32x4_t a, int32x4_t b) {
   2610   return vhsubq_s32(a, b);
   2611 }
   2612 
   2613 // CHECK-LABEL: test_vhsubq_u8
   2614 // CHECK: vhsub.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2615 uint8x16_t test_vhsubq_u8(uint8x16_t a, uint8x16_t b) {
   2616   return vhsubq_u8(a, b);
   2617 }
   2618 
   2619 // CHECK-LABEL: test_vhsubq_u16
   2620 // CHECK: vhsub.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2621 uint16x8_t test_vhsubq_u16(uint16x8_t a, uint16x8_t b) {
   2622   return vhsubq_u16(a, b);
   2623 }
   2624 
   2625 // CHECK-LABEL: test_vhsubq_u32
   2626 // CHECK: vhsub.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   2627 uint32x4_t test_vhsubq_u32(uint32x4_t a, uint32x4_t b) {
   2628   return vhsubq_u32(a, b);
   2629 }
   2630 
   2631 
   2632 // CHECK-LABEL: test_vld1q_u8
   2633 // CHECK: vld1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   2634 uint8x16_t test_vld1q_u8(uint8_t const * a) {
   2635   return vld1q_u8(a);
   2636 }
   2637 
   2638 // CHECK-LABEL: test_vld1q_u16
   2639 // CHECK: vld1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   2640 uint16x8_t test_vld1q_u16(uint16_t const * a) {
   2641   return vld1q_u16(a);
   2642 }
   2643 
   2644 // CHECK-LABEL: test_vld1q_u32
   2645 // CHECK: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   2646 uint32x4_t test_vld1q_u32(uint32_t const * a) {
   2647   return vld1q_u32(a);
   2648 }
   2649 
   2650 // CHECK-LABEL: test_vld1q_u64
   2651 // CHECK: vld1.64 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}{{(:64)?}}]
   2652 uint64x2_t test_vld1q_u64(uint64_t const * a) {
   2653   return vld1q_u64(a);
   2654 }
   2655 
   2656 // CHECK-LABEL: test_vld1q_s8
   2657 // CHECK: vld1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   2658 int8x16_t test_vld1q_s8(int8_t const * a) {
   2659   return vld1q_s8(a);
   2660 }
   2661 
   2662 // CHECK-LABEL: test_vld1q_s16
   2663 // CHECK: vld1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   2664 int16x8_t test_vld1q_s16(int16_t const * a) {
   2665   return vld1q_s16(a);
   2666 }
   2667 
   2668 // CHECK-LABEL: test_vld1q_s32
   2669 // CHECK: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   2670 int32x4_t test_vld1q_s32(int32_t const * a) {
   2671   return vld1q_s32(a);
   2672 }
   2673 
   2674 // CHECK-LABEL: test_vld1q_s64
   2675 // CHECK: vld1.64 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}{{(:64)?}}]
   2676 int64x2_t test_vld1q_s64(int64_t const * a) {
   2677   return vld1q_s64(a);
   2678 }
   2679 
   2680 // CHECK-LABEL: test_vld1q_f16
   2681 // CHECK: vld1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   2682 float16x8_t test_vld1q_f16(float16_t const * a) {
   2683   return vld1q_f16(a);
   2684 }
   2685 
   2686 // CHECK-LABEL: test_vld1q_f32
   2687 // CHECK: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   2688 float32x4_t test_vld1q_f32(float32_t const * a) {
   2689   return vld1q_f32(a);
   2690 }
   2691 
   2692 // CHECK-LABEL: test_vld1q_p8
   2693 // CHECK: vld1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   2694 poly8x16_t test_vld1q_p8(poly8_t const * a) {
   2695   return vld1q_p8(a);
   2696 }
   2697 
   2698 // CHECK-LABEL: test_vld1q_p16
   2699 // CHECK: vld1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   2700 poly16x8_t test_vld1q_p16(poly16_t const * a) {
   2701   return vld1q_p16(a);
   2702 }
   2703 
   2704 // CHECK-LABEL: test_vld1_u8
   2705 // CHECK: vld1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   2706 uint8x8_t test_vld1_u8(uint8_t const * a) {
   2707   return vld1_u8(a);
   2708 }
   2709 
   2710 // CHECK-LABEL: test_vld1_u16
   2711 // CHECK: vld1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   2712 uint16x4_t test_vld1_u16(uint16_t const * a) {
   2713   return vld1_u16(a);
   2714 }
   2715 
   2716 // CHECK-LABEL: test_vld1_u32
   2717 // CHECK: vld1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   2718 uint32x2_t test_vld1_u32(uint32_t const * a) {
   2719   return vld1_u32(a);
   2720 }
   2721 
   2722 // CHECK-LABEL: test_vld1_u64
   2723 // CHECK: vld1.64 {d{{[0-9]+}}}, [r{{[0-9]+}}{{(:64)?}}]
   2724 uint64x1_t test_vld1_u64(uint64_t const * a) {
   2725   return vld1_u64(a);
   2726 }
   2727 
   2728 // CHECK-LABEL: test_vld1_s8
   2729 // CHECK: vld1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   2730 int8x8_t test_vld1_s8(int8_t const * a) {
   2731   return vld1_s8(a);
   2732 }
   2733 
   2734 // CHECK-LABEL: test_vld1_s16
   2735 // CHECK: vld1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   2736 int16x4_t test_vld1_s16(int16_t const * a) {
   2737   return vld1_s16(a);
   2738 }
   2739 
   2740 // CHECK-LABEL: test_vld1_s32
   2741 // CHECK: vld1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   2742 int32x2_t test_vld1_s32(int32_t const * a) {
   2743   return vld1_s32(a);
   2744 }
   2745 
   2746 // CHECK-LABEL: test_vld1_s64
   2747 // CHECK: vld1.64 {d{{[0-9]+}}}, [r{{[0-9]+}}{{(:64)?}}]
   2748 int64x1_t test_vld1_s64(int64_t const * a) {
   2749   return vld1_s64(a);
   2750 }
   2751 
   2752 // CHECK-LABEL: test_vld1_f16
   2753 // CHECK: vld1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   2754 float16x4_t test_vld1_f16(float16_t const * a) {
   2755   return vld1_f16(a);
   2756 }
   2757 
   2758 // CHECK-LABEL: test_vld1_f32
   2759 // CHECK: vld1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   2760 float32x2_t test_vld1_f32(float32_t const * a) {
   2761   return vld1_f32(a);
   2762 }
   2763 
   2764 // CHECK-LABEL: test_vld1_p8
   2765 // CHECK: vld1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   2766 poly8x8_t test_vld1_p8(poly8_t const * a) {
   2767   return vld1_p8(a);
   2768 }
   2769 
   2770 // CHECK-LABEL: test_vld1_p16
   2771 // CHECK: vld1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   2772 poly16x4_t test_vld1_p16(poly16_t const * a) {
   2773   return vld1_p16(a);
   2774 }
   2775 
   2776 
   2777 // CHECK-LABEL: test_vld1q_dup_u8
   2778 // CHECK: vld1.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   2779 uint8x16_t test_vld1q_dup_u8(uint8_t const * a) {
   2780   return vld1q_dup_u8(a);
   2781 }
   2782 
   2783 // CHECK-LABEL: test_vld1q_dup_u16
   2784 // CHECK: vld1.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
   2785 uint16x8_t test_vld1q_dup_u16(uint16_t const * a) {
   2786   return vld1q_dup_u16(a);
   2787 }
   2788 
   2789 // CHECK-LABEL: test_vld1q_dup_u32
   2790 // CHECK: vld1.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
   2791 uint32x4_t test_vld1q_dup_u32(uint32_t const * a) {
   2792   return vld1q_dup_u32(a);
   2793 }
   2794 
   2795 // CHECK-LABEL: test_vld1q_dup_u64
   2796 // CHECK: {{ldr|vldr|vmov}}
   2797 uint64x2_t test_vld1q_dup_u64(uint64_t const * a) {
   2798   return vld1q_dup_u64(a);
   2799 }
   2800 
   2801 // CHECK-LABEL: test_vld1q_dup_s8
   2802 // CHECK: vld1.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   2803 int8x16_t test_vld1q_dup_s8(int8_t const * a) {
   2804   return vld1q_dup_s8(a);
   2805 }
   2806 
   2807 // CHECK-LABEL: test_vld1q_dup_s16
   2808 // CHECK: vld1.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
   2809 int16x8_t test_vld1q_dup_s16(int16_t const * a) {
   2810   return vld1q_dup_s16(a);
   2811 }
   2812 
   2813 // CHECK-LABEL: test_vld1q_dup_s32
   2814 // CHECK: vld1.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
   2815 int32x4_t test_vld1q_dup_s32(int32_t const * a) {
   2816   return vld1q_dup_s32(a);
   2817 }
   2818 
   2819 // CHECK-LABEL: test_vld1q_dup_s64
   2820 // CHECK: {{ldr|vldr|vmov}}
   2821 int64x2_t test_vld1q_dup_s64(int64_t const * a) {
   2822   return vld1q_dup_s64(a);
   2823 }
   2824 
   2825 // CHECK-LABEL: test_vld1q_dup_f16
   2826 // CHECK: vld1.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
   2827 float16x8_t test_vld1q_dup_f16(float16_t const * a) {
   2828   return vld1q_dup_f16(a);
   2829 }
   2830 
   2831 // CHECK-LABEL: test_vld1q_dup_f32
   2832 // CHECK: vld1.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
   2833 float32x4_t test_vld1q_dup_f32(float32_t const * a) {
   2834   return vld1q_dup_f32(a);
   2835 }
   2836 
   2837 // CHECK-LABEL: test_vld1q_dup_p8
   2838 // CHECK: vld1.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   2839 poly8x16_t test_vld1q_dup_p8(poly8_t const * a) {
   2840   return vld1q_dup_p8(a);
   2841 }
   2842 
   2843 // CHECK-LABEL: test_vld1q_dup_p16
   2844 // CHECK: vld1.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
   2845 poly16x8_t test_vld1q_dup_p16(poly16_t const * a) {
   2846   return vld1q_dup_p16(a);
   2847 }
   2848 
   2849 // CHECK-LABEL: test_vld1_dup_u8
   2850 // CHECK: vld1.8 {d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   2851 uint8x8_t test_vld1_dup_u8(uint8_t const * a) {
   2852   return vld1_dup_u8(a);
   2853 }
   2854 
   2855 // CHECK-LABEL: test_vld1_dup_u16
   2856 // CHECK: vld1.16 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
   2857 uint16x4_t test_vld1_dup_u16(uint16_t const * a) {
   2858   return vld1_dup_u16(a);
   2859 }
   2860 
   2861 // CHECK-LABEL: test_vld1_dup_u32
   2862 // CHECK: vld1.32 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
   2863 uint32x2_t test_vld1_dup_u32(uint32_t const * a) {
   2864   return vld1_dup_u32(a);
   2865 }
   2866 
   2867 // CHECK-LABEL: test_vld1_dup_u64
   2868 // CHECK: {{ldr|vldr|vmov}}
   2869 uint64x1_t test_vld1_dup_u64(uint64_t const * a) {
   2870   return vld1_dup_u64(a);
   2871 }
   2872 
   2873 // CHECK-LABEL: test_vld1_dup_s8
   2874 // CHECK: vld1.8 {d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   2875 int8x8_t test_vld1_dup_s8(int8_t const * a) {
   2876   return vld1_dup_s8(a);
   2877 }
   2878 
   2879 // CHECK-LABEL: test_vld1_dup_s16
   2880 // CHECK: vld1.16 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
   2881 int16x4_t test_vld1_dup_s16(int16_t const * a) {
   2882   return vld1_dup_s16(a);
   2883 }
   2884 
   2885 // CHECK-LABEL: test_vld1_dup_s32
   2886 // CHECK: vld1.32 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
   2887 int32x2_t test_vld1_dup_s32(int32_t const * a) {
   2888   return vld1_dup_s32(a);
   2889 }
   2890 
   2891 // CHECK-LABEL: test_vld1_dup_s64
   2892 // CHECK: {{ldr|vldr|vmov}}
   2893 int64x1_t test_vld1_dup_s64(int64_t const * a) {
   2894   return vld1_dup_s64(a);
   2895 }
   2896 
   2897 // CHECK-LABEL: test_vld1_dup_f16
   2898 // CHECK: vld1.16 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
   2899 float16x4_t test_vld1_dup_f16(float16_t const * a) {
   2900   return vld1_dup_f16(a);
   2901 }
   2902 
   2903 // CHECK-LABEL: test_vld1_dup_f32
   2904 // CHECK: vld1.32 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
   2905 float32x2_t test_vld1_dup_f32(float32_t const * a) {
   2906   return vld1_dup_f32(a);
   2907 }
   2908 
   2909 // CHECK-LABEL: test_vld1_dup_p8
   2910 // CHECK: vld1.8 {d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   2911 poly8x8_t test_vld1_dup_p8(poly8_t const * a) {
   2912   return vld1_dup_p8(a);
   2913 }
   2914 
   2915 // CHECK-LABEL: test_vld1_dup_p16
   2916 // CHECK: vld1.16 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
   2917 poly16x4_t test_vld1_dup_p16(poly16_t const * a) {
   2918   return vld1_dup_p16(a);
   2919 }
   2920 
   2921 
   2922 // CHECK-LABEL: test_vld1q_lane_u8
   2923 // CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   2924 uint8x16_t test_vld1q_lane_u8(uint8_t const * a, uint8x16_t b) {
   2925   return vld1q_lane_u8(a, b, 15);
   2926 }
   2927 
   2928 // CHECK-LABEL: test_vld1q_lane_u16
   2929 // CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   2930 uint16x8_t test_vld1q_lane_u16(uint16_t const * a, uint16x8_t b) {
   2931   return vld1q_lane_u16(a, b, 7);
   2932 }
   2933 
   2934 // CHECK-LABEL: test_vld1q_lane_u32
   2935 // CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   2936 uint32x4_t test_vld1q_lane_u32(uint32_t const * a, uint32x4_t b) {
   2937   return vld1q_lane_u32(a, b, 3);
   2938 }
   2939 
   2940 // CHECK-LABEL: test_vld1q_lane_u64
   2941 // CHECK: {{ldr|vldr|vmov}}
   2942 uint64x2_t test_vld1q_lane_u64(uint64_t const * a, uint64x2_t b) {
   2943   return vld1q_lane_u64(a, b, 1);
   2944 }
   2945 
   2946 // CHECK-LABEL: test_vld1q_lane_s8
   2947 // CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   2948 int8x16_t test_vld1q_lane_s8(int8_t const * a, int8x16_t b) {
   2949   return vld1q_lane_s8(a, b, 15);
   2950 }
   2951 
   2952 // CHECK-LABEL: test_vld1q_lane_s16
   2953 // CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   2954 int16x8_t test_vld1q_lane_s16(int16_t const * a, int16x8_t b) {
   2955   return vld1q_lane_s16(a, b, 7);
   2956 }
   2957 
   2958 // CHECK-LABEL: test_vld1q_lane_s32
   2959 // CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   2960 int32x4_t test_vld1q_lane_s32(int32_t const * a, int32x4_t b) {
   2961   return vld1q_lane_s32(a, b, 3);
   2962 }
   2963 
   2964 // CHECK-LABEL: test_vld1q_lane_s64
   2965 // CHECK: {{ldr|vldr|vmov}}
   2966 int64x2_t test_vld1q_lane_s64(int64_t const * a, int64x2_t b) {
   2967   return vld1q_lane_s64(a, b, 1);
   2968 }
   2969 
   2970 // CHECK-LABEL: test_vld1q_lane_f16
   2971 // CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   2972 float16x8_t test_vld1q_lane_f16(float16_t const * a, float16x8_t b) {
   2973   return vld1q_lane_f16(a, b, 7);
   2974 }
   2975 
   2976 // CHECK-LABEL: test_vld1q_lane_f32
   2977 // CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   2978 float32x4_t test_vld1q_lane_f32(float32_t const * a, float32x4_t b) {
   2979   return vld1q_lane_f32(a, b, 3);
   2980 }
   2981 
   2982 // CHECK-LABEL: test_vld1q_lane_p8
   2983 // CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   2984 poly8x16_t test_vld1q_lane_p8(poly8_t const * a, poly8x16_t b) {
   2985   return vld1q_lane_p8(a, b, 15);
   2986 }
   2987 
   2988 // CHECK-LABEL: test_vld1q_lane_p16
   2989 // CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   2990 poly16x8_t test_vld1q_lane_p16(poly16_t const * a, poly16x8_t b) {
   2991   return vld1q_lane_p16(a, b, 7);
   2992 }
   2993 
   2994 // CHECK-LABEL: test_vld1_lane_u8
   2995 // CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   2996 uint8x8_t test_vld1_lane_u8(uint8_t const * a, uint8x8_t b) {
   2997   return vld1_lane_u8(a, b, 7);
   2998 }
   2999 
   3000 // CHECK-LABEL: test_vld1_lane_u16
   3001 // CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   3002 uint16x4_t test_vld1_lane_u16(uint16_t const * a, uint16x4_t b) {
   3003   return vld1_lane_u16(a, b, 3);
   3004 }
   3005 
   3006 // CHECK-LABEL: test_vld1_lane_u32
   3007 // CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   3008 uint32x2_t test_vld1_lane_u32(uint32_t const * a, uint32x2_t b) {
   3009   return vld1_lane_u32(a, b, 1);
   3010 }
   3011 
   3012 // CHECK-LABEL: test_vld1_lane_u64
   3013 // CHECK: {{ldr|vldr|vmov}}
   3014 uint64x1_t test_vld1_lane_u64(uint64_t const * a, uint64x1_t b) {
   3015   return vld1_lane_u64(a, b, 0);
   3016 }
   3017 
   3018 // CHECK-LABEL: test_vld1_lane_s8
   3019 // CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3020 int8x8_t test_vld1_lane_s8(int8_t const * a, int8x8_t b) {
   3021   return vld1_lane_s8(a, b, 7);
   3022 }
   3023 
   3024 // CHECK-LABEL: test_vld1_lane_s16
   3025 // CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   3026 int16x4_t test_vld1_lane_s16(int16_t const * a, int16x4_t b) {
   3027   return vld1_lane_s16(a, b, 3);
   3028 }
   3029 
   3030 // CHECK-LABEL: test_vld1_lane_s32
   3031 // CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   3032 int32x2_t test_vld1_lane_s32(int32_t const * a, int32x2_t b) {
   3033   return vld1_lane_s32(a, b, 1);
   3034 }
   3035 
   3036 // CHECK-LABEL: test_vld1_lane_s64
   3037 // CHECK: {{ldr|vldr|vmov}}
   3038 int64x1_t test_vld1_lane_s64(int64_t const * a, int64x1_t b) {
   3039   return vld1_lane_s64(a, b, 0);
   3040 }
   3041 
   3042 // CHECK-LABEL: test_vld1_lane_f16
   3043 // CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   3044 float16x4_t test_vld1_lane_f16(float16_t const * a, float16x4_t b) {
   3045   return vld1_lane_f16(a, b, 3);
   3046 }
   3047 
   3048 // CHECK-LABEL: test_vld1_lane_f32
   3049 // CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   3050 float32x2_t test_vld1_lane_f32(float32_t const * a, float32x2_t b) {
   3051   return vld1_lane_f32(a, b, 1);
   3052 }
   3053 
   3054 // CHECK-LABEL: test_vld1_lane_p8
   3055 // CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3056 poly8x8_t test_vld1_lane_p8(poly8_t const * a, poly8x8_t b) {
   3057   return vld1_lane_p8(a, b, 7);
   3058 }
   3059 
   3060 // CHECK-LABEL: test_vld1_lane_p16
   3061 // CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   3062 poly16x4_t test_vld1_lane_p16(poly16_t const * a, poly16x4_t b) {
   3063   return vld1_lane_p16(a, b, 3);
   3064 }
   3065 
   3066 
   3067 // CHECK-LABEL: test_vld2q_u8
   3068 // CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3069 uint8x16x2_t test_vld2q_u8(uint8_t const * a) {
   3070   return vld2q_u8(a);
   3071 }
   3072 
   3073 // CHECK-LABEL: test_vld2q_u16
   3074 // CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3075 uint16x8x2_t test_vld2q_u16(uint16_t const * a) {
   3076   return vld2q_u16(a);
   3077 }
   3078 
   3079 // CHECK-LABEL: test_vld2q_u32
   3080 // CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3081 uint32x4x2_t test_vld2q_u32(uint32_t const * a) {
   3082   return vld2q_u32(a);
   3083 }
   3084 
   3085 // CHECK-LABEL: test_vld2q_s8
   3086 // CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3087 int8x16x2_t test_vld2q_s8(int8_t const * a) {
   3088   return vld2q_s8(a);
   3089 }
   3090 
   3091 // CHECK-LABEL: test_vld2q_s16
   3092 // CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3093 int16x8x2_t test_vld2q_s16(int16_t const * a) {
   3094   return vld2q_s16(a);
   3095 }
   3096 
   3097 // CHECK-LABEL: test_vld2q_s32
   3098 // CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3099 int32x4x2_t test_vld2q_s32(int32_t const * a) {
   3100   return vld2q_s32(a);
   3101 }
   3102 
   3103 // CHECK-LABEL: test_vld2q_f16
   3104 // CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3105 float16x8x2_t test_vld2q_f16(float16_t const * a) {
   3106   return vld2q_f16(a);
   3107 }
   3108 
   3109 // CHECK-LABEL: test_vld2q_f32
   3110 // CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3111 float32x4x2_t test_vld2q_f32(float32_t const * a) {
   3112   return vld2q_f32(a);
   3113 }
   3114 
   3115 // CHECK-LABEL: test_vld2q_p8
   3116 // CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3117 poly8x16x2_t test_vld2q_p8(poly8_t const * a) {
   3118   return vld2q_p8(a);
   3119 }
   3120 
   3121 // CHECK-LABEL: test_vld2q_p16
   3122 // CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3123 poly16x8x2_t test_vld2q_p16(poly16_t const * a) {
   3124   return vld2q_p16(a);
   3125 }
   3126 
   3127 // CHECK-LABEL: test_vld2_u8
   3128 // CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3129 uint8x8x2_t test_vld2_u8(uint8_t const * a) {
   3130   return vld2_u8(a);
   3131 }
   3132 
   3133 // CHECK-LABEL: test_vld2_u16
   3134 // CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3135 uint16x4x2_t test_vld2_u16(uint16_t const * a) {
   3136   return vld2_u16(a);
   3137 }
   3138 
   3139 // CHECK-LABEL: test_vld2_u32
   3140 // CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3141 uint32x2x2_t test_vld2_u32(uint32_t const * a) {
   3142   return vld2_u32(a);
   3143 }
   3144 
   3145 // CHECK-LABEL: test_vld2_u64
   3146 // CHECK: vld1.64
   3147 uint64x1x2_t test_vld2_u64(uint64_t const * a) {
   3148   return vld2_u64(a);
   3149 }
   3150 
   3151 // CHECK-LABEL: test_vld2_s8
   3152 // CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3153 int8x8x2_t test_vld2_s8(int8_t const * a) {
   3154   return vld2_s8(a);
   3155 }
   3156 
   3157 // CHECK-LABEL: test_vld2_s16
   3158 // CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3159 int16x4x2_t test_vld2_s16(int16_t const * a) {
   3160   return vld2_s16(a);
   3161 }
   3162 
   3163 // CHECK-LABEL: test_vld2_s32
   3164 // CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3165 int32x2x2_t test_vld2_s32(int32_t const * a) {
   3166   return vld2_s32(a);
   3167 }
   3168 
   3169 // CHECK-LABEL: test_vld2_s64
   3170 // CHECK: vld1.64
   3171 int64x1x2_t test_vld2_s64(int64_t const * a) {
   3172   return vld2_s64(a);
   3173 }
   3174 
   3175 // CHECK-LABEL: test_vld2_f16
   3176 // CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3177 float16x4x2_t test_vld2_f16(float16_t const * a) {
   3178   return vld2_f16(a);
   3179 }
   3180 
   3181 // CHECK-LABEL: test_vld2_f32
   3182 // CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3183 float32x2x2_t test_vld2_f32(float32_t const * a) {
   3184   return vld2_f32(a);
   3185 }
   3186 
   3187 // CHECK-LABEL: test_vld2_p8
   3188 // CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3189 poly8x8x2_t test_vld2_p8(poly8_t const * a) {
   3190   return vld2_p8(a);
   3191 }
   3192 
   3193 // CHECK-LABEL: test_vld2_p16
   3194 // CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3195 poly16x4x2_t test_vld2_p16(poly16_t const * a) {
   3196   return vld2_p16(a);
   3197 }
   3198 
   3199 
   3200 // CHECK-LABEL: test_vld2_dup_u8
   3201 // CHECK: vld2.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3202 uint8x8x2_t test_vld2_dup_u8(uint8_t const * a) {
   3203   return vld2_dup_u8(a);
   3204 }
   3205 
   3206 // CHECK-LABEL: test_vld2_dup_u16
   3207 // CHECK: vld2.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3208 uint16x4x2_t test_vld2_dup_u16(uint16_t const * a) {
   3209   return vld2_dup_u16(a);
   3210 }
   3211 
   3212 // CHECK-LABEL: test_vld2_dup_u32
   3213 // CHECK: vld2.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3214 uint32x2x2_t test_vld2_dup_u32(uint32_t const * a) {
   3215   return vld2_dup_u32(a);
   3216 }
   3217 
   3218 // CHECK-LABEL: test_vld2_dup_u64
   3219 // CHECK: vld1.64
   3220 uint64x1x2_t test_vld2_dup_u64(uint64_t const * a) {
   3221   return vld2_dup_u64(a);
   3222 }
   3223 
   3224 // CHECK-LABEL: test_vld2_dup_s8
   3225 // CHECK: vld2.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3226 int8x8x2_t test_vld2_dup_s8(int8_t const * a) {
   3227   return vld2_dup_s8(a);
   3228 }
   3229 
   3230 // CHECK-LABEL: test_vld2_dup_s16
   3231 // CHECK: vld2.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3232 int16x4x2_t test_vld2_dup_s16(int16_t const * a) {
   3233   return vld2_dup_s16(a);
   3234 }
   3235 
   3236 // CHECK-LABEL: test_vld2_dup_s32
   3237 // CHECK: vld2.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3238 int32x2x2_t test_vld2_dup_s32(int32_t const * a) {
   3239   return vld2_dup_s32(a);
   3240 }
   3241 
   3242 // CHECK-LABEL: test_vld2_dup_s64
   3243 // CHECK: vld1.64
   3244 int64x1x2_t test_vld2_dup_s64(int64_t const * a) {
   3245   return vld2_dup_s64(a);
   3246 }
   3247 
   3248 // CHECK-LABEL: test_vld2_dup_f16
   3249 // CHECK: vld2.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3250 float16x4x2_t test_vld2_dup_f16(float16_t const * a) {
   3251   return vld2_dup_f16(a);
   3252 }
   3253 
   3254 // CHECK-LABEL: test_vld2_dup_f32
   3255 // CHECK: vld2.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3256 float32x2x2_t test_vld2_dup_f32(float32_t const * a) {
   3257   return vld2_dup_f32(a);
   3258 }
   3259 
   3260 // CHECK-LABEL: test_vld2_dup_p8
   3261 // CHECK: vld2.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3262 poly8x8x2_t test_vld2_dup_p8(poly8_t const * a) {
   3263   return vld2_dup_p8(a);
   3264 }
   3265 
   3266 // CHECK-LABEL: test_vld2_dup_p16
   3267 // CHECK: vld2.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3268 poly16x4x2_t test_vld2_dup_p16(poly16_t const * a) {
   3269   return vld2_dup_p16(a);
   3270 }
   3271 
   3272 
   3273 // CHECK-LABEL: test_vld2q_lane_u16
   3274 // CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3275 uint16x8x2_t test_vld2q_lane_u16(uint16_t const * a, uint16x8x2_t b) {
   3276   return vld2q_lane_u16(a, b, 7);
   3277 }
   3278 
   3279 // CHECK-LABEL: test_vld2q_lane_u32
   3280 // CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3281 uint32x4x2_t test_vld2q_lane_u32(uint32_t const * a, uint32x4x2_t b) {
   3282   return vld2q_lane_u32(a, b, 3);
   3283 }
   3284 
   3285 // CHECK-LABEL: test_vld2q_lane_s16
   3286 // CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3287 int16x8x2_t test_vld2q_lane_s16(int16_t const * a, int16x8x2_t b) {
   3288   return vld2q_lane_s16(a, b, 7);
   3289 }
   3290 
   3291 // CHECK-LABEL: test_vld2q_lane_s32
   3292 // CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3293 int32x4x2_t test_vld2q_lane_s32(int32_t const * a, int32x4x2_t b) {
   3294   return vld2q_lane_s32(a, b, 3);
   3295 }
   3296 
   3297 // CHECK-LABEL: test_vld2q_lane_f16
   3298 // CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3299 float16x8x2_t test_vld2q_lane_f16(float16_t const * a, float16x8x2_t b) {
   3300   return vld2q_lane_f16(a, b, 7);
   3301 }
   3302 
   3303 // CHECK-LABEL: test_vld2q_lane_f32
   3304 // CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3305 float32x4x2_t test_vld2q_lane_f32(float32_t const * a, float32x4x2_t b) {
   3306   return vld2q_lane_f32(a, b, 3);
   3307 }
   3308 
   3309 // CHECK-LABEL: test_vld2q_lane_p16
   3310 // CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3311 poly16x8x2_t test_vld2q_lane_p16(poly16_t const * a, poly16x8x2_t b) {
   3312   return vld2q_lane_p16(a, b, 7);
   3313 }
   3314 
   3315 // CHECK-LABEL: test_vld2_lane_u8
   3316 // CHECK: vld2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3317 uint8x8x2_t test_vld2_lane_u8(uint8_t const * a, uint8x8x2_t b) {
   3318   return vld2_lane_u8(a, b, 7);
   3319 }
   3320 
   3321 // CHECK-LABEL: test_vld2_lane_u16
   3322 // CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3323 uint16x4x2_t test_vld2_lane_u16(uint16_t const * a, uint16x4x2_t b) {
   3324   return vld2_lane_u16(a, b, 3);
   3325 }
   3326 
   3327 // CHECK-LABEL: test_vld2_lane_u32
   3328 // CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3329 uint32x2x2_t test_vld2_lane_u32(uint32_t const * a, uint32x2x2_t b) {
   3330   return vld2_lane_u32(a, b, 1);
   3331 }
   3332 
   3333 // CHECK-LABEL: test_vld2_lane_s8
   3334 // CHECK: vld2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3335 int8x8x2_t test_vld2_lane_s8(int8_t const * a, int8x8x2_t b) {
   3336   return vld2_lane_s8(a, b, 7);
   3337 }
   3338 
   3339 // CHECK-LABEL: test_vld2_lane_s16
   3340 // CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3341 int16x4x2_t test_vld2_lane_s16(int16_t const * a, int16x4x2_t b) {
   3342   return vld2_lane_s16(a, b, 3);
   3343 }
   3344 
   3345 // CHECK-LABEL: test_vld2_lane_s32
   3346 // CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3347 int32x2x2_t test_vld2_lane_s32(int32_t const * a, int32x2x2_t b) {
   3348   return vld2_lane_s32(a, b, 1);
   3349 }
   3350 
   3351 // CHECK-LABEL: test_vld2_lane_f16
   3352 // CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3353 float16x4x2_t test_vld2_lane_f16(float16_t const * a, float16x4x2_t b) {
   3354   return vld2_lane_f16(a, b, 3);
   3355 }
   3356 
   3357 // CHECK-LABEL: test_vld2_lane_f32
   3358 // CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3359 float32x2x2_t test_vld2_lane_f32(float32_t const * a, float32x2x2_t b) {
   3360   return vld2_lane_f32(a, b, 1);
   3361 }
   3362 
   3363 // CHECK-LABEL: test_vld2_lane_p8
   3364 // CHECK: vld2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3365 poly8x8x2_t test_vld2_lane_p8(poly8_t const * a, poly8x8x2_t b) {
   3366   return vld2_lane_p8(a, b, 7);
   3367 }
   3368 
   3369 // CHECK-LABEL: test_vld2_lane_p16
   3370 // CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3371 poly16x4x2_t test_vld2_lane_p16(poly16_t const * a, poly16x4x2_t b) {
   3372   return vld2_lane_p16(a, b, 3);
   3373 }
   3374 
   3375 
   3376 // CHECK-LABEL: test_vld3q_u8
   3377 // CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3378 uint8x16x3_t test_vld3q_u8(uint8_t const * a) {
   3379   return vld3q_u8(a);
   3380 }
   3381 
   3382 // CHECK-LABEL: test_vld3q_u16
   3383 // CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3384 uint16x8x3_t test_vld3q_u16(uint16_t const * a) {
   3385   return vld3q_u16(a);
   3386 }
   3387 
   3388 // CHECK-LABEL: test_vld3q_u32
   3389 // CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3390 uint32x4x3_t test_vld3q_u32(uint32_t const * a) {
   3391   return vld3q_u32(a);
   3392 }
   3393 
   3394 // CHECK-LABEL: test_vld3q_s8
   3395 // CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3396 int8x16x3_t test_vld3q_s8(int8_t const * a) {
   3397   return vld3q_s8(a);
   3398 }
   3399 
   3400 // CHECK-LABEL: test_vld3q_s16
   3401 // CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3402 int16x8x3_t test_vld3q_s16(int16_t const * a) {
   3403   return vld3q_s16(a);
   3404 }
   3405 
   3406 // CHECK-LABEL: test_vld3q_s32
   3407 // CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3408 int32x4x3_t test_vld3q_s32(int32_t const * a) {
   3409   return vld3q_s32(a);
   3410 }
   3411 
   3412 // CHECK-LABEL: test_vld3q_f16
   3413 // CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3414 float16x8x3_t test_vld3q_f16(float16_t const * a) {
   3415   return vld3q_f16(a);
   3416 }
   3417 
   3418 // CHECK-LABEL: test_vld3q_f32
   3419 // CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3420 float32x4x3_t test_vld3q_f32(float32_t const * a) {
   3421   return vld3q_f32(a);
   3422 }
   3423 
   3424 // CHECK-LABEL: test_vld3q_p8
   3425 // CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3426 poly8x16x3_t test_vld3q_p8(poly8_t const * a) {
   3427   return vld3q_p8(a);
   3428 }
   3429 
   3430 // CHECK-LABEL: test_vld3q_p16
   3431 // CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3432 poly16x8x3_t test_vld3q_p16(poly16_t const * a) {
   3433   return vld3q_p16(a);
   3434 }
   3435 
   3436 // CHECK-LABEL: test_vld3_u8
   3437 // CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3438 uint8x8x3_t test_vld3_u8(uint8_t const * a) {
   3439   return vld3_u8(a);
   3440 }
   3441 
   3442 // CHECK-LABEL: test_vld3_u16
   3443 // CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3444 uint16x4x3_t test_vld3_u16(uint16_t const * a) {
   3445   return vld3_u16(a);
   3446 }
   3447 
   3448 // CHECK-LABEL: test_vld3_u32
   3449 // CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3450 uint32x2x3_t test_vld3_u32(uint32_t const * a) {
   3451   return vld3_u32(a);
   3452 }
   3453 
   3454 // CHECK-LABEL: test_vld3_u64
   3455 // CHECK: vld1.64
   3456 uint64x1x3_t test_vld3_u64(uint64_t const * a) {
   3457   return vld3_u64(a);
   3458 }
   3459 
   3460 // CHECK-LABEL: test_vld3_s8
   3461 // CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3462 int8x8x3_t test_vld3_s8(int8_t const * a) {
   3463   return vld3_s8(a);
   3464 }
   3465 
   3466 // CHECK-LABEL: test_vld3_s16
   3467 // CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3468 int16x4x3_t test_vld3_s16(int16_t const * a) {
   3469   return vld3_s16(a);
   3470 }
   3471 
   3472 // CHECK-LABEL: test_vld3_s32
   3473 // CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3474 int32x2x3_t test_vld3_s32(int32_t const * a) {
   3475   return vld3_s32(a);
   3476 }
   3477 
   3478 // CHECK-LABEL: test_vld3_s64
   3479 // CHECK: vld1.64
   3480 int64x1x3_t test_vld3_s64(int64_t const * a) {
   3481   return vld3_s64(a);
   3482 }
   3483 
   3484 // CHECK-LABEL: test_vld3_f16
   3485 // CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3486 float16x4x3_t test_vld3_f16(float16_t const * a) {
   3487   return vld3_f16(a);
   3488 }
   3489 
   3490 // CHECK-LABEL: test_vld3_f32
   3491 // CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3492 float32x2x3_t test_vld3_f32(float32_t const * a) {
   3493   return vld3_f32(a);
   3494 }
   3495 
   3496 // CHECK-LABEL: test_vld3_p8
   3497 // CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3498 poly8x8x3_t test_vld3_p8(poly8_t const * a) {
   3499   return vld3_p8(a);
   3500 }
   3501 
   3502 // CHECK-LABEL: test_vld3_p16
   3503 // CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3504 poly16x4x3_t test_vld3_p16(poly16_t const * a) {
   3505   return vld3_p16(a);
   3506 }
   3507 
   3508 
   3509 // CHECK-LABEL: test_vld3_dup_u8
   3510 // CHECK: vld3.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3511 uint8x8x3_t test_vld3_dup_u8(uint8_t const * a) {
   3512   return vld3_dup_u8(a);
   3513 }
   3514 
   3515 // CHECK-LABEL: test_vld3_dup_u16
   3516 // CHECK: vld3.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3517 uint16x4x3_t test_vld3_dup_u16(uint16_t const * a) {
   3518   return vld3_dup_u16(a);
   3519 }
   3520 
   3521 // CHECK-LABEL: test_vld3_dup_u32
   3522 // CHECK: vld3.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3523 uint32x2x3_t test_vld3_dup_u32(uint32_t const * a) {
   3524   return vld3_dup_u32(a);
   3525 }
   3526 
   3527 // CHECK-LABEL: test_vld3_dup_u64
   3528 // CHECK: vld1.64
   3529 uint64x1x3_t test_vld3_dup_u64(uint64_t const * a) {
   3530   return vld3_dup_u64(a);
   3531 }
   3532 
   3533 // CHECK-LABEL: test_vld3_dup_s8
   3534 // CHECK: vld3.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3535 int8x8x3_t test_vld3_dup_s8(int8_t const * a) {
   3536   return vld3_dup_s8(a);
   3537 }
   3538 
   3539 // CHECK-LABEL: test_vld3_dup_s16
   3540 // CHECK: vld3.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3541 int16x4x3_t test_vld3_dup_s16(int16_t const * a) {
   3542   return vld3_dup_s16(a);
   3543 }
   3544 
   3545 // CHECK-LABEL: test_vld3_dup_s32
   3546 // CHECK: vld3.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3547 int32x2x3_t test_vld3_dup_s32(int32_t const * a) {
   3548   return vld3_dup_s32(a);
   3549 }
   3550 
   3551 // CHECK-LABEL: test_vld3_dup_s64
   3552 // CHECK: vld1.64
   3553 int64x1x3_t test_vld3_dup_s64(int64_t const * a) {
   3554   return vld3_dup_s64(a);
   3555 }
   3556 
   3557 // CHECK-LABEL: test_vld3_dup_f16
   3558 // CHECK: vld3.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3559 float16x4x3_t test_vld3_dup_f16(float16_t const * a) {
   3560   return vld3_dup_f16(a);
   3561 }
   3562 
   3563 // CHECK-LABEL: test_vld3_dup_f32
   3564 // CHECK: vld3.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3565 float32x2x3_t test_vld3_dup_f32(float32_t const * a) {
   3566   return vld3_dup_f32(a);
   3567 }
   3568 
   3569 // CHECK-LABEL: test_vld3_dup_p8
   3570 // CHECK: vld3.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3571 poly8x8x3_t test_vld3_dup_p8(poly8_t const * a) {
   3572   return vld3_dup_p8(a);
   3573 }
   3574 
   3575 // CHECK-LABEL: test_vld3_dup_p16
   3576 // CHECK: vld3.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3577 poly16x4x3_t test_vld3_dup_p16(poly16_t const * a) {
   3578   return vld3_dup_p16(a);
   3579 }
   3580 
   3581 
   3582 // CHECK-LABEL: test_vld3q_lane_u16
   3583 // CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3584 uint16x8x3_t test_vld3q_lane_u16(uint16_t const * a, uint16x8x3_t b) {
   3585   return vld3q_lane_u16(a, b, 7);
   3586 }
   3587 
   3588 // CHECK-LABEL: test_vld3q_lane_u32
   3589 // CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3590 uint32x4x3_t test_vld3q_lane_u32(uint32_t const * a, uint32x4x3_t b) {
   3591   return vld3q_lane_u32(a, b, 3);
   3592 }
   3593 
   3594 // CHECK-LABEL: test_vld3q_lane_s16
   3595 // CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3596 int16x8x3_t test_vld3q_lane_s16(int16_t const * a, int16x8x3_t b) {
   3597   return vld3q_lane_s16(a, b, 7);
   3598 }
   3599 
   3600 // CHECK-LABEL: test_vld3q_lane_s32
   3601 // CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3602 int32x4x3_t test_vld3q_lane_s32(int32_t const * a, int32x4x3_t b) {
   3603   return vld3q_lane_s32(a, b, 3);
   3604 }
   3605 
   3606 // CHECK-LABEL: test_vld3q_lane_f16
   3607 // CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3608 float16x8x3_t test_vld3q_lane_f16(float16_t const * a, float16x8x3_t b) {
   3609   return vld3q_lane_f16(a, b, 7);
   3610 }
   3611 
   3612 // CHECK-LABEL: test_vld3q_lane_f32
   3613 // CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3614 float32x4x3_t test_vld3q_lane_f32(float32_t const * a, float32x4x3_t b) {
   3615   return vld3q_lane_f32(a, b, 3);
   3616 }
   3617 
   3618 // CHECK-LABEL: test_vld3q_lane_p16
   3619 // CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3620 poly16x8x3_t test_vld3q_lane_p16(poly16_t const * a, poly16x8x3_t b) {
   3621   return vld3q_lane_p16(a, b, 7);
   3622 }
   3623 
   3624 // CHECK-LABEL: test_vld3_lane_u8
   3625 // CHECK: vld3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3626 uint8x8x3_t test_vld3_lane_u8(uint8_t const * a, uint8x8x3_t b) {
   3627   return vld3_lane_u8(a, b, 7);
   3628 }
   3629 
   3630 // CHECK-LABEL: test_vld3_lane_u16
   3631 // CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3632 uint16x4x3_t test_vld3_lane_u16(uint16_t const * a, uint16x4x3_t b) {
   3633   return vld3_lane_u16(a, b, 3);
   3634 }
   3635 
   3636 // CHECK-LABEL: test_vld3_lane_u32
   3637 // CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3638 uint32x2x3_t test_vld3_lane_u32(uint32_t const * a, uint32x2x3_t b) {
   3639   return vld3_lane_u32(a, b, 1);
   3640 }
   3641 
   3642 // CHECK-LABEL: test_vld3_lane_s8
   3643 // CHECK: vld3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3644 int8x8x3_t test_vld3_lane_s8(int8_t const * a, int8x8x3_t b) {
   3645   return vld3_lane_s8(a, b, 7);
   3646 }
   3647 
   3648 // CHECK-LABEL: test_vld3_lane_s16
   3649 // CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3650 int16x4x3_t test_vld3_lane_s16(int16_t const * a, int16x4x3_t b) {
   3651   return vld3_lane_s16(a, b, 3);
   3652 }
   3653 
   3654 // CHECK-LABEL: test_vld3_lane_s32
   3655 // CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3656 int32x2x3_t test_vld3_lane_s32(int32_t const * a, int32x2x3_t b) {
   3657   return vld3_lane_s32(a, b, 1);
   3658 }
   3659 
   3660 // CHECK-LABEL: test_vld3_lane_f16
   3661 // CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3662 float16x4x3_t test_vld3_lane_f16(float16_t const * a, float16x4x3_t b) {
   3663   return vld3_lane_f16(a, b, 3);
   3664 }
   3665 
   3666 // CHECK-LABEL: test_vld3_lane_f32
   3667 // CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3668 float32x2x3_t test_vld3_lane_f32(float32_t const * a, float32x2x3_t b) {
   3669   return vld3_lane_f32(a, b, 1);
   3670 }
   3671 
   3672 // CHECK-LABEL: test_vld3_lane_p8
   3673 // CHECK: vld3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3674 poly8x8x3_t test_vld3_lane_p8(poly8_t const * a, poly8x8x3_t b) {
   3675   return vld3_lane_p8(a, b, 7);
   3676 }
   3677 
   3678 // CHECK-LABEL: test_vld3_lane_p16
   3679 // CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3680 poly16x4x3_t test_vld3_lane_p16(poly16_t const * a, poly16x4x3_t b) {
   3681   return vld3_lane_p16(a, b, 3);
   3682 }
   3683 
   3684 
   3685 // CHECK-LABEL: test_vld4q_u8
   3686 // CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3687 uint8x16x4_t test_vld4q_u8(uint8_t const * a) {
   3688   return vld4q_u8(a);
   3689 }
   3690 
   3691 // CHECK-LABEL: test_vld4q_u16
   3692 // CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3693 uint16x8x4_t test_vld4q_u16(uint16_t const * a) {
   3694   return vld4q_u16(a);
   3695 }
   3696 
   3697 // CHECK-LABEL: test_vld4q_u32
   3698 // CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3699 uint32x4x4_t test_vld4q_u32(uint32_t const * a) {
   3700   return vld4q_u32(a);
   3701 }
   3702 
   3703 // CHECK-LABEL: test_vld4q_s8
   3704 // CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3705 int8x16x4_t test_vld4q_s8(int8_t const * a) {
   3706   return vld4q_s8(a);
   3707 }
   3708 
   3709 // CHECK-LABEL: test_vld4q_s16
   3710 // CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3711 int16x8x4_t test_vld4q_s16(int16_t const * a) {
   3712   return vld4q_s16(a);
   3713 }
   3714 
   3715 // CHECK-LABEL: test_vld4q_s32
   3716 // CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3717 int32x4x4_t test_vld4q_s32(int32_t const * a) {
   3718   return vld4q_s32(a);
   3719 }
   3720 
   3721 // CHECK-LABEL: test_vld4q_f16
   3722 // CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3723 float16x8x4_t test_vld4q_f16(float16_t const * a) {
   3724   return vld4q_f16(a);
   3725 }
   3726 
   3727 // CHECK-LABEL: test_vld4q_f32
   3728 // CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3729 float32x4x4_t test_vld4q_f32(float32_t const * a) {
   3730   return vld4q_f32(a);
   3731 }
   3732 
   3733 // CHECK-LABEL: test_vld4q_p8
   3734 // CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3735 poly8x16x4_t test_vld4q_p8(poly8_t const * a) {
   3736   return vld4q_p8(a);
   3737 }
   3738 
   3739 // CHECK-LABEL: test_vld4q_p16
   3740 // CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   3741 poly16x8x4_t test_vld4q_p16(poly16_t const * a) {
   3742   return vld4q_p16(a);
   3743 }
   3744 
   3745 // CHECK-LABEL: test_vld4_u8
   3746 // CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3747 uint8x8x4_t test_vld4_u8(uint8_t const * a) {
   3748   return vld4_u8(a);
   3749 }
   3750 
   3751 // CHECK-LABEL: test_vld4_u16
   3752 // CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3753 uint16x4x4_t test_vld4_u16(uint16_t const * a) {
   3754   return vld4_u16(a);
   3755 }
   3756 
   3757 // CHECK-LABEL: test_vld4_u32
   3758 // CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3759 uint32x2x4_t test_vld4_u32(uint32_t const * a) {
   3760   return vld4_u32(a);
   3761 }
   3762 
   3763 // CHECK-LABEL: test_vld4_u64
   3764 // CHECK: vld1.64
   3765 uint64x1x4_t test_vld4_u64(uint64_t const * a) {
   3766   return vld4_u64(a);
   3767 }
   3768 
   3769 // CHECK-LABEL: test_vld4_s8
   3770 // CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3771 int8x8x4_t test_vld4_s8(int8_t const * a) {
   3772   return vld4_s8(a);
   3773 }
   3774 
   3775 // CHECK-LABEL: test_vld4_s16
   3776 // CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3777 int16x4x4_t test_vld4_s16(int16_t const * a) {
   3778   return vld4_s16(a);
   3779 }
   3780 
   3781 // CHECK-LABEL: test_vld4_s32
   3782 // CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3783 int32x2x4_t test_vld4_s32(int32_t const * a) {
   3784   return vld4_s32(a);
   3785 }
   3786 
   3787 // CHECK-LABEL: test_vld4_s64
   3788 // CHECK: vld1.64
   3789 int64x1x4_t test_vld4_s64(int64_t const * a) {
   3790   return vld4_s64(a);
   3791 }
   3792 
   3793 // CHECK-LABEL: test_vld4_f16
   3794 // CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3795 float16x4x4_t test_vld4_f16(float16_t const * a) {
   3796   return vld4_f16(a);
   3797 }
   3798 
   3799 // CHECK-LABEL: test_vld4_f32
   3800 // CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3801 float32x2x4_t test_vld4_f32(float32_t const * a) {
   3802   return vld4_f32(a);
   3803 }
   3804 
   3805 // CHECK-LABEL: test_vld4_p8
   3806 // CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3807 poly8x8x4_t test_vld4_p8(poly8_t const * a) {
   3808   return vld4_p8(a);
   3809 }
   3810 
   3811 // CHECK-LABEL: test_vld4_p16
   3812 // CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   3813 poly16x4x4_t test_vld4_p16(poly16_t const * a) {
   3814   return vld4_p16(a);
   3815 }
   3816 
   3817 
   3818 // CHECK-LABEL: test_vld4_dup_u8
   3819 // CHECK: vld4.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3820 uint8x8x4_t test_vld4_dup_u8(uint8_t const * a) {
   3821   return vld4_dup_u8(a);
   3822 }
   3823 
   3824 // CHECK-LABEL: test_vld4_dup_u16
   3825 // CHECK: vld4.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3826 uint16x4x4_t test_vld4_dup_u16(uint16_t const * a) {
   3827   return vld4_dup_u16(a);
   3828 }
   3829 
   3830 // CHECK-LABEL: test_vld4_dup_u32
   3831 // CHECK: vld4.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3832 uint32x2x4_t test_vld4_dup_u32(uint32_t const * a) {
   3833   return vld4_dup_u32(a);
   3834 }
   3835 
   3836 // CHECK-LABEL: test_vld4_dup_u64
   3837 // CHECK: vld1.64
   3838 uint64x1x4_t test_vld4_dup_u64(uint64_t const * a) {
   3839   return vld4_dup_u64(a);
   3840 }
   3841 
   3842 // CHECK-LABEL: test_vld4_dup_s8
   3843 // CHECK: vld4.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3844 int8x8x4_t test_vld4_dup_s8(int8_t const * a) {
   3845   return vld4_dup_s8(a);
   3846 }
   3847 
   3848 // CHECK-LABEL: test_vld4_dup_s16
   3849 // CHECK: vld4.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3850 int16x4x4_t test_vld4_dup_s16(int16_t const * a) {
   3851   return vld4_dup_s16(a);
   3852 }
   3853 
   3854 // CHECK-LABEL: test_vld4_dup_s32
   3855 // CHECK: vld4.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3856 int32x2x4_t test_vld4_dup_s32(int32_t const * a) {
   3857   return vld4_dup_s32(a);
   3858 }
   3859 
   3860 // CHECK-LABEL: test_vld4_dup_s64
   3861 // CHECK: vld1.64
   3862 int64x1x4_t test_vld4_dup_s64(int64_t const * a) {
   3863   return vld4_dup_s64(a);
   3864 }
   3865 
   3866 // CHECK-LABEL: test_vld4_dup_f16
   3867 // CHECK: vld4.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3868 float16x4x4_t test_vld4_dup_f16(float16_t const * a) {
   3869   return vld4_dup_f16(a);
   3870 }
   3871 
   3872 // CHECK-LABEL: test_vld4_dup_f32
   3873 // CHECK: vld4.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3874 float32x2x4_t test_vld4_dup_f32(float32_t const * a) {
   3875   return vld4_dup_f32(a);
   3876 }
   3877 
   3878 // CHECK-LABEL: test_vld4_dup_p8
   3879 // CHECK: vld4.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3880 poly8x8x4_t test_vld4_dup_p8(poly8_t const * a) {
   3881   return vld4_dup_p8(a);
   3882 }
   3883 
   3884 // CHECK-LABEL: test_vld4_dup_p16
   3885 // CHECK: vld4.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
   3886 poly16x4x4_t test_vld4_dup_p16(poly16_t const * a) {
   3887   return vld4_dup_p16(a);
   3888 }
   3889 
   3890 
   3891 // CHECK-LABEL: test_vld4q_lane_u16
   3892 // CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3893 uint16x8x4_t test_vld4q_lane_u16(uint16_t const * a, uint16x8x4_t b) {
   3894   return vld4q_lane_u16(a, b, 7);
   3895 }
   3896 
   3897 // CHECK-LABEL: test_vld4q_lane_u32
   3898 // CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3899 uint32x4x4_t test_vld4q_lane_u32(uint32_t const * a, uint32x4x4_t b) {
   3900   return vld4q_lane_u32(a, b, 3);
   3901 }
   3902 
   3903 // CHECK-LABEL: test_vld4q_lane_s16
   3904 // CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3905 int16x8x4_t test_vld4q_lane_s16(int16_t const * a, int16x8x4_t b) {
   3906   return vld4q_lane_s16(a, b, 7);
   3907 }
   3908 
   3909 // CHECK-LABEL: test_vld4q_lane_s32
   3910 // CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3911 int32x4x4_t test_vld4q_lane_s32(int32_t const * a, int32x4x4_t b) {
   3912   return vld4q_lane_s32(a, b, 3);
   3913 }
   3914 
   3915 // CHECK-LABEL: test_vld4q_lane_f16
   3916 // CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3917 float16x8x4_t test_vld4q_lane_f16(float16_t const * a, float16x8x4_t b) {
   3918   return vld4q_lane_f16(a, b, 7);
   3919 }
   3920 
   3921 // CHECK-LABEL: test_vld4q_lane_f32
   3922 // CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3923 float32x4x4_t test_vld4q_lane_f32(float32_t const * a, float32x4x4_t b) {
   3924   return vld4q_lane_f32(a, b, 3);
   3925 }
   3926 
   3927 // CHECK-LABEL: test_vld4q_lane_p16
   3928 // CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   3929 poly16x8x4_t test_vld4q_lane_p16(poly16_t const * a, poly16x8x4_t b) {
   3930   return vld4q_lane_p16(a, b, 7);
   3931 }
   3932 
   3933 // CHECK-LABEL: test_vld4_lane_u8
   3934 // CHECK: vld4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3935 uint8x8x4_t test_vld4_lane_u8(uint8_t const * a, uint8x8x4_t b) {
   3936   return vld4_lane_u8(a, b, 7);
   3937 }
   3938 
   3939 // CHECK-LABEL: test_vld4_lane_u16
   3940 // CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3941 uint16x4x4_t test_vld4_lane_u16(uint16_t const * a, uint16x4x4_t b) {
   3942   return vld4_lane_u16(a, b, 3);
   3943 }
   3944 
   3945 // CHECK-LABEL: test_vld4_lane_u32
   3946 // CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3947 uint32x2x4_t test_vld4_lane_u32(uint32_t const * a, uint32x2x4_t b) {
   3948   return vld4_lane_u32(a, b, 1);
   3949 }
   3950 
   3951 // CHECK-LABEL: test_vld4_lane_s8
   3952 // CHECK: vld4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3953 int8x8x4_t test_vld4_lane_s8(int8_t const * a, int8x8x4_t b) {
   3954   return vld4_lane_s8(a, b, 7);
   3955 }
   3956 
   3957 // CHECK-LABEL: test_vld4_lane_s16
   3958 // CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3959 int16x4x4_t test_vld4_lane_s16(int16_t const * a, int16x4x4_t b) {
   3960   return vld4_lane_s16(a, b, 3);
   3961 }
   3962 
   3963 // CHECK-LABEL: test_vld4_lane_s32
   3964 // CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3965 int32x2x4_t test_vld4_lane_s32(int32_t const * a, int32x2x4_t b) {
   3966   return vld4_lane_s32(a, b, 1);
   3967 }
   3968 
   3969 // CHECK-LABEL: test_vld4_lane_f16
   3970 // CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3971 float16x4x4_t test_vld4_lane_f16(float16_t const * a, float16x4x4_t b) {
   3972   return vld4_lane_f16(a, b, 3);
   3973 }
   3974 
   3975 // CHECK-LABEL: test_vld4_lane_f32
   3976 // CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3977 float32x2x4_t test_vld4_lane_f32(float32_t const * a, float32x2x4_t b) {
   3978   return vld4_lane_f32(a, b, 1);
   3979 }
   3980 
   3981 // CHECK-LABEL: test_vld4_lane_p8
   3982 // CHECK: vld4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3983 poly8x8x4_t test_vld4_lane_p8(poly8_t const * a, poly8x8x4_t b) {
   3984   return vld4_lane_p8(a, b, 7);
   3985 }
   3986 
   3987 // CHECK-LABEL: test_vld4_lane_p16
   3988 // CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   3989 poly16x4x4_t test_vld4_lane_p16(poly16_t const * a, poly16x4x4_t b) {
   3990   return vld4_lane_p16(a, b, 3);
   3991 }
   3992 
   3993 
   3994 // CHECK-LABEL: test_vmax_s8
   3995 // CHECK: vmax.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   3996 int8x8_t test_vmax_s8(int8x8_t a, int8x8_t b) {
   3997   return vmax_s8(a, b);
   3998 }
   3999 
   4000 // CHECK-LABEL: test_vmax_s16
   4001 // CHECK: vmax.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4002 int16x4_t test_vmax_s16(int16x4_t a, int16x4_t b) {
   4003   return vmax_s16(a, b);
   4004 }
   4005 
   4006 // CHECK-LABEL: test_vmax_s32
   4007 // CHECK: vmax.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4008 int32x2_t test_vmax_s32(int32x2_t a, int32x2_t b) {
   4009   return vmax_s32(a, b);
   4010 }
   4011 
   4012 // CHECK-LABEL: test_vmax_u8
   4013 // CHECK: vmax.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4014 uint8x8_t test_vmax_u8(uint8x8_t a, uint8x8_t b) {
   4015   return vmax_u8(a, b);
   4016 }
   4017 
   4018 // CHECK-LABEL: test_vmax_u16
   4019 // CHECK: vmax.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4020 uint16x4_t test_vmax_u16(uint16x4_t a, uint16x4_t b) {
   4021   return vmax_u16(a, b);
   4022 }
   4023 
   4024 // CHECK-LABEL: test_vmax_u32
   4025 // CHECK: vmax.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4026 uint32x2_t test_vmax_u32(uint32x2_t a, uint32x2_t b) {
   4027   return vmax_u32(a, b);
   4028 }
   4029 
   4030 // CHECK-LABEL: test_vmax_f32
   4031 // CHECK: vmax.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4032 float32x2_t test_vmax_f32(float32x2_t a, float32x2_t b) {
   4033   return vmax_f32(a, b);
   4034 }
   4035 
   4036 // CHECK-LABEL: test_vmaxq_s8
   4037 // CHECK: vmax.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4038 int8x16_t test_vmaxq_s8(int8x16_t a, int8x16_t b) {
   4039   return vmaxq_s8(a, b);
   4040 }
   4041 
   4042 // CHECK-LABEL: test_vmaxq_s16
   4043 // CHECK: vmax.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4044 int16x8_t test_vmaxq_s16(int16x8_t a, int16x8_t b) {
   4045   return vmaxq_s16(a, b);
   4046 }
   4047 
   4048 // CHECK-LABEL: test_vmaxq_s32
   4049 // CHECK: vmax.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4050 int32x4_t test_vmaxq_s32(int32x4_t a, int32x4_t b) {
   4051   return vmaxq_s32(a, b);
   4052 }
   4053 
   4054 // CHECK-LABEL: test_vmaxq_u8
   4055 // CHECK: vmax.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4056 uint8x16_t test_vmaxq_u8(uint8x16_t a, uint8x16_t b) {
   4057   return vmaxq_u8(a, b);
   4058 }
   4059 
   4060 // CHECK-LABEL: test_vmaxq_u16
   4061 // CHECK: vmax.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4062 uint16x8_t test_vmaxq_u16(uint16x8_t a, uint16x8_t b) {
   4063   return vmaxq_u16(a, b);
   4064 }
   4065 
   4066 // CHECK-LABEL: test_vmaxq_u32
   4067 // CHECK: vmax.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4068 uint32x4_t test_vmaxq_u32(uint32x4_t a, uint32x4_t b) {
   4069   return vmaxq_u32(a, b);
   4070 }
   4071 
   4072 // CHECK-LABEL: test_vmaxq_f32
   4073 // CHECK: vmax.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4074 float32x4_t test_vmaxq_f32(float32x4_t a, float32x4_t b) {
   4075   return vmaxq_f32(a, b);
   4076 }
   4077 
   4078 
   4079 // CHECK-LABEL: test_vmin_s8
   4080 // CHECK: vmin.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4081 int8x8_t test_vmin_s8(int8x8_t a, int8x8_t b) {
   4082   return vmin_s8(a, b);
   4083 }
   4084 
   4085 // CHECK-LABEL: test_vmin_s16
   4086 // CHECK: vmin.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4087 int16x4_t test_vmin_s16(int16x4_t a, int16x4_t b) {
   4088   return vmin_s16(a, b);
   4089 }
   4090 
   4091 // CHECK-LABEL: test_vmin_s32
   4092 // CHECK: vmin.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4093 int32x2_t test_vmin_s32(int32x2_t a, int32x2_t b) {
   4094   return vmin_s32(a, b);
   4095 }
   4096 
   4097 // CHECK-LABEL: test_vmin_u8
   4098 // CHECK: vmin.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4099 uint8x8_t test_vmin_u8(uint8x8_t a, uint8x8_t b) {
   4100   return vmin_u8(a, b);
   4101 }
   4102 
   4103 // CHECK-LABEL: test_vmin_u16
   4104 // CHECK: vmin.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4105 uint16x4_t test_vmin_u16(uint16x4_t a, uint16x4_t b) {
   4106   return vmin_u16(a, b);
   4107 }
   4108 
   4109 // CHECK-LABEL: test_vmin_u32
   4110 // CHECK: vmin.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4111 uint32x2_t test_vmin_u32(uint32x2_t a, uint32x2_t b) {
   4112   return vmin_u32(a, b);
   4113 }
   4114 
   4115 // CHECK-LABEL: test_vmin_f32
   4116 // CHECK: vmin.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4117 float32x2_t test_vmin_f32(float32x2_t a, float32x2_t b) {
   4118   return vmin_f32(a, b);
   4119 }
   4120 
   4121 // CHECK-LABEL: test_vminq_s8
   4122 // CHECK: vmin.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4123 int8x16_t test_vminq_s8(int8x16_t a, int8x16_t b) {
   4124   return vminq_s8(a, b);
   4125 }
   4126 
   4127 // CHECK-LABEL: test_vminq_s16
   4128 // CHECK: vmin.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4129 int16x8_t test_vminq_s16(int16x8_t a, int16x8_t b) {
   4130   return vminq_s16(a, b);
   4131 }
   4132 
   4133 // CHECK-LABEL: test_vminq_s32
   4134 // CHECK: vmin.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4135 int32x4_t test_vminq_s32(int32x4_t a, int32x4_t b) {
   4136   return vminq_s32(a, b);
   4137 }
   4138 
   4139 // CHECK-LABEL: test_vminq_u8
   4140 // CHECK: vmin.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4141 uint8x16_t test_vminq_u8(uint8x16_t a, uint8x16_t b) {
   4142   return vminq_u8(a, b);
   4143 }
   4144 
   4145 // CHECK-LABEL: test_vminq_u16
   4146 // CHECK: vmin.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4147 uint16x8_t test_vminq_u16(uint16x8_t a, uint16x8_t b) {
   4148   return vminq_u16(a, b);
   4149 }
   4150 
   4151 // CHECK-LABEL: test_vminq_u32
   4152 // CHECK: vmin.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4153 uint32x4_t test_vminq_u32(uint32x4_t a, uint32x4_t b) {
   4154   return vminq_u32(a, b);
   4155 }
   4156 
   4157 // CHECK-LABEL: test_vminq_f32
   4158 // CHECK: vmin.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4159 float32x4_t test_vminq_f32(float32x4_t a, float32x4_t b) {
   4160   return vminq_f32(a, b);
   4161 }
   4162 
   4163 
   4164 // CHECK-LABEL: test_vmla_s8
   4165 // CHECK: vmla.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4166 int8x8_t test_vmla_s8(int8x8_t a, int8x8_t b, int8x8_t c) {
   4167   return vmla_s8(a, b, c);
   4168 }
   4169 
   4170 // CHECK-LABEL: test_vmla_s16
   4171 // CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4172 int16x4_t test_vmla_s16(int16x4_t a, int16x4_t b, int16x4_t c) {
   4173   return vmla_s16(a, b, c);
   4174 }
   4175 
   4176 // CHECK-LABEL: test_vmla_s32
   4177 // CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4178 int32x2_t test_vmla_s32(int32x2_t a, int32x2_t b, int32x2_t c) {
   4179   return vmla_s32(a, b, c);
   4180 }
   4181 
   4182 // CHECK-LABEL: test_vmla_f32
   4183 // CHECK-SWIFT: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4184 // CHECK-SWIFT: vadd.f32
   4185 // CHECK-A57: vmla.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4186 float32x2_t test_vmla_f32(float32x2_t a, float32x2_t b, float32x2_t c) {
   4187   return vmla_f32(a, b, c);
   4188 }
   4189 
   4190 // CHECK-LABEL: test_vmla_u8
   4191 // CHECK: vmla.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4192 uint8x8_t test_vmla_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c) {
   4193   return vmla_u8(a, b, c);
   4194 }
   4195 
   4196 // CHECK-LABEL: test_vmla_u16
   4197 // CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4198 uint16x4_t test_vmla_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
   4199   return vmla_u16(a, b, c);
   4200 }
   4201 
   4202 // CHECK-LABEL: test_vmla_u32
   4203 // CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4204 uint32x2_t test_vmla_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
   4205   return vmla_u32(a, b, c);
   4206 }
   4207 
   4208 // CHECK-LABEL: test_vmlaq_s8
   4209 // CHECK: vmla.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4210 int8x16_t test_vmlaq_s8(int8x16_t a, int8x16_t b, int8x16_t c) {
   4211   return vmlaq_s8(a, b, c);
   4212 }
   4213 
   4214 // CHECK-LABEL: test_vmlaq_s16
   4215 // CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4216 int16x8_t test_vmlaq_s16(int16x8_t a, int16x8_t b, int16x8_t c) {
   4217   return vmlaq_s16(a, b, c);
   4218 }
   4219 
   4220 // CHECK-LABEL: test_vmlaq_s32
   4221 // CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4222 int32x4_t test_vmlaq_s32(int32x4_t a, int32x4_t b, int32x4_t c) {
   4223   return vmlaq_s32(a, b, c);
   4224 }
   4225 
   4226 // CHECK-LABEL: test_vmlaq_f32
   4227 // CHECK-SWIFT: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4228 // CHECK-SWIFT: vadd.f32
   4229 // CHECK-A57: vmla.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4230 float32x4_t test_vmlaq_f32(float32x4_t a, float32x4_t b, float32x4_t c) {
   4231   return vmlaq_f32(a, b, c);
   4232 }
   4233 
   4234 // CHECK-LABEL: test_vmlaq_u8
   4235 // CHECK: vmla.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4236 uint8x16_t test_vmlaq_u8(uint8x16_t a, uint8x16_t b, uint8x16_t c) {
   4237   return vmlaq_u8(a, b, c);
   4238 }
   4239 
   4240 // CHECK-LABEL: test_vmlaq_u16
   4241 // CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4242 uint16x8_t test_vmlaq_u16(uint16x8_t a, uint16x8_t b, uint16x8_t c) {
   4243   return vmlaq_u16(a, b, c);
   4244 }
   4245 
   4246 // CHECK-LABEL: test_vmlaq_u32
   4247 // CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4248 uint32x4_t test_vmlaq_u32(uint32x4_t a, uint32x4_t b, uint32x4_t c) {
   4249   return vmlaq_u32(a, b, c);
   4250 }
   4251 
   4252 
   4253 // CHECK-LABEL: test_vmlal_s8
   4254 // CHECK: vmlal.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4255 int16x8_t test_vmlal_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
   4256   return vmlal_s8(a, b, c);
   4257 }
   4258 
   4259 // CHECK-LABEL: test_vmlal_s16
   4260 // CHECK: vmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4261 int32x4_t test_vmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   4262   return vmlal_s16(a, b, c);
   4263 }
   4264 
   4265 // CHECK-LABEL: test_vmlal_s32
   4266 // CHECK: vmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4267 int64x2_t test_vmlal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   4268   return vmlal_s32(a, b, c);
   4269 }
   4270 
   4271 // CHECK-LABEL: test_vmlal_u8
   4272 // CHECK: vmlal.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4273 uint16x8_t test_vmlal_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
   4274   return vmlal_u8(a, b, c);
   4275 }
   4276 
   4277 // CHECK-LABEL: test_vmlal_u16
   4278 // CHECK: vmlal.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4279 uint32x4_t test_vmlal_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
   4280   return vmlal_u16(a, b, c);
   4281 }
   4282 
   4283 // CHECK-LABEL: test_vmlal_u32
   4284 // CHECK: vmlal.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4285 uint64x2_t test_vmlal_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
   4286   return vmlal_u32(a, b, c);
   4287 }
   4288 
   4289 
   4290 // CHECK-LABEL: test_vmlal_lane_s16
   4291 // CHECK: vmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4292 int32x4_t test_vmlal_lane_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   4293   return vmlal_lane_s16(a, b, c, 3);
   4294 }
   4295 
   4296 // CHECK-LABEL: test_vmlal_lane_s32
   4297 // CHECK: vmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4298 int64x2_t test_vmlal_lane_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   4299   return vmlal_lane_s32(a, b, c, 1);
   4300 }
   4301 
   4302 // CHECK-LABEL: test_vmlal_lane_u16
   4303 // CHECK: vmlal.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4304 uint32x4_t test_vmlal_lane_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
   4305   return vmlal_lane_u16(a, b, c, 3);
   4306 }
   4307 
   4308 // CHECK-LABEL: test_vmlal_lane_u32
   4309 // CHECK: vmlal.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4310 uint64x2_t test_vmlal_lane_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
   4311   return vmlal_lane_u32(a, b, c, 1);
   4312 }
   4313 
   4314 
   4315 // CHECK-LABEL: test_vmlal_n_s16
   4316 // CHECK: vmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4317 int32x4_t test_vmlal_n_s16(int32x4_t a, int16x4_t b, int16_t c) {
   4318   return vmlal_n_s16(a, b, c);
   4319 }
   4320 
   4321 // CHECK-LABEL: test_vmlal_n_s32
   4322 // CHECK: vmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4323 int64x2_t test_vmlal_n_s32(int64x2_t a, int32x2_t b, int32_t c) {
   4324   return vmlal_n_s32(a, b, c);
   4325 }
   4326 
   4327 // CHECK-LABEL: test_vmlal_n_u16
   4328 // CHECK: vmlal.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4329 uint32x4_t test_vmlal_n_u16(uint32x4_t a, uint16x4_t b, uint16_t c) {
   4330   return vmlal_n_u16(a, b, c);
   4331 }
   4332 
   4333 // CHECK-LABEL: test_vmlal_n_u32
   4334 // CHECK: vmlal.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4335 uint64x2_t test_vmlal_n_u32(uint64x2_t a, uint32x2_t b, uint32_t c) {
   4336   return vmlal_n_u32(a, b, c);
   4337 }
   4338 
   4339 
   4340 // CHECK-LABEL: test_vmla_lane_s16
   4341 // CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4342 int16x4_t test_vmla_lane_s16(int16x4_t a, int16x4_t b, int16x4_t c) {
   4343   return vmla_lane_s16(a, b, c, 3);
   4344 }
   4345 
   4346 // CHECK-LABEL: test_vmla_lane_s32
   4347 // CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4348 int32x2_t test_vmla_lane_s32(int32x2_t a, int32x2_t b, int32x2_t c) {
   4349   return vmla_lane_s32(a, b, c, 1);
   4350 }
   4351 
   4352 // CHECK-LABEL: test_vmla_lane_u16
   4353 // CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4354 uint16x4_t test_vmla_lane_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
   4355   return vmla_lane_u16(a, b, c, 3);
   4356 }
   4357 
   4358 // CHECK-LABEL: test_vmla_lane_u32
   4359 // CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4360 uint32x2_t test_vmla_lane_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
   4361   return vmla_lane_u32(a, b, c, 1);
   4362 }
   4363 
   4364 // CHECK-LABEL: test_vmla_lane_f32
   4365 // CHECK-SWIFT: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4366 // CHECK-SWIFT: vadd.f32
   4367 // CHECK-A57: vmla.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4368 float32x2_t test_vmla_lane_f32(float32x2_t a, float32x2_t b, float32x2_t c) {
   4369   return vmla_lane_f32(a, b, c, 1);
   4370 }
   4371 
   4372 // CHECK-LABEL: test_vmlaq_lane_s16
   4373 // CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4374 int16x8_t test_vmlaq_lane_s16(int16x8_t a, int16x8_t b, int16x4_t c) {
   4375   return vmlaq_lane_s16(a, b, c, 3);
   4376 }
   4377 
   4378 // CHECK-LABEL: test_vmlaq_lane_s32
   4379 // CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4380 int32x4_t test_vmlaq_lane_s32(int32x4_t a, int32x4_t b, int32x2_t c) {
   4381   return vmlaq_lane_s32(a, b, c, 1);
   4382 }
   4383 
   4384 // CHECK-LABEL: test_vmlaq_lane_u16
   4385 // CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4386 uint16x8_t test_vmlaq_lane_u16(uint16x8_t a, uint16x8_t b, uint16x4_t c) {
   4387   return vmlaq_lane_u16(a, b, c, 3);
   4388 }
   4389 
   4390 // CHECK-LABEL: test_vmlaq_lane_u32
   4391 // CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4392 uint32x4_t test_vmlaq_lane_u32(uint32x4_t a, uint32x4_t b, uint32x2_t c) {
   4393   return vmlaq_lane_u32(a, b, c, 1);
   4394 }
   4395 
   4396 // CHECK-LABEL: test_vmlaq_lane_f32
   4397 // CHECK-SWIFT: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4398 // CHECK-SWIFT: vadd.f32
   4399 // CHECK-A57: vmla.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4400 float32x4_t test_vmlaq_lane_f32(float32x4_t a, float32x4_t b, float32x2_t c) {
   4401   return vmlaq_lane_f32(a, b, c, 1);
   4402 }
   4403 
   4404 
   4405 // CHECK-LABEL: test_vmla_n_s16
   4406 // CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4407 int16x4_t test_vmla_n_s16(int16x4_t a, int16x4_t b, int16_t c) {
   4408   return vmla_n_s16(a, b, c);
   4409 }
   4410 
   4411 // CHECK-LABEL: test_vmla_n_s32
   4412 // CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4413 int32x2_t test_vmla_n_s32(int32x2_t a, int32x2_t b, int32_t c) {
   4414   return vmla_n_s32(a, b, c);
   4415 }
   4416 
   4417 // CHECK-LABEL: test_vmla_n_u16
   4418 // CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4419 uint16x4_t test_vmla_n_u16(uint16x4_t a, uint16x4_t b, uint16_t c) {
   4420   return vmla_n_u16(a, b, c);
   4421 }
   4422 
   4423 // CHECK-LABEL: test_vmla_n_u32
   4424 // CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4425 uint32x2_t test_vmla_n_u32(uint32x2_t a, uint32x2_t b, uint32_t c) {
   4426   return vmla_n_u32(a, b, c);
   4427 }
   4428 
   4429 // CHECK-LABEL: test_vmla_n_f32
   4430 // CHECK-SWIFT: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4431 // CHECK-SWIFT: vadd.f32
   4432 // CHECK-A57: vmla.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4433 float32x2_t test_vmla_n_f32(float32x2_t a, float32x2_t b, float32_t c) {
   4434   return vmla_n_f32(a, b, c);
   4435 }
   4436 
   4437 // CHECK-LABEL: test_vmlaq_n_s16
   4438 // CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4439 int16x8_t test_vmlaq_n_s16(int16x8_t a, int16x8_t b, int16_t c) {
   4440   return vmlaq_n_s16(a, b, c);
   4441 }
   4442 
   4443 // CHECK-LABEL: test_vmlaq_n_s32
   4444 // CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4445 int32x4_t test_vmlaq_n_s32(int32x4_t a, int32x4_t b, int32_t c) {
   4446   return vmlaq_n_s32(a, b, c);
   4447 }
   4448 
   4449 // CHECK-LABEL: test_vmlaq_n_u16
   4450 // CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4451 uint16x8_t test_vmlaq_n_u16(uint16x8_t a, uint16x8_t b, uint16_t c) {
   4452   return vmlaq_n_u16(a, b, c);
   4453 }
   4454 
   4455 // CHECK-LABEL: test_vmlaq_n_u32
   4456 // CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4457 uint32x4_t test_vmlaq_n_u32(uint32x4_t a, uint32x4_t b, uint32_t c) {
   4458   return vmlaq_n_u32(a, b, c);
   4459 }
   4460 
   4461 // CHECK-LABEL: test_vmlaq_n_f32
   4462 // CHECK-SWIFT: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[0]
   4463 // CHECK-SWIFT: vadd.f32
   4464 // CHECK-A57: vld1.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]},
   4465 // CHECK-A57: vmla.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4466 float32x4_t test_vmlaq_n_f32(float32x4_t a, float32x4_t b, float32_t c) {
   4467   return vmlaq_n_f32(a, b, c);
   4468 }
   4469 
   4470 
   4471 // CHECK-LABEL: test_vmls_s8
   4472 // CHECK: vmls.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4473 int8x8_t test_vmls_s8(int8x8_t a, int8x8_t b, int8x8_t c) {
   4474   return vmls_s8(a, b, c);
   4475 }
   4476 
   4477 // CHECK-LABEL: test_vmls_s16
   4478 // CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4479 int16x4_t test_vmls_s16(int16x4_t a, int16x4_t b, int16x4_t c) {
   4480   return vmls_s16(a, b, c);
   4481 }
   4482 
   4483 // CHECK-LABEL: test_vmls_s32
   4484 // CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4485 int32x2_t test_vmls_s32(int32x2_t a, int32x2_t b, int32x2_t c) {
   4486   return vmls_s32(a, b, c);
   4487 }
   4488 
   4489 // CHECK-LABEL: test_vmls_f32
   4490 // CHECK-SWIFT: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4491 // CHECK-SWIFT: vsub.f32
   4492 // CHECK-A57: vmls.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4493 float32x2_t test_vmls_f32(float32x2_t a, float32x2_t b, float32x2_t c) {
   4494   return vmls_f32(a, b, c);
   4495 }
   4496 
   4497 // CHECK-LABEL: test_vmls_u8
   4498 // CHECK: vmls.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4499 uint8x8_t test_vmls_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c) {
   4500   return vmls_u8(a, b, c);
   4501 }
   4502 
   4503 // CHECK-LABEL: test_vmls_u16
   4504 // CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4505 uint16x4_t test_vmls_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
   4506   return vmls_u16(a, b, c);
   4507 }
   4508 
   4509 // CHECK-LABEL: test_vmls_u32
   4510 // CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4511 uint32x2_t test_vmls_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
   4512   return vmls_u32(a, b, c);
   4513 }
   4514 
   4515 // CHECK-LABEL: test_vmlsq_s8
   4516 // CHECK: vmls.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4517 int8x16_t test_vmlsq_s8(int8x16_t a, int8x16_t b, int8x16_t c) {
   4518   return vmlsq_s8(a, b, c);
   4519 }
   4520 
   4521 // CHECK-LABEL: test_vmlsq_s16
   4522 // CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4523 int16x8_t test_vmlsq_s16(int16x8_t a, int16x8_t b, int16x8_t c) {
   4524   return vmlsq_s16(a, b, c);
   4525 }
   4526 
   4527 // CHECK-LABEL: test_vmlsq_s32
   4528 // CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4529 int32x4_t test_vmlsq_s32(int32x4_t a, int32x4_t b, int32x4_t c) {
   4530   return vmlsq_s32(a, b, c);
   4531 }
   4532 
   4533 // CHECK-LABEL: test_vmlsq_f32
   4534 // CHECK-SWIFT: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4535 // CHECK-SWIFT: vsub.f32
   4536 // CHECK-A57: vmls.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4537 float32x4_t test_vmlsq_f32(float32x4_t a, float32x4_t b, float32x4_t c) {
   4538   return vmlsq_f32(a, b, c);
   4539 }
   4540 
   4541 // CHECK-LABEL: test_vmlsq_u8
   4542 // CHECK: vmls.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4543 uint8x16_t test_vmlsq_u8(uint8x16_t a, uint8x16_t b, uint8x16_t c) {
   4544   return vmlsq_u8(a, b, c);
   4545 }
   4546 
   4547 // CHECK-LABEL: test_vmlsq_u16
   4548 // CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4549 uint16x8_t test_vmlsq_u16(uint16x8_t a, uint16x8_t b, uint16x8_t c) {
   4550   return vmlsq_u16(a, b, c);
   4551 }
   4552 
   4553 // CHECK-LABEL: test_vmlsq_u32
   4554 // CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4555 uint32x4_t test_vmlsq_u32(uint32x4_t a, uint32x4_t b, uint32x4_t c) {
   4556   return vmlsq_u32(a, b, c);
   4557 }
   4558 
   4559 
   4560 // CHECK-LABEL: test_vmlsl_s8
   4561 // CHECK: vmlsl.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4562 int16x8_t test_vmlsl_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
   4563   return vmlsl_s8(a, b, c);
   4564 }
   4565 
   4566 // CHECK-LABEL: test_vmlsl_s16
   4567 // CHECK: vmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4568 int32x4_t test_vmlsl_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   4569   return vmlsl_s16(a, b, c);
   4570 }
   4571 
   4572 // CHECK-LABEL: test_vmlsl_s32
   4573 // CHECK: vmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4574 int64x2_t test_vmlsl_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   4575   return vmlsl_s32(a, b, c);
   4576 }
   4577 
   4578 // CHECK-LABEL: test_vmlsl_u8
   4579 // CHECK: vmlsl.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4580 uint16x8_t test_vmlsl_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
   4581   return vmlsl_u8(a, b, c);
   4582 }
   4583 
   4584 // CHECK-LABEL: test_vmlsl_u16
   4585 // CHECK: vmlsl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4586 uint32x4_t test_vmlsl_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
   4587   return vmlsl_u16(a, b, c);
   4588 }
   4589 
   4590 // CHECK-LABEL: test_vmlsl_u32
   4591 // CHECK: vmlsl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4592 uint64x2_t test_vmlsl_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
   4593   return vmlsl_u32(a, b, c);
   4594 }
   4595 
   4596 
   4597 // CHECK-LABEL: test_vmlsl_lane_s16
   4598 // CHECK: vmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4599 int32x4_t test_vmlsl_lane_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   4600   return vmlsl_lane_s16(a, b, c, 3);
   4601 }
   4602 
   4603 // CHECK-LABEL: test_vmlsl_lane_s32
   4604 // CHECK: vmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4605 int64x2_t test_vmlsl_lane_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   4606   return vmlsl_lane_s32(a, b, c, 1);
   4607 }
   4608 
   4609 // CHECK-LABEL: test_vmlsl_lane_u16
   4610 // CHECK: vmlsl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4611 uint32x4_t test_vmlsl_lane_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
   4612   return vmlsl_lane_u16(a, b, c, 3);
   4613 }
   4614 
   4615 // CHECK-LABEL: test_vmlsl_lane_u32
   4616 // CHECK: vmlsl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4617 uint64x2_t test_vmlsl_lane_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
   4618   return vmlsl_lane_u32(a, b, c, 1);
   4619 }
   4620 
   4621 
   4622 // CHECK-LABEL: test_vmlsl_n_s16
   4623 // CHECK: vmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4624 int32x4_t test_vmlsl_n_s16(int32x4_t a, int16x4_t b, int16_t c) {
   4625   return vmlsl_n_s16(a, b, c);
   4626 }
   4627 
   4628 // CHECK-LABEL: test_vmlsl_n_s32
   4629 // CHECK: vmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4630 int64x2_t test_vmlsl_n_s32(int64x2_t a, int32x2_t b, int32_t c) {
   4631   return vmlsl_n_s32(a, b, c);
   4632 }
   4633 
   4634 // CHECK-LABEL: test_vmlsl_n_u16
   4635 // CHECK: vmlsl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4636 uint32x4_t test_vmlsl_n_u16(uint32x4_t a, uint16x4_t b, uint16_t c) {
   4637   return vmlsl_n_u16(a, b, c);
   4638 }
   4639 
   4640 // CHECK-LABEL: test_vmlsl_n_u32
   4641 // CHECK: vmlsl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4642 uint64x2_t test_vmlsl_n_u32(uint64x2_t a, uint32x2_t b, uint32_t c) {
   4643   return vmlsl_n_u32(a, b, c);
   4644 }
   4645 
   4646 
   4647 // CHECK-LABEL: test_vmls_lane_s16
   4648 // CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4649 int16x4_t test_vmls_lane_s16(int16x4_t a, int16x4_t b, int16x4_t c) {
   4650   return vmls_lane_s16(a, b, c, 3);
   4651 }
   4652 
   4653 // CHECK-LABEL: test_vmls_lane_s32
   4654 // CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4655 int32x2_t test_vmls_lane_s32(int32x2_t a, int32x2_t b, int32x2_t c) {
   4656   return vmls_lane_s32(a, b, c, 1);
   4657 }
   4658 
   4659 // CHECK-LABEL: test_vmls_lane_u16
   4660 // CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4661 uint16x4_t test_vmls_lane_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
   4662   return vmls_lane_u16(a, b, c, 3);
   4663 }
   4664 
   4665 // CHECK-LABEL: test_vmls_lane_u32
   4666 // CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4667 uint32x2_t test_vmls_lane_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
   4668   return vmls_lane_u32(a, b, c, 1);
   4669 }
   4670 
   4671 // CHECK-LABEL: test_vmls_lane_f32
   4672 // CHECK-SWIFT: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4673 // CHECK-SWIFT: vsub.f32
   4674 // CHECK-A57: vmls.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4675 float32x2_t test_vmls_lane_f32(float32x2_t a, float32x2_t b, float32x2_t c) {
   4676   return vmls_lane_f32(a, b, c, 1);
   4677 }
   4678 
   4679 // CHECK-LABEL: test_vmlsq_lane_s16
   4680 // CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4681 int16x8_t test_vmlsq_lane_s16(int16x8_t a, int16x8_t b, int16x4_t c) {
   4682   return vmlsq_lane_s16(a, b, c, 3);
   4683 }
   4684 
   4685 // CHECK-LABEL: test_vmlsq_lane_s32
   4686 // CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4687 int32x4_t test_vmlsq_lane_s32(int32x4_t a, int32x4_t b, int32x2_t c) {
   4688   return vmlsq_lane_s32(a, b, c, 1);
   4689 }
   4690 
   4691 // CHECK-LABEL: test_vmlsq_lane_u16
   4692 // CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4693 uint16x8_t test_vmlsq_lane_u16(uint16x8_t a, uint16x8_t b, uint16x4_t c) {
   4694   return vmlsq_lane_u16(a, b, c, 3);
   4695 }
   4696 
   4697 // CHECK-LABEL: test_vmlsq_lane_u32
   4698 // CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4699 uint32x4_t test_vmlsq_lane_u32(uint32x4_t a, uint32x4_t b, uint32x2_t c) {
   4700   return vmlsq_lane_u32(a, b, c, 1);
   4701 }
   4702 
   4703 // CHECK-LABEL: test_vmlsq_lane_f32
   4704 // CHECK-SWIFT: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4705 // CHECK-SWIFT: vsub.f32
   4706 // CHECK-A57: vmls.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   4707 float32x4_t test_vmlsq_lane_f32(float32x4_t a, float32x4_t b, float32x2_t c) {
   4708   return vmlsq_lane_f32(a, b, c, 1);
   4709 }
   4710 
   4711 
   4712 // CHECK-LABEL: test_vmls_n_s16
   4713 // CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4714 int16x4_t test_vmls_n_s16(int16x4_t a, int16x4_t b, int16_t c) {
   4715   return vmls_n_s16(a, b, c);
   4716 }
   4717 
   4718 // CHECK-LABEL: test_vmls_n_s32
   4719 // CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4720 int32x2_t test_vmls_n_s32(int32x2_t a, int32x2_t b, int32_t c) {
   4721   return vmls_n_s32(a, b, c);
   4722 }
   4723 
   4724 // CHECK-LABEL: test_vmls_n_u16
   4725 // CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4726 uint16x4_t test_vmls_n_u16(uint16x4_t a, uint16x4_t b, uint16_t c) {
   4727   return vmls_n_u16(a, b, c);
   4728 }
   4729 
   4730 // CHECK-LABEL: test_vmls_n_u32
   4731 // CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4732 uint32x2_t test_vmls_n_u32(uint32x2_t a, uint32x2_t b, uint32_t c) {
   4733   return vmls_n_u32(a, b, c);
   4734 }
   4735 
   4736 // CHECK-LABEL: test_vmls_n_f32
   4737 // CHECK-SWIFT: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4738 // CHECK-SWIFT: vsub.f32
   4739 // CHECK-A57: vmls.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4740 float32x2_t test_vmls_n_f32(float32x2_t a, float32x2_t b, float32_t c) {
   4741   return vmls_n_f32(a, b, c);
   4742 }
   4743 
   4744 // CHECK-LABEL: test_vmlsq_n_s16
   4745 // CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4746 int16x8_t test_vmlsq_n_s16(int16x8_t a, int16x8_t b, int16_t c) {
   4747   return vmlsq_n_s16(a, b, c);
   4748 }
   4749 
   4750 // CHECK-LABEL: test_vmlsq_n_s32
   4751 // CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4752 int32x4_t test_vmlsq_n_s32(int32x4_t a, int32x4_t b, int32_t c) {
   4753   return vmlsq_n_s32(a, b, c);
   4754 }
   4755 
   4756 // CHECK-LABEL: test_vmlsq_n_u16
   4757 // CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4758 uint16x8_t test_vmlsq_n_u16(uint16x8_t a, uint16x8_t b, uint16_t c) {
   4759   return vmlsq_n_u16(a, b, c);
   4760 }
   4761 
   4762 // CHECK-LABEL: test_vmlsq_n_u32
   4763 // CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4764 uint32x4_t test_vmlsq_n_u32(uint32x4_t a, uint32x4_t b, uint32_t c) {
   4765   return vmlsq_n_u32(a, b, c);
   4766 }
   4767 
   4768 // CHECK-LABEL: test_vmlsq_n_f32
   4769 // CHECK-SWIFT: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[0]
   4770 // CHECK-SWIFT: vsub.f32
   4771 // CHECK-A57: vmls.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   4772 float32x4_t test_vmlsq_n_f32(float32x4_t a, float32x4_t b, float32_t c) {
   4773   return vmlsq_n_f32(a, b, c);
   4774 }
   4775 
   4776 
   4777 // CHECK-LABEL: test_vmovl_s8
   4778 // CHECK: vmovl.s8 q{{[0-9]+}}, d{{[0-9]+}}
   4779 int16x8_t test_vmovl_s8(int8x8_t a) {
   4780   return vmovl_s8(a);
   4781 }
   4782 
   4783 // CHECK-LABEL: test_vmovl_s16
   4784 // CHECK: vmovl.s16 q{{[0-9]+}}, d{{[0-9]+}}
   4785 int32x4_t test_vmovl_s16(int16x4_t a) {
   4786   return vmovl_s16(a);
   4787 }
   4788 
   4789 // CHECK-LABEL: test_vmovl_s32
   4790 // CHECK: vmovl.s32 q{{[0-9]+}}, d{{[0-9]+}}
   4791 int64x2_t test_vmovl_s32(int32x2_t a) {
   4792   return vmovl_s32(a);
   4793 }
   4794 
   4795 // CHECK-LABEL: test_vmovl_u8
   4796 // CHECK: vmovl.u8 q{{[0-9]+}}, d{{[0-9]+}}
   4797 uint16x8_t test_vmovl_u8(uint8x8_t a) {
   4798   return vmovl_u8(a);
   4799 }
   4800 
   4801 // CHECK-LABEL: test_vmovl_u16
   4802 // CHECK: vmovl.u16 q{{[0-9]+}}, d{{[0-9]+}}
   4803 uint32x4_t test_vmovl_u16(uint16x4_t a) {
   4804   return vmovl_u16(a);
   4805 }
   4806 
   4807 // CHECK-LABEL: test_vmovl_u32
   4808 // CHECK: vmovl.u32 q{{[0-9]+}}, d{{[0-9]+}}
   4809 uint64x2_t test_vmovl_u32(uint32x2_t a) {
   4810   return vmovl_u32(a);
   4811 }
   4812 
   4813 
   4814 // CHECK-LABEL: test_vmovn_s16
   4815 // CHECK: vmovn.i16 d{{[0-9]+}}, q{{[0-9]+}}
   4816 int8x8_t test_vmovn_s16(int16x8_t a) {
   4817   return vmovn_s16(a);
   4818 }
   4819 
   4820 // CHECK-LABEL: test_vmovn_s32
   4821 // CHECK: vmovn.i32 d{{[0-9]+}}, q{{[0-9]+}}
   4822 int16x4_t test_vmovn_s32(int32x4_t a) {
   4823   return vmovn_s32(a);
   4824 }
   4825 
   4826 // CHECK-LABEL: test_vmovn_s64
   4827 // CHECK: vmovn.i64 d{{[0-9]+}}, q{{[0-9]+}}
   4828 int32x2_t test_vmovn_s64(int64x2_t a) {
   4829   return vmovn_s64(a);
   4830 }
   4831 
   4832 // CHECK-LABEL: test_vmovn_u16
   4833 // CHECK: vmovn.i16 d{{[0-9]+}}, q{{[0-9]+}}
   4834 uint8x8_t test_vmovn_u16(uint16x8_t a) {
   4835   return vmovn_u16(a);
   4836 }
   4837 
   4838 // CHECK-LABEL: test_vmovn_u32
   4839 // CHECK: vmovn.i32 d{{[0-9]+}}, q{{[0-9]+}}
   4840 uint16x4_t test_vmovn_u32(uint32x4_t a) {
   4841   return vmovn_u32(a);
   4842 }
   4843 
   4844 // CHECK-LABEL: test_vmovn_u64
   4845 // CHECK: vmovn.i64 d{{[0-9]+}}, q{{[0-9]+}}
   4846 uint32x2_t test_vmovn_u64(uint64x2_t a) {
   4847   return vmovn_u64(a);
   4848 }
   4849 
   4850 
   4851 // CHECK-LABEL: test_vmov_n_u8
   4852 // CHECK: vmov
   4853 uint8x8_t test_vmov_n_u8(uint8_t a) {
   4854   return vmov_n_u8(a);
   4855 }
   4856 
   4857 // CHECK-LABEL: test_vmov_n_u16
   4858 // CHECK: vmov
   4859 uint16x4_t test_vmov_n_u16(uint16_t a) {
   4860   return vmov_n_u16(a);
   4861 }
   4862 
   4863 // CHECK-LABEL: test_vmov_n_u32
   4864 // CHECK: vmov
   4865 uint32x2_t test_vmov_n_u32(uint32_t a) {
   4866   return vmov_n_u32(a);
   4867 }
   4868 
   4869 // CHECK-LABEL: test_vmov_n_s8
   4870 // CHECK: vmov
   4871 int8x8_t test_vmov_n_s8(int8_t a) {
   4872   return vmov_n_s8(a);
   4873 }
   4874 
   4875 // CHECK-LABEL: test_vmov_n_s16
   4876 // CHECK: vmov
   4877 int16x4_t test_vmov_n_s16(int16_t a) {
   4878   return vmov_n_s16(a);
   4879 }
   4880 
   4881 // CHECK-LABEL: test_vmov_n_s32
   4882 // CHECK: vmov
   4883 int32x2_t test_vmov_n_s32(int32_t a) {
   4884   return vmov_n_s32(a);
   4885 }
   4886 
   4887 // CHECK-LABEL: test_vmov_n_p8
   4888 // CHECK: vmov
   4889 poly8x8_t test_vmov_n_p8(poly8_t a) {
   4890   return vmov_n_p8(a);
   4891 }
   4892 
   4893 // CHECK-LABEL: test_vmov_n_p16
   4894 // CHECK: vmov
   4895 poly16x4_t test_vmov_n_p16(poly16_t a) {
   4896   return vmov_n_p16(a);
   4897 }
   4898 
   4899 // CHECK-LABEL: test_vmov_n_f16
   4900 // CHECK: vld1.16 {{{d[0-9]+\[\]}}}
   4901 float16x4_t test_vmov_n_f16(float16_t *a) {
   4902   return vmov_n_f16(*a);
   4903 }
   4904 
   4905 // CHECK-LABEL: test_vmov_n_f32
   4906 // CHECK: vmov
   4907 float32x2_t test_vmov_n_f32(float32_t a) {
   4908   return vmov_n_f32(a);
   4909 }
   4910 
   4911 // CHECK-LABEL: test_vmovq_n_u8
   4912 // CHECK: vmov
   4913 uint8x16_t test_vmovq_n_u8(uint8_t a) {
   4914   return vmovq_n_u8(a);
   4915 }
   4916 
   4917 // CHECK-LABEL: test_vmovq_n_u16
   4918 // CHECK: vmov
   4919 uint16x8_t test_vmovq_n_u16(uint16_t a) {
   4920   return vmovq_n_u16(a);
   4921 }
   4922 
   4923 // CHECK-LABEL: test_vmovq_n_u32
   4924 // CHECK: vmov
   4925 uint32x4_t test_vmovq_n_u32(uint32_t a) {
   4926   return vmovq_n_u32(a);
   4927 }
   4928 
   4929 // CHECK-LABEL: test_vmovq_n_s8
   4930 // CHECK: vmov
   4931 int8x16_t test_vmovq_n_s8(int8_t a) {
   4932   return vmovq_n_s8(a);
   4933 }
   4934 
   4935 // CHECK-LABEL: test_vmovq_n_s16
   4936 // CHECK: vmov
   4937 int16x8_t test_vmovq_n_s16(int16_t a) {
   4938   return vmovq_n_s16(a);
   4939 }
   4940 
   4941 // CHECK-LABEL: test_vmovq_n_s32
   4942 // CHECK: vmov
   4943 int32x4_t test_vmovq_n_s32(int32_t a) {
   4944   return vmovq_n_s32(a);
   4945 }
   4946 
   4947 // CHECK-LABEL: test_vmovq_n_p8
   4948 // CHECK: vmov
   4949 poly8x16_t test_vmovq_n_p8(poly8_t a) {
   4950   return vmovq_n_p8(a);
   4951 }
   4952 
   4953 // CHECK-LABEL: test_vmovq_n_p16
   4954 // CHECK: vmov
   4955 poly16x8_t test_vmovq_n_p16(poly16_t a) {
   4956   return vmovq_n_p16(a);
   4957 }
   4958 
   4959 // CHECK-LABEL: test_vmovq_n_f16
   4960 // CHECK: vld1.16 {{{d[0-9]+\[\], d[0-9]+\[\]}}}
   4961 float16x8_t test_vmovq_n_f16(float16_t *a) {
   4962   return vmovq_n_f16(*a);
   4963 }
   4964 
   4965 // CHECK-LABEL: test_vmovq_n_f32
   4966 // CHECK: vmov
   4967 float32x4_t test_vmovq_n_f32(float32_t a) {
   4968   return vmovq_n_f32(a);
   4969 }
   4970 
   4971 // CHECK-LABEL: test_vmov_n_s64
   4972 // CHECK: vmov
   4973 int64x1_t test_vmov_n_s64(int64_t a) {
   4974   return vmov_n_s64(a);
   4975 }
   4976 
   4977 // CHECK-LABEL: test_vmov_n_u64
   4978 // CHECK: vmov
   4979 uint64x1_t test_vmov_n_u64(uint64_t a) {
   4980   return vmov_n_u64(a);
   4981 }
   4982 
   4983 // CHECK-LABEL: test_vmovq_n_s64
   4984 // CHECK: vmov
   4985 int64x2_t test_vmovq_n_s64(int64_t a) {
   4986   return vmovq_n_s64(a);
   4987 }
   4988 
   4989 // CHECK-LABEL: test_vmovq_n_u64
   4990 // CHECK: vmov
   4991 uint64x2_t test_vmovq_n_u64(uint64_t a) {
   4992   return vmovq_n_u64(a);
   4993 }
   4994 
   4995 
   4996 // CHECK-LABEL: test_vmul_s8
   4997 // CHECK: vmul.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   4998 int8x8_t test_vmul_s8(int8x8_t a, int8x8_t b) {
   4999   return vmul_s8(a, b);
   5000 }
   5001 
   5002 // CHECK-LABEL: test_vmul_s16
   5003 // CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5004 int16x4_t test_vmul_s16(int16x4_t a, int16x4_t b) {
   5005   return vmul_s16(a, b);
   5006 }
   5007 
   5008 // CHECK-LABEL: test_vmul_s32
   5009 // CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5010 int32x2_t test_vmul_s32(int32x2_t a, int32x2_t b) {
   5011   return vmul_s32(a, b);
   5012 }
   5013 
   5014 // CHECK-LABEL: test_vmul_f32
   5015 // CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5016 float32x2_t test_vmul_f32(float32x2_t a, float32x2_t b) {
   5017   return vmul_f32(a, b);
   5018 }
   5019 
   5020 // CHECK-LABEL: test_vmul_u8
   5021 // CHECK: vmul.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5022 uint8x8_t test_vmul_u8(uint8x8_t a, uint8x8_t b) {
   5023   return vmul_u8(a, b);
   5024 }
   5025 
   5026 // CHECK-LABEL: test_vmul_u16
   5027 // CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5028 uint16x4_t test_vmul_u16(uint16x4_t a, uint16x4_t b) {
   5029   return vmul_u16(a, b);
   5030 }
   5031 
   5032 // CHECK-LABEL: test_vmul_u32
   5033 // CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5034 uint32x2_t test_vmul_u32(uint32x2_t a, uint32x2_t b) {
   5035   return vmul_u32(a, b);
   5036 }
   5037 
   5038 // CHECK-LABEL: test_vmulq_s8
   5039 // CHECK: vmul.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5040 int8x16_t test_vmulq_s8(int8x16_t a, int8x16_t b) {
   5041   return vmulq_s8(a, b);
   5042 }
   5043 
   5044 // CHECK-LABEL: test_vmulq_s16
   5045 // CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5046 int16x8_t test_vmulq_s16(int16x8_t a, int16x8_t b) {
   5047   return vmulq_s16(a, b);
   5048 }
   5049 
   5050 // CHECK-LABEL: test_vmulq_s32
   5051 // CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5052 int32x4_t test_vmulq_s32(int32x4_t a, int32x4_t b) {
   5053   return vmulq_s32(a, b);
   5054 }
   5055 
   5056 // CHECK-LABEL: test_vmulq_f32
   5057 // CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5058 float32x4_t test_vmulq_f32(float32x4_t a, float32x4_t b) {
   5059   return vmulq_f32(a, b);
   5060 }
   5061 
   5062 // CHECK-LABEL: test_vmulq_u8
   5063 // CHECK: vmul.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5064 uint8x16_t test_vmulq_u8(uint8x16_t a, uint8x16_t b) {
   5065   return vmulq_u8(a, b);
   5066 }
   5067 
   5068 // CHECK-LABEL: test_vmulq_u16
   5069 // CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5070 uint16x8_t test_vmulq_u16(uint16x8_t a, uint16x8_t b) {
   5071   return vmulq_u16(a, b);
   5072 }
   5073 
   5074 // CHECK-LABEL: test_vmulq_u32
   5075 // CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5076 uint32x4_t test_vmulq_u32(uint32x4_t a, uint32x4_t b) {
   5077   return vmulq_u32(a, b);
   5078 }
   5079 
   5080 
   5081 // CHECK-LABEL: test_vmull_s8
   5082 // CHECK: vmull.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5083 int16x8_t test_vmull_s8(int8x8_t a, int8x8_t b) {
   5084   return vmull_s8(a, b);
   5085 }
   5086 
   5087 // CHECK-LABEL: test_vmull_s16
   5088 // CHECK: vmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5089 int32x4_t test_vmull_s16(int16x4_t a, int16x4_t b) {
   5090   return vmull_s16(a, b);
   5091 }
   5092 
   5093 // CHECK-LABEL: test_vmull_s32
   5094 // CHECK: vmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5095 int64x2_t test_vmull_s32(int32x2_t a, int32x2_t b) {
   5096   return vmull_s32(a, b);
   5097 }
   5098 
   5099 // CHECK-LABEL: test_vmull_u8
   5100 // CHECK: vmull.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5101 uint16x8_t test_vmull_u8(uint8x8_t a, uint8x8_t b) {
   5102   return vmull_u8(a, b);
   5103 }
   5104 
   5105 // CHECK-LABEL: test_vmull_u16
   5106 // CHECK: vmull.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5107 uint32x4_t test_vmull_u16(uint16x4_t a, uint16x4_t b) {
   5108   return vmull_u16(a, b);
   5109 }
   5110 
   5111 // CHECK-LABEL: test_vmull_u32
   5112 // CHECK: vmull.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5113 uint64x2_t test_vmull_u32(uint32x2_t a, uint32x2_t b) {
   5114   return vmull_u32(a, b);
   5115 }
   5116 
   5117 // CHECK-LABEL: test_vmull_p8
   5118 // CHECK: vmull.p8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5119 poly16x8_t test_vmull_p8(poly8x8_t a, poly8x8_t b) {
   5120   return vmull_p8(a, b);
   5121 }
   5122 
   5123 
   5124 // CHECK-LABEL: test_vmull_lane_s16
   5125 // CHECK: vmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5126 int32x4_t test_vmull_lane_s16(int16x4_t a, int16x4_t b) {
   5127   return vmull_lane_s16(a, b, 3);
   5128 }
   5129 
   5130 // CHECK-LABEL: test_vmull_lane_s32
   5131 // CHECK: vmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5132 int64x2_t test_vmull_lane_s32(int32x2_t a, int32x2_t b) {
   5133   return vmull_lane_s32(a, b, 1);
   5134 }
   5135 
   5136 // CHECK-LABEL: test_vmull_lane_u16
   5137 // CHECK: vmull.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5138 uint32x4_t test_vmull_lane_u16(uint16x4_t a, uint16x4_t b) {
   5139   return vmull_lane_u16(a, b, 3);
   5140 }
   5141 
   5142 // CHECK-LABEL: test_vmull_lane_u32
   5143 // CHECK: vmull.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5144 uint64x2_t test_vmull_lane_u32(uint32x2_t a, uint32x2_t b) {
   5145   return vmull_lane_u32(a, b, 1);
   5146 }
   5147 
   5148 
   5149 // CHECK-LABEL: test_vmull_n_s16
   5150 // CHECK: vmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5151 int32x4_t test_vmull_n_s16(int16x4_t a, int16_t b) {
   5152   return vmull_n_s16(a, b);
   5153 }
   5154 
   5155 // CHECK-LABEL: test_vmull_n_s32
   5156 // CHECK: vmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5157 int64x2_t test_vmull_n_s32(int32x2_t a, int32_t b) {
   5158   return vmull_n_s32(a, b);
   5159 }
   5160 
   5161 // CHECK-LABEL: test_vmull_n_u16
   5162 // CHECK: vmull.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5163 uint32x4_t test_vmull_n_u16(uint16x4_t a, uint16_t b) {
   5164   return vmull_n_u16(a, b);
   5165 }
   5166 
   5167 // CHECK-LABEL: test_vmull_n_u32
   5168 // CHECK: vmull.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5169 uint64x2_t test_vmull_n_u32(uint32x2_t a, uint32_t b) {
   5170   return vmull_n_u32(a, b);
   5171 }
   5172 
   5173 
   5174 // CHECK-LABEL: test_vmul_p8
   5175 // CHECK: vmul.p8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5176 poly8x8_t test_vmul_p8(poly8x8_t a, poly8x8_t b) {
   5177   return vmul_p8(a, b);
   5178 }
   5179 
   5180 // CHECK-LABEL: test_vmulq_p8
   5181 // CHECK: vmul.p8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5182 poly8x16_t test_vmulq_p8(poly8x16_t a, poly8x16_t b) {
   5183   return vmulq_p8(a, b);
   5184 }
   5185 
   5186 
   5187 // CHECK-LABEL: test_vmul_lane_s16
   5188 // CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5189 int16x4_t test_vmul_lane_s16(int16x4_t a, int16x4_t b) {
   5190   return vmul_lane_s16(a, b, 3);
   5191 }
   5192 
   5193 // CHECK-LABEL: test_vmul_lane_s32
   5194 // CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5195 int32x2_t test_vmul_lane_s32(int32x2_t a, int32x2_t b) {
   5196   return vmul_lane_s32(a, b, 1);
   5197 }
   5198 
   5199 // CHECK-LABEL: test_vmul_lane_f32
   5200 // CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5201 float32x2_t test_vmul_lane_f32(float32x2_t a, float32x2_t b) {
   5202   return vmul_lane_f32(a, b, 1);
   5203 }
   5204 
   5205 // CHECK-LABEL: test_vmul_lane_u16
   5206 // CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5207 uint16x4_t test_vmul_lane_u16(uint16x4_t a, uint16x4_t b) {
   5208   return vmul_lane_u16(a, b, 3);
   5209 }
   5210 
   5211 // CHECK-LABEL: test_vmul_lane_u32
   5212 // CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5213 uint32x2_t test_vmul_lane_u32(uint32x2_t a, uint32x2_t b) {
   5214   return vmul_lane_u32(a, b, 1);
   5215 }
   5216 
   5217 // CHECK-LABEL: test_vmulq_lane_s16
   5218 // CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5219 int16x8_t test_vmulq_lane_s16(int16x8_t a, int16x4_t b) {
   5220   return vmulq_lane_s16(a, b, 3);
   5221 }
   5222 
   5223 // CHECK-LABEL: test_vmulq_lane_s32
   5224 // CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5225 int32x4_t test_vmulq_lane_s32(int32x4_t a, int32x2_t b) {
   5226   return vmulq_lane_s32(a, b, 1);
   5227 }
   5228 
   5229 // CHECK-LABEL: test_vmulq_lane_f32
   5230 // CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5231 float32x4_t test_vmulq_lane_f32(float32x4_t a, float32x2_t b) {
   5232   return vmulq_lane_f32(a, b, 1);
   5233 }
   5234 
   5235 // CHECK-LABEL: test_vmulq_lane_u16
   5236 // CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5237 uint16x8_t test_vmulq_lane_u16(uint16x8_t a, uint16x4_t b) {
   5238   return vmulq_lane_u16(a, b, 3);
   5239 }
   5240 
   5241 // CHECK-LABEL: test_vmulq_lane_u32
   5242 // CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   5243 uint32x4_t test_vmulq_lane_u32(uint32x4_t a, uint32x2_t b) {
   5244   return vmulq_lane_u32(a, b, 1);
   5245 }
   5246 
   5247 
   5248 // CHECK-LABEL: test_vmul_n_s16
   5249 // CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5250 int16x4_t test_vmul_n_s16(int16x4_t a, int16_t b) {
   5251   return vmul_n_s16(a, b);
   5252 }
   5253 
   5254 // CHECK-LABEL: test_vmul_n_s32
   5255 // CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5256 int32x2_t test_vmul_n_s32(int32x2_t a, int32_t b) {
   5257   return vmul_n_s32(a, b);
   5258 }
   5259 
   5260 // CHECK-LABEL: test_vmul_n_f32
   5261 // CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5262 float32x2_t test_vmul_n_f32(float32x2_t a, float32_t b) {
   5263   return vmul_n_f32(a, b);
   5264 }
   5265 
   5266 // CHECK-LABEL: test_vmul_n_u16
   5267 // CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5268 uint16x4_t test_vmul_n_u16(uint16x4_t a, uint16_t b) {
   5269   return vmul_n_u16(a, b);
   5270 }
   5271 
   5272 // CHECK-LABEL: test_vmul_n_u32
   5273 // CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5274 uint32x2_t test_vmul_n_u32(uint32x2_t a, uint32_t b) {
   5275   return vmul_n_u32(a, b);
   5276 }
   5277 
   5278 // CHECK-LABEL: test_vmulq_n_s16
   5279 // CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5280 int16x8_t test_vmulq_n_s16(int16x8_t a, int16_t b) {
   5281   return vmulq_n_s16(a, b);
   5282 }
   5283 
   5284 // CHECK-LABEL: test_vmulq_n_s32
   5285 // CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5286 int32x4_t test_vmulq_n_s32(int32x4_t a, int32_t b) {
   5287   return vmulq_n_s32(a, b);
   5288 }
   5289 
   5290 // CHECK-LABEL: test_vmulq_n_f32
   5291 // CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[0]
   5292 float32x4_t test_vmulq_n_f32(float32x4_t a, float32_t b) {
   5293   return vmulq_n_f32(a, b);
   5294 }
   5295 
   5296 // CHECK-LABEL: test_vmulq_n_u16
   5297 // CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5298 uint16x8_t test_vmulq_n_u16(uint16x8_t a, uint16_t b) {
   5299   return vmulq_n_u16(a, b);
   5300 }
   5301 
   5302 // CHECK-LABEL: test_vmulq_n_u32
   5303 // CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5304 uint32x4_t test_vmulq_n_u32(uint32x4_t a, uint32_t b) {
   5305   return vmulq_n_u32(a, b);
   5306 }
   5307 
   5308 
   5309 // CHECK-LABEL: test_vmvn_s8
   5310 // CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
   5311 int8x8_t test_vmvn_s8(int8x8_t a) {
   5312   return vmvn_s8(a);
   5313 }
   5314 
   5315 // CHECK-LABEL: test_vmvn_s16
   5316 // CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
   5317 int16x4_t test_vmvn_s16(int16x4_t a) {
   5318   return vmvn_s16(a);
   5319 }
   5320 
   5321 // CHECK-LABEL: test_vmvn_s32
   5322 // CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
   5323 int32x2_t test_vmvn_s32(int32x2_t a) {
   5324   return vmvn_s32(a);
   5325 }
   5326 
   5327 // CHECK-LABEL: test_vmvn_u8
   5328 // CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
   5329 uint8x8_t test_vmvn_u8(uint8x8_t a) {
   5330   return vmvn_u8(a);
   5331 }
   5332 
   5333 // CHECK-LABEL: test_vmvn_u16
   5334 // CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
   5335 uint16x4_t test_vmvn_u16(uint16x4_t a) {
   5336   return vmvn_u16(a);
   5337 }
   5338 
   5339 // CHECK-LABEL: test_vmvn_u32
   5340 // CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
   5341 uint32x2_t test_vmvn_u32(uint32x2_t a) {
   5342   return vmvn_u32(a);
   5343 }
   5344 
   5345 // CHECK-LABEL: test_vmvn_p8
   5346 // CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
   5347 poly8x8_t test_vmvn_p8(poly8x8_t a) {
   5348   return vmvn_p8(a);
   5349 }
   5350 
   5351 // CHECK-LABEL: test_vmvnq_s8
   5352 // CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
   5353 int8x16_t test_vmvnq_s8(int8x16_t a) {
   5354   return vmvnq_s8(a);
   5355 }
   5356 
   5357 // CHECK-LABEL: test_vmvnq_s16
   5358 // CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
   5359 int16x8_t test_vmvnq_s16(int16x8_t a) {
   5360   return vmvnq_s16(a);
   5361 }
   5362 
   5363 // CHECK-LABEL: test_vmvnq_s32
   5364 // CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
   5365 int32x4_t test_vmvnq_s32(int32x4_t a) {
   5366   return vmvnq_s32(a);
   5367 }
   5368 
   5369 // CHECK-LABEL: test_vmvnq_u8
   5370 // CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
   5371 uint8x16_t test_vmvnq_u8(uint8x16_t a) {
   5372   return vmvnq_u8(a);
   5373 }
   5374 
   5375 // CHECK-LABEL: test_vmvnq_u16
   5376 // CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
   5377 uint16x8_t test_vmvnq_u16(uint16x8_t a) {
   5378   return vmvnq_u16(a);
   5379 }
   5380 
   5381 // CHECK-LABEL: test_vmvnq_u32
   5382 // CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
   5383 uint32x4_t test_vmvnq_u32(uint32x4_t a) {
   5384   return vmvnq_u32(a);
   5385 }
   5386 
   5387 // CHECK-LABEL: test_vmvnq_p8
   5388 // CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
   5389 poly8x16_t test_vmvnq_p8(poly8x16_t a) {
   5390   return vmvnq_p8(a);
   5391 }
   5392 
   5393 
   5394 // CHECK-LABEL: test_vneg_s8
   5395 // CHECK: vneg.s8 d{{[0-9]+}}, d{{[0-9]+}}
   5396 int8x8_t test_vneg_s8(int8x8_t a) {
   5397   return vneg_s8(a);
   5398 }
   5399 
   5400 // CHECK-LABEL: test_vneg_s16
   5401 // CHECK: vneg.s16 d{{[0-9]+}}, d{{[0-9]+}}
   5402 int16x4_t test_vneg_s16(int16x4_t a) {
   5403   return vneg_s16(a);
   5404 }
   5405 
   5406 // CHECK-LABEL: test_vneg_s32
   5407 // CHECK: vneg.s32 d{{[0-9]+}}, d{{[0-9]+}}
   5408 int32x2_t test_vneg_s32(int32x2_t a) {
   5409   return vneg_s32(a);
   5410 }
   5411 
   5412 // CHECK-LABEL: test_vneg_f32
   5413 // CHECK: vneg.f32 d{{[0-9]+}}, d{{[0-9]+}}
   5414 float32x2_t test_vneg_f32(float32x2_t a) {
   5415   return vneg_f32(a);
   5416 }
   5417 
   5418 // CHECK-LABEL: test_vnegq_s8
   5419 // CHECK: vneg.s8 q{{[0-9]+}}, q{{[0-9]+}}
   5420 int8x16_t test_vnegq_s8(int8x16_t a) {
   5421   return vnegq_s8(a);
   5422 }
   5423 
   5424 // CHECK-LABEL: test_vnegq_s16
   5425 // CHECK: vneg.s16 q{{[0-9]+}}, q{{[0-9]+}}
   5426 int16x8_t test_vnegq_s16(int16x8_t a) {
   5427   return vnegq_s16(a);
   5428 }
   5429 
   5430 // CHECK-LABEL: test_vnegq_s32
   5431 // CHECK: vneg.s32 q{{[0-9]+}}, q{{[0-9]+}}
   5432 int32x4_t test_vnegq_s32(int32x4_t a) {
   5433   return vnegq_s32(a);
   5434 }
   5435 
   5436 // CHECK-LABEL: test_vnegq_f32
   5437 // CHECK: vneg.f32 q{{[0-9]+}}, q{{[0-9]+}}
   5438 float32x4_t test_vnegq_f32(float32x4_t a) {
   5439   return vnegq_f32(a);
   5440 }
   5441 
   5442 
   5443 // CHECK-LABEL: test_vorn_s8
   5444 // CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5445 int8x8_t test_vorn_s8(int8x8_t a, int8x8_t b) {
   5446   return vorn_s8(a, b);
   5447 }
   5448 
   5449 // CHECK-LABEL: test_vorn_s16
   5450 // CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5451 int16x4_t test_vorn_s16(int16x4_t a, int16x4_t b) {
   5452   return vorn_s16(a, b);
   5453 }
   5454 
   5455 // CHECK-LABEL: test_vorn_s32
   5456 // CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5457 int32x2_t test_vorn_s32(int32x2_t a, int32x2_t b) {
   5458   return vorn_s32(a, b);
   5459 }
   5460 
   5461 // CHECK-LABEL: test_vorn_s64
   5462 // CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5463 int64x1_t test_vorn_s64(int64x1_t a, int64x1_t b) {
   5464   return vorn_s64(a, b);
   5465 }
   5466 
   5467 // CHECK-LABEL: test_vorn_u8
   5468 // CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5469 uint8x8_t test_vorn_u8(uint8x8_t a, uint8x8_t b) {
   5470   return vorn_u8(a, b);
   5471 }
   5472 
   5473 // CHECK-LABEL: test_vorn_u16
   5474 // CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5475 uint16x4_t test_vorn_u16(uint16x4_t a, uint16x4_t b) {
   5476   return vorn_u16(a, b);
   5477 }
   5478 
   5479 // CHECK-LABEL: test_vorn_u32
   5480 // CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5481 uint32x2_t test_vorn_u32(uint32x2_t a, uint32x2_t b) {
   5482   return vorn_u32(a, b);
   5483 }
   5484 
   5485 // CHECK-LABEL: test_vorn_u64
   5486 // CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5487 uint64x1_t test_vorn_u64(uint64x1_t a, uint64x1_t b) {
   5488   return vorn_u64(a, b);
   5489 }
   5490 
   5491 // CHECK-LABEL: test_vornq_s8
   5492 // CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5493 int8x16_t test_vornq_s8(int8x16_t a, int8x16_t b) {
   5494   return vornq_s8(a, b);
   5495 }
   5496 
   5497 // CHECK-LABEL: test_vornq_s16
   5498 // CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5499 int16x8_t test_vornq_s16(int16x8_t a, int16x8_t b) {
   5500   return vornq_s16(a, b);
   5501 }
   5502 
   5503 // CHECK-LABEL: test_vornq_s32
   5504 // CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5505 int32x4_t test_vornq_s32(int32x4_t a, int32x4_t b) {
   5506   return vornq_s32(a, b);
   5507 }
   5508 
   5509 // CHECK-LABEL: test_vornq_s64
   5510 // CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5511 int64x2_t test_vornq_s64(int64x2_t a, int64x2_t b) {
   5512   return vornq_s64(a, b);
   5513 }
   5514 
   5515 // CHECK-LABEL: test_vornq_u8
   5516 // CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5517 uint8x16_t test_vornq_u8(uint8x16_t a, uint8x16_t b) {
   5518   return vornq_u8(a, b);
   5519 }
   5520 
   5521 // CHECK-LABEL: test_vornq_u16
   5522 // CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5523 uint16x8_t test_vornq_u16(uint16x8_t a, uint16x8_t b) {
   5524   return vornq_u16(a, b);
   5525 }
   5526 
   5527 // CHECK-LABEL: test_vornq_u32
   5528 // CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5529 uint32x4_t test_vornq_u32(uint32x4_t a, uint32x4_t b) {
   5530   return vornq_u32(a, b);
   5531 }
   5532 
   5533 // CHECK-LABEL: test_vornq_u64
   5534 // CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5535 uint64x2_t test_vornq_u64(uint64x2_t a, uint64x2_t b) {
   5536   return vornq_u64(a, b);
   5537 }
   5538 
   5539 
   5540 // CHECK-LABEL: test_vorr_s8
   5541 // CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5542 int8x8_t test_vorr_s8(int8x8_t a, int8x8_t b) {
   5543   return vorr_s8(a, b);
   5544 }
   5545 
   5546 // CHECK-LABEL: test_vorr_s16
   5547 // CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5548 int16x4_t test_vorr_s16(int16x4_t a, int16x4_t b) {
   5549   return vorr_s16(a, b);
   5550 }
   5551 
   5552 // CHECK-LABEL: test_vorr_s32
   5553 // CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5554 int32x2_t test_vorr_s32(int32x2_t a, int32x2_t b) {
   5555   return vorr_s32(a, b);
   5556 }
   5557 
   5558 // CHECK-LABEL: test_vorr_s64
   5559 // CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5560 int64x1_t test_vorr_s64(int64x1_t a, int64x1_t b) {
   5561   return vorr_s64(a, b);
   5562 }
   5563 
   5564 // CHECK-LABEL: test_vorr_u8
   5565 // CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5566 uint8x8_t test_vorr_u8(uint8x8_t a, uint8x8_t b) {
   5567   return vorr_u8(a, b);
   5568 }
   5569 
   5570 // CHECK-LABEL: test_vorr_u16
   5571 // CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5572 uint16x4_t test_vorr_u16(uint16x4_t a, uint16x4_t b) {
   5573   return vorr_u16(a, b);
   5574 }
   5575 
   5576 // CHECK-LABEL: test_vorr_u32
   5577 // CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5578 uint32x2_t test_vorr_u32(uint32x2_t a, uint32x2_t b) {
   5579   return vorr_u32(a, b);
   5580 }
   5581 
   5582 // CHECK-LABEL: test_vorr_u64
   5583 // CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5584 uint64x1_t test_vorr_u64(uint64x1_t a, uint64x1_t b) {
   5585   return vorr_u64(a, b);
   5586 }
   5587 
   5588 // CHECK-LABEL: test_vorrq_s8
   5589 // CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5590 int8x16_t test_vorrq_s8(int8x16_t a, int8x16_t b) {
   5591   return vorrq_s8(a, b);
   5592 }
   5593 
   5594 // CHECK-LABEL: test_vorrq_s16
   5595 // CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5596 int16x8_t test_vorrq_s16(int16x8_t a, int16x8_t b) {
   5597   return vorrq_s16(a, b);
   5598 }
   5599 
   5600 // CHECK-LABEL: test_vorrq_s32
   5601 // CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5602 int32x4_t test_vorrq_s32(int32x4_t a, int32x4_t b) {
   5603   return vorrq_s32(a, b);
   5604 }
   5605 
   5606 // CHECK-LABEL: test_vorrq_s64
   5607 // CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5608 int64x2_t test_vorrq_s64(int64x2_t a, int64x2_t b) {
   5609   return vorrq_s64(a, b);
   5610 }
   5611 
   5612 // CHECK-LABEL: test_vorrq_u8
   5613 // CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5614 uint8x16_t test_vorrq_u8(uint8x16_t a, uint8x16_t b) {
   5615   return vorrq_u8(a, b);
   5616 }
   5617 
   5618 // CHECK-LABEL: test_vorrq_u16
   5619 // CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5620 uint16x8_t test_vorrq_u16(uint16x8_t a, uint16x8_t b) {
   5621   return vorrq_u16(a, b);
   5622 }
   5623 
   5624 // CHECK-LABEL: test_vorrq_u32
   5625 // CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5626 uint32x4_t test_vorrq_u32(uint32x4_t a, uint32x4_t b) {
   5627   return vorrq_u32(a, b);
   5628 }
   5629 
   5630 // CHECK-LABEL: test_vorrq_u64
   5631 // CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5632 uint64x2_t test_vorrq_u64(uint64x2_t a, uint64x2_t b) {
   5633   return vorrq_u64(a, b);
   5634 }
   5635 
   5636 
   5637 // CHECK-LABEL: test_vpadal_s8
   5638 // CHECK: vpadal.s8 d{{[0-9]+}}, d{{[0-9]+}}
   5639 int16x4_t test_vpadal_s8(int16x4_t a, int8x8_t b) {
   5640   return vpadal_s8(a, b);
   5641 }
   5642 
   5643 // CHECK-LABEL: test_vpadal_s16
   5644 // CHECK: vpadal.s16 d{{[0-9]+}}, d{{[0-9]+}}
   5645 int32x2_t test_vpadal_s16(int32x2_t a, int16x4_t b) {
   5646   return vpadal_s16(a, b);
   5647 }
   5648 
   5649 // CHECK-LABEL: test_vpadal_s32
   5650 // CHECK: vpadal.s32 d{{[0-9]+}}, d{{[0-9]+}}
   5651 int64x1_t test_vpadal_s32(int64x1_t a, int32x2_t b) {
   5652   return vpadal_s32(a, b);
   5653 }
   5654 
   5655 // CHECK-LABEL: test_vpadal_u8
   5656 // CHECK: vpadal.u8 d{{[0-9]+}}, d{{[0-9]+}}
   5657 uint16x4_t test_vpadal_u8(uint16x4_t a, uint8x8_t b) {
   5658   return vpadal_u8(a, b);
   5659 }
   5660 
   5661 // CHECK-LABEL: test_vpadal_u16
   5662 // CHECK: vpadal.u16 d{{[0-9]+}}, d{{[0-9]+}}
   5663 uint32x2_t test_vpadal_u16(uint32x2_t a, uint16x4_t b) {
   5664   return vpadal_u16(a, b);
   5665 }
   5666 
   5667 // CHECK-LABEL: test_vpadal_u32
   5668 // CHECK: vpadal.u32 d{{[0-9]+}}, d{{[0-9]+}}
   5669 uint64x1_t test_vpadal_u32(uint64x1_t a, uint32x2_t b) {
   5670   return vpadal_u32(a, b);
   5671 }
   5672 
   5673 // CHECK-LABEL: test_vpadalq_s8
   5674 // CHECK: vpadal.s8 q{{[0-9]+}}, q{{[0-9]+}}
   5675 int16x8_t test_vpadalq_s8(int16x8_t a, int8x16_t b) {
   5676   return vpadalq_s8(a, b);
   5677 }
   5678 
   5679 // CHECK-LABEL: test_vpadalq_s16
   5680 // CHECK: vpadal.s16 q{{[0-9]+}}, q{{[0-9]+}}
   5681 int32x4_t test_vpadalq_s16(int32x4_t a, int16x8_t b) {
   5682   return vpadalq_s16(a, b);
   5683 }
   5684 
   5685 // CHECK-LABEL: test_vpadalq_s32
   5686 // CHECK: vpadal.s32 q{{[0-9]+}}, q{{[0-9]+}}
   5687 int64x2_t test_vpadalq_s32(int64x2_t a, int32x4_t b) {
   5688   return vpadalq_s32(a, b);
   5689 }
   5690 
   5691 // CHECK-LABEL: test_vpadalq_u8
   5692 // CHECK: vpadal.u8 q{{[0-9]+}}, q{{[0-9]+}}
   5693 uint16x8_t test_vpadalq_u8(uint16x8_t a, uint8x16_t b) {
   5694   return vpadalq_u8(a, b);
   5695 }
   5696 
   5697 // CHECK-LABEL: test_vpadalq_u16
   5698 // CHECK: vpadal.u16 q{{[0-9]+}}, q{{[0-9]+}}
   5699 uint32x4_t test_vpadalq_u16(uint32x4_t a, uint16x8_t b) {
   5700   return vpadalq_u16(a, b);
   5701 }
   5702 
   5703 // CHECK-LABEL: test_vpadalq_u32
   5704 // CHECK: vpadal.u32 q{{[0-9]+}}, q{{[0-9]+}}
   5705 uint64x2_t test_vpadalq_u32(uint64x2_t a, uint32x4_t b) {
   5706   return vpadalq_u32(a, b);
   5707 }
   5708 
   5709 
   5710 // CHECK-LABEL: test_vpadd_s8
   5711 // CHECK: vpadd.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5712 int8x8_t test_vpadd_s8(int8x8_t a, int8x8_t b) {
   5713   return vpadd_s8(a, b);
   5714 }
   5715 
   5716 // CHECK-LABEL: test_vpadd_s16
   5717 // CHECK: vpadd.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5718 int16x4_t test_vpadd_s16(int16x4_t a, int16x4_t b) {
   5719   return vpadd_s16(a, b);
   5720 }
   5721 
   5722 // CHECK-LABEL: test_vpadd_s32
   5723 // CHECK: vpadd.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5724 int32x2_t test_vpadd_s32(int32x2_t a, int32x2_t b) {
   5725   return vpadd_s32(a, b);
   5726 }
   5727 
   5728 // CHECK-LABEL: test_vpadd_u8
   5729 // CHECK: vpadd.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5730 uint8x8_t test_vpadd_u8(uint8x8_t a, uint8x8_t b) {
   5731   return vpadd_u8(a, b);
   5732 }
   5733 
   5734 // CHECK-LABEL: test_vpadd_u16
   5735 // CHECK: vpadd.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5736 uint16x4_t test_vpadd_u16(uint16x4_t a, uint16x4_t b) {
   5737   return vpadd_u16(a, b);
   5738 }
   5739 
   5740 // CHECK-LABEL: test_vpadd_u32
   5741 // CHECK: vpadd.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5742 uint32x2_t test_vpadd_u32(uint32x2_t a, uint32x2_t b) {
   5743   return vpadd_u32(a, b);
   5744 }
   5745 
   5746 // CHECK-LABEL: test_vpadd_f32
   5747 // CHECK: vpadd.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5748 float32x2_t test_vpadd_f32(float32x2_t a, float32x2_t b) {
   5749   return vpadd_f32(a, b);
   5750 }
   5751 
   5752 
   5753 // CHECK-LABEL: test_vpaddl_s8
   5754 // CHECK: vpaddl.s8 d{{[0-9]+}}, d{{[0-9]+}}
   5755 int16x4_t test_vpaddl_s8(int8x8_t a) {
   5756   return vpaddl_s8(a);
   5757 }
   5758 
   5759 // CHECK-LABEL: test_vpaddl_s16
   5760 // CHECK: vpaddl.s16 d{{[0-9]+}}, d{{[0-9]+}}
   5761 int32x2_t test_vpaddl_s16(int16x4_t a) {
   5762   return vpaddl_s16(a);
   5763 }
   5764 
   5765 // CHECK-LABEL: test_vpaddl_s32
   5766 // CHECK: vpaddl.s32 d{{[0-9]+}}, d{{[0-9]+}}
   5767 int64x1_t test_vpaddl_s32(int32x2_t a) {
   5768   return vpaddl_s32(a);
   5769 }
   5770 
   5771 // CHECK-LABEL: test_vpaddl_u8
   5772 // CHECK: vpaddl.u8 d{{[0-9]+}}, d{{[0-9]+}}
   5773 uint16x4_t test_vpaddl_u8(uint8x8_t a) {
   5774   return vpaddl_u8(a);
   5775 }
   5776 
   5777 // CHECK-LABEL: test_vpaddl_u16
   5778 // CHECK: vpaddl.u16 d{{[0-9]+}}, d{{[0-9]+}}
   5779 uint32x2_t test_vpaddl_u16(uint16x4_t a) {
   5780   return vpaddl_u16(a);
   5781 }
   5782 
   5783 // CHECK-LABEL: test_vpaddl_u32
   5784 // CHECK: vpaddl.u32 d{{[0-9]+}}, d{{[0-9]+}}
   5785 uint64x1_t test_vpaddl_u32(uint32x2_t a) {
   5786   return vpaddl_u32(a);
   5787 }
   5788 
   5789 // CHECK-LABEL: test_vpaddlq_s8
   5790 // CHECK: vpaddl.s8 q{{[0-9]+}}, q{{[0-9]+}}
   5791 int16x8_t test_vpaddlq_s8(int8x16_t a) {
   5792   return vpaddlq_s8(a);
   5793 }
   5794 
   5795 // CHECK-LABEL: test_vpaddlq_s16
   5796 // CHECK: vpaddl.s16 q{{[0-9]+}}, q{{[0-9]+}}
   5797 int32x4_t test_vpaddlq_s16(int16x8_t a) {
   5798   return vpaddlq_s16(a);
   5799 }
   5800 
   5801 // CHECK-LABEL: test_vpaddlq_s32
   5802 // CHECK: vpaddl.s32 q{{[0-9]+}}, q{{[0-9]+}}
   5803 int64x2_t test_vpaddlq_s32(int32x4_t a) {
   5804   return vpaddlq_s32(a);
   5805 }
   5806 
   5807 // CHECK-LABEL: test_vpaddlq_u8
   5808 // CHECK: vpaddl.u8 q{{[0-9]+}}, q{{[0-9]+}}
   5809 uint16x8_t test_vpaddlq_u8(uint8x16_t a) {
   5810   return vpaddlq_u8(a);
   5811 }
   5812 
   5813 // CHECK-LABEL: test_vpaddlq_u16
   5814 // CHECK: vpaddl.u16 q{{[0-9]+}}, q{{[0-9]+}}
   5815 uint32x4_t test_vpaddlq_u16(uint16x8_t a) {
   5816   return vpaddlq_u16(a);
   5817 }
   5818 
   5819 // CHECK-LABEL: test_vpaddlq_u32
   5820 // CHECK: vpaddl.u32 q{{[0-9]+}}, q{{[0-9]+}}
   5821 uint64x2_t test_vpaddlq_u32(uint32x4_t a) {
   5822   return vpaddlq_u32(a);
   5823 }
   5824 
   5825 
   5826 // CHECK-LABEL: test_vpmax_s8
   5827 // CHECK: vpmax.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5828 int8x8_t test_vpmax_s8(int8x8_t a, int8x8_t b) {
   5829   return vpmax_s8(a, b);
   5830 }
   5831 
   5832 // CHECK-LABEL: test_vpmax_s16
   5833 // CHECK: vpmax.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5834 int16x4_t test_vpmax_s16(int16x4_t a, int16x4_t b) {
   5835   return vpmax_s16(a, b);
   5836 }
   5837 
   5838 // CHECK-LABEL: test_vpmax_s32
   5839 // CHECK: vpmax.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5840 int32x2_t test_vpmax_s32(int32x2_t a, int32x2_t b) {
   5841   return vpmax_s32(a, b);
   5842 }
   5843 
   5844 // CHECK-LABEL: test_vpmax_u8
   5845 // CHECK: vpmax.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5846 uint8x8_t test_vpmax_u8(uint8x8_t a, uint8x8_t b) {
   5847   return vpmax_u8(a, b);
   5848 }
   5849 
   5850 // CHECK-LABEL: test_vpmax_u16
   5851 // CHECK: vpmax.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5852 uint16x4_t test_vpmax_u16(uint16x4_t a, uint16x4_t b) {
   5853   return vpmax_u16(a, b);
   5854 }
   5855 
   5856 // CHECK-LABEL: test_vpmax_u32
   5857 // CHECK: vpmax.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5858 uint32x2_t test_vpmax_u32(uint32x2_t a, uint32x2_t b) {
   5859   return vpmax_u32(a, b);
   5860 }
   5861 
   5862 // CHECK-LABEL: test_vpmax_f32
   5863 // CHECK: vpmax.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5864 float32x2_t test_vpmax_f32(float32x2_t a, float32x2_t b) {
   5865   return vpmax_f32(a, b);
   5866 }
   5867 
   5868 
   5869 // CHECK-LABEL: test_vpmin_s8
   5870 // CHECK: vpmin.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5871 int8x8_t test_vpmin_s8(int8x8_t a, int8x8_t b) {
   5872   return vpmin_s8(a, b);
   5873 }
   5874 
   5875 // CHECK-LABEL: test_vpmin_s16
   5876 // CHECK: vpmin.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5877 int16x4_t test_vpmin_s16(int16x4_t a, int16x4_t b) {
   5878   return vpmin_s16(a, b);
   5879 }
   5880 
   5881 // CHECK-LABEL: test_vpmin_s32
   5882 // CHECK: vpmin.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5883 int32x2_t test_vpmin_s32(int32x2_t a, int32x2_t b) {
   5884   return vpmin_s32(a, b);
   5885 }
   5886 
   5887 // CHECK-LABEL: test_vpmin_u8
   5888 // CHECK: vpmin.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5889 uint8x8_t test_vpmin_u8(uint8x8_t a, uint8x8_t b) {
   5890   return vpmin_u8(a, b);
   5891 }
   5892 
   5893 // CHECK-LABEL: test_vpmin_u16
   5894 // CHECK: vpmin.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5895 uint16x4_t test_vpmin_u16(uint16x4_t a, uint16x4_t b) {
   5896   return vpmin_u16(a, b);
   5897 }
   5898 
   5899 // CHECK-LABEL: test_vpmin_u32
   5900 // CHECK: vpmin.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5901 uint32x2_t test_vpmin_u32(uint32x2_t a, uint32x2_t b) {
   5902   return vpmin_u32(a, b);
   5903 }
   5904 
   5905 // CHECK-LABEL: test_vpmin_f32
   5906 // CHECK: vpmin.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5907 float32x2_t test_vpmin_f32(float32x2_t a, float32x2_t b) {
   5908   return vpmin_f32(a, b);
   5909 }
   5910 
   5911 
   5912 // CHECK-LABEL: test_vqabs_s8
   5913 // CHECK: vqabs.s8 d{{[0-9]+}}, d{{[0-9]+}}
   5914 int8x8_t test_vqabs_s8(int8x8_t a) {
   5915   return vqabs_s8(a);
   5916 }
   5917 
   5918 // CHECK-LABEL: test_vqabs_s16
   5919 // CHECK: vqabs.s16 d{{[0-9]+}}, d{{[0-9]+}}
   5920 int16x4_t test_vqabs_s16(int16x4_t a) {
   5921   return vqabs_s16(a);
   5922 }
   5923 
   5924 // CHECK-LABEL: test_vqabs_s32
   5925 // CHECK: vqabs.s32 d{{[0-9]+}}, d{{[0-9]+}}
   5926 int32x2_t test_vqabs_s32(int32x2_t a) {
   5927   return vqabs_s32(a);
   5928 }
   5929 
   5930 // CHECK-LABEL: test_vqabsq_s8
   5931 // CHECK: vqabs.s8 q{{[0-9]+}}, q{{[0-9]+}}
   5932 int8x16_t test_vqabsq_s8(int8x16_t a) {
   5933   return vqabsq_s8(a);
   5934 }
   5935 
   5936 // CHECK-LABEL: test_vqabsq_s16
   5937 // CHECK: vqabs.s16 q{{[0-9]+}}, q{{[0-9]+}}
   5938 int16x8_t test_vqabsq_s16(int16x8_t a) {
   5939   return vqabsq_s16(a);
   5940 }
   5941 
   5942 // CHECK-LABEL: test_vqabsq_s32
   5943 // CHECK: vqabs.s32 q{{[0-9]+}}, q{{[0-9]+}}
   5944 int32x4_t test_vqabsq_s32(int32x4_t a) {
   5945   return vqabsq_s32(a);
   5946 }
   5947 
   5948 
   5949 // CHECK-LABEL: test_vqadd_s8
   5950 // CHECK: vqadd.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5951 int8x8_t test_vqadd_s8(int8x8_t a, int8x8_t b) {
   5952   return vqadd_s8(a, b);
   5953 }
   5954 
   5955 // CHECK-LABEL: test_vqadd_s16
   5956 // CHECK: vqadd.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5957 int16x4_t test_vqadd_s16(int16x4_t a, int16x4_t b) {
   5958   return vqadd_s16(a, b);
   5959 }
   5960 
   5961 // CHECK-LABEL: test_vqadd_s32
   5962 // CHECK: vqadd.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5963 int32x2_t test_vqadd_s32(int32x2_t a, int32x2_t b) {
   5964   return vqadd_s32(a, b);
   5965 }
   5966 
   5967 // CHECK-LABEL: test_vqadd_s64
   5968 // CHECK: vqadd.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5969 int64x1_t test_vqadd_s64(int64x1_t a, int64x1_t b) {
   5970   return vqadd_s64(a, b);
   5971 }
   5972 
   5973 // CHECK-LABEL: test_vqadd_u8
   5974 // CHECK: vqadd.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5975 uint8x8_t test_vqadd_u8(uint8x8_t a, uint8x8_t b) {
   5976   return vqadd_u8(a, b);
   5977 }
   5978 
   5979 // CHECK-LABEL: test_vqadd_u16
   5980 // CHECK: vqadd.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5981 uint16x4_t test_vqadd_u16(uint16x4_t a, uint16x4_t b) {
   5982   return vqadd_u16(a, b);
   5983 }
   5984 
   5985 // CHECK-LABEL: test_vqadd_u32
   5986 // CHECK: vqadd.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5987 uint32x2_t test_vqadd_u32(uint32x2_t a, uint32x2_t b) {
   5988   return vqadd_u32(a, b);
   5989 }
   5990 
   5991 // CHECK-LABEL: test_vqadd_u64
   5992 // CHECK: vqadd.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   5993 uint64x1_t test_vqadd_u64(uint64x1_t a, uint64x1_t b) {
   5994   return vqadd_u64(a, b);
   5995 }
   5996 
   5997 // CHECK-LABEL: test_vqaddq_s8
   5998 // CHECK: vqadd.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   5999 int8x16_t test_vqaddq_s8(int8x16_t a, int8x16_t b) {
   6000   return vqaddq_s8(a, b);
   6001 }
   6002 
   6003 // CHECK-LABEL: test_vqaddq_s16
   6004 // CHECK: vqadd.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6005 int16x8_t test_vqaddq_s16(int16x8_t a, int16x8_t b) {
   6006   return vqaddq_s16(a, b);
   6007 }
   6008 
   6009 // CHECK-LABEL: test_vqaddq_s32
   6010 // CHECK: vqadd.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6011 int32x4_t test_vqaddq_s32(int32x4_t a, int32x4_t b) {
   6012   return vqaddq_s32(a, b);
   6013 }
   6014 
   6015 // CHECK-LABEL: test_vqaddq_s64
   6016 // CHECK: vqadd.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6017 int64x2_t test_vqaddq_s64(int64x2_t a, int64x2_t b) {
   6018   return vqaddq_s64(a, b);
   6019 }
   6020 
   6021 // CHECK-LABEL: test_vqaddq_u8
   6022 // CHECK: vqadd.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6023 uint8x16_t test_vqaddq_u8(uint8x16_t a, uint8x16_t b) {
   6024   return vqaddq_u8(a, b);
   6025 }
   6026 
   6027 // CHECK-LABEL: test_vqaddq_u16
   6028 // CHECK: vqadd.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6029 uint16x8_t test_vqaddq_u16(uint16x8_t a, uint16x8_t b) {
   6030   return vqaddq_u16(a, b);
   6031 }
   6032 
   6033 // CHECK-LABEL: test_vqaddq_u32
   6034 // CHECK: vqadd.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6035 uint32x4_t test_vqaddq_u32(uint32x4_t a, uint32x4_t b) {
   6036   return vqaddq_u32(a, b);
   6037 }
   6038 
   6039 // CHECK-LABEL: test_vqaddq_u64
   6040 // CHECK: vqadd.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6041 uint64x2_t test_vqaddq_u64(uint64x2_t a, uint64x2_t b) {
   6042   return vqaddq_u64(a, b);
   6043 }
   6044 
   6045 
   6046 // CHECK-LABEL: test_vqdmlal_s16
   6047 // CHECK: vqdmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6048 int32x4_t test_vqdmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   6049   return vqdmlal_s16(a, b, c);
   6050 }
   6051 
   6052 // CHECK-LABEL: test_vqdmlal_s32
   6053 // CHECK: vqdmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6054 int64x2_t test_vqdmlal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   6055   return vqdmlal_s32(a, b, c);
   6056 }
   6057 
   6058 
   6059 // CHECK-LABEL: test_vqdmlal_lane_s16
   6060 // CHECK: vqdmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6061 int32x4_t test_vqdmlal_lane_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   6062   return vqdmlal_lane_s16(a, b, c, 3);
   6063 }
   6064 
   6065 // CHECK-LABEL: test_vqdmlal_lane_s32
   6066 // CHECK: vqdmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6067 int64x2_t test_vqdmlal_lane_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   6068   return vqdmlal_lane_s32(a, b, c, 1);
   6069 }
   6070 
   6071 
   6072 // CHECK-LABEL: test_vqdmlal_n_s16
   6073 // CHECK: vqdmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6074 int32x4_t test_vqdmlal_n_s16(int32x4_t a, int16x4_t b, int16_t c) {
   6075   return vqdmlal_n_s16(a, b, c);
   6076 }
   6077 
   6078 // CHECK-LABEL: test_vqdmlal_n_s32
   6079 // CHECK: vqdmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6080 int64x2_t test_vqdmlal_n_s32(int64x2_t a, int32x2_t b, int32_t c) {
   6081   return vqdmlal_n_s32(a, b, c);
   6082 }
   6083 
   6084 
   6085 // CHECK-LABEL: test_vqdmlsl_s16
   6086 // CHECK: vqdmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6087 int32x4_t test_vqdmlsl_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   6088   return vqdmlsl_s16(a, b, c);
   6089 }
   6090 
   6091 // CHECK-LABEL: test_vqdmlsl_s32
   6092 // CHECK: vqdmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6093 int64x2_t test_vqdmlsl_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   6094   return vqdmlsl_s32(a, b, c);
   6095 }
   6096 
   6097 
   6098 // CHECK-LABEL: test_vqdmlsl_lane_s16
   6099 // CHECK: vqdmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6100 int32x4_t test_vqdmlsl_lane_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   6101   return vqdmlsl_lane_s16(a, b, c, 3);
   6102 }
   6103 
   6104 // CHECK-LABEL: test_vqdmlsl_lane_s32
   6105 // CHECK: vqdmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6106 int64x2_t test_vqdmlsl_lane_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   6107   return vqdmlsl_lane_s32(a, b, c, 1);
   6108 }
   6109 
   6110 
   6111 // CHECK-LABEL: test_vqdmlsl_n_s16
   6112 // CHECK: vqdmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6113 int32x4_t test_vqdmlsl_n_s16(int32x4_t a, int16x4_t b, int16_t c) {
   6114   return vqdmlsl_n_s16(a, b, c);
   6115 }
   6116 
   6117 // CHECK-LABEL: test_vqdmlsl_n_s32
   6118 // CHECK: vqdmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6119 int64x2_t test_vqdmlsl_n_s32(int64x2_t a, int32x2_t b, int32_t c) {
   6120   return vqdmlsl_n_s32(a, b, c);
   6121 }
   6122 
   6123 
   6124 // CHECK-LABEL: test_vqdmulh_s16
   6125 // CHECK: vqdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6126 int16x4_t test_vqdmulh_s16(int16x4_t a, int16x4_t b) {
   6127   return vqdmulh_s16(a, b);
   6128 }
   6129 
   6130 // CHECK-LABEL: test_vqdmulh_s32
   6131 // CHECK: vqdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6132 int32x2_t test_vqdmulh_s32(int32x2_t a, int32x2_t b) {
   6133   return vqdmulh_s32(a, b);
   6134 }
   6135 
   6136 // CHECK-LABEL: test_vqdmulhq_s16
   6137 // CHECK: vqdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6138 int16x8_t test_vqdmulhq_s16(int16x8_t a, int16x8_t b) {
   6139   return vqdmulhq_s16(a, b);
   6140 }
   6141 
   6142 // CHECK-LABEL: test_vqdmulhq_s32
   6143 // CHECK: vqdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6144 int32x4_t test_vqdmulhq_s32(int32x4_t a, int32x4_t b) {
   6145   return vqdmulhq_s32(a, b);
   6146 }
   6147 
   6148 
   6149 // CHECK-LABEL: test_vqdmulh_lane_s16
   6150 // CHECK: vqdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6151 int16x4_t test_vqdmulh_lane_s16(int16x4_t a, int16x4_t b) {
   6152   return vqdmulh_lane_s16(a, b, 3);
   6153 }
   6154 
   6155 // CHECK-LABEL: test_vqdmulh_lane_s32
   6156 // CHECK: vqdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6157 int32x2_t test_vqdmulh_lane_s32(int32x2_t a, int32x2_t b) {
   6158   return vqdmulh_lane_s32(a, b, 1);
   6159 }
   6160 
   6161 // CHECK-LABEL: test_vqdmulhq_lane_s16
   6162 // CHECK: vqdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6163 int16x8_t test_vqdmulhq_lane_s16(int16x8_t a, int16x4_t b) {
   6164   return vqdmulhq_lane_s16(a, b, 3);
   6165 }
   6166 
   6167 // CHECK-LABEL: test_vqdmulhq_lane_s32
   6168 // CHECK: vqdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6169 int32x4_t test_vqdmulhq_lane_s32(int32x4_t a, int32x2_t b) {
   6170   return vqdmulhq_lane_s32(a, b, 1);
   6171 }
   6172 
   6173 
   6174 // CHECK-LABEL: test_vqdmulh_n_s16
   6175 // CHECK: vqdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6176 int16x4_t test_vqdmulh_n_s16(int16x4_t a, int16_t b) {
   6177   return vqdmulh_n_s16(a, b);
   6178 }
   6179 
   6180 // CHECK-LABEL: test_vqdmulh_n_s32
   6181 // CHECK: vqdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6182 int32x2_t test_vqdmulh_n_s32(int32x2_t a, int32_t b) {
   6183   return vqdmulh_n_s32(a, b);
   6184 }
   6185 
   6186 // CHECK-LABEL: test_vqdmulhq_n_s16
   6187 // CHECK: vqdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6188 int16x8_t test_vqdmulhq_n_s16(int16x8_t a, int16_t b) {
   6189   return vqdmulhq_n_s16(a, b);
   6190 }
   6191 
   6192 // CHECK-LABEL: test_vqdmulhq_n_s32
   6193 // CHECK: vqdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6194 int32x4_t test_vqdmulhq_n_s32(int32x4_t a, int32_t b) {
   6195   return vqdmulhq_n_s32(a, b);
   6196 }
   6197 
   6198 
   6199 // CHECK-LABEL: test_vqdmull_s16
   6200 // CHECK: vqdmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6201 int32x4_t test_vqdmull_s16(int16x4_t a, int16x4_t b) {
   6202   return vqdmull_s16(a, b);
   6203 }
   6204 
   6205 // CHECK-LABEL: test_vqdmull_s32
   6206 // CHECK: vqdmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6207 int64x2_t test_vqdmull_s32(int32x2_t a, int32x2_t b) {
   6208   return vqdmull_s32(a, b);
   6209 }
   6210 
   6211 
   6212 // CHECK-LABEL: test_vqdmull_lane_s16
   6213 // CHECK: vqdmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6214 int32x4_t test_vqdmull_lane_s16(int16x4_t a, int16x4_t b) {
   6215   return vqdmull_lane_s16(a, b, 3);
   6216 }
   6217 
   6218 // CHECK-LABEL: test_vqdmull_lane_s32
   6219 // CHECK: vqdmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6220 int64x2_t test_vqdmull_lane_s32(int32x2_t a, int32x2_t b) {
   6221   return vqdmull_lane_s32(a, b, 1);
   6222 }
   6223 
   6224 
   6225 // CHECK-LABEL: test_vqdmull_n_s16
   6226 // CHECK: vqdmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6227 int32x4_t test_vqdmull_n_s16(int16x4_t a, int16_t b) {
   6228   return vqdmull_n_s16(a, b);
   6229 }
   6230 
   6231 // CHECK-LABEL: test_vqdmull_n_s32
   6232 // CHECK: vqdmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6233 int64x2_t test_vqdmull_n_s32(int32x2_t a, int32_t b) {
   6234   return vqdmull_n_s32(a, b);
   6235 }
   6236 
   6237 
   6238 // CHECK-LABEL: test_vqmovn_s16
   6239 // CHECK: vqmovn.s16 d{{[0-9]+}}, q{{[0-9]+}}
   6240 int8x8_t test_vqmovn_s16(int16x8_t a) {
   6241   return vqmovn_s16(a);
   6242 }
   6243 
   6244 // CHECK-LABEL: test_vqmovn_s32
   6245 // CHECK: vqmovn.s32 d{{[0-9]+}}, q{{[0-9]+}}
   6246 int16x4_t test_vqmovn_s32(int32x4_t a) {
   6247   return vqmovn_s32(a);
   6248 }
   6249 
   6250 // CHECK-LABEL: test_vqmovn_s64
   6251 // CHECK: vqmovn.s64 d{{[0-9]+}}, q{{[0-9]+}}
   6252 int32x2_t test_vqmovn_s64(int64x2_t a) {
   6253   return vqmovn_s64(a);
   6254 }
   6255 
   6256 // CHECK-LABEL: test_vqmovn_u16
   6257 // CHECK: vqmovn.u16 d{{[0-9]+}}, q{{[0-9]+}}
   6258 uint8x8_t test_vqmovn_u16(uint16x8_t a) {
   6259   return vqmovn_u16(a);
   6260 }
   6261 
   6262 // CHECK-LABEL: test_vqmovn_u32
   6263 // CHECK: vqmovn.u32 d{{[0-9]+}}, q{{[0-9]+}}
   6264 uint16x4_t test_vqmovn_u32(uint32x4_t a) {
   6265   return vqmovn_u32(a);
   6266 }
   6267 
   6268 // CHECK-LABEL: test_vqmovn_u64
   6269 // CHECK: vqmovn.u64 d{{[0-9]+}}, q{{[0-9]+}}
   6270 uint32x2_t test_vqmovn_u64(uint64x2_t a) {
   6271   return vqmovn_u64(a);
   6272 }
   6273 
   6274 
   6275 // CHECK-LABEL: test_vqmovun_s16
   6276 // CHECK: vqmovun.s16 d{{[0-9]+}}, q{{[0-9]+}}
   6277 uint8x8_t test_vqmovun_s16(int16x8_t a) {
   6278   return vqmovun_s16(a);
   6279 }
   6280 
   6281 // CHECK-LABEL: test_vqmovun_s32
   6282 // CHECK: vqmovun.s32 d{{[0-9]+}}, q{{[0-9]+}}
   6283 uint16x4_t test_vqmovun_s32(int32x4_t a) {
   6284   return vqmovun_s32(a);
   6285 }
   6286 
   6287 // CHECK-LABEL: test_vqmovun_s64
   6288 // CHECK: vqmovun.s64 d{{[0-9]+}}, q{{[0-9]+}}
   6289 uint32x2_t test_vqmovun_s64(int64x2_t a) {
   6290   return vqmovun_s64(a);
   6291 }
   6292 
   6293 
   6294 // CHECK-LABEL: test_vqneg_s8
   6295 // CHECK: vqneg.s8 d{{[0-9]+}}, d{{[0-9]+}}
   6296 int8x8_t test_vqneg_s8(int8x8_t a) {
   6297   return vqneg_s8(a);
   6298 }
   6299 
   6300 // CHECK-LABEL: test_vqneg_s16
   6301 // CHECK: vqneg.s16 d{{[0-9]+}}, d{{[0-9]+}}
   6302 int16x4_t test_vqneg_s16(int16x4_t a) {
   6303   return vqneg_s16(a);
   6304 }
   6305 
   6306 // CHECK-LABEL: test_vqneg_s32
   6307 // CHECK: vqneg.s32 d{{[0-9]+}}, d{{[0-9]+}}
   6308 int32x2_t test_vqneg_s32(int32x2_t a) {
   6309   return vqneg_s32(a);
   6310 }
   6311 
   6312 // CHECK-LABEL: test_vqnegq_s8
   6313 // CHECK: vqneg.s8 q{{[0-9]+}}, q{{[0-9]+}}
   6314 int8x16_t test_vqnegq_s8(int8x16_t a) {
   6315   return vqnegq_s8(a);
   6316 }
   6317 
   6318 // CHECK-LABEL: test_vqnegq_s16
   6319 // CHECK: vqneg.s16 q{{[0-9]+}}, q{{[0-9]+}}
   6320 int16x8_t test_vqnegq_s16(int16x8_t a) {
   6321   return vqnegq_s16(a);
   6322 }
   6323 
   6324 // CHECK-LABEL: test_vqnegq_s32
   6325 // CHECK: vqneg.s32 q{{[0-9]+}}, q{{[0-9]+}}
   6326 int32x4_t test_vqnegq_s32(int32x4_t a) {
   6327   return vqnegq_s32(a);
   6328 }
   6329 
   6330 
   6331 // CHECK-LABEL: test_vqrdmulh_s16
   6332 // CHECK: vqrdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6333 int16x4_t test_vqrdmulh_s16(int16x4_t a, int16x4_t b) {
   6334   return vqrdmulh_s16(a, b);
   6335 }
   6336 
   6337 // CHECK-LABEL: test_vqrdmulh_s32
   6338 // CHECK: vqrdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6339 int32x2_t test_vqrdmulh_s32(int32x2_t a, int32x2_t b) {
   6340   return vqrdmulh_s32(a, b);
   6341 }
   6342 
   6343 // CHECK-LABEL: test_vqrdmulhq_s16
   6344 // CHECK: vqrdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6345 int16x8_t test_vqrdmulhq_s16(int16x8_t a, int16x8_t b) {
   6346   return vqrdmulhq_s16(a, b);
   6347 }
   6348 
   6349 // CHECK-LABEL: test_vqrdmulhq_s32
   6350 // CHECK: vqrdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6351 int32x4_t test_vqrdmulhq_s32(int32x4_t a, int32x4_t b) {
   6352   return vqrdmulhq_s32(a, b);
   6353 }
   6354 
   6355 
   6356 // CHECK-LABEL: test_vqrdmulh_lane_s16
   6357 // CHECK: vqrdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6358 int16x4_t test_vqrdmulh_lane_s16(int16x4_t a, int16x4_t b) {
   6359   return vqrdmulh_lane_s16(a, b, 3);
   6360 }
   6361 
   6362 // CHECK-LABEL: test_vqrdmulh_lane_s32
   6363 // CHECK: vqrdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6364 int32x2_t test_vqrdmulh_lane_s32(int32x2_t a, int32x2_t b) {
   6365   return vqrdmulh_lane_s32(a, b, 1);
   6366 }
   6367 
   6368 // CHECK-LABEL: test_vqrdmulhq_lane_s16
   6369 // CHECK: vqrdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6370 int16x8_t test_vqrdmulhq_lane_s16(int16x8_t a, int16x4_t b) {
   6371   return vqrdmulhq_lane_s16(a, b, 3);
   6372 }
   6373 
   6374 // CHECK-LABEL: test_vqrdmulhq_lane_s32
   6375 // CHECK: vqrdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
   6376 int32x4_t test_vqrdmulhq_lane_s32(int32x4_t a, int32x2_t b) {
   6377   return vqrdmulhq_lane_s32(a, b, 1);
   6378 }
   6379 
   6380 
   6381 // CHECK-LABEL: test_vqrdmulh_n_s16
   6382 // CHECK: vqrdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6383 int16x4_t test_vqrdmulh_n_s16(int16x4_t a, int16_t b) {
   6384   return vqrdmulh_n_s16(a, b);
   6385 }
   6386 
   6387 // CHECK-LABEL: test_vqrdmulh_n_s32
   6388 // CHECK: vqrdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6389 int32x2_t test_vqrdmulh_n_s32(int32x2_t a, int32_t b) {
   6390   return vqrdmulh_n_s32(a, b);
   6391 }
   6392 
   6393 // CHECK-LABEL: test_vqrdmulhq_n_s16
   6394 // CHECK: vqrdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6395 int16x8_t test_vqrdmulhq_n_s16(int16x8_t a, int16_t b) {
   6396   return vqrdmulhq_n_s16(a, b);
   6397 }
   6398 
   6399 // CHECK-LABEL: test_vqrdmulhq_n_s32
   6400 // CHECK: vqrdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6401 int32x4_t test_vqrdmulhq_n_s32(int32x4_t a, int32_t b) {
   6402   return vqrdmulhq_n_s32(a, b);
   6403 }
   6404 
   6405 
   6406 // CHECK-LABEL: test_vqrshl_s8
   6407 // CHECK: vqrshl.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6408 int8x8_t test_vqrshl_s8(int8x8_t a, int8x8_t b) {
   6409   return vqrshl_s8(a, b);
   6410 }
   6411 
   6412 // CHECK-LABEL: test_vqrshl_s16
   6413 // CHECK: vqrshl.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6414 int16x4_t test_vqrshl_s16(int16x4_t a, int16x4_t b) {
   6415   return vqrshl_s16(a, b);
   6416 }
   6417 
   6418 // CHECK-LABEL: test_vqrshl_s32
   6419 // CHECK: vqrshl.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6420 int32x2_t test_vqrshl_s32(int32x2_t a, int32x2_t b) {
   6421   return vqrshl_s32(a, b);
   6422 }
   6423 
   6424 // CHECK-LABEL: test_vqrshl_s64
   6425 // CHECK: vqrshl.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6426 int64x1_t test_vqrshl_s64(int64x1_t a, int64x1_t b) {
   6427   return vqrshl_s64(a, b);
   6428 }
   6429 
   6430 // CHECK-LABEL: test_vqrshl_u8
   6431 // CHECK: vqrshl.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6432 uint8x8_t test_vqrshl_u8(uint8x8_t a, int8x8_t b) {
   6433   return vqrshl_u8(a, b);
   6434 }
   6435 
   6436 // CHECK-LABEL: test_vqrshl_u16
   6437 // CHECK: vqrshl.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6438 uint16x4_t test_vqrshl_u16(uint16x4_t a, int16x4_t b) {
   6439   return vqrshl_u16(a, b);
   6440 }
   6441 
   6442 // CHECK-LABEL: test_vqrshl_u32
   6443 // CHECK: vqrshl.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6444 uint32x2_t test_vqrshl_u32(uint32x2_t a, int32x2_t b) {
   6445   return vqrshl_u32(a, b);
   6446 }
   6447 
   6448 // CHECK-LABEL: test_vqrshl_u64
   6449 // CHECK: vqrshl.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6450 uint64x1_t test_vqrshl_u64(uint64x1_t a, int64x1_t b) {
   6451   return vqrshl_u64(a, b);
   6452 }
   6453 
   6454 // CHECK-LABEL: test_vqrshlq_s8
   6455 // CHECK: vqrshl.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6456 int8x16_t test_vqrshlq_s8(int8x16_t a, int8x16_t b) {
   6457   return vqrshlq_s8(a, b);
   6458 }
   6459 
   6460 // CHECK-LABEL: test_vqrshlq_s16
   6461 // CHECK: vqrshl.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6462 int16x8_t test_vqrshlq_s16(int16x8_t a, int16x8_t b) {
   6463   return vqrshlq_s16(a, b);
   6464 }
   6465 
   6466 // CHECK-LABEL: test_vqrshlq_s32
   6467 // CHECK: vqrshl.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6468 int32x4_t test_vqrshlq_s32(int32x4_t a, int32x4_t b) {
   6469   return vqrshlq_s32(a, b);
   6470 }
   6471 
   6472 // CHECK-LABEL: test_vqrshlq_s64
   6473 // CHECK: vqrshl.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6474 int64x2_t test_vqrshlq_s64(int64x2_t a, int64x2_t b) {
   6475   return vqrshlq_s64(a, b);
   6476 }
   6477 
   6478 // CHECK-LABEL: test_vqrshlq_u8
   6479 // CHECK: vqrshl.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6480 uint8x16_t test_vqrshlq_u8(uint8x16_t a, int8x16_t b) {
   6481   return vqrshlq_u8(a, b);
   6482 }
   6483 
   6484 // CHECK-LABEL: test_vqrshlq_u16
   6485 // CHECK: vqrshl.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6486 uint16x8_t test_vqrshlq_u16(uint16x8_t a, int16x8_t b) {
   6487   return vqrshlq_u16(a, b);
   6488 }
   6489 
   6490 // CHECK-LABEL: test_vqrshlq_u32
   6491 // CHECK: vqrshl.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6492 uint32x4_t test_vqrshlq_u32(uint32x4_t a, int32x4_t b) {
   6493   return vqrshlq_u32(a, b);
   6494 }
   6495 
   6496 // CHECK-LABEL: test_vqrshlq_u64
   6497 // CHECK: vqrshl.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6498 uint64x2_t test_vqrshlq_u64(uint64x2_t a, int64x2_t b) {
   6499   return vqrshlq_u64(a, b);
   6500 }
   6501 
   6502 
   6503 // CHECK-LABEL: test_vqrshrn_n_s16
   6504 // CHECK: vqrshrn.s16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6505 int8x8_t test_vqrshrn_n_s16(int16x8_t a) {
   6506   return vqrshrn_n_s16(a, 1);
   6507 }
   6508 
   6509 // CHECK-LABEL: test_vqrshrn_n_s32
   6510 // CHECK: vqrshrn.s32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6511 int16x4_t test_vqrshrn_n_s32(int32x4_t a) {
   6512   return vqrshrn_n_s32(a, 1);
   6513 }
   6514 
   6515 // CHECK-LABEL: test_vqrshrn_n_s64
   6516 // CHECK: vqrshrn.s64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6517 int32x2_t test_vqrshrn_n_s64(int64x2_t a) {
   6518   return vqrshrn_n_s64(a, 1);
   6519 }
   6520 
   6521 // CHECK-LABEL: test_vqrshrn_n_u16
   6522 // CHECK: vqrshrn.u16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6523 uint8x8_t test_vqrshrn_n_u16(uint16x8_t a) {
   6524   return vqrshrn_n_u16(a, 1);
   6525 }
   6526 
   6527 // CHECK-LABEL: test_vqrshrn_n_u32
   6528 // CHECK: vqrshrn.u32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6529 uint16x4_t test_vqrshrn_n_u32(uint32x4_t a) {
   6530   return vqrshrn_n_u32(a, 1);
   6531 }
   6532 
   6533 // CHECK-LABEL: test_vqrshrn_n_u64
   6534 // CHECK: vqrshrn.u64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6535 uint32x2_t test_vqrshrn_n_u64(uint64x2_t a) {
   6536   return vqrshrn_n_u64(a, 1);
   6537 }
   6538 
   6539 
   6540 // CHECK-LABEL: test_vqrshrun_n_s16
   6541 // CHECK: vqrshrun.s16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6542 uint8x8_t test_vqrshrun_n_s16(int16x8_t a) {
   6543   return vqrshrun_n_s16(a, 1);
   6544 }
   6545 
   6546 // CHECK-LABEL: test_vqrshrun_n_s32
   6547 // CHECK: vqrshrun.s32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6548 uint16x4_t test_vqrshrun_n_s32(int32x4_t a) {
   6549   return vqrshrun_n_s32(a, 1);
   6550 }
   6551 
   6552 // CHECK-LABEL: test_vqrshrun_n_s64
   6553 // CHECK: vqrshrun.s64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6554 uint32x2_t test_vqrshrun_n_s64(int64x2_t a) {
   6555   return vqrshrun_n_s64(a, 1);
   6556 }
   6557 
   6558 
   6559 // CHECK-LABEL: test_vqshl_s8
   6560 // CHECK: vqshl.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6561 int8x8_t test_vqshl_s8(int8x8_t a, int8x8_t b) {
   6562   return vqshl_s8(a, b);
   6563 }
   6564 
   6565 // CHECK-LABEL: test_vqshl_s16
   6566 // CHECK: vqshl.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6567 int16x4_t test_vqshl_s16(int16x4_t a, int16x4_t b) {
   6568   return vqshl_s16(a, b);
   6569 }
   6570 
   6571 // CHECK-LABEL: test_vqshl_s32
   6572 // CHECK: vqshl.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6573 int32x2_t test_vqshl_s32(int32x2_t a, int32x2_t b) {
   6574   return vqshl_s32(a, b);
   6575 }
   6576 
   6577 // CHECK-LABEL: test_vqshl_s64
   6578 // CHECK: vqshl.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6579 int64x1_t test_vqshl_s64(int64x1_t a, int64x1_t b) {
   6580   return vqshl_s64(a, b);
   6581 }
   6582 
   6583 // CHECK-LABEL: test_vqshl_u8
   6584 // CHECK: vqshl.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6585 uint8x8_t test_vqshl_u8(uint8x8_t a, int8x8_t b) {
   6586   return vqshl_u8(a, b);
   6587 }
   6588 
   6589 // CHECK-LABEL: test_vqshl_u16
   6590 // CHECK: vqshl.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6591 uint16x4_t test_vqshl_u16(uint16x4_t a, int16x4_t b) {
   6592   return vqshl_u16(a, b);
   6593 }
   6594 
   6595 // CHECK-LABEL: test_vqshl_u32
   6596 // CHECK: vqshl.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6597 uint32x2_t test_vqshl_u32(uint32x2_t a, int32x2_t b) {
   6598   return vqshl_u32(a, b);
   6599 }
   6600 
   6601 // CHECK-LABEL: test_vqshl_u64
   6602 // CHECK: vqshl.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6603 uint64x1_t test_vqshl_u64(uint64x1_t a, int64x1_t b) {
   6604   return vqshl_u64(a, b);
   6605 }
   6606 
   6607 // CHECK-LABEL: test_vqshlq_s8
   6608 // CHECK: vqshl.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6609 int8x16_t test_vqshlq_s8(int8x16_t a, int8x16_t b) {
   6610   return vqshlq_s8(a, b);
   6611 }
   6612 
   6613 // CHECK-LABEL: test_vqshlq_s16
   6614 // CHECK: vqshl.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6615 int16x8_t test_vqshlq_s16(int16x8_t a, int16x8_t b) {
   6616   return vqshlq_s16(a, b);
   6617 }
   6618 
   6619 // CHECK-LABEL: test_vqshlq_s32
   6620 // CHECK: vqshl.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6621 int32x4_t test_vqshlq_s32(int32x4_t a, int32x4_t b) {
   6622   return vqshlq_s32(a, b);
   6623 }
   6624 
   6625 // CHECK-LABEL: test_vqshlq_s64
   6626 // CHECK: vqshl.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6627 int64x2_t test_vqshlq_s64(int64x2_t a, int64x2_t b) {
   6628   return vqshlq_s64(a, b);
   6629 }
   6630 
   6631 // CHECK-LABEL: test_vqshlq_u8
   6632 // CHECK: vqshl.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6633 uint8x16_t test_vqshlq_u8(uint8x16_t a, int8x16_t b) {
   6634   return vqshlq_u8(a, b);
   6635 }
   6636 
   6637 // CHECK-LABEL: test_vqshlq_u16
   6638 // CHECK: vqshl.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6639 uint16x8_t test_vqshlq_u16(uint16x8_t a, int16x8_t b) {
   6640   return vqshlq_u16(a, b);
   6641 }
   6642 
   6643 // CHECK-LABEL: test_vqshlq_u32
   6644 // CHECK: vqshl.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6645 uint32x4_t test_vqshlq_u32(uint32x4_t a, int32x4_t b) {
   6646   return vqshlq_u32(a, b);
   6647 }
   6648 
   6649 // CHECK-LABEL: test_vqshlq_u64
   6650 // CHECK: vqshl.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6651 uint64x2_t test_vqshlq_u64(uint64x2_t a, int64x2_t b) {
   6652   return vqshlq_u64(a, b);
   6653 }
   6654 
   6655 
   6656 // CHECK-LABEL: test_vqshlu_n_s8
   6657 // CHECK: vqshlu.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6658 uint8x8_t test_vqshlu_n_s8(int8x8_t a) {
   6659   return vqshlu_n_s8(a, 1);
   6660 }
   6661 
   6662 // CHECK-LABEL: test_vqshlu_n_s16
   6663 // CHECK: vqshlu.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6664 uint16x4_t test_vqshlu_n_s16(int16x4_t a) {
   6665   return vqshlu_n_s16(a, 1);
   6666 }
   6667 
   6668 // CHECK-LABEL: test_vqshlu_n_s32
   6669 // CHECK: vqshlu.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6670 uint32x2_t test_vqshlu_n_s32(int32x2_t a) {
   6671   return vqshlu_n_s32(a, 1);
   6672 }
   6673 
   6674 // CHECK-LABEL: test_vqshlu_n_s64
   6675 // CHECK: vqshlu.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6676 uint64x1_t test_vqshlu_n_s64(int64x1_t a) {
   6677   return vqshlu_n_s64(a, 1);
   6678 }
   6679 
   6680 // CHECK-LABEL: test_vqshluq_n_s8
   6681 // CHECK: vqshlu.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6682 uint8x16_t test_vqshluq_n_s8(int8x16_t a) {
   6683   return vqshluq_n_s8(a, 1);
   6684 }
   6685 
   6686 // CHECK-LABEL: test_vqshluq_n_s16
   6687 // CHECK: vqshlu.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6688 uint16x8_t test_vqshluq_n_s16(int16x8_t a) {
   6689   return vqshluq_n_s16(a, 1);
   6690 }
   6691 
   6692 // CHECK-LABEL: test_vqshluq_n_s32
   6693 // CHECK: vqshlu.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6694 uint32x4_t test_vqshluq_n_s32(int32x4_t a) {
   6695   return vqshluq_n_s32(a, 1);
   6696 }
   6697 
   6698 // CHECK-LABEL: test_vqshluq_n_s64
   6699 // CHECK: vqshlu.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6700 uint64x2_t test_vqshluq_n_s64(int64x2_t a) {
   6701   return vqshluq_n_s64(a, 1);
   6702 }
   6703 
   6704 
   6705 // CHECK-LABEL: test_vqshl_n_s8
   6706 // CHECK: vqshl.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6707 int8x8_t test_vqshl_n_s8(int8x8_t a) {
   6708   return vqshl_n_s8(a, 1);
   6709 }
   6710 
   6711 // CHECK-LABEL: test_vqshl_n_s16
   6712 // CHECK: vqshl.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6713 int16x4_t test_vqshl_n_s16(int16x4_t a) {
   6714   return vqshl_n_s16(a, 1);
   6715 }
   6716 
   6717 // CHECK-LABEL: test_vqshl_n_s32
   6718 // CHECK: vqshl.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6719 int32x2_t test_vqshl_n_s32(int32x2_t a) {
   6720   return vqshl_n_s32(a, 1);
   6721 }
   6722 
   6723 // CHECK-LABEL: test_vqshl_n_s64
   6724 // CHECK: vqshl.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6725 int64x1_t test_vqshl_n_s64(int64x1_t a) {
   6726   return vqshl_n_s64(a, 1);
   6727 }
   6728 
   6729 // CHECK-LABEL: test_vqshl_n_u8
   6730 // CHECK: vqshl.u8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6731 uint8x8_t test_vqshl_n_u8(uint8x8_t a) {
   6732   return vqshl_n_u8(a, 1);
   6733 }
   6734 
   6735 // CHECK-LABEL: test_vqshl_n_u16
   6736 // CHECK: vqshl.u16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6737 uint16x4_t test_vqshl_n_u16(uint16x4_t a) {
   6738   return vqshl_n_u16(a, 1);
   6739 }
   6740 
   6741 // CHECK-LABEL: test_vqshl_n_u32
   6742 // CHECK: vqshl.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6743 uint32x2_t test_vqshl_n_u32(uint32x2_t a) {
   6744   return vqshl_n_u32(a, 1);
   6745 }
   6746 
   6747 // CHECK-LABEL: test_vqshl_n_u64
   6748 // CHECK: vqshl.u64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   6749 uint64x1_t test_vqshl_n_u64(uint64x1_t a) {
   6750   return vqshl_n_u64(a, 1);
   6751 }
   6752 
   6753 // CHECK-LABEL: test_vqshlq_n_s8
   6754 // CHECK: vqshl.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6755 int8x16_t test_vqshlq_n_s8(int8x16_t a) {
   6756   return vqshlq_n_s8(a, 1);
   6757 }
   6758 
   6759 // CHECK-LABEL: test_vqshlq_n_s16
   6760 // CHECK: vqshl.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6761 int16x8_t test_vqshlq_n_s16(int16x8_t a) {
   6762   return vqshlq_n_s16(a, 1);
   6763 }
   6764 
   6765 // CHECK-LABEL: test_vqshlq_n_s32
   6766 // CHECK: vqshl.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6767 int32x4_t test_vqshlq_n_s32(int32x4_t a) {
   6768   return vqshlq_n_s32(a, 1);
   6769 }
   6770 
   6771 // CHECK-LABEL: test_vqshlq_n_s64
   6772 // CHECK: vqshl.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6773 int64x2_t test_vqshlq_n_s64(int64x2_t a) {
   6774   return vqshlq_n_s64(a, 1);
   6775 }
   6776 
   6777 // CHECK-LABEL: test_vqshlq_n_u8
   6778 // CHECK: vqshl.u8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6779 uint8x16_t test_vqshlq_n_u8(uint8x16_t a) {
   6780   return vqshlq_n_u8(a, 1);
   6781 }
   6782 
   6783 // CHECK-LABEL: test_vqshlq_n_u16
   6784 // CHECK: vqshl.u16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6785 uint16x8_t test_vqshlq_n_u16(uint16x8_t a) {
   6786   return vqshlq_n_u16(a, 1);
   6787 }
   6788 
   6789 // CHECK-LABEL: test_vqshlq_n_u32
   6790 // CHECK: vqshl.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6791 uint32x4_t test_vqshlq_n_u32(uint32x4_t a) {
   6792   return vqshlq_n_u32(a, 1);
   6793 }
   6794 
   6795 // CHECK-LABEL: test_vqshlq_n_u64
   6796 // CHECK: vqshl.u64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6797 uint64x2_t test_vqshlq_n_u64(uint64x2_t a) {
   6798   return vqshlq_n_u64(a, 1);
   6799 }
   6800 
   6801 
   6802 // CHECK-LABEL: test_vqshrn_n_s16
   6803 // CHECK: vqshrn.s16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6804 int8x8_t test_vqshrn_n_s16(int16x8_t a) {
   6805   return vqshrn_n_s16(a, 1);
   6806 }
   6807 
   6808 // CHECK-LABEL: test_vqshrn_n_s32
   6809 // CHECK: vqshrn.s32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6810 int16x4_t test_vqshrn_n_s32(int32x4_t a) {
   6811   return vqshrn_n_s32(a, 1);
   6812 }
   6813 
   6814 // CHECK-LABEL: test_vqshrn_n_s64
   6815 // CHECK: vqshrn.s64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6816 int32x2_t test_vqshrn_n_s64(int64x2_t a) {
   6817   return vqshrn_n_s64(a, 1);
   6818 }
   6819 
   6820 // CHECK-LABEL: test_vqshrn_n_u16
   6821 // CHECK: vqshrn.u16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6822 uint8x8_t test_vqshrn_n_u16(uint16x8_t a) {
   6823   return vqshrn_n_u16(a, 1);
   6824 }
   6825 
   6826 // CHECK-LABEL: test_vqshrn_n_u32
   6827 // CHECK: vqshrn.u32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6828 uint16x4_t test_vqshrn_n_u32(uint32x4_t a) {
   6829   return vqshrn_n_u32(a, 1);
   6830 }
   6831 
   6832 // CHECK-LABEL: test_vqshrn_n_u64
   6833 // CHECK: vqshrn.u64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6834 uint32x2_t test_vqshrn_n_u64(uint64x2_t a) {
   6835   return vqshrn_n_u64(a, 1);
   6836 }
   6837 
   6838 
   6839 // CHECK-LABEL: test_vqshrun_n_s16
   6840 // CHECK: vqshrun.s16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6841 uint8x8_t test_vqshrun_n_s16(int16x8_t a) {
   6842   return vqshrun_n_s16(a, 1);
   6843 }
   6844 
   6845 // CHECK-LABEL: test_vqshrun_n_s32
   6846 // CHECK: vqshrun.s32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6847 uint16x4_t test_vqshrun_n_s32(int32x4_t a) {
   6848   return vqshrun_n_s32(a, 1);
   6849 }
   6850 
   6851 // CHECK-LABEL: test_vqshrun_n_s64
   6852 // CHECK: vqshrun.s64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   6853 uint32x2_t test_vqshrun_n_s64(int64x2_t a) {
   6854   return vqshrun_n_s64(a, 1);
   6855 }
   6856 
   6857 
   6858 // CHECK-LABEL: test_vqsub_s8
   6859 // CHECK: vqsub.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6860 int8x8_t test_vqsub_s8(int8x8_t a, int8x8_t b) {
   6861   return vqsub_s8(a, b);
   6862 }
   6863 
   6864 // CHECK-LABEL: test_vqsub_s16
   6865 // CHECK: vqsub.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6866 int16x4_t test_vqsub_s16(int16x4_t a, int16x4_t b) {
   6867   return vqsub_s16(a, b);
   6868 }
   6869 
   6870 // CHECK-LABEL: test_vqsub_s32
   6871 // CHECK: vqsub.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6872 int32x2_t test_vqsub_s32(int32x2_t a, int32x2_t b) {
   6873   return vqsub_s32(a, b);
   6874 }
   6875 
   6876 // CHECK-LABEL: test_vqsub_s64
   6877 // CHECK: vqsub.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6878 int64x1_t test_vqsub_s64(int64x1_t a, int64x1_t b) {
   6879   return vqsub_s64(a, b);
   6880 }
   6881 
   6882 // CHECK-LABEL: test_vqsub_u8
   6883 // CHECK: vqsub.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6884 uint8x8_t test_vqsub_u8(uint8x8_t a, uint8x8_t b) {
   6885   return vqsub_u8(a, b);
   6886 }
   6887 
   6888 // CHECK-LABEL: test_vqsub_u16
   6889 // CHECK: vqsub.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6890 uint16x4_t test_vqsub_u16(uint16x4_t a, uint16x4_t b) {
   6891   return vqsub_u16(a, b);
   6892 }
   6893 
   6894 // CHECK-LABEL: test_vqsub_u32
   6895 // CHECK: vqsub.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6896 uint32x2_t test_vqsub_u32(uint32x2_t a, uint32x2_t b) {
   6897   return vqsub_u32(a, b);
   6898 }
   6899 
   6900 // CHECK-LABEL: test_vqsub_u64
   6901 // CHECK: vqsub.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   6902 uint64x1_t test_vqsub_u64(uint64x1_t a, uint64x1_t b) {
   6903   return vqsub_u64(a, b);
   6904 }
   6905 
   6906 // CHECK-LABEL: test_vqsubq_s8
   6907 // CHECK: vqsub.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6908 int8x16_t test_vqsubq_s8(int8x16_t a, int8x16_t b) {
   6909   return vqsubq_s8(a, b);
   6910 }
   6911 
   6912 // CHECK-LABEL: test_vqsubq_s16
   6913 // CHECK: vqsub.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6914 int16x8_t test_vqsubq_s16(int16x8_t a, int16x8_t b) {
   6915   return vqsubq_s16(a, b);
   6916 }
   6917 
   6918 // CHECK-LABEL: test_vqsubq_s32
   6919 // CHECK: vqsub.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6920 int32x4_t test_vqsubq_s32(int32x4_t a, int32x4_t b) {
   6921   return vqsubq_s32(a, b);
   6922 }
   6923 
   6924 // CHECK-LABEL: test_vqsubq_s64
   6925 // CHECK: vqsub.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6926 int64x2_t test_vqsubq_s64(int64x2_t a, int64x2_t b) {
   6927   return vqsubq_s64(a, b);
   6928 }
   6929 
   6930 // CHECK-LABEL: test_vqsubq_u8
   6931 // CHECK: vqsub.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6932 uint8x16_t test_vqsubq_u8(uint8x16_t a, uint8x16_t b) {
   6933   return vqsubq_u8(a, b);
   6934 }
   6935 
   6936 // CHECK-LABEL: test_vqsubq_u16
   6937 // CHECK: vqsub.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6938 uint16x8_t test_vqsubq_u16(uint16x8_t a, uint16x8_t b) {
   6939   return vqsubq_u16(a, b);
   6940 }
   6941 
   6942 // CHECK-LABEL: test_vqsubq_u32
   6943 // CHECK: vqsub.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6944 uint32x4_t test_vqsubq_u32(uint32x4_t a, uint32x4_t b) {
   6945   return vqsubq_u32(a, b);
   6946 }
   6947 
   6948 // CHECK-LABEL: test_vqsubq_u64
   6949 // CHECK: vqsub.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6950 uint64x2_t test_vqsubq_u64(uint64x2_t a, uint64x2_t b) {
   6951   return vqsubq_u64(a, b);
   6952 }
   6953 
   6954 
   6955 // CHECK-LABEL: test_vraddhn_s16
   6956 // CHECK: vraddhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6957 int8x8_t test_vraddhn_s16(int16x8_t a, int16x8_t b) {
   6958   return vraddhn_s16(a, b);
   6959 }
   6960 
   6961 // CHECK-LABEL: test_vraddhn_s32
   6962 // CHECK: vraddhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6963 int16x4_t test_vraddhn_s32(int32x4_t a, int32x4_t b) {
   6964   return vraddhn_s32(a, b);
   6965 }
   6966 
   6967 // CHECK-LABEL: test_vraddhn_s64
   6968 // CHECK: vraddhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6969 int32x2_t test_vraddhn_s64(int64x2_t a, int64x2_t b) {
   6970   return vraddhn_s64(a, b);
   6971 }
   6972 
   6973 // CHECK-LABEL: test_vraddhn_u16
   6974 // CHECK: vraddhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6975 uint8x8_t test_vraddhn_u16(uint16x8_t a, uint16x8_t b) {
   6976   return vraddhn_u16(a, b);
   6977 }
   6978 
   6979 // CHECK-LABEL: test_vraddhn_u32
   6980 // CHECK: vraddhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6981 uint16x4_t test_vraddhn_u32(uint32x4_t a, uint32x4_t b) {
   6982   return vraddhn_u32(a, b);
   6983 }
   6984 
   6985 // CHECK-LABEL: test_vraddhn_u64
   6986 // CHECK: vraddhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   6987 uint32x2_t test_vraddhn_u64(uint64x2_t a, uint64x2_t b) {
   6988   return vraddhn_u64(a, b);
   6989 }
   6990 
   6991 
   6992 // CHECK-LABEL: test_vrecpe_f32
   6993 // CHECK: vrecpe.f32 d{{[0-9]+}}, d{{[0-9]+}}
   6994 float32x2_t test_vrecpe_f32(float32x2_t a) {
   6995   return vrecpe_f32(a);
   6996 }
   6997 
   6998 // CHECK-LABEL: test_vrecpe_u32
   6999 // CHECK: vrecpe.u32 d{{[0-9]+}}, d{{[0-9]+}}
   7000 uint32x2_t test_vrecpe_u32(uint32x2_t a) {
   7001   return vrecpe_u32(a);
   7002 }
   7003 
   7004 // CHECK-LABEL: test_vrecpeq_f32
   7005 // CHECK: vrecpe.f32 q{{[0-9]+}}, q{{[0-9]+}}
   7006 float32x4_t test_vrecpeq_f32(float32x4_t a) {
   7007   return vrecpeq_f32(a);
   7008 }
   7009 
   7010 // CHECK-LABEL: test_vrecpeq_u32
   7011 // CHECK: vrecpe.u32 q{{[0-9]+}}, q{{[0-9]+}}
   7012 uint32x4_t test_vrecpeq_u32(uint32x4_t a) {
   7013   return vrecpeq_u32(a);
   7014 }
   7015 
   7016 
   7017 // CHECK-LABEL: test_vrecps_f32
   7018 // CHECK: vrecps.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   7019 float32x2_t test_vrecps_f32(float32x2_t a, float32x2_t b) {
   7020   return vrecps_f32(a, b);
   7021 }
   7022 
   7023 // CHECK-LABEL: test_vrecpsq_f32
   7024 // CHECK: vrecps.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   7025 float32x4_t test_vrecpsq_f32(float32x4_t a, float32x4_t b) {
   7026   return vrecpsq_f32(a, b);
   7027 }
   7028 
   7029 
   7030 // CHECK-LABEL: test_vreinterpret_s8_s16
   7031 int8x8_t test_vreinterpret_s8_s16(int16x4_t a) {
   7032   return vreinterpret_s8_s16(a);
   7033 }
   7034 
   7035 // CHECK-LABEL: test_vreinterpret_s8_s32
   7036 int8x8_t test_vreinterpret_s8_s32(int32x2_t a) {
   7037   return vreinterpret_s8_s32(a);
   7038 }
   7039 
   7040 // CHECK-LABEL: test_vreinterpret_s8_s64
   7041 int8x8_t test_vreinterpret_s8_s64(int64x1_t a) {
   7042   return vreinterpret_s8_s64(a);
   7043 }
   7044 
   7045 // CHECK-LABEL: test_vreinterpret_s8_u8
   7046 int8x8_t test_vreinterpret_s8_u8(uint8x8_t a) {
   7047   return vreinterpret_s8_u8(a);
   7048 }
   7049 
   7050 // CHECK-LABEL: test_vreinterpret_s8_u16
   7051 int8x8_t test_vreinterpret_s8_u16(uint16x4_t a) {
   7052   return vreinterpret_s8_u16(a);
   7053 }
   7054 
   7055 // CHECK-LABEL: test_vreinterpret_s8_u32
   7056 int8x8_t test_vreinterpret_s8_u32(uint32x2_t a) {
   7057   return vreinterpret_s8_u32(a);
   7058 }
   7059 
   7060 // CHECK-LABEL: test_vreinterpret_s8_u64
   7061 int8x8_t test_vreinterpret_s8_u64(uint64x1_t a) {
   7062   return vreinterpret_s8_u64(a);
   7063 }
   7064 
   7065 // CHECK-LABEL: test_vreinterpret_s8_f16
   7066 int8x8_t test_vreinterpret_s8_f16(float16x4_t a) {
   7067   return vreinterpret_s8_f16(a);
   7068 }
   7069 
   7070 // CHECK-LABEL: test_vreinterpret_s8_f32
   7071 int8x8_t test_vreinterpret_s8_f32(float32x2_t a) {
   7072   return vreinterpret_s8_f32(a);
   7073 }
   7074 
   7075 // CHECK-LABEL: test_vreinterpret_s8_p8
   7076 int8x8_t test_vreinterpret_s8_p8(poly8x8_t a) {
   7077   return vreinterpret_s8_p8(a);
   7078 }
   7079 
   7080 // CHECK-LABEL: test_vreinterpret_s8_p16
   7081 int8x8_t test_vreinterpret_s8_p16(poly16x4_t a) {
   7082   return vreinterpret_s8_p16(a);
   7083 }
   7084 
   7085 // CHECK-LABEL: test_vreinterpret_s16_s8
   7086 int16x4_t test_vreinterpret_s16_s8(int8x8_t a) {
   7087   return vreinterpret_s16_s8(a);
   7088 }
   7089 
   7090 // CHECK-LABEL: test_vreinterpret_s16_s32
   7091 int16x4_t test_vreinterpret_s16_s32(int32x2_t a) {
   7092   return vreinterpret_s16_s32(a);
   7093 }
   7094 
   7095 // CHECK-LABEL: test_vreinterpret_s16_s64
   7096 int16x4_t test_vreinterpret_s16_s64(int64x1_t a) {
   7097   return vreinterpret_s16_s64(a);
   7098 }
   7099 
   7100 // CHECK-LABEL: test_vreinterpret_s16_u8
   7101 int16x4_t test_vreinterpret_s16_u8(uint8x8_t a) {
   7102   return vreinterpret_s16_u8(a);
   7103 }
   7104 
   7105 // CHECK-LABEL: test_vreinterpret_s16_u16
   7106 int16x4_t test_vreinterpret_s16_u16(uint16x4_t a) {
   7107   return vreinterpret_s16_u16(a);
   7108 }
   7109 
   7110 // CHECK-LABEL: test_vreinterpret_s16_u32
   7111 int16x4_t test_vreinterpret_s16_u32(uint32x2_t a) {
   7112   return vreinterpret_s16_u32(a);
   7113 }
   7114 
   7115 // CHECK-LABEL: test_vreinterpret_s16_u64
   7116 int16x4_t test_vreinterpret_s16_u64(uint64x1_t a) {
   7117   return vreinterpret_s16_u64(a);
   7118 }
   7119 
   7120 // CHECK-LABEL: test_vreinterpret_s16_f16
   7121 int16x4_t test_vreinterpret_s16_f16(float16x4_t a) {
   7122   return vreinterpret_s16_f16(a);
   7123 }
   7124 
   7125 // CHECK-LABEL: test_vreinterpret_s16_f32
   7126 int16x4_t test_vreinterpret_s16_f32(float32x2_t a) {
   7127   return vreinterpret_s16_f32(a);
   7128 }
   7129 
   7130 // CHECK-LABEL: test_vreinterpret_s16_p8
   7131 int16x4_t test_vreinterpret_s16_p8(poly8x8_t a) {
   7132   return vreinterpret_s16_p8(a);
   7133 }
   7134 
   7135 // CHECK-LABEL: test_vreinterpret_s16_p16
   7136 int16x4_t test_vreinterpret_s16_p16(poly16x4_t a) {
   7137   return vreinterpret_s16_p16(a);
   7138 }
   7139 
   7140 // CHECK-LABEL: test_vreinterpret_s32_s8
   7141 int32x2_t test_vreinterpret_s32_s8(int8x8_t a) {
   7142   return vreinterpret_s32_s8(a);
   7143 }
   7144 
   7145 // CHECK-LABEL: test_vreinterpret_s32_s16
   7146 int32x2_t test_vreinterpret_s32_s16(int16x4_t a) {
   7147   return vreinterpret_s32_s16(a);
   7148 }
   7149 
   7150 // CHECK-LABEL: test_vreinterpret_s32_s64
   7151 int32x2_t test_vreinterpret_s32_s64(int64x1_t a) {
   7152   return vreinterpret_s32_s64(a);
   7153 }
   7154 
   7155 // CHECK-LABEL: test_vreinterpret_s32_u8
   7156 int32x2_t test_vreinterpret_s32_u8(uint8x8_t a) {
   7157   return vreinterpret_s32_u8(a);
   7158 }
   7159 
   7160 // CHECK-LABEL: test_vreinterpret_s32_u16
   7161 int32x2_t test_vreinterpret_s32_u16(uint16x4_t a) {
   7162   return vreinterpret_s32_u16(a);
   7163 }
   7164 
   7165 // CHECK-LABEL: test_vreinterpret_s32_u32
   7166 int32x2_t test_vreinterpret_s32_u32(uint32x2_t a) {
   7167   return vreinterpret_s32_u32(a);
   7168 }
   7169 
   7170 // CHECK-LABEL: test_vreinterpret_s32_u64
   7171 int32x2_t test_vreinterpret_s32_u64(uint64x1_t a) {
   7172   return vreinterpret_s32_u64(a);
   7173 }
   7174 
   7175 // CHECK-LABEL: test_vreinterpret_s32_f16
   7176 int32x2_t test_vreinterpret_s32_f16(float16x4_t a) {
   7177   return vreinterpret_s32_f16(a);
   7178 }
   7179 
   7180 // CHECK-LABEL: test_vreinterpret_s32_f32
   7181 int32x2_t test_vreinterpret_s32_f32(float32x2_t a) {
   7182   return vreinterpret_s32_f32(a);
   7183 }
   7184 
   7185 // CHECK-LABEL: test_vreinterpret_s32_p8
   7186 int32x2_t test_vreinterpret_s32_p8(poly8x8_t a) {
   7187   return vreinterpret_s32_p8(a);
   7188 }
   7189 
   7190 // CHECK-LABEL: test_vreinterpret_s32_p16
   7191 int32x2_t test_vreinterpret_s32_p16(poly16x4_t a) {
   7192   return vreinterpret_s32_p16(a);
   7193 }
   7194 
   7195 // CHECK-LABEL: test_vreinterpret_s64_s8
   7196 int64x1_t test_vreinterpret_s64_s8(int8x8_t a) {
   7197   return vreinterpret_s64_s8(a);
   7198 }
   7199 
   7200 // CHECK-LABEL: test_vreinterpret_s64_s16
   7201 int64x1_t test_vreinterpret_s64_s16(int16x4_t a) {
   7202   return vreinterpret_s64_s16(a);
   7203 }
   7204 
   7205 // CHECK-LABEL: test_vreinterpret_s64_s32
   7206 int64x1_t test_vreinterpret_s64_s32(int32x2_t a) {
   7207   return vreinterpret_s64_s32(a);
   7208 }
   7209 
   7210 // CHECK-LABEL: test_vreinterpret_s64_u8
   7211 int64x1_t test_vreinterpret_s64_u8(uint8x8_t a) {
   7212   return vreinterpret_s64_u8(a);
   7213 }
   7214 
   7215 // CHECK-LABEL: test_vreinterpret_s64_u16
   7216 int64x1_t test_vreinterpret_s64_u16(uint16x4_t a) {
   7217   return vreinterpret_s64_u16(a);
   7218 }
   7219 
   7220 // CHECK-LABEL: test_vreinterpret_s64_u32
   7221 int64x1_t test_vreinterpret_s64_u32(uint32x2_t a) {
   7222   return vreinterpret_s64_u32(a);
   7223 }
   7224 
   7225 // CHECK-LABEL: test_vreinterpret_s64_u64
   7226 int64x1_t test_vreinterpret_s64_u64(uint64x1_t a) {
   7227   return vreinterpret_s64_u64(a);
   7228 }
   7229 
   7230 // CHECK-LABEL: test_vreinterpret_s64_f16
   7231 int64x1_t test_vreinterpret_s64_f16(float16x4_t a) {
   7232   return vreinterpret_s64_f16(a);
   7233 }
   7234 
   7235 // CHECK-LABEL: test_vreinterpret_s64_f32
   7236 int64x1_t test_vreinterpret_s64_f32(float32x2_t a) {
   7237   return vreinterpret_s64_f32(a);
   7238 }
   7239 
   7240 // CHECK-LABEL: test_vreinterpret_s64_p8
   7241 int64x1_t test_vreinterpret_s64_p8(poly8x8_t a) {
   7242   return vreinterpret_s64_p8(a);
   7243 }
   7244 
   7245 // CHECK-LABEL: test_vreinterpret_s64_p16
   7246 int64x1_t test_vreinterpret_s64_p16(poly16x4_t a) {
   7247   return vreinterpret_s64_p16(a);
   7248 }
   7249 
   7250 // CHECK-LABEL: test_vreinterpret_u8_s8
   7251 uint8x8_t test_vreinterpret_u8_s8(int8x8_t a) {
   7252   return vreinterpret_u8_s8(a);
   7253 }
   7254 
   7255 // CHECK-LABEL: test_vreinterpret_u8_s16
   7256 uint8x8_t test_vreinterpret_u8_s16(int16x4_t a) {
   7257   return vreinterpret_u8_s16(a);
   7258 }
   7259 
   7260 // CHECK-LABEL: test_vreinterpret_u8_s32
   7261 uint8x8_t test_vreinterpret_u8_s32(int32x2_t a) {
   7262   return vreinterpret_u8_s32(a);
   7263 }
   7264 
   7265 // CHECK-LABEL: test_vreinterpret_u8_s64
   7266 uint8x8_t test_vreinterpret_u8_s64(int64x1_t a) {
   7267   return vreinterpret_u8_s64(a);
   7268 }
   7269 
   7270 // CHECK-LABEL: test_vreinterpret_u8_u16
   7271 uint8x8_t test_vreinterpret_u8_u16(uint16x4_t a) {
   7272   return vreinterpret_u8_u16(a);
   7273 }
   7274 
   7275 // CHECK-LABEL: test_vreinterpret_u8_u32
   7276 uint8x8_t test_vreinterpret_u8_u32(uint32x2_t a) {
   7277   return vreinterpret_u8_u32(a);
   7278 }
   7279 
   7280 // CHECK-LABEL: test_vreinterpret_u8_u64
   7281 uint8x8_t test_vreinterpret_u8_u64(uint64x1_t a) {
   7282   return vreinterpret_u8_u64(a);
   7283 }
   7284 
   7285 // CHECK-LABEL: test_vreinterpret_u8_f16
   7286 uint8x8_t test_vreinterpret_u8_f16(float16x4_t a) {
   7287   return vreinterpret_u8_f16(a);
   7288 }
   7289 
   7290 // CHECK-LABEL: test_vreinterpret_u8_f32
   7291 uint8x8_t test_vreinterpret_u8_f32(float32x2_t a) {
   7292   return vreinterpret_u8_f32(a);
   7293 }
   7294 
   7295 // CHECK-LABEL: test_vreinterpret_u8_p8
   7296 uint8x8_t test_vreinterpret_u8_p8(poly8x8_t a) {
   7297   return vreinterpret_u8_p8(a);
   7298 }
   7299 
   7300 // CHECK-LABEL: test_vreinterpret_u8_p16
   7301 uint8x8_t test_vreinterpret_u8_p16(poly16x4_t a) {
   7302   return vreinterpret_u8_p16(a);
   7303 }
   7304 
   7305 // CHECK-LABEL: test_vreinterpret_u16_s8
   7306 uint16x4_t test_vreinterpret_u16_s8(int8x8_t a) {
   7307   return vreinterpret_u16_s8(a);
   7308 }
   7309 
   7310 // CHECK-LABEL: test_vreinterpret_u16_s16
   7311 uint16x4_t test_vreinterpret_u16_s16(int16x4_t a) {
   7312   return vreinterpret_u16_s16(a);
   7313 }
   7314 
   7315 // CHECK-LABEL: test_vreinterpret_u16_s32
   7316 uint16x4_t test_vreinterpret_u16_s32(int32x2_t a) {
   7317   return vreinterpret_u16_s32(a);
   7318 }
   7319 
   7320 // CHECK-LABEL: test_vreinterpret_u16_s64
   7321 uint16x4_t test_vreinterpret_u16_s64(int64x1_t a) {
   7322   return vreinterpret_u16_s64(a);
   7323 }
   7324 
   7325 // CHECK-LABEL: test_vreinterpret_u16_u8
   7326 uint16x4_t test_vreinterpret_u16_u8(uint8x8_t a) {
   7327   return vreinterpret_u16_u8(a);
   7328 }
   7329 
   7330 // CHECK-LABEL: test_vreinterpret_u16_u32
   7331 uint16x4_t test_vreinterpret_u16_u32(uint32x2_t a) {
   7332   return vreinterpret_u16_u32(a);
   7333 }
   7334 
   7335 // CHECK-LABEL: test_vreinterpret_u16_u64
   7336 uint16x4_t test_vreinterpret_u16_u64(uint64x1_t a) {
   7337   return vreinterpret_u16_u64(a);
   7338 }
   7339 
   7340 // CHECK-LABEL: test_vreinterpret_u16_f16
   7341 uint16x4_t test_vreinterpret_u16_f16(float16x4_t a) {
   7342   return vreinterpret_u16_f16(a);
   7343 }
   7344 
   7345 // CHECK-LABEL: test_vreinterpret_u16_f32
   7346 uint16x4_t test_vreinterpret_u16_f32(float32x2_t a) {
   7347   return vreinterpret_u16_f32(a);
   7348 }
   7349 
   7350 // CHECK-LABEL: test_vreinterpret_u16_p8
   7351 uint16x4_t test_vreinterpret_u16_p8(poly8x8_t a) {
   7352   return vreinterpret_u16_p8(a);
   7353 }
   7354 
   7355 // CHECK-LABEL: test_vreinterpret_u16_p16
   7356 uint16x4_t test_vreinterpret_u16_p16(poly16x4_t a) {
   7357   return vreinterpret_u16_p16(a);
   7358 }
   7359 
   7360 // CHECK-LABEL: test_vreinterpret_u32_s8
   7361 uint32x2_t test_vreinterpret_u32_s8(int8x8_t a) {
   7362   return vreinterpret_u32_s8(a);
   7363 }
   7364 
   7365 // CHECK-LABEL: test_vreinterpret_u32_s16
   7366 uint32x2_t test_vreinterpret_u32_s16(int16x4_t a) {
   7367   return vreinterpret_u32_s16(a);
   7368 }
   7369 
   7370 // CHECK-LABEL: test_vreinterpret_u32_s32
   7371 uint32x2_t test_vreinterpret_u32_s32(int32x2_t a) {
   7372   return vreinterpret_u32_s32(a);
   7373 }
   7374 
   7375 // CHECK-LABEL: test_vreinterpret_u32_s64
   7376 uint32x2_t test_vreinterpret_u32_s64(int64x1_t a) {
   7377   return vreinterpret_u32_s64(a);
   7378 }
   7379 
   7380 // CHECK-LABEL: test_vreinterpret_u32_u8
   7381 uint32x2_t test_vreinterpret_u32_u8(uint8x8_t a) {
   7382   return vreinterpret_u32_u8(a);
   7383 }
   7384 
   7385 // CHECK-LABEL: test_vreinterpret_u32_u16
   7386 uint32x2_t test_vreinterpret_u32_u16(uint16x4_t a) {
   7387   return vreinterpret_u32_u16(a);
   7388 }
   7389 
   7390 // CHECK-LABEL: test_vreinterpret_u32_u64
   7391 uint32x2_t test_vreinterpret_u32_u64(uint64x1_t a) {
   7392   return vreinterpret_u32_u64(a);
   7393 }
   7394 
   7395 // CHECK-LABEL: test_vreinterpret_u32_f16
   7396 uint32x2_t test_vreinterpret_u32_f16(float16x4_t a) {
   7397   return vreinterpret_u32_f16(a);
   7398 }
   7399 
   7400 // CHECK-LABEL: test_vreinterpret_u32_f32
   7401 uint32x2_t test_vreinterpret_u32_f32(float32x2_t a) {
   7402   return vreinterpret_u32_f32(a);
   7403 }
   7404 
   7405 // CHECK-LABEL: test_vreinterpret_u32_p8
   7406 uint32x2_t test_vreinterpret_u32_p8(poly8x8_t a) {
   7407   return vreinterpret_u32_p8(a);
   7408 }
   7409 
   7410 // CHECK-LABEL: test_vreinterpret_u32_p16
   7411 uint32x2_t test_vreinterpret_u32_p16(poly16x4_t a) {
   7412   return vreinterpret_u32_p16(a);
   7413 }
   7414 
   7415 // CHECK-LABEL: test_vreinterpret_u64_s8
   7416 uint64x1_t test_vreinterpret_u64_s8(int8x8_t a) {
   7417   return vreinterpret_u64_s8(a);
   7418 }
   7419 
   7420 // CHECK-LABEL: test_vreinterpret_u64_s16
   7421 uint64x1_t test_vreinterpret_u64_s16(int16x4_t a) {
   7422   return vreinterpret_u64_s16(a);
   7423 }
   7424 
   7425 // CHECK-LABEL: test_vreinterpret_u64_s32
   7426 uint64x1_t test_vreinterpret_u64_s32(int32x2_t a) {
   7427   return vreinterpret_u64_s32(a);
   7428 }
   7429 
   7430 // CHECK-LABEL: test_vreinterpret_u64_s64
   7431 uint64x1_t test_vreinterpret_u64_s64(int64x1_t a) {
   7432   return vreinterpret_u64_s64(a);
   7433 }
   7434 
   7435 // CHECK-LABEL: test_vreinterpret_u64_u8
   7436 uint64x1_t test_vreinterpret_u64_u8(uint8x8_t a) {
   7437   return vreinterpret_u64_u8(a);
   7438 }
   7439 
   7440 // CHECK-LABEL: test_vreinterpret_u64_u16
   7441 uint64x1_t test_vreinterpret_u64_u16(uint16x4_t a) {
   7442   return vreinterpret_u64_u16(a);
   7443 }
   7444 
   7445 // CHECK-LABEL: test_vreinterpret_u64_u32
   7446 uint64x1_t test_vreinterpret_u64_u32(uint32x2_t a) {
   7447   return vreinterpret_u64_u32(a);
   7448 }
   7449 
   7450 // CHECK-LABEL: test_vreinterpret_u64_f16
   7451 uint64x1_t test_vreinterpret_u64_f16(float16x4_t a) {
   7452   return vreinterpret_u64_f16(a);
   7453 }
   7454 
   7455 // CHECK-LABEL: test_vreinterpret_u64_f32
   7456 uint64x1_t test_vreinterpret_u64_f32(float32x2_t a) {
   7457   return vreinterpret_u64_f32(a);
   7458 }
   7459 
   7460 // CHECK-LABEL: test_vreinterpret_u64_p8
   7461 uint64x1_t test_vreinterpret_u64_p8(poly8x8_t a) {
   7462   return vreinterpret_u64_p8(a);
   7463 }
   7464 
   7465 // CHECK-LABEL: test_vreinterpret_u64_p16
   7466 uint64x1_t test_vreinterpret_u64_p16(poly16x4_t a) {
   7467   return vreinterpret_u64_p16(a);
   7468 }
   7469 
   7470 // CHECK-LABEL: test_vreinterpret_f16_s8
   7471 float16x4_t test_vreinterpret_f16_s8(int8x8_t a) {
   7472   return vreinterpret_f16_s8(a);
   7473 }
   7474 
   7475 // CHECK-LABEL: test_vreinterpret_f16_s16
   7476 float16x4_t test_vreinterpret_f16_s16(int16x4_t a) {
   7477   return vreinterpret_f16_s16(a);
   7478 }
   7479 
   7480 // CHECK-LABEL: test_vreinterpret_f16_s32
   7481 float16x4_t test_vreinterpret_f16_s32(int32x2_t a) {
   7482   return vreinterpret_f16_s32(a);
   7483 }
   7484 
   7485 // CHECK-LABEL: test_vreinterpret_f16_s64
   7486 float16x4_t test_vreinterpret_f16_s64(int64x1_t a) {
   7487   return vreinterpret_f16_s64(a);
   7488 }
   7489 
   7490 // CHECK-LABEL: test_vreinterpret_f16_u8
   7491 float16x4_t test_vreinterpret_f16_u8(uint8x8_t a) {
   7492   return vreinterpret_f16_u8(a);
   7493 }
   7494 
   7495 // CHECK-LABEL: test_vreinterpret_f16_u16
   7496 float16x4_t test_vreinterpret_f16_u16(uint16x4_t a) {
   7497   return vreinterpret_f16_u16(a);
   7498 }
   7499 
   7500 // CHECK-LABEL: test_vreinterpret_f16_u32
   7501 float16x4_t test_vreinterpret_f16_u32(uint32x2_t a) {
   7502   return vreinterpret_f16_u32(a);
   7503 }
   7504 
   7505 // CHECK-LABEL: test_vreinterpret_f16_u64
   7506 float16x4_t test_vreinterpret_f16_u64(uint64x1_t a) {
   7507   return vreinterpret_f16_u64(a);
   7508 }
   7509 
   7510 // CHECK-LABEL: test_vreinterpret_f16_f32
   7511 float16x4_t test_vreinterpret_f16_f32(float32x2_t a) {
   7512   return vreinterpret_f16_f32(a);
   7513 }
   7514 
   7515 // CHECK-LABEL: test_vreinterpret_f16_p8
   7516 float16x4_t test_vreinterpret_f16_p8(poly8x8_t a) {
   7517   return vreinterpret_f16_p8(a);
   7518 }
   7519 
   7520 // CHECK-LABEL: test_vreinterpret_f16_p16
   7521 float16x4_t test_vreinterpret_f16_p16(poly16x4_t a) {
   7522   return vreinterpret_f16_p16(a);
   7523 }
   7524 
   7525 // CHECK-LABEL: test_vreinterpret_f32_s8
   7526 float32x2_t test_vreinterpret_f32_s8(int8x8_t a) {
   7527   return vreinterpret_f32_s8(a);
   7528 }
   7529 
   7530 // CHECK-LABEL: test_vreinterpret_f32_s16
   7531 float32x2_t test_vreinterpret_f32_s16(int16x4_t a) {
   7532   return vreinterpret_f32_s16(a);
   7533 }
   7534 
   7535 // CHECK-LABEL: test_vreinterpret_f32_s32
   7536 float32x2_t test_vreinterpret_f32_s32(int32x2_t a) {
   7537   return vreinterpret_f32_s32(a);
   7538 }
   7539 
   7540 // CHECK-LABEL: test_vreinterpret_f32_s64
   7541 float32x2_t test_vreinterpret_f32_s64(int64x1_t a) {
   7542   return vreinterpret_f32_s64(a);
   7543 }
   7544 
   7545 // CHECK-LABEL: test_vreinterpret_f32_u8
   7546 float32x2_t test_vreinterpret_f32_u8(uint8x8_t a) {
   7547   return vreinterpret_f32_u8(a);
   7548 }
   7549 
   7550 // CHECK-LABEL: test_vreinterpret_f32_u16
   7551 float32x2_t test_vreinterpret_f32_u16(uint16x4_t a) {
   7552   return vreinterpret_f32_u16(a);
   7553 }
   7554 
   7555 // CHECK-LABEL: test_vreinterpret_f32_u32
   7556 float32x2_t test_vreinterpret_f32_u32(uint32x2_t a) {
   7557   return vreinterpret_f32_u32(a);
   7558 }
   7559 
   7560 // CHECK-LABEL: test_vreinterpret_f32_u64
   7561 float32x2_t test_vreinterpret_f32_u64(uint64x1_t a) {
   7562   return vreinterpret_f32_u64(a);
   7563 }
   7564 
   7565 // CHECK-LABEL: test_vreinterpret_f32_f16
   7566 float32x2_t test_vreinterpret_f32_f16(float16x4_t a) {
   7567   return vreinterpret_f32_f16(a);
   7568 }
   7569 
   7570 // CHECK-LABEL: test_vreinterpret_f32_p8
   7571 float32x2_t test_vreinterpret_f32_p8(poly8x8_t a) {
   7572   return vreinterpret_f32_p8(a);
   7573 }
   7574 
   7575 // CHECK-LABEL: test_vreinterpret_f32_p16
   7576 float32x2_t test_vreinterpret_f32_p16(poly16x4_t a) {
   7577   return vreinterpret_f32_p16(a);
   7578 }
   7579 
   7580 // CHECK-LABEL: test_vreinterpret_p8_s8
   7581 poly8x8_t test_vreinterpret_p8_s8(int8x8_t a) {
   7582   return vreinterpret_p8_s8(a);
   7583 }
   7584 
   7585 // CHECK-LABEL: test_vreinterpret_p8_s16
   7586 poly8x8_t test_vreinterpret_p8_s16(int16x4_t a) {
   7587   return vreinterpret_p8_s16(a);
   7588 }
   7589 
   7590 // CHECK-LABEL: test_vreinterpret_p8_s32
   7591 poly8x8_t test_vreinterpret_p8_s32(int32x2_t a) {
   7592   return vreinterpret_p8_s32(a);
   7593 }
   7594 
   7595 // CHECK-LABEL: test_vreinterpret_p8_s64
   7596 poly8x8_t test_vreinterpret_p8_s64(int64x1_t a) {
   7597   return vreinterpret_p8_s64(a);
   7598 }
   7599 
   7600 // CHECK-LABEL: test_vreinterpret_p8_u8
   7601 poly8x8_t test_vreinterpret_p8_u8(uint8x8_t a) {
   7602   return vreinterpret_p8_u8(a);
   7603 }
   7604 
   7605 // CHECK-LABEL: test_vreinterpret_p8_u16
   7606 poly8x8_t test_vreinterpret_p8_u16(uint16x4_t a) {
   7607   return vreinterpret_p8_u16(a);
   7608 }
   7609 
   7610 // CHECK-LABEL: test_vreinterpret_p8_u32
   7611 poly8x8_t test_vreinterpret_p8_u32(uint32x2_t a) {
   7612   return vreinterpret_p8_u32(a);
   7613 }
   7614 
   7615 // CHECK-LABEL: test_vreinterpret_p8_u64
   7616 poly8x8_t test_vreinterpret_p8_u64(uint64x1_t a) {
   7617   return vreinterpret_p8_u64(a);
   7618 }
   7619 
   7620 // CHECK-LABEL: test_vreinterpret_p8_f16
   7621 poly8x8_t test_vreinterpret_p8_f16(float16x4_t a) {
   7622   return vreinterpret_p8_f16(a);
   7623 }
   7624 
   7625 // CHECK-LABEL: test_vreinterpret_p8_f32
   7626 poly8x8_t test_vreinterpret_p8_f32(float32x2_t a) {
   7627   return vreinterpret_p8_f32(a);
   7628 }
   7629 
   7630 // CHECK-LABEL: test_vreinterpret_p8_p16
   7631 poly8x8_t test_vreinterpret_p8_p16(poly16x4_t a) {
   7632   return vreinterpret_p8_p16(a);
   7633 }
   7634 
   7635 // CHECK-LABEL: test_vreinterpret_p16_s8
   7636 poly16x4_t test_vreinterpret_p16_s8(int8x8_t a) {
   7637   return vreinterpret_p16_s8(a);
   7638 }
   7639 
   7640 // CHECK-LABEL: test_vreinterpret_p16_s16
   7641 poly16x4_t test_vreinterpret_p16_s16(int16x4_t a) {
   7642   return vreinterpret_p16_s16(a);
   7643 }
   7644 
   7645 // CHECK-LABEL: test_vreinterpret_p16_s32
   7646 poly16x4_t test_vreinterpret_p16_s32(int32x2_t a) {
   7647   return vreinterpret_p16_s32(a);
   7648 }
   7649 
   7650 // CHECK-LABEL: test_vreinterpret_p16_s64
   7651 poly16x4_t test_vreinterpret_p16_s64(int64x1_t a) {
   7652   return vreinterpret_p16_s64(a);
   7653 }
   7654 
   7655 // CHECK-LABEL: test_vreinterpret_p16_u8
   7656 poly16x4_t test_vreinterpret_p16_u8(uint8x8_t a) {
   7657   return vreinterpret_p16_u8(a);
   7658 }
   7659 
   7660 // CHECK-LABEL: test_vreinterpret_p16_u16
   7661 poly16x4_t test_vreinterpret_p16_u16(uint16x4_t a) {
   7662   return vreinterpret_p16_u16(a);
   7663 }
   7664 
   7665 // CHECK-LABEL: test_vreinterpret_p16_u32
   7666 poly16x4_t test_vreinterpret_p16_u32(uint32x2_t a) {
   7667   return vreinterpret_p16_u32(a);
   7668 }
   7669 
   7670 // CHECK-LABEL: test_vreinterpret_p16_u64
   7671 poly16x4_t test_vreinterpret_p16_u64(uint64x1_t a) {
   7672   return vreinterpret_p16_u64(a);
   7673 }
   7674 
   7675 // CHECK-LABEL: test_vreinterpret_p16_f16
   7676 poly16x4_t test_vreinterpret_p16_f16(float16x4_t a) {
   7677   return vreinterpret_p16_f16(a);
   7678 }
   7679 
   7680 // CHECK-LABEL: test_vreinterpret_p16_f32
   7681 poly16x4_t test_vreinterpret_p16_f32(float32x2_t a) {
   7682   return vreinterpret_p16_f32(a);
   7683 }
   7684 
   7685 // CHECK-LABEL: test_vreinterpret_p16_p8
   7686 poly16x4_t test_vreinterpret_p16_p8(poly8x8_t a) {
   7687   return vreinterpret_p16_p8(a);
   7688 }
   7689 
   7690 // CHECK-LABEL: test_vreinterpretq_s8_s16
   7691 int8x16_t test_vreinterpretq_s8_s16(int16x8_t a) {
   7692   return vreinterpretq_s8_s16(a);
   7693 }
   7694 
   7695 // CHECK-LABEL: test_vreinterpretq_s8_s32
   7696 int8x16_t test_vreinterpretq_s8_s32(int32x4_t a) {
   7697   return vreinterpretq_s8_s32(a);
   7698 }
   7699 
   7700 // CHECK-LABEL: test_vreinterpretq_s8_s64
   7701 int8x16_t test_vreinterpretq_s8_s64(int64x2_t a) {
   7702   return vreinterpretq_s8_s64(a);
   7703 }
   7704 
   7705 // CHECK-LABEL: test_vreinterpretq_s8_u8
   7706 int8x16_t test_vreinterpretq_s8_u8(uint8x16_t a) {
   7707   return vreinterpretq_s8_u8(a);
   7708 }
   7709 
   7710 // CHECK-LABEL: test_vreinterpretq_s8_u16
   7711 int8x16_t test_vreinterpretq_s8_u16(uint16x8_t a) {
   7712   return vreinterpretq_s8_u16(a);
   7713 }
   7714 
   7715 // CHECK-LABEL: test_vreinterpretq_s8_u32
   7716 int8x16_t test_vreinterpretq_s8_u32(uint32x4_t a) {
   7717   return vreinterpretq_s8_u32(a);
   7718 }
   7719 
   7720 // CHECK-LABEL: test_vreinterpretq_s8_u64
   7721 int8x16_t test_vreinterpretq_s8_u64(uint64x2_t a) {
   7722   return vreinterpretq_s8_u64(a);
   7723 }
   7724 
   7725 // CHECK-LABEL: test_vreinterpretq_s8_f16
   7726 int8x16_t test_vreinterpretq_s8_f16(float16x8_t a) {
   7727   return vreinterpretq_s8_f16(a);
   7728 }
   7729 
   7730 // CHECK-LABEL: test_vreinterpretq_s8_f32
   7731 int8x16_t test_vreinterpretq_s8_f32(float32x4_t a) {
   7732   return vreinterpretq_s8_f32(a);
   7733 }
   7734 
   7735 // CHECK-LABEL: test_vreinterpretq_s8_p8
   7736 int8x16_t test_vreinterpretq_s8_p8(poly8x16_t a) {
   7737   return vreinterpretq_s8_p8(a);
   7738 }
   7739 
   7740 // CHECK-LABEL: test_vreinterpretq_s8_p16
   7741 int8x16_t test_vreinterpretq_s8_p16(poly16x8_t a) {
   7742   return vreinterpretq_s8_p16(a);
   7743 }
   7744 
   7745 // CHECK-LABEL: test_vreinterpretq_s16_s8
   7746 int16x8_t test_vreinterpretq_s16_s8(int8x16_t a) {
   7747   return vreinterpretq_s16_s8(a);
   7748 }
   7749 
   7750 // CHECK-LABEL: test_vreinterpretq_s16_s32
   7751 int16x8_t test_vreinterpretq_s16_s32(int32x4_t a) {
   7752   return vreinterpretq_s16_s32(a);
   7753 }
   7754 
   7755 // CHECK-LABEL: test_vreinterpretq_s16_s64
   7756 int16x8_t test_vreinterpretq_s16_s64(int64x2_t a) {
   7757   return vreinterpretq_s16_s64(a);
   7758 }
   7759 
   7760 // CHECK-LABEL: test_vreinterpretq_s16_u8
   7761 int16x8_t test_vreinterpretq_s16_u8(uint8x16_t a) {
   7762   return vreinterpretq_s16_u8(a);
   7763 }
   7764 
   7765 // CHECK-LABEL: test_vreinterpretq_s16_u16
   7766 int16x8_t test_vreinterpretq_s16_u16(uint16x8_t a) {
   7767   return vreinterpretq_s16_u16(a);
   7768 }
   7769 
   7770 // CHECK-LABEL: test_vreinterpretq_s16_u32
   7771 int16x8_t test_vreinterpretq_s16_u32(uint32x4_t a) {
   7772   return vreinterpretq_s16_u32(a);
   7773 }
   7774 
   7775 // CHECK-LABEL: test_vreinterpretq_s16_u64
   7776 int16x8_t test_vreinterpretq_s16_u64(uint64x2_t a) {
   7777   return vreinterpretq_s16_u64(a);
   7778 }
   7779 
   7780 // CHECK-LABEL: test_vreinterpretq_s16_f16
   7781 int16x8_t test_vreinterpretq_s16_f16(float16x8_t a) {
   7782   return vreinterpretq_s16_f16(a);
   7783 }
   7784 
   7785 // CHECK-LABEL: test_vreinterpretq_s16_f32
   7786 int16x8_t test_vreinterpretq_s16_f32(float32x4_t a) {
   7787   return vreinterpretq_s16_f32(a);
   7788 }
   7789 
   7790 // CHECK-LABEL: test_vreinterpretq_s16_p8
   7791 int16x8_t test_vreinterpretq_s16_p8(poly8x16_t a) {
   7792   return vreinterpretq_s16_p8(a);
   7793 }
   7794 
   7795 // CHECK-LABEL: test_vreinterpretq_s16_p16
   7796 int16x8_t test_vreinterpretq_s16_p16(poly16x8_t a) {
   7797   return vreinterpretq_s16_p16(a);
   7798 }
   7799 
   7800 // CHECK-LABEL: test_vreinterpretq_s32_s8
   7801 int32x4_t test_vreinterpretq_s32_s8(int8x16_t a) {
   7802   return vreinterpretq_s32_s8(a);
   7803 }
   7804 
   7805 // CHECK-LABEL: test_vreinterpretq_s32_s16
   7806 int32x4_t test_vreinterpretq_s32_s16(int16x8_t a) {
   7807   return vreinterpretq_s32_s16(a);
   7808 }
   7809 
   7810 // CHECK-LABEL: test_vreinterpretq_s32_s64
   7811 int32x4_t test_vreinterpretq_s32_s64(int64x2_t a) {
   7812   return vreinterpretq_s32_s64(a);
   7813 }
   7814 
   7815 // CHECK-LABEL: test_vreinterpretq_s32_u8
   7816 int32x4_t test_vreinterpretq_s32_u8(uint8x16_t a) {
   7817   return vreinterpretq_s32_u8(a);
   7818 }
   7819 
   7820 // CHECK-LABEL: test_vreinterpretq_s32_u16
   7821 int32x4_t test_vreinterpretq_s32_u16(uint16x8_t a) {
   7822   return vreinterpretq_s32_u16(a);
   7823 }
   7824 
   7825 // CHECK-LABEL: test_vreinterpretq_s32_u32
   7826 int32x4_t test_vreinterpretq_s32_u32(uint32x4_t a) {
   7827   return vreinterpretq_s32_u32(a);
   7828 }
   7829 
   7830 // CHECK-LABEL: test_vreinterpretq_s32_u64
   7831 int32x4_t test_vreinterpretq_s32_u64(uint64x2_t a) {
   7832   return vreinterpretq_s32_u64(a);
   7833 }
   7834 
   7835 // CHECK-LABEL: test_vreinterpretq_s32_f16
   7836 int32x4_t test_vreinterpretq_s32_f16(float16x8_t a) {
   7837   return vreinterpretq_s32_f16(a);
   7838 }
   7839 
   7840 // CHECK-LABEL: test_vreinterpretq_s32_f32
   7841 int32x4_t test_vreinterpretq_s32_f32(float32x4_t a) {
   7842   return vreinterpretq_s32_f32(a);
   7843 }
   7844 
   7845 // CHECK-LABEL: test_vreinterpretq_s32_p8
   7846 int32x4_t test_vreinterpretq_s32_p8(poly8x16_t a) {
   7847   return vreinterpretq_s32_p8(a);
   7848 }
   7849 
   7850 // CHECK-LABEL: test_vreinterpretq_s32_p16
   7851 int32x4_t test_vreinterpretq_s32_p16(poly16x8_t a) {
   7852   return vreinterpretq_s32_p16(a);
   7853 }
   7854 
   7855 // CHECK-LABEL: test_vreinterpretq_s64_s8
   7856 int64x2_t test_vreinterpretq_s64_s8(int8x16_t a) {
   7857   return vreinterpretq_s64_s8(a);
   7858 }
   7859 
   7860 // CHECK-LABEL: test_vreinterpretq_s64_s16
   7861 int64x2_t test_vreinterpretq_s64_s16(int16x8_t a) {
   7862   return vreinterpretq_s64_s16(a);
   7863 }
   7864 
   7865 // CHECK-LABEL: test_vreinterpretq_s64_s32
   7866 int64x2_t test_vreinterpretq_s64_s32(int32x4_t a) {
   7867   return vreinterpretq_s64_s32(a);
   7868 }
   7869 
   7870 // CHECK-LABEL: test_vreinterpretq_s64_u8
   7871 int64x2_t test_vreinterpretq_s64_u8(uint8x16_t a) {
   7872   return vreinterpretq_s64_u8(a);
   7873 }
   7874 
   7875 // CHECK-LABEL: test_vreinterpretq_s64_u16
   7876 int64x2_t test_vreinterpretq_s64_u16(uint16x8_t a) {
   7877   return vreinterpretq_s64_u16(a);
   7878 }
   7879 
   7880 // CHECK-LABEL: test_vreinterpretq_s64_u32
   7881 int64x2_t test_vreinterpretq_s64_u32(uint32x4_t a) {
   7882   return vreinterpretq_s64_u32(a);
   7883 }
   7884 
   7885 // CHECK-LABEL: test_vreinterpretq_s64_u64
   7886 int64x2_t test_vreinterpretq_s64_u64(uint64x2_t a) {
   7887   return vreinterpretq_s64_u64(a);
   7888 }
   7889 
   7890 // CHECK-LABEL: test_vreinterpretq_s64_f16
   7891 int64x2_t test_vreinterpretq_s64_f16(float16x8_t a) {
   7892   return vreinterpretq_s64_f16(a);
   7893 }
   7894 
   7895 // CHECK-LABEL: test_vreinterpretq_s64_f32
   7896 int64x2_t test_vreinterpretq_s64_f32(float32x4_t a) {
   7897   return vreinterpretq_s64_f32(a);
   7898 }
   7899 
   7900 // CHECK-LABEL: test_vreinterpretq_s64_p8
   7901 int64x2_t test_vreinterpretq_s64_p8(poly8x16_t a) {
   7902   return vreinterpretq_s64_p8(a);
   7903 }
   7904 
   7905 // CHECK-LABEL: test_vreinterpretq_s64_p16
   7906 int64x2_t test_vreinterpretq_s64_p16(poly16x8_t a) {
   7907   return vreinterpretq_s64_p16(a);
   7908 }
   7909 
   7910 // CHECK-LABEL: test_vreinterpretq_u8_s8
   7911 uint8x16_t test_vreinterpretq_u8_s8(int8x16_t a) {
   7912   return vreinterpretq_u8_s8(a);
   7913 }
   7914 
   7915 // CHECK-LABEL: test_vreinterpretq_u8_s16
   7916 uint8x16_t test_vreinterpretq_u8_s16(int16x8_t a) {
   7917   return vreinterpretq_u8_s16(a);
   7918 }
   7919 
   7920 // CHECK-LABEL: test_vreinterpretq_u8_s32
   7921 uint8x16_t test_vreinterpretq_u8_s32(int32x4_t a) {
   7922   return vreinterpretq_u8_s32(a);
   7923 }
   7924 
   7925 // CHECK-LABEL: test_vreinterpretq_u8_s64
   7926 uint8x16_t test_vreinterpretq_u8_s64(int64x2_t a) {
   7927   return vreinterpretq_u8_s64(a);
   7928 }
   7929 
   7930 // CHECK-LABEL: test_vreinterpretq_u8_u16
   7931 uint8x16_t test_vreinterpretq_u8_u16(uint16x8_t a) {
   7932   return vreinterpretq_u8_u16(a);
   7933 }
   7934 
   7935 // CHECK-LABEL: test_vreinterpretq_u8_u32
   7936 uint8x16_t test_vreinterpretq_u8_u32(uint32x4_t a) {
   7937   return vreinterpretq_u8_u32(a);
   7938 }
   7939 
   7940 // CHECK-LABEL: test_vreinterpretq_u8_u64
   7941 uint8x16_t test_vreinterpretq_u8_u64(uint64x2_t a) {
   7942   return vreinterpretq_u8_u64(a);
   7943 }
   7944 
   7945 // CHECK-LABEL: test_vreinterpretq_u8_f16
   7946 uint8x16_t test_vreinterpretq_u8_f16(float16x8_t a) {
   7947   return vreinterpretq_u8_f16(a);
   7948 }
   7949 
   7950 // CHECK-LABEL: test_vreinterpretq_u8_f32
   7951 uint8x16_t test_vreinterpretq_u8_f32(float32x4_t a) {
   7952   return vreinterpretq_u8_f32(a);
   7953 }
   7954 
   7955 // CHECK-LABEL: test_vreinterpretq_u8_p8
   7956 uint8x16_t test_vreinterpretq_u8_p8(poly8x16_t a) {
   7957   return vreinterpretq_u8_p8(a);
   7958 }
   7959 
   7960 // CHECK-LABEL: test_vreinterpretq_u8_p16
   7961 uint8x16_t test_vreinterpretq_u8_p16(poly16x8_t a) {
   7962   return vreinterpretq_u8_p16(a);
   7963 }
   7964 
   7965 // CHECK-LABEL: test_vreinterpretq_u16_s8
   7966 uint16x8_t test_vreinterpretq_u16_s8(int8x16_t a) {
   7967   return vreinterpretq_u16_s8(a);
   7968 }
   7969 
   7970 // CHECK-LABEL: test_vreinterpretq_u16_s16
   7971 uint16x8_t test_vreinterpretq_u16_s16(int16x8_t a) {
   7972   return vreinterpretq_u16_s16(a);
   7973 }
   7974 
   7975 // CHECK-LABEL: test_vreinterpretq_u16_s32
   7976 uint16x8_t test_vreinterpretq_u16_s32(int32x4_t a) {
   7977   return vreinterpretq_u16_s32(a);
   7978 }
   7979 
   7980 // CHECK-LABEL: test_vreinterpretq_u16_s64
   7981 uint16x8_t test_vreinterpretq_u16_s64(int64x2_t a) {
   7982   return vreinterpretq_u16_s64(a);
   7983 }
   7984 
   7985 // CHECK-LABEL: test_vreinterpretq_u16_u8
   7986 uint16x8_t test_vreinterpretq_u16_u8(uint8x16_t a) {
   7987   return vreinterpretq_u16_u8(a);
   7988 }
   7989 
   7990 // CHECK-LABEL: test_vreinterpretq_u16_u32
   7991 uint16x8_t test_vreinterpretq_u16_u32(uint32x4_t a) {
   7992   return vreinterpretq_u16_u32(a);
   7993 }
   7994 
   7995 // CHECK-LABEL: test_vreinterpretq_u16_u64
   7996 uint16x8_t test_vreinterpretq_u16_u64(uint64x2_t a) {
   7997   return vreinterpretq_u16_u64(a);
   7998 }
   7999 
   8000 // CHECK-LABEL: test_vreinterpretq_u16_f16
   8001 uint16x8_t test_vreinterpretq_u16_f16(float16x8_t a) {
   8002   return vreinterpretq_u16_f16(a);
   8003 }
   8004 
   8005 // CHECK-LABEL: test_vreinterpretq_u16_f32
   8006 uint16x8_t test_vreinterpretq_u16_f32(float32x4_t a) {
   8007   return vreinterpretq_u16_f32(a);
   8008 }
   8009 
   8010 // CHECK-LABEL: test_vreinterpretq_u16_p8
   8011 uint16x8_t test_vreinterpretq_u16_p8(poly8x16_t a) {
   8012   return vreinterpretq_u16_p8(a);
   8013 }
   8014 
   8015 // CHECK-LABEL: test_vreinterpretq_u16_p16
   8016 uint16x8_t test_vreinterpretq_u16_p16(poly16x8_t a) {
   8017   return vreinterpretq_u16_p16(a);
   8018 }
   8019 
   8020 // CHECK-LABEL: test_vreinterpretq_u32_s8
   8021 uint32x4_t test_vreinterpretq_u32_s8(int8x16_t a) {
   8022   return vreinterpretq_u32_s8(a);
   8023 }
   8024 
   8025 // CHECK-LABEL: test_vreinterpretq_u32_s16
   8026 uint32x4_t test_vreinterpretq_u32_s16(int16x8_t a) {
   8027   return vreinterpretq_u32_s16(a);
   8028 }
   8029 
   8030 // CHECK-LABEL: test_vreinterpretq_u32_s32
   8031 uint32x4_t test_vreinterpretq_u32_s32(int32x4_t a) {
   8032   return vreinterpretq_u32_s32(a);
   8033 }
   8034 
   8035 // CHECK-LABEL: test_vreinterpretq_u32_s64
   8036 uint32x4_t test_vreinterpretq_u32_s64(int64x2_t a) {
   8037   return vreinterpretq_u32_s64(a);
   8038 }
   8039 
   8040 // CHECK-LABEL: test_vreinterpretq_u32_u8
   8041 uint32x4_t test_vreinterpretq_u32_u8(uint8x16_t a) {
   8042   return vreinterpretq_u32_u8(a);
   8043 }
   8044 
   8045 // CHECK-LABEL: test_vreinterpretq_u32_u16
   8046 uint32x4_t test_vreinterpretq_u32_u16(uint16x8_t a) {
   8047   return vreinterpretq_u32_u16(a);
   8048 }
   8049 
   8050 // CHECK-LABEL: test_vreinterpretq_u32_u64
   8051 uint32x4_t test_vreinterpretq_u32_u64(uint64x2_t a) {
   8052   return vreinterpretq_u32_u64(a);
   8053 }
   8054 
   8055 // CHECK-LABEL: test_vreinterpretq_u32_f16
   8056 uint32x4_t test_vreinterpretq_u32_f16(float16x8_t a) {
   8057   return vreinterpretq_u32_f16(a);
   8058 }
   8059 
   8060 // CHECK-LABEL: test_vreinterpretq_u32_f32
   8061 uint32x4_t test_vreinterpretq_u32_f32(float32x4_t a) {
   8062   return vreinterpretq_u32_f32(a);
   8063 }
   8064 
   8065 // CHECK-LABEL: test_vreinterpretq_u32_p8
   8066 uint32x4_t test_vreinterpretq_u32_p8(poly8x16_t a) {
   8067   return vreinterpretq_u32_p8(a);
   8068 }
   8069 
   8070 // CHECK-LABEL: test_vreinterpretq_u32_p16
   8071 uint32x4_t test_vreinterpretq_u32_p16(poly16x8_t a) {
   8072   return vreinterpretq_u32_p16(a);
   8073 }
   8074 
   8075 // CHECK-LABEL: test_vreinterpretq_u64_s8
   8076 uint64x2_t test_vreinterpretq_u64_s8(int8x16_t a) {
   8077   return vreinterpretq_u64_s8(a);
   8078 }
   8079 
   8080 // CHECK-LABEL: test_vreinterpretq_u64_s16
   8081 uint64x2_t test_vreinterpretq_u64_s16(int16x8_t a) {
   8082   return vreinterpretq_u64_s16(a);
   8083 }
   8084 
   8085 // CHECK-LABEL: test_vreinterpretq_u64_s32
   8086 uint64x2_t test_vreinterpretq_u64_s32(int32x4_t a) {
   8087   return vreinterpretq_u64_s32(a);
   8088 }
   8089 
   8090 // CHECK-LABEL: test_vreinterpretq_u64_s64
   8091 uint64x2_t test_vreinterpretq_u64_s64(int64x2_t a) {
   8092   return vreinterpretq_u64_s64(a);
   8093 }
   8094 
   8095 // CHECK-LABEL: test_vreinterpretq_u64_u8
   8096 uint64x2_t test_vreinterpretq_u64_u8(uint8x16_t a) {
   8097   return vreinterpretq_u64_u8(a);
   8098 }
   8099 
   8100 // CHECK-LABEL: test_vreinterpretq_u64_u16
   8101 uint64x2_t test_vreinterpretq_u64_u16(uint16x8_t a) {
   8102   return vreinterpretq_u64_u16(a);
   8103 }
   8104 
   8105 // CHECK-LABEL: test_vreinterpretq_u64_u32
   8106 uint64x2_t test_vreinterpretq_u64_u32(uint32x4_t a) {
   8107   return vreinterpretq_u64_u32(a);
   8108 }
   8109 
   8110 // CHECK-LABEL: test_vreinterpretq_u64_f16
   8111 uint64x2_t test_vreinterpretq_u64_f16(float16x8_t a) {
   8112   return vreinterpretq_u64_f16(a);
   8113 }
   8114 
   8115 // CHECK-LABEL: test_vreinterpretq_u64_f32
   8116 uint64x2_t test_vreinterpretq_u64_f32(float32x4_t a) {
   8117   return vreinterpretq_u64_f32(a);
   8118 }
   8119 
   8120 // CHECK-LABEL: test_vreinterpretq_u64_p8
   8121 uint64x2_t test_vreinterpretq_u64_p8(poly8x16_t a) {
   8122   return vreinterpretq_u64_p8(a);
   8123 }
   8124 
   8125 // CHECK-LABEL: test_vreinterpretq_u64_p16
   8126 uint64x2_t test_vreinterpretq_u64_p16(poly16x8_t a) {
   8127   return vreinterpretq_u64_p16(a);
   8128 }
   8129 
   8130 // CHECK-LABEL: test_vreinterpretq_f16_s8
   8131 float16x8_t test_vreinterpretq_f16_s8(int8x16_t a) {
   8132   return vreinterpretq_f16_s8(a);
   8133 }
   8134 
   8135 // CHECK-LABEL: test_vreinterpretq_f16_s16
   8136 float16x8_t test_vreinterpretq_f16_s16(int16x8_t a) {
   8137   return vreinterpretq_f16_s16(a);
   8138 }
   8139 
   8140 // CHECK-LABEL: test_vreinterpretq_f16_s32
   8141 float16x8_t test_vreinterpretq_f16_s32(int32x4_t a) {
   8142   return vreinterpretq_f16_s32(a);
   8143 }
   8144 
   8145 // CHECK-LABEL: test_vreinterpretq_f16_s64
   8146 float16x8_t test_vreinterpretq_f16_s64(int64x2_t a) {
   8147   return vreinterpretq_f16_s64(a);
   8148 }
   8149 
   8150 // CHECK-LABEL: test_vreinterpretq_f16_u8
   8151 float16x8_t test_vreinterpretq_f16_u8(uint8x16_t a) {
   8152   return vreinterpretq_f16_u8(a);
   8153 }
   8154 
   8155 // CHECK-LABEL: test_vreinterpretq_f16_u16
   8156 float16x8_t test_vreinterpretq_f16_u16(uint16x8_t a) {
   8157   return vreinterpretq_f16_u16(a);
   8158 }
   8159 
   8160 // CHECK-LABEL: test_vreinterpretq_f16_u32
   8161 float16x8_t test_vreinterpretq_f16_u32(uint32x4_t a) {
   8162   return vreinterpretq_f16_u32(a);
   8163 }
   8164 
   8165 // CHECK-LABEL: test_vreinterpretq_f16_u64
   8166 float16x8_t test_vreinterpretq_f16_u64(uint64x2_t a) {
   8167   return vreinterpretq_f16_u64(a);
   8168 }
   8169 
   8170 // CHECK-LABEL: test_vreinterpretq_f16_f32
   8171 float16x8_t test_vreinterpretq_f16_f32(float32x4_t a) {
   8172   return vreinterpretq_f16_f32(a);
   8173 }
   8174 
   8175 // CHECK-LABEL: test_vreinterpretq_f16_p8
   8176 float16x8_t test_vreinterpretq_f16_p8(poly8x16_t a) {
   8177   return vreinterpretq_f16_p8(a);
   8178 }
   8179 
   8180 // CHECK-LABEL: test_vreinterpretq_f16_p16
   8181 float16x8_t test_vreinterpretq_f16_p16(poly16x8_t a) {
   8182   return vreinterpretq_f16_p16(a);
   8183 }
   8184 
   8185 // CHECK-LABEL: test_vreinterpretq_f32_s8
   8186 float32x4_t test_vreinterpretq_f32_s8(int8x16_t a) {
   8187   return vreinterpretq_f32_s8(a);
   8188 }
   8189 
   8190 // CHECK-LABEL: test_vreinterpretq_f32_s16
   8191 float32x4_t test_vreinterpretq_f32_s16(int16x8_t a) {
   8192   return vreinterpretq_f32_s16(a);
   8193 }
   8194 
   8195 // CHECK-LABEL: test_vreinterpretq_f32_s32
   8196 float32x4_t test_vreinterpretq_f32_s32(int32x4_t a) {
   8197   return vreinterpretq_f32_s32(a);
   8198 }
   8199 
   8200 // CHECK-LABEL: test_vreinterpretq_f32_s64
   8201 float32x4_t test_vreinterpretq_f32_s64(int64x2_t a) {
   8202   return vreinterpretq_f32_s64(a);
   8203 }
   8204 
   8205 // CHECK-LABEL: test_vreinterpretq_f32_u8
   8206 float32x4_t test_vreinterpretq_f32_u8(uint8x16_t a) {
   8207   return vreinterpretq_f32_u8(a);
   8208 }
   8209 
   8210 // CHECK-LABEL: test_vreinterpretq_f32_u16
   8211 float32x4_t test_vreinterpretq_f32_u16(uint16x8_t a) {
   8212   return vreinterpretq_f32_u16(a);
   8213 }
   8214 
   8215 // CHECK-LABEL: test_vreinterpretq_f32_u32
   8216 float32x4_t test_vreinterpretq_f32_u32(uint32x4_t a) {
   8217   return vreinterpretq_f32_u32(a);
   8218 }
   8219 
   8220 // CHECK-LABEL: test_vreinterpretq_f32_u64
   8221 float32x4_t test_vreinterpretq_f32_u64(uint64x2_t a) {
   8222   return vreinterpretq_f32_u64(a);
   8223 }
   8224 
   8225 // CHECK-LABEL: test_vreinterpretq_f32_f16
   8226 float32x4_t test_vreinterpretq_f32_f16(float16x8_t a) {
   8227   return vreinterpretq_f32_f16(a);
   8228 }
   8229 
   8230 // CHECK-LABEL: test_vreinterpretq_f32_p8
   8231 float32x4_t test_vreinterpretq_f32_p8(poly8x16_t a) {
   8232   return vreinterpretq_f32_p8(a);
   8233 }
   8234 
   8235 // CHECK-LABEL: test_vreinterpretq_f32_p16
   8236 float32x4_t test_vreinterpretq_f32_p16(poly16x8_t a) {
   8237   return vreinterpretq_f32_p16(a);
   8238 }
   8239 
   8240 // CHECK-LABEL: test_vreinterpretq_p8_s8
   8241 poly8x16_t test_vreinterpretq_p8_s8(int8x16_t a) {
   8242   return vreinterpretq_p8_s8(a);
   8243 }
   8244 
   8245 // CHECK-LABEL: test_vreinterpretq_p8_s16
   8246 poly8x16_t test_vreinterpretq_p8_s16(int16x8_t a) {
   8247   return vreinterpretq_p8_s16(a);
   8248 }
   8249 
   8250 // CHECK-LABEL: test_vreinterpretq_p8_s32
   8251 poly8x16_t test_vreinterpretq_p8_s32(int32x4_t a) {
   8252   return vreinterpretq_p8_s32(a);
   8253 }
   8254 
   8255 // CHECK-LABEL: test_vreinterpretq_p8_s64
   8256 poly8x16_t test_vreinterpretq_p8_s64(int64x2_t a) {
   8257   return vreinterpretq_p8_s64(a);
   8258 }
   8259 
   8260 // CHECK-LABEL: test_vreinterpretq_p8_u8
   8261 poly8x16_t test_vreinterpretq_p8_u8(uint8x16_t a) {
   8262   return vreinterpretq_p8_u8(a);
   8263 }
   8264 
   8265 // CHECK-LABEL: test_vreinterpretq_p8_u16
   8266 poly8x16_t test_vreinterpretq_p8_u16(uint16x8_t a) {
   8267   return vreinterpretq_p8_u16(a);
   8268 }
   8269 
   8270 // CHECK-LABEL: test_vreinterpretq_p8_u32
   8271 poly8x16_t test_vreinterpretq_p8_u32(uint32x4_t a) {
   8272   return vreinterpretq_p8_u32(a);
   8273 }
   8274 
   8275 // CHECK-LABEL: test_vreinterpretq_p8_u64
   8276 poly8x16_t test_vreinterpretq_p8_u64(uint64x2_t a) {
   8277   return vreinterpretq_p8_u64(a);
   8278 }
   8279 
   8280 // CHECK-LABEL: test_vreinterpretq_p8_f16
   8281 poly8x16_t test_vreinterpretq_p8_f16(float16x8_t a) {
   8282   return vreinterpretq_p8_f16(a);
   8283 }
   8284 
   8285 // CHECK-LABEL: test_vreinterpretq_p8_f32
   8286 poly8x16_t test_vreinterpretq_p8_f32(float32x4_t a) {
   8287   return vreinterpretq_p8_f32(a);
   8288 }
   8289 
   8290 // CHECK-LABEL: test_vreinterpretq_p8_p16
   8291 poly8x16_t test_vreinterpretq_p8_p16(poly16x8_t a) {
   8292   return vreinterpretq_p8_p16(a);
   8293 }
   8294 
   8295 // CHECK-LABEL: test_vreinterpretq_p16_s8
   8296 poly16x8_t test_vreinterpretq_p16_s8(int8x16_t a) {
   8297   return vreinterpretq_p16_s8(a);
   8298 }
   8299 
   8300 // CHECK-LABEL: test_vreinterpretq_p16_s16
   8301 poly16x8_t test_vreinterpretq_p16_s16(int16x8_t a) {
   8302   return vreinterpretq_p16_s16(a);
   8303 }
   8304 
   8305 // CHECK-LABEL: test_vreinterpretq_p16_s32
   8306 poly16x8_t test_vreinterpretq_p16_s32(int32x4_t a) {
   8307   return vreinterpretq_p16_s32(a);
   8308 }
   8309 
   8310 // CHECK-LABEL: test_vreinterpretq_p16_s64
   8311 poly16x8_t test_vreinterpretq_p16_s64(int64x2_t a) {
   8312   return vreinterpretq_p16_s64(a);
   8313 }
   8314 
   8315 // CHECK-LABEL: test_vreinterpretq_p16_u8
   8316 poly16x8_t test_vreinterpretq_p16_u8(uint8x16_t a) {
   8317   return vreinterpretq_p16_u8(a);
   8318 }
   8319 
   8320 // CHECK-LABEL: test_vreinterpretq_p16_u16
   8321 poly16x8_t test_vreinterpretq_p16_u16(uint16x8_t a) {
   8322   return vreinterpretq_p16_u16(a);
   8323 }
   8324 
   8325 // CHECK-LABEL: test_vreinterpretq_p16_u32
   8326 poly16x8_t test_vreinterpretq_p16_u32(uint32x4_t a) {
   8327   return vreinterpretq_p16_u32(a);
   8328 }
   8329 
   8330 // CHECK-LABEL: test_vreinterpretq_p16_u64
   8331 poly16x8_t test_vreinterpretq_p16_u64(uint64x2_t a) {
   8332   return vreinterpretq_p16_u64(a);
   8333 }
   8334 
   8335 // CHECK-LABEL: test_vreinterpretq_p16_f16
   8336 poly16x8_t test_vreinterpretq_p16_f16(float16x8_t a) {
   8337   return vreinterpretq_p16_f16(a);
   8338 }
   8339 
   8340 // CHECK-LABEL: test_vreinterpretq_p16_f32
   8341 poly16x8_t test_vreinterpretq_p16_f32(float32x4_t a) {
   8342   return vreinterpretq_p16_f32(a);
   8343 }
   8344 
   8345 // CHECK-LABEL: test_vreinterpretq_p16_p8
   8346 poly16x8_t test_vreinterpretq_p16_p8(poly8x16_t a) {
   8347   return vreinterpretq_p16_p8(a);
   8348 }
   8349 
   8350 
   8351 // CHECK-LABEL: test_vrev16_s8
   8352 // CHECK: vrev16.8 d{{[0-9]+}}, d{{[0-9]+}}
   8353 int8x8_t test_vrev16_s8(int8x8_t a) {
   8354   return vrev16_s8(a);
   8355 }
   8356 
   8357 // CHECK-LABEL: test_vrev16_u8
   8358 // CHECK: vrev16.8 d{{[0-9]+}}, d{{[0-9]+}}
   8359 uint8x8_t test_vrev16_u8(uint8x8_t a) {
   8360   return vrev16_u8(a);
   8361 }
   8362 
   8363 // CHECK-LABEL: test_vrev16_p8
   8364 // CHECK: vrev16.8 d{{[0-9]+}}, d{{[0-9]+}}
   8365 poly8x8_t test_vrev16_p8(poly8x8_t a) {
   8366   return vrev16_p8(a);
   8367 }
   8368 
   8369 // CHECK-LABEL: test_vrev16q_s8
   8370 // CHECK: vrev16.8 q{{[0-9]+}}, q{{[0-9]+}}
   8371 int8x16_t test_vrev16q_s8(int8x16_t a) {
   8372   return vrev16q_s8(a);
   8373 }
   8374 
   8375 // CHECK-LABEL: test_vrev16q_u8
   8376 // CHECK: vrev16.8 q{{[0-9]+}}, q{{[0-9]+}}
   8377 uint8x16_t test_vrev16q_u8(uint8x16_t a) {
   8378   return vrev16q_u8(a);
   8379 }
   8380 
   8381 // CHECK-LABEL: test_vrev16q_p8
   8382 // CHECK: vrev16.8 q{{[0-9]+}}, q{{[0-9]+}}
   8383 poly8x16_t test_vrev16q_p8(poly8x16_t a) {
   8384   return vrev16q_p8(a);
   8385 }
   8386 
   8387 
   8388 // CHECK-LABEL: test_vrev32_s8
   8389 // CHECK: vrev32.8 d{{[0-9]+}}, d{{[0-9]+}}
   8390 int8x8_t test_vrev32_s8(int8x8_t a) {
   8391   return vrev32_s8(a);
   8392 }
   8393 
   8394 // CHECK-LABEL: test_vrev32_s16
   8395 // CHECK: vrev32.16 d{{[0-9]+}}, d{{[0-9]+}}
   8396 int16x4_t test_vrev32_s16(int16x4_t a) {
   8397   return vrev32_s16(a);
   8398 }
   8399 
   8400 // CHECK-LABEL: test_vrev32_u8
   8401 // CHECK: vrev32.8 d{{[0-9]+}}, d{{[0-9]+}}
   8402 uint8x8_t test_vrev32_u8(uint8x8_t a) {
   8403   return vrev32_u8(a);
   8404 }
   8405 
   8406 // CHECK-LABEL: test_vrev32_u16
   8407 // CHECK: vrev32.16 d{{[0-9]+}}, d{{[0-9]+}}
   8408 uint16x4_t test_vrev32_u16(uint16x4_t a) {
   8409   return vrev32_u16(a);
   8410 }
   8411 
   8412 // CHECK-LABEL: test_vrev32_p8
   8413 // CHECK: vrev32.8 d{{[0-9]+}}, d{{[0-9]+}}
   8414 poly8x8_t test_vrev32_p8(poly8x8_t a) {
   8415   return vrev32_p8(a);
   8416 }
   8417 
   8418 // CHECK-LABEL: test_vrev32_p16
   8419 // CHECK: vrev32.16 d{{[0-9]+}}, d{{[0-9]+}}
   8420 poly16x4_t test_vrev32_p16(poly16x4_t a) {
   8421   return vrev32_p16(a);
   8422 }
   8423 
   8424 // CHECK-LABEL: test_vrev32q_s8
   8425 // CHECK: vrev32.8 q{{[0-9]+}}, q{{[0-9]+}}
   8426 int8x16_t test_vrev32q_s8(int8x16_t a) {
   8427   return vrev32q_s8(a);
   8428 }
   8429 
   8430 // CHECK-LABEL: test_vrev32q_s16
   8431 // CHECK: vrev32.16 q{{[0-9]+}}, q{{[0-9]+}}
   8432 int16x8_t test_vrev32q_s16(int16x8_t a) {
   8433   return vrev32q_s16(a);
   8434 }
   8435 
   8436 // CHECK-LABEL: test_vrev32q_u8
   8437 // CHECK: vrev32.8 q{{[0-9]+}}, q{{[0-9]+}}
   8438 uint8x16_t test_vrev32q_u8(uint8x16_t a) {
   8439   return vrev32q_u8(a);
   8440 }
   8441 
   8442 // CHECK-LABEL: test_vrev32q_u16
   8443 // CHECK: vrev32.16 q{{[0-9]+}}, q{{[0-9]+}}
   8444 uint16x8_t test_vrev32q_u16(uint16x8_t a) {
   8445   return vrev32q_u16(a);
   8446 }
   8447 
   8448 // CHECK-LABEL: test_vrev32q_p8
   8449 // CHECK: vrev32.8 q{{[0-9]+}}, q{{[0-9]+}}
   8450 poly8x16_t test_vrev32q_p8(poly8x16_t a) {
   8451   return vrev32q_p8(a);
   8452 }
   8453 
   8454 // CHECK-LABEL: test_vrev32q_p16
   8455 // CHECK: vrev32.16 q{{[0-9]+}}, q{{[0-9]+}}
   8456 poly16x8_t test_vrev32q_p16(poly16x8_t a) {
   8457   return vrev32q_p16(a);
   8458 }
   8459 
   8460 
   8461 // CHECK-LABEL: test_vrev64_s8
   8462 // CHECK: vrev64.8 d{{[0-9]+}}, d{{[0-9]+}}
   8463 int8x8_t test_vrev64_s8(int8x8_t a) {
   8464   return vrev64_s8(a);
   8465 }
   8466 
   8467 // CHECK-LABEL: test_vrev64_s16
   8468 // CHECK: vrev64.16 d{{[0-9]+}}, d{{[0-9]+}}
   8469 int16x4_t test_vrev64_s16(int16x4_t a) {
   8470   return vrev64_s16(a);
   8471 }
   8472 
   8473 // CHECK-LABEL: test_vrev64_s32
   8474 // CHECK: vrev64.32 d{{[0-9]+}}, d{{[0-9]+}}
   8475 int32x2_t test_vrev64_s32(int32x2_t a) {
   8476   return vrev64_s32(a);
   8477 }
   8478 
   8479 // CHECK-LABEL: test_vrev64_u8
   8480 // CHECK: vrev64.8 d{{[0-9]+}}, d{{[0-9]+}}
   8481 uint8x8_t test_vrev64_u8(uint8x8_t a) {
   8482   return vrev64_u8(a);
   8483 }
   8484 
   8485 // CHECK-LABEL: test_vrev64_u16
   8486 // CHECK: vrev64.16 d{{[0-9]+}}, d{{[0-9]+}}
   8487 uint16x4_t test_vrev64_u16(uint16x4_t a) {
   8488   return vrev64_u16(a);
   8489 }
   8490 
   8491 // CHECK-LABEL: test_vrev64_u32
   8492 // CHECK: vrev64.32 d{{[0-9]+}}, d{{[0-9]+}}
   8493 uint32x2_t test_vrev64_u32(uint32x2_t a) {
   8494   return vrev64_u32(a);
   8495 }
   8496 
   8497 // CHECK-LABEL: test_vrev64_p8
   8498 // CHECK: vrev64.8 d{{[0-9]+}}, d{{[0-9]+}}
   8499 poly8x8_t test_vrev64_p8(poly8x8_t a) {
   8500   return vrev64_p8(a);
   8501 }
   8502 
   8503 // CHECK-LABEL: test_vrev64_p16
   8504 // CHECK: vrev64.16 d{{[0-9]+}}, d{{[0-9]+}}
   8505 poly16x4_t test_vrev64_p16(poly16x4_t a) {
   8506   return vrev64_p16(a);
   8507 }
   8508 
   8509 // CHECK-LABEL: test_vrev64_f32
   8510 // CHECK: vrev64.32 d{{[0-9]+}}, d{{[0-9]+}}
   8511 float32x2_t test_vrev64_f32(float32x2_t a) {
   8512   return vrev64_f32(a);
   8513 }
   8514 
   8515 // CHECK-LABEL: test_vrev64q_s8
   8516 // CHECK: vrev64.8 q{{[0-9]+}}, q{{[0-9]+}}
   8517 int8x16_t test_vrev64q_s8(int8x16_t a) {
   8518   return vrev64q_s8(a);
   8519 }
   8520 
   8521 // CHECK-LABEL: test_vrev64q_s16
   8522 // CHECK: vrev64.16 q{{[0-9]+}}, q{{[0-9]+}}
   8523 int16x8_t test_vrev64q_s16(int16x8_t a) {
   8524   return vrev64q_s16(a);
   8525 }
   8526 
   8527 // CHECK-LABEL: test_vrev64q_s32
   8528 // CHECK: vrev64.32 q{{[0-9]+}}, q{{[0-9]+}}
   8529 int32x4_t test_vrev64q_s32(int32x4_t a) {
   8530   return vrev64q_s32(a);
   8531 }
   8532 
   8533 // CHECK-LABEL: test_vrev64q_u8
   8534 // CHECK: vrev64.8 q{{[0-9]+}}, q{{[0-9]+}}
   8535 uint8x16_t test_vrev64q_u8(uint8x16_t a) {
   8536   return vrev64q_u8(a);
   8537 }
   8538 
   8539 // CHECK-LABEL: test_vrev64q_u16
   8540 // CHECK: vrev64.16 q{{[0-9]+}}, q{{[0-9]+}}
   8541 uint16x8_t test_vrev64q_u16(uint16x8_t a) {
   8542   return vrev64q_u16(a);
   8543 }
   8544 
   8545 // CHECK-LABEL: test_vrev64q_u32
   8546 // CHECK: vrev64.32 q{{[0-9]+}}, q{{[0-9]+}}
   8547 uint32x4_t test_vrev64q_u32(uint32x4_t a) {
   8548   return vrev64q_u32(a);
   8549 }
   8550 
   8551 // CHECK-LABEL: test_vrev64q_p8
   8552 // CHECK: vrev64.8 q{{[0-9]+}}, q{{[0-9]+}}
   8553 poly8x16_t test_vrev64q_p8(poly8x16_t a) {
   8554   return vrev64q_p8(a);
   8555 }
   8556 
   8557 // CHECK-LABEL: test_vrev64q_p16
   8558 // CHECK: vrev64.16 q{{[0-9]+}}, q{{[0-9]+}}
   8559 poly16x8_t test_vrev64q_p16(poly16x8_t a) {
   8560   return vrev64q_p16(a);
   8561 }
   8562 
   8563 // CHECK-LABEL: test_vrev64q_f32
   8564 // CHECK: vrev64.32 q{{[0-9]+}}, q{{[0-9]+}}
   8565 float32x4_t test_vrev64q_f32(float32x4_t a) {
   8566   return vrev64q_f32(a);
   8567 }
   8568 
   8569 
   8570 // CHECK-LABEL: test_vrhadd_s8
   8571 // CHECK: vrhadd.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8572 int8x8_t test_vrhadd_s8(int8x8_t a, int8x8_t b) {
   8573   return vrhadd_s8(a, b);
   8574 }
   8575 
   8576 // CHECK-LABEL: test_vrhadd_s16
   8577 // CHECK: vrhadd.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8578 int16x4_t test_vrhadd_s16(int16x4_t a, int16x4_t b) {
   8579   return vrhadd_s16(a, b);
   8580 }
   8581 
   8582 // CHECK-LABEL: test_vrhadd_s32
   8583 // CHECK: vrhadd.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8584 int32x2_t test_vrhadd_s32(int32x2_t a, int32x2_t b) {
   8585   return vrhadd_s32(a, b);
   8586 }
   8587 
   8588 // CHECK-LABEL: test_vrhadd_u8
   8589 // CHECK: vrhadd.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8590 uint8x8_t test_vrhadd_u8(uint8x8_t a, uint8x8_t b) {
   8591   return vrhadd_u8(a, b);
   8592 }
   8593 
   8594 // CHECK-LABEL: test_vrhadd_u16
   8595 // CHECK: vrhadd.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8596 uint16x4_t test_vrhadd_u16(uint16x4_t a, uint16x4_t b) {
   8597   return vrhadd_u16(a, b);
   8598 }
   8599 
   8600 // CHECK-LABEL: test_vrhadd_u32
   8601 // CHECK: vrhadd.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8602 uint32x2_t test_vrhadd_u32(uint32x2_t a, uint32x2_t b) {
   8603   return vrhadd_u32(a, b);
   8604 }
   8605 
   8606 // CHECK-LABEL: test_vrhaddq_s8
   8607 // CHECK: vrhadd.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8608 int8x16_t test_vrhaddq_s8(int8x16_t a, int8x16_t b) {
   8609   return vrhaddq_s8(a, b);
   8610 }
   8611 
   8612 // CHECK-LABEL: test_vrhaddq_s16
   8613 // CHECK: vrhadd.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8614 int16x8_t test_vrhaddq_s16(int16x8_t a, int16x8_t b) {
   8615   return vrhaddq_s16(a, b);
   8616 }
   8617 
   8618 // CHECK-LABEL: test_vrhaddq_s32
   8619 // CHECK: vrhadd.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8620 int32x4_t test_vrhaddq_s32(int32x4_t a, int32x4_t b) {
   8621   return vrhaddq_s32(a, b);
   8622 }
   8623 
   8624 // CHECK-LABEL: test_vrhaddq_u8
   8625 // CHECK: vrhadd.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8626 uint8x16_t test_vrhaddq_u8(uint8x16_t a, uint8x16_t b) {
   8627   return vrhaddq_u8(a, b);
   8628 }
   8629 
   8630 // CHECK-LABEL: test_vrhaddq_u16
   8631 // CHECK: vrhadd.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8632 uint16x8_t test_vrhaddq_u16(uint16x8_t a, uint16x8_t b) {
   8633   return vrhaddq_u16(a, b);
   8634 }
   8635 
   8636 // CHECK-LABEL: test_vrhaddq_u32
   8637 // CHECK: vrhadd.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8638 uint32x4_t test_vrhaddq_u32(uint32x4_t a, uint32x4_t b) {
   8639   return vrhaddq_u32(a, b);
   8640 }
   8641 
   8642 
   8643 // CHECK-LABEL: test_vrshl_s8
   8644 // CHECK: vrshl.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8645 int8x8_t test_vrshl_s8(int8x8_t a, int8x8_t b) {
   8646   return vrshl_s8(a, b);
   8647 }
   8648 
   8649 // CHECK-LABEL: test_vrshl_s16
   8650 // CHECK: vrshl.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8651 int16x4_t test_vrshl_s16(int16x4_t a, int16x4_t b) {
   8652   return vrshl_s16(a, b);
   8653 }
   8654 
   8655 // CHECK-LABEL: test_vrshl_s32
   8656 // CHECK: vrshl.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8657 int32x2_t test_vrshl_s32(int32x2_t a, int32x2_t b) {
   8658   return vrshl_s32(a, b);
   8659 }
   8660 
   8661 // CHECK-LABEL: test_vrshl_s64
   8662 // CHECK: vrshl.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8663 int64x1_t test_vrshl_s64(int64x1_t a, int64x1_t b) {
   8664   return vrshl_s64(a, b);
   8665 }
   8666 
   8667 // CHECK-LABEL: test_vrshl_u8
   8668 // CHECK: vrshl.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8669 uint8x8_t test_vrshl_u8(uint8x8_t a, int8x8_t b) {
   8670   return vrshl_u8(a, b);
   8671 }
   8672 
   8673 // CHECK-LABEL: test_vrshl_u16
   8674 // CHECK: vrshl.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8675 uint16x4_t test_vrshl_u16(uint16x4_t a, int16x4_t b) {
   8676   return vrshl_u16(a, b);
   8677 }
   8678 
   8679 // CHECK-LABEL: test_vrshl_u32
   8680 // CHECK: vrshl.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8681 uint32x2_t test_vrshl_u32(uint32x2_t a, int32x2_t b) {
   8682   return vrshl_u32(a, b);
   8683 }
   8684 
   8685 // CHECK-LABEL: test_vrshl_u64
   8686 // CHECK: vrshl.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8687 uint64x1_t test_vrshl_u64(uint64x1_t a, int64x1_t b) {
   8688   return vrshl_u64(a, b);
   8689 }
   8690 
   8691 // CHECK-LABEL: test_vrshlq_s8
   8692 // CHECK: vrshl.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8693 int8x16_t test_vrshlq_s8(int8x16_t a, int8x16_t b) {
   8694   return vrshlq_s8(a, b);
   8695 }
   8696 
   8697 // CHECK-LABEL: test_vrshlq_s16
   8698 // CHECK: vrshl.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8699 int16x8_t test_vrshlq_s16(int16x8_t a, int16x8_t b) {
   8700   return vrshlq_s16(a, b);
   8701 }
   8702 
   8703 // CHECK-LABEL: test_vrshlq_s32
   8704 // CHECK: vrshl.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8705 int32x4_t test_vrshlq_s32(int32x4_t a, int32x4_t b) {
   8706   return vrshlq_s32(a, b);
   8707 }
   8708 
   8709 // CHECK-LABEL: test_vrshlq_s64
   8710 // CHECK: vrshl.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8711 int64x2_t test_vrshlq_s64(int64x2_t a, int64x2_t b) {
   8712   return vrshlq_s64(a, b);
   8713 }
   8714 
   8715 // CHECK-LABEL: test_vrshlq_u8
   8716 // CHECK: vrshl.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8717 uint8x16_t test_vrshlq_u8(uint8x16_t a, int8x16_t b) {
   8718   return vrshlq_u8(a, b);
   8719 }
   8720 
   8721 // CHECK-LABEL: test_vrshlq_u16
   8722 // CHECK: vrshl.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8723 uint16x8_t test_vrshlq_u16(uint16x8_t a, int16x8_t b) {
   8724   return vrshlq_u16(a, b);
   8725 }
   8726 
   8727 // CHECK-LABEL: test_vrshlq_u32
   8728 // CHECK: vrshl.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8729 uint32x4_t test_vrshlq_u32(uint32x4_t a, int32x4_t b) {
   8730   return vrshlq_u32(a, b);
   8731 }
   8732 
   8733 // CHECK-LABEL: test_vrshlq_u64
   8734 // CHECK: vrshl.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8735 uint64x2_t test_vrshlq_u64(uint64x2_t a, int64x2_t b) {
   8736   return vrshlq_u64(a, b);
   8737 }
   8738 
   8739 
   8740 // CHECK-LABEL: test_vrshrn_n_s16
   8741 // CHECK: vrshrn.i16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8742 int8x8_t test_vrshrn_n_s16(int16x8_t a) {
   8743   return vrshrn_n_s16(a, 1);
   8744 }
   8745 
   8746 // CHECK-LABEL: test_vrshrn_n_s32
   8747 // CHECK: vrshrn.i32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8748 int16x4_t test_vrshrn_n_s32(int32x4_t a) {
   8749   return vrshrn_n_s32(a, 1);
   8750 }
   8751 
   8752 // CHECK-LABEL: test_vrshrn_n_s64
   8753 // CHECK: vrshrn.i64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8754 int32x2_t test_vrshrn_n_s64(int64x2_t a) {
   8755   return vrshrn_n_s64(a, 1);
   8756 }
   8757 
   8758 // CHECK-LABEL: test_vrshrn_n_u16
   8759 // CHECK: vrshrn.i16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8760 uint8x8_t test_vrshrn_n_u16(uint16x8_t a) {
   8761   return vrshrn_n_u16(a, 1);
   8762 }
   8763 
   8764 // CHECK-LABEL: test_vrshrn_n_u32
   8765 // CHECK: vrshrn.i32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8766 uint16x4_t test_vrshrn_n_u32(uint32x4_t a) {
   8767   return vrshrn_n_u32(a, 1);
   8768 }
   8769 
   8770 // CHECK-LABEL: test_vrshrn_n_u64
   8771 // CHECK: vrshrn.i64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8772 uint32x2_t test_vrshrn_n_u64(uint64x2_t a) {
   8773   return vrshrn_n_u64(a, 1);
   8774 }
   8775 
   8776 
   8777 // CHECK-LABEL: test_vrshr_n_s8
   8778 // CHECK: vrshr.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8779 int8x8_t test_vrshr_n_s8(int8x8_t a) {
   8780   return vrshr_n_s8(a, 1);
   8781 }
   8782 
   8783 // CHECK-LABEL: test_vrshr_n_s16
   8784 // CHECK: vrshr.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8785 int16x4_t test_vrshr_n_s16(int16x4_t a) {
   8786   return vrshr_n_s16(a, 1);
   8787 }
   8788 
   8789 // CHECK-LABEL: test_vrshr_n_s32
   8790 // CHECK: vrshr.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8791 int32x2_t test_vrshr_n_s32(int32x2_t a) {
   8792   return vrshr_n_s32(a, 1);
   8793 }
   8794 
   8795 // CHECK-LABEL: test_vrshr_n_s64
   8796 // CHECK: vrshr.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8797 int64x1_t test_vrshr_n_s64(int64x1_t a) {
   8798   return vrshr_n_s64(a, 1);
   8799 }
   8800 
   8801 // CHECK-LABEL: test_vrshr_n_u8
   8802 // CHECK: vrshr.u8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8803 uint8x8_t test_vrshr_n_u8(uint8x8_t a) {
   8804   return vrshr_n_u8(a, 1);
   8805 }
   8806 
   8807 // CHECK-LABEL: test_vrshr_n_u16
   8808 // CHECK: vrshr.u16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8809 uint16x4_t test_vrshr_n_u16(uint16x4_t a) {
   8810   return vrshr_n_u16(a, 1);
   8811 }
   8812 
   8813 // CHECK-LABEL: test_vrshr_n_u32
   8814 // CHECK: vrshr.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8815 uint32x2_t test_vrshr_n_u32(uint32x2_t a) {
   8816   return vrshr_n_u32(a, 1);
   8817 }
   8818 
   8819 // CHECK-LABEL: test_vrshr_n_u64
   8820 // CHECK: vrshr.u64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8821 uint64x1_t test_vrshr_n_u64(uint64x1_t a) {
   8822   return vrshr_n_u64(a, 1);
   8823 }
   8824 
   8825 // CHECK-LABEL: test_vrshrq_n_s8
   8826 // CHECK: vrshr.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8827 int8x16_t test_vrshrq_n_s8(int8x16_t a) {
   8828   return vrshrq_n_s8(a, 1);
   8829 }
   8830 
   8831 // CHECK-LABEL: test_vrshrq_n_s16
   8832 // CHECK: vrshr.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8833 int16x8_t test_vrshrq_n_s16(int16x8_t a) {
   8834   return vrshrq_n_s16(a, 1);
   8835 }
   8836 
   8837 // CHECK-LABEL: test_vrshrq_n_s32
   8838 // CHECK: vrshr.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8839 int32x4_t test_vrshrq_n_s32(int32x4_t a) {
   8840   return vrshrq_n_s32(a, 1);
   8841 }
   8842 
   8843 // CHECK-LABEL: test_vrshrq_n_s64
   8844 // CHECK: vrshr.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8845 int64x2_t test_vrshrq_n_s64(int64x2_t a) {
   8846   return vrshrq_n_s64(a, 1);
   8847 }
   8848 
   8849 // CHECK-LABEL: test_vrshrq_n_u8
   8850 // CHECK: vrshr.u8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8851 uint8x16_t test_vrshrq_n_u8(uint8x16_t a) {
   8852   return vrshrq_n_u8(a, 1);
   8853 }
   8854 
   8855 // CHECK-LABEL: test_vrshrq_n_u16
   8856 // CHECK: vrshr.u16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8857 uint16x8_t test_vrshrq_n_u16(uint16x8_t a) {
   8858   return vrshrq_n_u16(a, 1);
   8859 }
   8860 
   8861 // CHECK-LABEL: test_vrshrq_n_u32
   8862 // CHECK: vrshr.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8863 uint32x4_t test_vrshrq_n_u32(uint32x4_t a) {
   8864   return vrshrq_n_u32(a, 1);
   8865 }
   8866 
   8867 // CHECK-LABEL: test_vrshrq_n_u64
   8868 // CHECK: vrshr.u64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8869 uint64x2_t test_vrshrq_n_u64(uint64x2_t a) {
   8870   return vrshrq_n_u64(a, 1);
   8871 }
   8872 
   8873 
   8874 // CHECK-LABEL: test_vrsqrte_f32
   8875 // CHECK: vrsqrte.f32 d{{[0-9]+}}, d{{[0-9]+}}
   8876 float32x2_t test_vrsqrte_f32(float32x2_t a) {
   8877   return vrsqrte_f32(a);
   8878 }
   8879 
   8880 // CHECK-LABEL: test_vrsqrte_u32
   8881 // CHECK: vrsqrte.u32 d{{[0-9]+}}, d{{[0-9]+}}
   8882 uint32x2_t test_vrsqrte_u32(uint32x2_t a) {
   8883   return vrsqrte_u32(a);
   8884 }
   8885 
   8886 // CHECK-LABEL: test_vrsqrteq_f32
   8887 // CHECK: vrsqrte.f32 q{{[0-9]+}}, q{{[0-9]+}}
   8888 float32x4_t test_vrsqrteq_f32(float32x4_t a) {
   8889   return vrsqrteq_f32(a);
   8890 }
   8891 
   8892 // CHECK-LABEL: test_vrsqrteq_u32
   8893 // CHECK: vrsqrte.u32 q{{[0-9]+}}, q{{[0-9]+}}
   8894 uint32x4_t test_vrsqrteq_u32(uint32x4_t a) {
   8895   return vrsqrteq_u32(a);
   8896 }
   8897 
   8898 
   8899 // CHECK-LABEL: test_vrsqrts_f32
   8900 // CHECK: vrsqrts.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   8901 float32x2_t test_vrsqrts_f32(float32x2_t a, float32x2_t b) {
   8902   return vrsqrts_f32(a, b);
   8903 }
   8904 
   8905 // CHECK-LABEL: test_vrsqrtsq_f32
   8906 // CHECK: vrsqrts.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   8907 float32x4_t test_vrsqrtsq_f32(float32x4_t a, float32x4_t b) {
   8908   return vrsqrtsq_f32(a, b);
   8909 }
   8910 
   8911 
   8912 // CHECK-LABEL: test_vrsra_n_s8
   8913 // CHECK: vrsra.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8914 int8x8_t test_vrsra_n_s8(int8x8_t a, int8x8_t b) {
   8915   return vrsra_n_s8(a, b, 1);
   8916 }
   8917 
   8918 // CHECK-LABEL: test_vrsra_n_s16
   8919 // CHECK: vrsra.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8920 int16x4_t test_vrsra_n_s16(int16x4_t a, int16x4_t b) {
   8921   return vrsra_n_s16(a, b, 1);
   8922 }
   8923 
   8924 // CHECK-LABEL: test_vrsra_n_s32
   8925 // CHECK: vrsra.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8926 int32x2_t test_vrsra_n_s32(int32x2_t a, int32x2_t b) {
   8927   return vrsra_n_s32(a, b, 1);
   8928 }
   8929 
   8930 // CHECK-LABEL: test_vrsra_n_s64
   8931 // CHECK: vrsra.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8932 int64x1_t test_vrsra_n_s64(int64x1_t a, int64x1_t b) {
   8933   return vrsra_n_s64(a, b, 1);
   8934 }
   8935 
   8936 // CHECK-LABEL: test_vrsra_n_u8
   8937 // CHECK: vrsra.u8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8938 uint8x8_t test_vrsra_n_u8(uint8x8_t a, uint8x8_t b) {
   8939   return vrsra_n_u8(a, b, 1);
   8940 }
   8941 
   8942 // CHECK-LABEL: test_vrsra_n_u16
   8943 // CHECK: vrsra.u16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8944 uint16x4_t test_vrsra_n_u16(uint16x4_t a, uint16x4_t b) {
   8945   return vrsra_n_u16(a, b, 1);
   8946 }
   8947 
   8948 // CHECK-LABEL: test_vrsra_n_u32
   8949 // CHECK: vrsra.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8950 uint32x2_t test_vrsra_n_u32(uint32x2_t a, uint32x2_t b) {
   8951   return vrsra_n_u32(a, b, 1);
   8952 }
   8953 
   8954 // CHECK-LABEL: test_vrsra_n_u64
   8955 // CHECK: vrsra.u64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   8956 uint64x1_t test_vrsra_n_u64(uint64x1_t a, uint64x1_t b) {
   8957   return vrsra_n_u64(a, b, 1);
   8958 }
   8959 
   8960 // CHECK-LABEL: test_vrsraq_n_s8
   8961 // CHECK: vrsra.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8962 int8x16_t test_vrsraq_n_s8(int8x16_t a, int8x16_t b) {
   8963   return vrsraq_n_s8(a, b, 1);
   8964 }
   8965 
   8966 // CHECK-LABEL: test_vrsraq_n_s16
   8967 // CHECK: vrsra.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8968 int16x8_t test_vrsraq_n_s16(int16x8_t a, int16x8_t b) {
   8969   return vrsraq_n_s16(a, b, 1);
   8970 }
   8971 
   8972 // CHECK-LABEL: test_vrsraq_n_s32
   8973 // CHECK: vrsra.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8974 int32x4_t test_vrsraq_n_s32(int32x4_t a, int32x4_t b) {
   8975   return vrsraq_n_s32(a, b, 1);
   8976 }
   8977 
   8978 // CHECK-LABEL: test_vrsraq_n_s64
   8979 // CHECK: vrsra.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8980 int64x2_t test_vrsraq_n_s64(int64x2_t a, int64x2_t b) {
   8981   return vrsraq_n_s64(a, b, 1);
   8982 }
   8983 
   8984 // CHECK-LABEL: test_vrsraq_n_u8
   8985 // CHECK: vrsra.u8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8986 uint8x16_t test_vrsraq_n_u8(uint8x16_t a, uint8x16_t b) {
   8987   return vrsraq_n_u8(a, b, 1);
   8988 }
   8989 
   8990 // CHECK-LABEL: test_vrsraq_n_u16
   8991 // CHECK: vrsra.u16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8992 uint16x8_t test_vrsraq_n_u16(uint16x8_t a, uint16x8_t b) {
   8993   return vrsraq_n_u16(a, b, 1);
   8994 }
   8995 
   8996 // CHECK-LABEL: test_vrsraq_n_u32
   8997 // CHECK: vrsra.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   8998 uint32x4_t test_vrsraq_n_u32(uint32x4_t a, uint32x4_t b) {
   8999   return vrsraq_n_u32(a, b, 1);
   9000 }
   9001 
   9002 // CHECK-LABEL: test_vrsraq_n_u64
   9003 // CHECK: vrsra.u64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9004 uint64x2_t test_vrsraq_n_u64(uint64x2_t a, uint64x2_t b) {
   9005   return vrsraq_n_u64(a, b, 1);
   9006 }
   9007 
   9008 
   9009 // CHECK-LABEL: test_vrsubhn_s16
   9010 // CHECK: vrsubhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9011 int8x8_t test_vrsubhn_s16(int16x8_t a, int16x8_t b) {
   9012   return vrsubhn_s16(a, b);
   9013 }
   9014 
   9015 // CHECK-LABEL: test_vrsubhn_s32
   9016 // CHECK: vrsubhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9017 int16x4_t test_vrsubhn_s32(int32x4_t a, int32x4_t b) {
   9018   return vrsubhn_s32(a, b);
   9019 }
   9020 
   9021 // CHECK-LABEL: test_vrsubhn_s64
   9022 // CHECK: vrsubhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9023 int32x2_t test_vrsubhn_s64(int64x2_t a, int64x2_t b) {
   9024   return vrsubhn_s64(a, b);
   9025 }
   9026 
   9027 // CHECK-LABEL: test_vrsubhn_u16
   9028 // CHECK: vrsubhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9029 uint8x8_t test_vrsubhn_u16(uint16x8_t a, uint16x8_t b) {
   9030   return vrsubhn_u16(a, b);
   9031 }
   9032 
   9033 // CHECK-LABEL: test_vrsubhn_u32
   9034 // CHECK: vrsubhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9035 uint16x4_t test_vrsubhn_u32(uint32x4_t a, uint32x4_t b) {
   9036   return vrsubhn_u32(a, b);
   9037 }
   9038 
   9039 // CHECK-LABEL: test_vrsubhn_u64
   9040 // CHECK: vrsubhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9041 uint32x2_t test_vrsubhn_u64(uint64x2_t a, uint64x2_t b) {
   9042   return vrsubhn_u64(a, b);
   9043 }
   9044 
   9045 
   9046 // CHECK-LABEL: test_vset_lane_u8
   9047 // CHECK: vmov
   9048 uint8x8_t test_vset_lane_u8(uint8_t a, uint8x8_t b) {
   9049   return vset_lane_u8(a, b, 7);
   9050 }
   9051 
   9052 // CHECK-LABEL: test_vset_lane_u16
   9053 // CHECK: vmov
   9054 uint16x4_t test_vset_lane_u16(uint16_t a, uint16x4_t b) {
   9055   return vset_lane_u16(a, b, 3);
   9056 }
   9057 
   9058 // CHECK-LABEL: test_vset_lane_u32
   9059 // CHECK: vmov
   9060 uint32x2_t test_vset_lane_u32(uint32_t a, uint32x2_t b) {
   9061   return vset_lane_u32(a, b, 1);
   9062 }
   9063 
   9064 // CHECK-LABEL: test_vset_lane_s8
   9065 // CHECK: vmov
   9066 int8x8_t test_vset_lane_s8(int8_t a, int8x8_t b) {
   9067   return vset_lane_s8(a, b, 7);
   9068 }
   9069 
   9070 // CHECK-LABEL: test_vset_lane_s16
   9071 // CHECK: vmov
   9072 int16x4_t test_vset_lane_s16(int16_t a, int16x4_t b) {
   9073   return vset_lane_s16(a, b, 3);
   9074 }
   9075 
   9076 // CHECK-LABEL: test_vset_lane_s32
   9077 // CHECK: vmov
   9078 int32x2_t test_vset_lane_s32(int32_t a, int32x2_t b) {
   9079   return vset_lane_s32(a, b, 1);
   9080 }
   9081 
   9082 // CHECK-LABEL: test_vset_lane_p8
   9083 // CHECK: vmov
   9084 poly8x8_t test_vset_lane_p8(poly8_t a, poly8x8_t b) {
   9085   return vset_lane_p8(a, b, 7);
   9086 }
   9087 
   9088 // CHECK-LABEL: test_vset_lane_p16
   9089 // CHECK: vmov
   9090 poly16x4_t test_vset_lane_p16(poly16_t a, poly16x4_t b) {
   9091   return vset_lane_p16(a, b, 3);
   9092 }
   9093 
   9094 // CHECK-LABEL: test_vset_lane_f32
   9095 // CHECK: vmov
   9096 float32x2_t test_vset_lane_f32(float32_t a, float32x2_t b) {
   9097   return vset_lane_f32(a, b, 1);
   9098 }
   9099 
   9100 // CHECK-LABEL: test_vsetq_lane_u8
   9101 // CHECK: vmov
   9102 uint8x16_t test_vsetq_lane_u8(uint8_t a, uint8x16_t b) {
   9103   return vsetq_lane_u8(a, b, 15);
   9104 }
   9105 
   9106 // CHECK-LABEL: test_vsetq_lane_u16
   9107 // CHECK: vmov
   9108 uint16x8_t test_vsetq_lane_u16(uint16_t a, uint16x8_t b) {
   9109   return vsetq_lane_u16(a, b, 7);
   9110 }
   9111 
   9112 // CHECK-LABEL: test_vsetq_lane_u32
   9113 // CHECK: vmov
   9114 uint32x4_t test_vsetq_lane_u32(uint32_t a, uint32x4_t b) {
   9115   return vsetq_lane_u32(a, b, 3);
   9116 }
   9117 
   9118 // CHECK-LABEL: test_vsetq_lane_s8
   9119 // CHECK: vmov
   9120 int8x16_t test_vsetq_lane_s8(int8_t a, int8x16_t b) {
   9121   return vsetq_lane_s8(a, b, 15);
   9122 }
   9123 
   9124 // CHECK-LABEL: test_vsetq_lane_s16
   9125 // CHECK: vmov
   9126 int16x8_t test_vsetq_lane_s16(int16_t a, int16x8_t b) {
   9127   return vsetq_lane_s16(a, b, 7);
   9128 }
   9129 
   9130 // CHECK-LABEL: test_vsetq_lane_s32
   9131 // CHECK: vmov
   9132 int32x4_t test_vsetq_lane_s32(int32_t a, int32x4_t b) {
   9133   return vsetq_lane_s32(a, b, 3);
   9134 }
   9135 
   9136 // CHECK-LABEL: test_vsetq_lane_p8
   9137 // CHECK: vmov
   9138 poly8x16_t test_vsetq_lane_p8(poly8_t a, poly8x16_t b) {
   9139   return vsetq_lane_p8(a, b, 15);
   9140 }
   9141 
   9142 // CHECK-LABEL: test_vsetq_lane_p16
   9143 // CHECK: vmov
   9144 poly16x8_t test_vsetq_lane_p16(poly16_t a, poly16x8_t b) {
   9145   return vsetq_lane_p16(a, b, 7);
   9146 }
   9147 
   9148 // CHECK-LABEL: test_vsetq_lane_f32
   9149 // CHECK: vmov
   9150 float32x4_t test_vsetq_lane_f32(float32_t a, float32x4_t b) {
   9151   return vsetq_lane_f32(a, b, 3);
   9152 }
   9153 
   9154 // CHECK-LABEL: test_vset_lane_s64
   9155 // CHECK: vmov
   9156 int64x1_t test_vset_lane_s64(int64_t a, int64x1_t b) {
   9157   return vset_lane_s64(a, b, 0);
   9158 }
   9159 
   9160 // CHECK-LABEL: test_vset_lane_u64
   9161 // CHECK: vmov
   9162 uint64x1_t test_vset_lane_u64(uint64_t a, uint64x1_t b) {
   9163   return vset_lane_u64(a, b, 0);
   9164 }
   9165 
   9166 // CHECK-LABEL: test_vsetq_lane_s64
   9167 // CHECK: vmov
   9168 int64x2_t test_vsetq_lane_s64(int64_t a, int64x2_t b) {
   9169   return vsetq_lane_s64(a, b, 1);
   9170 }
   9171 
   9172 // CHECK-LABEL: test_vsetq_lane_u64
   9173 // CHECK: vmov
   9174 uint64x2_t test_vsetq_lane_u64(uint64_t a, uint64x2_t b) {
   9175   return vsetq_lane_u64(a, b, 1);
   9176 }
   9177 
   9178 
   9179 // CHECK-LABEL: test_vshl_s8
   9180 // CHECK: vshl.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   9181 int8x8_t test_vshl_s8(int8x8_t a, int8x8_t b) {
   9182   return vshl_s8(a, b);
   9183 }
   9184 
   9185 // CHECK-LABEL: test_vshl_s16
   9186 // CHECK: vshl.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   9187 int16x4_t test_vshl_s16(int16x4_t a, int16x4_t b) {
   9188   return vshl_s16(a, b);
   9189 }
   9190 
   9191 // CHECK-LABEL: test_vshl_s32
   9192 // CHECK: vshl.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   9193 int32x2_t test_vshl_s32(int32x2_t a, int32x2_t b) {
   9194   return vshl_s32(a, b);
   9195 }
   9196 
   9197 // CHECK-LABEL: test_vshl_s64
   9198 // CHECK: vshl.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   9199 int64x1_t test_vshl_s64(int64x1_t a, int64x1_t b) {
   9200   return vshl_s64(a, b);
   9201 }
   9202 
   9203 // CHECK-LABEL: test_vshl_u8
   9204 // CHECK: vshl.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   9205 uint8x8_t test_vshl_u8(uint8x8_t a, int8x8_t b) {
   9206   return vshl_u8(a, b);
   9207 }
   9208 
   9209 // CHECK-LABEL: test_vshl_u16
   9210 // CHECK: vshl.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   9211 uint16x4_t test_vshl_u16(uint16x4_t a, int16x4_t b) {
   9212   return vshl_u16(a, b);
   9213 }
   9214 
   9215 // CHECK-LABEL: test_vshl_u32
   9216 // CHECK: vshl.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   9217 uint32x2_t test_vshl_u32(uint32x2_t a, int32x2_t b) {
   9218   return vshl_u32(a, b);
   9219 }
   9220 
   9221 // CHECK-LABEL: test_vshl_u64
   9222 // CHECK: vshl.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   9223 uint64x1_t test_vshl_u64(uint64x1_t a, int64x1_t b) {
   9224   return vshl_u64(a, b);
   9225 }
   9226 
   9227 // CHECK-LABEL: test_vshlq_s8
   9228 // CHECK: vshl.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9229 int8x16_t test_vshlq_s8(int8x16_t a, int8x16_t b) {
   9230   return vshlq_s8(a, b);
   9231 }
   9232 
   9233 // CHECK-LABEL: test_vshlq_s16
   9234 // CHECK: vshl.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9235 int16x8_t test_vshlq_s16(int16x8_t a, int16x8_t b) {
   9236   return vshlq_s16(a, b);
   9237 }
   9238 
   9239 // CHECK-LABEL: test_vshlq_s32
   9240 // CHECK: vshl.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9241 int32x4_t test_vshlq_s32(int32x4_t a, int32x4_t b) {
   9242   return vshlq_s32(a, b);
   9243 }
   9244 
   9245 // CHECK-LABEL: test_vshlq_s64
   9246 // CHECK: vshl.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9247 int64x2_t test_vshlq_s64(int64x2_t a, int64x2_t b) {
   9248   return vshlq_s64(a, b);
   9249 }
   9250 
   9251 // CHECK-LABEL: test_vshlq_u8
   9252 // CHECK: vshl.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9253 uint8x16_t test_vshlq_u8(uint8x16_t a, int8x16_t b) {
   9254   return vshlq_u8(a, b);
   9255 }
   9256 
   9257 // CHECK-LABEL: test_vshlq_u16
   9258 // CHECK: vshl.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9259 uint16x8_t test_vshlq_u16(uint16x8_t a, int16x8_t b) {
   9260   return vshlq_u16(a, b);
   9261 }
   9262 
   9263 // CHECK-LABEL: test_vshlq_u32
   9264 // CHECK: vshl.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9265 uint32x4_t test_vshlq_u32(uint32x4_t a, int32x4_t b) {
   9266   return vshlq_u32(a, b);
   9267 }
   9268 
   9269 // CHECK-LABEL: test_vshlq_u64
   9270 // CHECK: vshl.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   9271 uint64x2_t test_vshlq_u64(uint64x2_t a, int64x2_t b) {
   9272   return vshlq_u64(a, b);
   9273 }
   9274 
   9275 
   9276 // CHECK-LABEL: test_vshll_n_s8
   9277 // CHECK: vshll.s8 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9278 int16x8_t test_vshll_n_s8(int8x8_t a) {
   9279   return vshll_n_s8(a, 1);
   9280 }
   9281 
   9282 // CHECK-LABEL: test_vshll_n_s16
   9283 // CHECK: vshll.s16 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9284 int32x4_t test_vshll_n_s16(int16x4_t a) {
   9285   return vshll_n_s16(a, 1);
   9286 }
   9287 
   9288 // CHECK-LABEL: test_vshll_n_s32
   9289 // CHECK: vshll.s32 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9290 int64x2_t test_vshll_n_s32(int32x2_t a) {
   9291   return vshll_n_s32(a, 1);
   9292 }
   9293 
   9294 // CHECK-LABEL: test_vshll_n_u8
   9295 // CHECK: vshll.u8 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9296 uint16x8_t test_vshll_n_u8(uint8x8_t a) {
   9297   return vshll_n_u8(a, 1);
   9298 }
   9299 
   9300 // CHECK-LABEL: test_vshll_n_u16
   9301 // CHECK: vshll.u16 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9302 uint32x4_t test_vshll_n_u16(uint16x4_t a) {
   9303   return vshll_n_u16(a, 1);
   9304 }
   9305 
   9306 // CHECK-LABEL: test_vshll_n_u32
   9307 // CHECK: vshll.u32 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9308 uint64x2_t test_vshll_n_u32(uint32x2_t a) {
   9309   return vshll_n_u32(a, 1);
   9310 }
   9311 
   9312 
   9313 // CHECK-LABEL: test_vshl_n_s8
   9314 // CHECK: vshl.i8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9315 int8x8_t test_vshl_n_s8(int8x8_t a) {
   9316   return vshl_n_s8(a, 1);
   9317 }
   9318 
   9319 // CHECK-LABEL: test_vshl_n_s16
   9320 // CHECK: vshl.i16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9321 int16x4_t test_vshl_n_s16(int16x4_t a) {
   9322   return vshl_n_s16(a, 1);
   9323 }
   9324 
   9325 // CHECK-LABEL: test_vshl_n_s32
   9326 // CHECK: vshl.i32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9327 int32x2_t test_vshl_n_s32(int32x2_t a) {
   9328   return vshl_n_s32(a, 1);
   9329 }
   9330 
   9331 // CHECK-LABEL: test_vshl_n_s64
   9332 // CHECK: vshl.i64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9333 int64x1_t test_vshl_n_s64(int64x1_t a) {
   9334   return vshl_n_s64(a, 1);
   9335 }
   9336 
   9337 // CHECK-LABEL: test_vshl_n_u8
   9338 // CHECK: vshl.i8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9339 uint8x8_t test_vshl_n_u8(uint8x8_t a) {
   9340   return vshl_n_u8(a, 1);
   9341 }
   9342 
   9343 // CHECK-LABEL: test_vshl_n_u16
   9344 // CHECK: vshl.i16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9345 uint16x4_t test_vshl_n_u16(uint16x4_t a) {
   9346   return vshl_n_u16(a, 1);
   9347 }
   9348 
   9349 // CHECK-LABEL: test_vshl_n_u32
   9350 // CHECK: vshl.i32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9351 uint32x2_t test_vshl_n_u32(uint32x2_t a) {
   9352   return vshl_n_u32(a, 1);
   9353 }
   9354 
   9355 // CHECK-LABEL: test_vshl_n_u64
   9356 // CHECK: vshl.i64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9357 uint64x1_t test_vshl_n_u64(uint64x1_t a) {
   9358   return vshl_n_u64(a, 1);
   9359 }
   9360 
   9361 // CHECK-LABEL: test_vshlq_n_s8
   9362 // CHECK: vshl.i8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9363 int8x16_t test_vshlq_n_s8(int8x16_t a) {
   9364   return vshlq_n_s8(a, 1);
   9365 }
   9366 
   9367 // CHECK-LABEL: test_vshlq_n_s16
   9368 // CHECK: vshl.i16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9369 int16x8_t test_vshlq_n_s16(int16x8_t a) {
   9370   return vshlq_n_s16(a, 1);
   9371 }
   9372 
   9373 // CHECK-LABEL: test_vshlq_n_s32
   9374 // CHECK: vshl.i32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9375 int32x4_t test_vshlq_n_s32(int32x4_t a) {
   9376   return vshlq_n_s32(a, 1);
   9377 }
   9378 
   9379 // CHECK-LABEL: test_vshlq_n_s64
   9380 // CHECK: vshl.i64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9381 int64x2_t test_vshlq_n_s64(int64x2_t a) {
   9382   return vshlq_n_s64(a, 1);
   9383 }
   9384 
   9385 // CHECK-LABEL: test_vshlq_n_u8
   9386 // CHECK: vshl.i8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9387 uint8x16_t test_vshlq_n_u8(uint8x16_t a) {
   9388   return vshlq_n_u8(a, 1);
   9389 }
   9390 
   9391 // CHECK-LABEL: test_vshlq_n_u16
   9392 // CHECK: vshl.i16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9393 uint16x8_t test_vshlq_n_u16(uint16x8_t a) {
   9394   return vshlq_n_u16(a, 1);
   9395 }
   9396 
   9397 // CHECK-LABEL: test_vshlq_n_u32
   9398 // CHECK: vshl.i32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9399 uint32x4_t test_vshlq_n_u32(uint32x4_t a) {
   9400   return vshlq_n_u32(a, 1);
   9401 }
   9402 
   9403 // CHECK-LABEL: test_vshlq_n_u64
   9404 // CHECK: vshl.i64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9405 uint64x2_t test_vshlq_n_u64(uint64x2_t a) {
   9406   return vshlq_n_u64(a, 1);
   9407 }
   9408 
   9409 
   9410 // CHECK-LABEL: test_vshrn_n_s16
   9411 // CHECK: vshrn.i16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9412 int8x8_t test_vshrn_n_s16(int16x8_t a) {
   9413   return vshrn_n_s16(a, 1);
   9414 }
   9415 
   9416 // CHECK-LABEL: test_vshrn_n_s32
   9417 // CHECK: vshrn.i32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9418 int16x4_t test_vshrn_n_s32(int32x4_t a) {
   9419   return vshrn_n_s32(a, 1);
   9420 }
   9421 
   9422 // CHECK-LABEL: test_vshrn_n_s64
   9423 // CHECK: vshrn.i64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9424 int32x2_t test_vshrn_n_s64(int64x2_t a) {
   9425   return vshrn_n_s64(a, 1);
   9426 }
   9427 
   9428 // CHECK-LABEL: test_vshrn_n_u16
   9429 // CHECK: vshrn.i16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9430 uint8x8_t test_vshrn_n_u16(uint16x8_t a) {
   9431   return vshrn_n_u16(a, 1);
   9432 }
   9433 
   9434 // CHECK-LABEL: test_vshrn_n_u32
   9435 // CHECK: vshrn.i32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9436 uint16x4_t test_vshrn_n_u32(uint32x4_t a) {
   9437   return vshrn_n_u32(a, 1);
   9438 }
   9439 
   9440 // CHECK-LABEL: test_vshrn_n_u64
   9441 // CHECK: vshrn.i64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9442 uint32x2_t test_vshrn_n_u64(uint64x2_t a) {
   9443   return vshrn_n_u64(a, 1);
   9444 }
   9445 
   9446 
   9447 // CHECK-LABEL: test_vshr_n_s8
   9448 // CHECK: vshr.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9449 int8x8_t test_vshr_n_s8(int8x8_t a) {
   9450   return vshr_n_s8(a, 1);
   9451 }
   9452 
   9453 // CHECK-LABEL: test_vshr_n_s16
   9454 // CHECK: vshr.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9455 int16x4_t test_vshr_n_s16(int16x4_t a) {
   9456   return vshr_n_s16(a, 1);
   9457 }
   9458 
   9459 // CHECK-LABEL: test_vshr_n_s32
   9460 // CHECK: vshr.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9461 int32x2_t test_vshr_n_s32(int32x2_t a) {
   9462   return vshr_n_s32(a, 1);
   9463 }
   9464 
   9465 // CHECK-LABEL: test_vshr_n_s64
   9466 // CHECK: vshr.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9467 int64x1_t test_vshr_n_s64(int64x1_t a) {
   9468   return vshr_n_s64(a, 1);
   9469 }
   9470 
   9471 // CHECK-LABEL: test_vshr_n_u8
   9472 // CHECK: vshr.u8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9473 uint8x8_t test_vshr_n_u8(uint8x8_t a) {
   9474   return vshr_n_u8(a, 1);
   9475 }
   9476 
   9477 // CHECK-LABEL: test_vshr_n_u16
   9478 // CHECK: vshr.u16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9479 uint16x4_t test_vshr_n_u16(uint16x4_t a) {
   9480   return vshr_n_u16(a, 1);
   9481 }
   9482 
   9483 // CHECK-LABEL: test_vshr_n_u32
   9484 // CHECK: vshr.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9485 uint32x2_t test_vshr_n_u32(uint32x2_t a) {
   9486   return vshr_n_u32(a, 1);
   9487 }
   9488 
   9489 // CHECK-LABEL: test_vshr_n_u64
   9490 // CHECK: vshr.u64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9491 uint64x1_t test_vshr_n_u64(uint64x1_t a) {
   9492   return vshr_n_u64(a, 1);
   9493 }
   9494 
   9495 // CHECK-LABEL: test_vshrq_n_s8
   9496 // CHECK: vshr.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9497 int8x16_t test_vshrq_n_s8(int8x16_t a) {
   9498   return vshrq_n_s8(a, 1);
   9499 }
   9500 
   9501 // CHECK-LABEL: test_vshrq_n_s16
   9502 // CHECK: vshr.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9503 int16x8_t test_vshrq_n_s16(int16x8_t a) {
   9504   return vshrq_n_s16(a, 1);
   9505 }
   9506 
   9507 // CHECK-LABEL: test_vshrq_n_s32
   9508 // CHECK: vshr.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9509 int32x4_t test_vshrq_n_s32(int32x4_t a) {
   9510   return vshrq_n_s32(a, 1);
   9511 }
   9512 
   9513 // CHECK-LABEL: test_vshrq_n_s64
   9514 // CHECK: vshr.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9515 int64x2_t test_vshrq_n_s64(int64x2_t a) {
   9516   return vshrq_n_s64(a, 1);
   9517 }
   9518 
   9519 // CHECK-LABEL: test_vshrq_n_u8
   9520 // CHECK: vshr.u8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9521 uint8x16_t test_vshrq_n_u8(uint8x16_t a) {
   9522   return vshrq_n_u8(a, 1);
   9523 }
   9524 
   9525 // CHECK-LABEL: test_vshrq_n_u16
   9526 // CHECK: vshr.u16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9527 uint16x8_t test_vshrq_n_u16(uint16x8_t a) {
   9528   return vshrq_n_u16(a, 1);
   9529 }
   9530 
   9531 // CHECK-LABEL: test_vshrq_n_u32
   9532 // CHECK: vshr.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9533 uint32x4_t test_vshrq_n_u32(uint32x4_t a) {
   9534   return vshrq_n_u32(a, 1);
   9535 }
   9536 
   9537 // CHECK-LABEL: test_vshrq_n_u64
   9538 // CHECK: vshr.u64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9539 uint64x2_t test_vshrq_n_u64(uint64x2_t a) {
   9540   return vshrq_n_u64(a, 1);
   9541 }
   9542 
   9543 
   9544 // CHECK-LABEL: test_vsli_n_s8
   9545 // CHECK: vsli.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9546 int8x8_t test_vsli_n_s8(int8x8_t a, int8x8_t b) {
   9547   return vsli_n_s8(a, b, 1);
   9548 }
   9549 
   9550 // CHECK-LABEL: test_vsli_n_s16
   9551 // CHECK: vsli.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9552 int16x4_t test_vsli_n_s16(int16x4_t a, int16x4_t b) {
   9553   return vsli_n_s16(a, b, 1);
   9554 }
   9555 
   9556 // CHECK-LABEL: test_vsli_n_s32
   9557 // CHECK: vsli.32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9558 int32x2_t test_vsli_n_s32(int32x2_t a, int32x2_t b) {
   9559   return vsli_n_s32(a, b, 1);
   9560 }
   9561 
   9562 // CHECK-LABEL: test_vsli_n_s64
   9563 // CHECK: vsli.64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9564 int64x1_t test_vsli_n_s64(int64x1_t a, int64x1_t b) {
   9565   return vsli_n_s64(a, b, 1);
   9566 }
   9567 
   9568 // CHECK-LABEL: test_vsli_n_u8
   9569 // CHECK: vsli.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9570 uint8x8_t test_vsli_n_u8(uint8x8_t a, uint8x8_t b) {
   9571   return vsli_n_u8(a, b, 1);
   9572 }
   9573 
   9574 // CHECK-LABEL: test_vsli_n_u16
   9575 // CHECK: vsli.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9576 uint16x4_t test_vsli_n_u16(uint16x4_t a, uint16x4_t b) {
   9577   return vsli_n_u16(a, b, 1);
   9578 }
   9579 
   9580 // CHECK-LABEL: test_vsli_n_u32
   9581 // CHECK: vsli.32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9582 uint32x2_t test_vsli_n_u32(uint32x2_t a, uint32x2_t b) {
   9583   return vsli_n_u32(a, b, 1);
   9584 }
   9585 
   9586 // CHECK-LABEL: test_vsli_n_u64
   9587 // CHECK: vsli.64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9588 uint64x1_t test_vsli_n_u64(uint64x1_t a, uint64x1_t b) {
   9589   return vsli_n_u64(a, b, 1);
   9590 }
   9591 
   9592 // CHECK-LABEL: test_vsli_n_p8
   9593 // CHECK: vsli.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9594 poly8x8_t test_vsli_n_p8(poly8x8_t a, poly8x8_t b) {
   9595   return vsli_n_p8(a, b, 1);
   9596 }
   9597 
   9598 // CHECK-LABEL: test_vsli_n_p16
   9599 // CHECK: vsli.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9600 poly16x4_t test_vsli_n_p16(poly16x4_t a, poly16x4_t b) {
   9601   return vsli_n_p16(a, b, 1);
   9602 }
   9603 
   9604 // CHECK-LABEL: test_vsliq_n_s8
   9605 // CHECK: vsli.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9606 int8x16_t test_vsliq_n_s8(int8x16_t a, int8x16_t b) {
   9607   return vsliq_n_s8(a, b, 1);
   9608 }
   9609 
   9610 // CHECK-LABEL: test_vsliq_n_s16
   9611 // CHECK: vsli.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9612 int16x8_t test_vsliq_n_s16(int16x8_t a, int16x8_t b) {
   9613   return vsliq_n_s16(a, b, 1);
   9614 }
   9615 
   9616 // CHECK-LABEL: test_vsliq_n_s32
   9617 // CHECK: vsli.32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9618 int32x4_t test_vsliq_n_s32(int32x4_t a, int32x4_t b) {
   9619   return vsliq_n_s32(a, b, 1);
   9620 }
   9621 
   9622 // CHECK-LABEL: test_vsliq_n_s64
   9623 // CHECK: vsli.64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9624 int64x2_t test_vsliq_n_s64(int64x2_t a, int64x2_t b) {
   9625   return vsliq_n_s64(a, b, 1);
   9626 }
   9627 
   9628 // CHECK-LABEL: test_vsliq_n_u8
   9629 // CHECK: vsli.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9630 uint8x16_t test_vsliq_n_u8(uint8x16_t a, uint8x16_t b) {
   9631   return vsliq_n_u8(a, b, 1);
   9632 }
   9633 
   9634 // CHECK-LABEL: test_vsliq_n_u16
   9635 // CHECK: vsli.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9636 uint16x8_t test_vsliq_n_u16(uint16x8_t a, uint16x8_t b) {
   9637   return vsliq_n_u16(a, b, 1);
   9638 }
   9639 
   9640 // CHECK-LABEL: test_vsliq_n_u32
   9641 // CHECK: vsli.32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9642 uint32x4_t test_vsliq_n_u32(uint32x4_t a, uint32x4_t b) {
   9643   return vsliq_n_u32(a, b, 1);
   9644 }
   9645 
   9646 // CHECK-LABEL: test_vsliq_n_u64
   9647 // CHECK: vsli.64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9648 uint64x2_t test_vsliq_n_u64(uint64x2_t a, uint64x2_t b) {
   9649   return vsliq_n_u64(a, b, 1);
   9650 }
   9651 
   9652 // CHECK-LABEL: test_vsliq_n_p8
   9653 // CHECK: vsli.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9654 poly8x16_t test_vsliq_n_p8(poly8x16_t a, poly8x16_t b) {
   9655   return vsliq_n_p8(a, b, 1);
   9656 }
   9657 
   9658 // CHECK-LABEL: test_vsliq_n_p16
   9659 // CHECK: vsli.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9660 poly16x8_t test_vsliq_n_p16(poly16x8_t a, poly16x8_t b) {
   9661   return vsliq_n_p16(a, b, 1);
   9662 }
   9663 
   9664 
   9665 // CHECK-LABEL: test_vsra_n_s8
   9666 // CHECK: vsra.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9667 int8x8_t test_vsra_n_s8(int8x8_t a, int8x8_t b) {
   9668   return vsra_n_s8(a, b, 1);
   9669 }
   9670 
   9671 // CHECK-LABEL: test_vsra_n_s16
   9672 // CHECK: vsra.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9673 int16x4_t test_vsra_n_s16(int16x4_t a, int16x4_t b) {
   9674   return vsra_n_s16(a, b, 1);
   9675 }
   9676 
   9677 // CHECK-LABEL: test_vsra_n_s32
   9678 // CHECK: vsra.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9679 int32x2_t test_vsra_n_s32(int32x2_t a, int32x2_t b) {
   9680   return vsra_n_s32(a, b, 1);
   9681 }
   9682 
   9683 // CHECK-LABEL: test_vsra_n_s64
   9684 // CHECK: vsra.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9685 int64x1_t test_vsra_n_s64(int64x1_t a, int64x1_t b) {
   9686   return vsra_n_s64(a, b, 1);
   9687 }
   9688 
   9689 // CHECK-LABEL: test_vsra_n_u8
   9690 // CHECK: vsra.u8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9691 uint8x8_t test_vsra_n_u8(uint8x8_t a, uint8x8_t b) {
   9692   return vsra_n_u8(a, b, 1);
   9693 }
   9694 
   9695 // CHECK-LABEL: test_vsra_n_u16
   9696 // CHECK: vsra.u16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9697 uint16x4_t test_vsra_n_u16(uint16x4_t a, uint16x4_t b) {
   9698   return vsra_n_u16(a, b, 1);
   9699 }
   9700 
   9701 // CHECK-LABEL: test_vsra_n_u32
   9702 // CHECK: vsra.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9703 uint32x2_t test_vsra_n_u32(uint32x2_t a, uint32x2_t b) {
   9704   return vsra_n_u32(a, b, 1);
   9705 }
   9706 
   9707 // CHECK-LABEL: test_vsra_n_u64
   9708 // CHECK: vsra.u64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9709 uint64x1_t test_vsra_n_u64(uint64x1_t a, uint64x1_t b) {
   9710   return vsra_n_u64(a, b, 1);
   9711 }
   9712 
   9713 // CHECK-LABEL: test_vsraq_n_s8
   9714 // CHECK: vsra.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9715 int8x16_t test_vsraq_n_s8(int8x16_t a, int8x16_t b) {
   9716   return vsraq_n_s8(a, b, 1);
   9717 }
   9718 
   9719 // CHECK-LABEL: test_vsraq_n_s16
   9720 // CHECK: vsra.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9721 int16x8_t test_vsraq_n_s16(int16x8_t a, int16x8_t b) {
   9722   return vsraq_n_s16(a, b, 1);
   9723 }
   9724 
   9725 // CHECK-LABEL: test_vsraq_n_s32
   9726 // CHECK: vsra.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9727 int32x4_t test_vsraq_n_s32(int32x4_t a, int32x4_t b) {
   9728   return vsraq_n_s32(a, b, 1);
   9729 }
   9730 
   9731 // CHECK-LABEL: test_vsraq_n_s64
   9732 // CHECK: vsra.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9733 int64x2_t test_vsraq_n_s64(int64x2_t a, int64x2_t b) {
   9734   return vsraq_n_s64(a, b, 1);
   9735 }
   9736 
   9737 // CHECK-LABEL: test_vsraq_n_u8
   9738 // CHECK: vsra.u8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9739 uint8x16_t test_vsraq_n_u8(uint8x16_t a, uint8x16_t b) {
   9740   return vsraq_n_u8(a, b, 1);
   9741 }
   9742 
   9743 // CHECK-LABEL: test_vsraq_n_u16
   9744 // CHECK: vsra.u16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9745 uint16x8_t test_vsraq_n_u16(uint16x8_t a, uint16x8_t b) {
   9746   return vsraq_n_u16(a, b, 1);
   9747 }
   9748 
   9749 // CHECK-LABEL: test_vsraq_n_u32
   9750 // CHECK: vsra.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9751 uint32x4_t test_vsraq_n_u32(uint32x4_t a, uint32x4_t b) {
   9752   return vsraq_n_u32(a, b, 1);
   9753 }
   9754 
   9755 // CHECK-LABEL: test_vsraq_n_u64
   9756 // CHECK: vsra.u64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9757 uint64x2_t test_vsraq_n_u64(uint64x2_t a, uint64x2_t b) {
   9758   return vsraq_n_u64(a, b, 1);
   9759 }
   9760 
   9761 
   9762 // CHECK-LABEL: test_vsri_n_s8
   9763 // CHECK: vsri.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9764 int8x8_t test_vsri_n_s8(int8x8_t a, int8x8_t b) {
   9765   return vsri_n_s8(a, b, 1);
   9766 }
   9767 
   9768 // CHECK-LABEL: test_vsri_n_s16
   9769 // CHECK: vsri.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9770 int16x4_t test_vsri_n_s16(int16x4_t a, int16x4_t b) {
   9771   return vsri_n_s16(a, b, 1);
   9772 }
   9773 
   9774 // CHECK-LABEL: test_vsri_n_s32
   9775 // CHECK: vsri.32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9776 int32x2_t test_vsri_n_s32(int32x2_t a, int32x2_t b) {
   9777   return vsri_n_s32(a, b, 1);
   9778 }
   9779 
   9780 // CHECK-LABEL: test_vsri_n_s64
   9781 // CHECK: vsri.64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9782 int64x1_t test_vsri_n_s64(int64x1_t a, int64x1_t b) {
   9783   return vsri_n_s64(a, b, 1);
   9784 }
   9785 
   9786 // CHECK-LABEL: test_vsri_n_u8
   9787 // CHECK: vsri.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9788 uint8x8_t test_vsri_n_u8(uint8x8_t a, uint8x8_t b) {
   9789   return vsri_n_u8(a, b, 1);
   9790 }
   9791 
   9792 // CHECK-LABEL: test_vsri_n_u16
   9793 // CHECK: vsri.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9794 uint16x4_t test_vsri_n_u16(uint16x4_t a, uint16x4_t b) {
   9795   return vsri_n_u16(a, b, 1);
   9796 }
   9797 
   9798 // CHECK-LABEL: test_vsri_n_u32
   9799 // CHECK: vsri.32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9800 uint32x2_t test_vsri_n_u32(uint32x2_t a, uint32x2_t b) {
   9801   return vsri_n_u32(a, b, 1);
   9802 }
   9803 
   9804 // CHECK-LABEL: test_vsri_n_u64
   9805 // CHECK: vsri.64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9806 uint64x1_t test_vsri_n_u64(uint64x1_t a, uint64x1_t b) {
   9807   return vsri_n_u64(a, b, 1);
   9808 }
   9809 
   9810 // CHECK-LABEL: test_vsri_n_p8
   9811 // CHECK: vsri.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9812 poly8x8_t test_vsri_n_p8(poly8x8_t a, poly8x8_t b) {
   9813   return vsri_n_p8(a, b, 1);
   9814 }
   9815 
   9816 // CHECK-LABEL: test_vsri_n_p16
   9817 // CHECK: vsri.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
   9818 poly16x4_t test_vsri_n_p16(poly16x4_t a, poly16x4_t b) {
   9819   return vsri_n_p16(a, b, 1);
   9820 }
   9821 
   9822 // CHECK-LABEL: test_vsriq_n_s8
   9823 // CHECK: vsri.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9824 int8x16_t test_vsriq_n_s8(int8x16_t a, int8x16_t b) {
   9825   return vsriq_n_s8(a, b, 1);
   9826 }
   9827 
   9828 // CHECK-LABEL: test_vsriq_n_s16
   9829 // CHECK: vsri.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9830 int16x8_t test_vsriq_n_s16(int16x8_t a, int16x8_t b) {
   9831   return vsriq_n_s16(a, b, 1);
   9832 }
   9833 
   9834 // CHECK-LABEL: test_vsriq_n_s32
   9835 // CHECK: vsri.32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9836 int32x4_t test_vsriq_n_s32(int32x4_t a, int32x4_t b) {
   9837   return vsriq_n_s32(a, b, 1);
   9838 }
   9839 
   9840 // CHECK-LABEL: test_vsriq_n_s64
   9841 // CHECK: vsri.64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9842 int64x2_t test_vsriq_n_s64(int64x2_t a, int64x2_t b) {
   9843   return vsriq_n_s64(a, b, 1);
   9844 }
   9845 
   9846 // CHECK-LABEL: test_vsriq_n_u8
   9847 // CHECK: vsri.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9848 uint8x16_t test_vsriq_n_u8(uint8x16_t a, uint8x16_t b) {
   9849   return vsriq_n_u8(a, b, 1);
   9850 }
   9851 
   9852 // CHECK-LABEL: test_vsriq_n_u16
   9853 // CHECK: vsri.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9854 uint16x8_t test_vsriq_n_u16(uint16x8_t a, uint16x8_t b) {
   9855   return vsriq_n_u16(a, b, 1);
   9856 }
   9857 
   9858 // CHECK-LABEL: test_vsriq_n_u32
   9859 // CHECK: vsri.32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9860 uint32x4_t test_vsriq_n_u32(uint32x4_t a, uint32x4_t b) {
   9861   return vsriq_n_u32(a, b, 1);
   9862 }
   9863 
   9864 // CHECK-LABEL: test_vsriq_n_u64
   9865 // CHECK: vsri.64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9866 uint64x2_t test_vsriq_n_u64(uint64x2_t a, uint64x2_t b) {
   9867   return vsriq_n_u64(a, b, 1);
   9868 }
   9869 
   9870 // CHECK-LABEL: test_vsriq_n_p8
   9871 // CHECK: vsri.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9872 poly8x16_t test_vsriq_n_p8(poly8x16_t a, poly8x16_t b) {
   9873   return vsriq_n_p8(a, b, 1);
   9874 }
   9875 
   9876 // CHECK-LABEL: test_vsriq_n_p16
   9877 // CHECK: vsri.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
   9878 poly16x8_t test_vsriq_n_p16(poly16x8_t a, poly16x8_t b) {
   9879   return vsriq_n_p16(a, b, 1);
   9880 }
   9881 
   9882 
   9883 // CHECK-LABEL: test_vst1q_u8
   9884 // CHECK: vst1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   9885 void test_vst1q_u8(uint8_t * a, uint8x16_t b) {
   9886   vst1q_u8(a, b);
   9887 }
   9888 
   9889 // CHECK-LABEL: test_vst1q_u16
   9890 // CHECK: vst1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   9891 void test_vst1q_u16(uint16_t * a, uint16x8_t b) {
   9892   vst1q_u16(a, b);
   9893 }
   9894 
   9895 // CHECK-LABEL: test_vst1q_u32
   9896 // CHECK: vst1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   9897 void test_vst1q_u32(uint32_t * a, uint32x4_t b) {
   9898   vst1q_u32(a, b);
   9899 }
   9900 
   9901 // CHECK-LABEL: test_vst1q_u64
   9902 // CHECK: vst1.64 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}{{(:64)?}}]
   9903 void test_vst1q_u64(uint64_t * a, uint64x2_t b) {
   9904   vst1q_u64(a, b);
   9905 }
   9906 
   9907 // CHECK-LABEL: test_vst1q_s8
   9908 // CHECK: vst1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   9909 void test_vst1q_s8(int8_t * a, int8x16_t b) {
   9910   vst1q_s8(a, b);
   9911 }
   9912 
   9913 // CHECK-LABEL: test_vst1q_s16
   9914 // CHECK: vst1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   9915 void test_vst1q_s16(int16_t * a, int16x8_t b) {
   9916   vst1q_s16(a, b);
   9917 }
   9918 
   9919 // CHECK-LABEL: test_vst1q_s32
   9920 // CHECK: vst1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   9921 void test_vst1q_s32(int32_t * a, int32x4_t b) {
   9922   vst1q_s32(a, b);
   9923 }
   9924 
   9925 // CHECK-LABEL: test_vst1q_s64
   9926 // CHECK: vst1.64 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}{{(:64)?}}]
   9927 void test_vst1q_s64(int64_t * a, int64x2_t b) {
   9928   vst1q_s64(a, b);
   9929 }
   9930 
   9931 // CHECK-LABEL: test_vst1q_f16
   9932 // CHECK: vst1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   9933 void test_vst1q_f16(float16_t * a, float16x8_t b) {
   9934   vst1q_f16(a, b);
   9935 }
   9936 
   9937 // CHECK-LABEL: test_vst1q_f32
   9938 // CHECK: vst1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   9939 void test_vst1q_f32(float32_t * a, float32x4_t b) {
   9940   vst1q_f32(a, b);
   9941 }
   9942 
   9943 // CHECK-LABEL: test_vst1q_p8
   9944 // CHECK: vst1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   9945 void test_vst1q_p8(poly8_t * a, poly8x16_t b) {
   9946   vst1q_p8(a, b);
   9947 }
   9948 
   9949 // CHECK-LABEL: test_vst1q_p16
   9950 // CHECK: vst1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   9951 void test_vst1q_p16(poly16_t * a, poly16x8_t b) {
   9952   vst1q_p16(a, b);
   9953 }
   9954 
   9955 // CHECK-LABEL: test_vst1_u8
   9956 // CHECK: vst1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   9957 void test_vst1_u8(uint8_t * a, uint8x8_t b) {
   9958   vst1_u8(a, b);
   9959 }
   9960 
   9961 // CHECK-LABEL: test_vst1_u16
   9962 // CHECK: vst1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   9963 void test_vst1_u16(uint16_t * a, uint16x4_t b) {
   9964   vst1_u16(a, b);
   9965 }
   9966 
   9967 // CHECK-LABEL: test_vst1_u32
   9968 // CHECK: vst1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   9969 void test_vst1_u32(uint32_t * a, uint32x2_t b) {
   9970   vst1_u32(a, b);
   9971 }
   9972 
   9973 // CHECK-LABEL: test_vst1_u64
   9974 // CHECK: vst1.64 {d{{[0-9]+}}}, [r{{[0-9]+}}{{(:64)?}}]
   9975 void test_vst1_u64(uint64_t * a, uint64x1_t b) {
   9976   vst1_u64(a, b);
   9977 }
   9978 
   9979 // CHECK-LABEL: test_vst1_s8
   9980 // CHECK: vst1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   9981 void test_vst1_s8(int8_t * a, int8x8_t b) {
   9982   vst1_s8(a, b);
   9983 }
   9984 
   9985 // CHECK-LABEL: test_vst1_s16
   9986 // CHECK: vst1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   9987 void test_vst1_s16(int16_t * a, int16x4_t b) {
   9988   vst1_s16(a, b);
   9989 }
   9990 
   9991 // CHECK-LABEL: test_vst1_s32
   9992 // CHECK: vst1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   9993 void test_vst1_s32(int32_t * a, int32x2_t b) {
   9994   vst1_s32(a, b);
   9995 }
   9996 
   9997 // CHECK-LABEL: test_vst1_s64
   9998 // CHECK: vst1.64 {d{{[0-9]+}}}, [r{{[0-9]+}}{{(:64)?}}]
   9999 void test_vst1_s64(int64_t * a, int64x1_t b) {
   10000   vst1_s64(a, b);
   10001 }
   10002 
   10003 // CHECK-LABEL: test_vst1_f16
   10004 // CHECK: vst1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   10005 void test_vst1_f16(float16_t * a, float16x4_t b) {
   10006   vst1_f16(a, b);
   10007 }
   10008 
   10009 // CHECK-LABEL: test_vst1_f32
   10010 // CHECK: vst1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   10011 void test_vst1_f32(float32_t * a, float32x2_t b) {
   10012   vst1_f32(a, b);
   10013 }
   10014 
   10015 // CHECK-LABEL: test_vst1_p8
   10016 // CHECK: vst1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   10017 void test_vst1_p8(poly8_t * a, poly8x8_t b) {
   10018   vst1_p8(a, b);
   10019 }
   10020 
   10021 // CHECK-LABEL: test_vst1_p16
   10022 // CHECK: vst1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
   10023 void test_vst1_p16(poly16_t * a, poly16x4_t b) {
   10024   vst1_p16(a, b);
   10025 }
   10026 
   10027 
   10028 // CHECK-LABEL: test_vst1q_lane_u8
   10029 // CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10030 void test_vst1q_lane_u8(uint8_t * a, uint8x16_t b) {
   10031   vst1q_lane_u8(a, b, 15);
   10032 }
   10033 
   10034 // CHECK-LABEL: test_vst1q_lane_u16
   10035 // CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   10036 void test_vst1q_lane_u16(uint16_t * a, uint16x8_t b) {
   10037   vst1q_lane_u16(a, b, 7);
   10038 }
   10039 
   10040 // CHECK-LABEL: test_vst1q_lane_u32
   10041 // CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   10042 void test_vst1q_lane_u32(uint32_t * a, uint32x4_t b) {
   10043   vst1q_lane_u32(a, b, 3);
   10044 }
   10045 
   10046 // CHECK-LABEL: test_vst1q_lane_u64
   10047 // CHECK: {{str|vstr|vmov}}
   10048 void test_vst1q_lane_u64(uint64_t * a, uint64x2_t b) {
   10049   vst1q_lane_u64(a, b, 1);
   10050 }
   10051 
   10052 // CHECK-LABEL: test_vst1q_lane_s8
   10053 // CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10054 void test_vst1q_lane_s8(int8_t * a, int8x16_t b) {
   10055   vst1q_lane_s8(a, b, 15);
   10056 }
   10057 
   10058 // CHECK-LABEL: test_vst1q_lane_s16
   10059 // CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   10060 void test_vst1q_lane_s16(int16_t * a, int16x8_t b) {
   10061   vst1q_lane_s16(a, b, 7);
   10062 }
   10063 
   10064 // CHECK-LABEL: test_vst1q_lane_s32
   10065 // CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   10066 void test_vst1q_lane_s32(int32_t * a, int32x4_t b) {
   10067   vst1q_lane_s32(a, b, 3);
   10068 }
   10069 
   10070 // CHECK-LABEL: test_vst1q_lane_s64
   10071 // CHECK: {{str|vstr|vmov}}
   10072 void test_vst1q_lane_s64(int64_t * a, int64x2_t b) {
   10073   vst1q_lane_s64(a, b, 1);
   10074 }
   10075 
   10076 // CHECK-LABEL: test_vst1q_lane_f16
   10077 // CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   10078 void test_vst1q_lane_f16(float16_t * a, float16x8_t b) {
   10079   vst1q_lane_f16(a, b, 7);
   10080 }
   10081 
   10082 // CHECK-LABEL: test_vst1q_lane_f32
   10083 // CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   10084 void test_vst1q_lane_f32(float32_t * a, float32x4_t b) {
   10085   vst1q_lane_f32(a, b, 3);
   10086 }
   10087 
   10088 // CHECK-LABEL: test_vst1q_lane_p8
   10089 // CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10090 void test_vst1q_lane_p8(poly8_t * a, poly8x16_t b) {
   10091   vst1q_lane_p8(a, b, 15);
   10092 }
   10093 
   10094 // CHECK-LABEL: test_vst1q_lane_p16
   10095 // CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   10096 void test_vst1q_lane_p16(poly16_t * a, poly16x8_t b) {
   10097   vst1q_lane_p16(a, b, 7);
   10098 }
   10099 
   10100 // CHECK-LABEL: test_vst1_lane_u8
   10101 // CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10102 void test_vst1_lane_u8(uint8_t * a, uint8x8_t b) {
   10103   vst1_lane_u8(a, b, 7);
   10104 }
   10105 
   10106 // CHECK-LABEL: test_vst1_lane_u16
   10107 // CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   10108 void test_vst1_lane_u16(uint16_t * a, uint16x4_t b) {
   10109   vst1_lane_u16(a, b, 3);
   10110 }
   10111 
   10112 // CHECK-LABEL: test_vst1_lane_u32
   10113 // CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   10114 void test_vst1_lane_u32(uint32_t * a, uint32x2_t b) {
   10115   vst1_lane_u32(a, b, 1);
   10116 }
   10117 
   10118 // CHECK-LABEL: test_vst1_lane_u64
   10119 // CHECK: {{str|vstr|vmov}}
   10120 void test_vst1_lane_u64(uint64_t * a, uint64x1_t b) {
   10121   vst1_lane_u64(a, b, 0);
   10122 }
   10123 
   10124 // CHECK-LABEL: test_vst1_lane_s8
   10125 // CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10126 void test_vst1_lane_s8(int8_t * a, int8x8_t b) {
   10127   vst1_lane_s8(a, b, 7);
   10128 }
   10129 
   10130 // CHECK-LABEL: test_vst1_lane_s16
   10131 // CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   10132 void test_vst1_lane_s16(int16_t * a, int16x4_t b) {
   10133   vst1_lane_s16(a, b, 3);
   10134 }
   10135 
   10136 // CHECK-LABEL: test_vst1_lane_s32
   10137 // CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   10138 void test_vst1_lane_s32(int32_t * a, int32x2_t b) {
   10139   vst1_lane_s32(a, b, 1);
   10140 }
   10141 
   10142 // CHECK-LABEL: test_vst1_lane_s64
   10143 // CHECK: {{str|vstr|vmov}}
   10144 void test_vst1_lane_s64(int64_t * a, int64x1_t b) {
   10145   vst1_lane_s64(a, b, 0);
   10146 }
   10147 
   10148 // CHECK-LABEL: test_vst1_lane_f16
   10149 // CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   10150 void test_vst1_lane_f16(float16_t * a, float16x4_t b) {
   10151   vst1_lane_f16(a, b, 3);
   10152 }
   10153 
   10154 // CHECK-LABEL: test_vst1_lane_f32
   10155 // CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
   10156 void test_vst1_lane_f32(float32_t * a, float32x2_t b) {
   10157   vst1_lane_f32(a, b, 1);
   10158 }
   10159 
   10160 // CHECK-LABEL: test_vst1_lane_p8
   10161 // CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10162 void test_vst1_lane_p8(poly8_t * a, poly8x8_t b) {
   10163   vst1_lane_p8(a, b, 7);
   10164 }
   10165 
   10166 // CHECK-LABEL: test_vst1_lane_p16
   10167 // CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
   10168 void test_vst1_lane_p16(poly16_t * a, poly16x4_t b) {
   10169   vst1_lane_p16(a, b, 3);
   10170 }
   10171 
   10172 
   10173 // CHECK-LABEL: test_vst2q_u8
   10174 // CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10175 void test_vst2q_u8(uint8_t * a, uint8x16x2_t b) {
   10176   vst2q_u8(a, b);
   10177 }
   10178 
   10179 // CHECK-LABEL: test_vst2q_u16
   10180 // CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10181 void test_vst2q_u16(uint16_t * a, uint16x8x2_t b) {
   10182   vst2q_u16(a, b);
   10183 }
   10184 
   10185 // CHECK-LABEL: test_vst2q_u32
   10186 // CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10187 void test_vst2q_u32(uint32_t * a, uint32x4x2_t b) {
   10188   vst2q_u32(a, b);
   10189 }
   10190 
   10191 // CHECK-LABEL: test_vst2q_s8
   10192 // CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10193 void test_vst2q_s8(int8_t * a, int8x16x2_t b) {
   10194   vst2q_s8(a, b);
   10195 }
   10196 
   10197 // CHECK-LABEL: test_vst2q_s16
   10198 // CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10199 void test_vst2q_s16(int16_t * a, int16x8x2_t b) {
   10200   vst2q_s16(a, b);
   10201 }
   10202 
   10203 // CHECK-LABEL: test_vst2q_s32
   10204 // CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10205 void test_vst2q_s32(int32_t * a, int32x4x2_t b) {
   10206   vst2q_s32(a, b);
   10207 }
   10208 
   10209 // CHECK-LABEL: test_vst2q_f16
   10210 // CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10211 void test_vst2q_f16(float16_t * a, float16x8x2_t b) {
   10212   vst2q_f16(a, b);
   10213 }
   10214 
   10215 // CHECK-LABEL: test_vst2q_f32
   10216 // CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10217 void test_vst2q_f32(float32_t * a, float32x4x2_t b) {
   10218   vst2q_f32(a, b);
   10219 }
   10220 
   10221 // CHECK-LABEL: test_vst2q_p8
   10222 // CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10223 void test_vst2q_p8(poly8_t * a, poly8x16x2_t b) {
   10224   vst2q_p8(a, b);
   10225 }
   10226 
   10227 // CHECK-LABEL: test_vst2q_p16
   10228 // CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10229 void test_vst2q_p16(poly16_t * a, poly16x8x2_t b) {
   10230   vst2q_p16(a, b);
   10231 }
   10232 
   10233 // CHECK-LABEL: test_vst2_u8
   10234 // CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10235 void test_vst2_u8(uint8_t * a, uint8x8x2_t b) {
   10236   vst2_u8(a, b);
   10237 }
   10238 
   10239 // CHECK-LABEL: test_vst2_u16
   10240 // CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10241 void test_vst2_u16(uint16_t * a, uint16x4x2_t b) {
   10242   vst2_u16(a, b);
   10243 }
   10244 
   10245 // CHECK-LABEL: test_vst2_u32
   10246 // CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10247 void test_vst2_u32(uint32_t * a, uint32x2x2_t b) {
   10248   vst2_u32(a, b);
   10249 }
   10250 
   10251 // CHECK-LABEL: test_vst2_u64
   10252 // CHECK: vst1.64
   10253 void test_vst2_u64(uint64_t * a, uint64x1x2_t b) {
   10254   vst2_u64(a, b);
   10255 }
   10256 
   10257 // CHECK-LABEL: test_vst2_s8
   10258 // CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10259 void test_vst2_s8(int8_t * a, int8x8x2_t b) {
   10260   vst2_s8(a, b);
   10261 }
   10262 
   10263 // CHECK-LABEL: test_vst2_s16
   10264 // CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10265 void test_vst2_s16(int16_t * a, int16x4x2_t b) {
   10266   vst2_s16(a, b);
   10267 }
   10268 
   10269 // CHECK-LABEL: test_vst2_s32
   10270 // CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10271 void test_vst2_s32(int32_t * a, int32x2x2_t b) {
   10272   vst2_s32(a, b);
   10273 }
   10274 
   10275 // CHECK-LABEL: test_vst2_s64
   10276 // CHECK: vst1.64
   10277 void test_vst2_s64(int64_t * a, int64x1x2_t b) {
   10278   vst2_s64(a, b);
   10279 }
   10280 
   10281 // CHECK-LABEL: test_vst2_f16
   10282 // CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10283 void test_vst2_f16(float16_t * a, float16x4x2_t b) {
   10284   vst2_f16(a, b);
   10285 }
   10286 
   10287 // CHECK-LABEL: test_vst2_f32
   10288 // CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10289 void test_vst2_f32(float32_t * a, float32x2x2_t b) {
   10290   vst2_f32(a, b);
   10291 }
   10292 
   10293 // CHECK-LABEL: test_vst2_p8
   10294 // CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10295 void test_vst2_p8(poly8_t * a, poly8x8x2_t b) {
   10296   vst2_p8(a, b);
   10297 }
   10298 
   10299 // CHECK-LABEL: test_vst2_p16
   10300 // CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10301 void test_vst2_p16(poly16_t * a, poly16x4x2_t b) {
   10302   vst2_p16(a, b);
   10303 }
   10304 
   10305 
   10306 // CHECK-LABEL: test_vst2q_lane_u16
   10307 // CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10308 void test_vst2q_lane_u16(uint16_t * a, uint16x8x2_t b) {
   10309   vst2q_lane_u16(a, b, 7);
   10310 }
   10311 
   10312 // CHECK-LABEL: test_vst2q_lane_u32
   10313 // CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10314 void test_vst2q_lane_u32(uint32_t * a, uint32x4x2_t b) {
   10315   vst2q_lane_u32(a, b, 3);
   10316 }
   10317 
   10318 // CHECK-LABEL: test_vst2q_lane_s16
   10319 // CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10320 void test_vst2q_lane_s16(int16_t * a, int16x8x2_t b) {
   10321   vst2q_lane_s16(a, b, 7);
   10322 }
   10323 
   10324 // CHECK-LABEL: test_vst2q_lane_s32
   10325 // CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10326 void test_vst2q_lane_s32(int32_t * a, int32x4x2_t b) {
   10327   vst2q_lane_s32(a, b, 3);
   10328 }
   10329 
   10330 // CHECK-LABEL: test_vst2q_lane_f16
   10331 // CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10332 void test_vst2q_lane_f16(float16_t * a, float16x8x2_t b) {
   10333   vst2q_lane_f16(a, b, 7);
   10334 }
   10335 
   10336 // CHECK-LABEL: test_vst2q_lane_f32
   10337 // CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10338 void test_vst2q_lane_f32(float32_t * a, float32x4x2_t b) {
   10339   vst2q_lane_f32(a, b, 3);
   10340 }
   10341 
   10342 // CHECK-LABEL: test_vst2q_lane_p16
   10343 // CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10344 void test_vst2q_lane_p16(poly16_t * a, poly16x8x2_t b) {
   10345   vst2q_lane_p16(a, b, 7);
   10346 }
   10347 
   10348 // CHECK-LABEL: test_vst2_lane_u8
   10349 // CHECK: vst2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10350 void test_vst2_lane_u8(uint8_t * a, uint8x8x2_t b) {
   10351   vst2_lane_u8(a, b, 7);
   10352 }
   10353 
   10354 // CHECK-LABEL: test_vst2_lane_u16
   10355 // CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10356 void test_vst2_lane_u16(uint16_t * a, uint16x4x2_t b) {
   10357   vst2_lane_u16(a, b, 3);
   10358 }
   10359 
   10360 // CHECK-LABEL: test_vst2_lane_u32
   10361 // CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10362 void test_vst2_lane_u32(uint32_t * a, uint32x2x2_t b) {
   10363   vst2_lane_u32(a, b, 1);
   10364 }
   10365 
   10366 // CHECK-LABEL: test_vst2_lane_s8
   10367 // CHECK: vst2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10368 void test_vst2_lane_s8(int8_t * a, int8x8x2_t b) {
   10369   vst2_lane_s8(a, b, 7);
   10370 }
   10371 
   10372 // CHECK-LABEL: test_vst2_lane_s16
   10373 // CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10374 void test_vst2_lane_s16(int16_t * a, int16x4x2_t b) {
   10375   vst2_lane_s16(a, b, 3);
   10376 }
   10377 
   10378 // CHECK-LABEL: test_vst2_lane_s32
   10379 // CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10380 void test_vst2_lane_s32(int32_t * a, int32x2x2_t b) {
   10381   vst2_lane_s32(a, b, 1);
   10382 }
   10383 
   10384 // CHECK-LABEL: test_vst2_lane_f16
   10385 // CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10386 void test_vst2_lane_f16(float16_t * a, float16x4x2_t b) {
   10387   vst2_lane_f16(a, b, 3);
   10388 }
   10389 
   10390 // CHECK-LABEL: test_vst2_lane_f32
   10391 // CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10392 void test_vst2_lane_f32(float32_t * a, float32x2x2_t b) {
   10393   vst2_lane_f32(a, b, 1);
   10394 }
   10395 
   10396 // CHECK-LABEL: test_vst2_lane_p8
   10397 // CHECK: vst2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10398 void test_vst2_lane_p8(poly8_t * a, poly8x8x2_t b) {
   10399   vst2_lane_p8(a, b, 7);
   10400 }
   10401 
   10402 // CHECK-LABEL: test_vst2_lane_p16
   10403 // CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10404 void test_vst2_lane_p16(poly16_t * a, poly16x4x2_t b) {
   10405   vst2_lane_p16(a, b, 3);
   10406 }
   10407 
   10408 
   10409 // CHECK-LABEL: test_vst3q_u8
   10410 // CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10411 void test_vst3q_u8(uint8_t * a, uint8x16x3_t b) {
   10412   vst3q_u8(a, b);
   10413 }
   10414 
   10415 // CHECK-LABEL: test_vst3q_u16
   10416 // CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10417 void test_vst3q_u16(uint16_t * a, uint16x8x3_t b) {
   10418   vst3q_u16(a, b);
   10419 }
   10420 
   10421 // CHECK-LABEL: test_vst3q_u32
   10422 // CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10423 void test_vst3q_u32(uint32_t * a, uint32x4x3_t b) {
   10424   vst3q_u32(a, b);
   10425 }
   10426 
   10427 // CHECK-LABEL: test_vst3q_s8
   10428 // CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10429 void test_vst3q_s8(int8_t * a, int8x16x3_t b) {
   10430   vst3q_s8(a, b);
   10431 }
   10432 
   10433 // CHECK-LABEL: test_vst3q_s16
   10434 // CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10435 void test_vst3q_s16(int16_t * a, int16x8x3_t b) {
   10436   vst3q_s16(a, b);
   10437 }
   10438 
   10439 // CHECK-LABEL: test_vst3q_s32
   10440 // CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10441 void test_vst3q_s32(int32_t * a, int32x4x3_t b) {
   10442   vst3q_s32(a, b);
   10443 }
   10444 
   10445 // CHECK-LABEL: test_vst3q_f16
   10446 // CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10447 void test_vst3q_f16(float16_t * a, float16x8x3_t b) {
   10448   vst3q_f16(a, b);
   10449 }
   10450 
   10451 // CHECK-LABEL: test_vst3q_f32
   10452 // CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10453 void test_vst3q_f32(float32_t * a, float32x4x3_t b) {
   10454   vst3q_f32(a, b);
   10455 }
   10456 
   10457 // CHECK-LABEL: test_vst3q_p8
   10458 // CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10459 void test_vst3q_p8(poly8_t * a, poly8x16x3_t b) {
   10460   vst3q_p8(a, b);
   10461 }
   10462 
   10463 // CHECK-LABEL: test_vst3q_p16
   10464 // CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10465 void test_vst3q_p16(poly16_t * a, poly16x8x3_t b) {
   10466   vst3q_p16(a, b);
   10467 }
   10468 
   10469 // CHECK-LABEL: test_vst3_u8
   10470 // CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10471 void test_vst3_u8(uint8_t * a, uint8x8x3_t b) {
   10472   vst3_u8(a, b);
   10473 }
   10474 
   10475 // CHECK-LABEL: test_vst3_u16
   10476 // CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10477 void test_vst3_u16(uint16_t * a, uint16x4x3_t b) {
   10478   vst3_u16(a, b);
   10479 }
   10480 
   10481 // CHECK-LABEL: test_vst3_u32
   10482 // CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10483 void test_vst3_u32(uint32_t * a, uint32x2x3_t b) {
   10484   vst3_u32(a, b);
   10485 }
   10486 
   10487 // CHECK-LABEL: test_vst3_u64
   10488 // CHECK: vst1.64
   10489 void test_vst3_u64(uint64_t * a, uint64x1x3_t b) {
   10490   vst3_u64(a, b);
   10491 }
   10492 
   10493 // CHECK-LABEL: test_vst3_s8
   10494 // CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10495 void test_vst3_s8(int8_t * a, int8x8x3_t b) {
   10496   vst3_s8(a, b);
   10497 }
   10498 
   10499 // CHECK-LABEL: test_vst3_s16
   10500 // CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10501 void test_vst3_s16(int16_t * a, int16x4x3_t b) {
   10502   vst3_s16(a, b);
   10503 }
   10504 
   10505 // CHECK-LABEL: test_vst3_s32
   10506 // CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10507 void test_vst3_s32(int32_t * a, int32x2x3_t b) {
   10508   vst3_s32(a, b);
   10509 }
   10510 
   10511 // CHECK-LABEL: test_vst3_s64
   10512 // CHECK: vst1.64
   10513 void test_vst3_s64(int64_t * a, int64x1x3_t b) {
   10514   vst3_s64(a, b);
   10515 }
   10516 
   10517 // CHECK-LABEL: test_vst3_f16
   10518 // CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10519 void test_vst3_f16(float16_t * a, float16x4x3_t b) {
   10520   vst3_f16(a, b);
   10521 }
   10522 
   10523 // CHECK-LABEL: test_vst3_f32
   10524 // CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10525 void test_vst3_f32(float32_t * a, float32x2x3_t b) {
   10526   vst3_f32(a, b);
   10527 }
   10528 
   10529 // CHECK-LABEL: test_vst3_p8
   10530 // CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10531 void test_vst3_p8(poly8_t * a, poly8x8x3_t b) {
   10532   vst3_p8(a, b);
   10533 }
   10534 
   10535 // CHECK-LABEL: test_vst3_p16
   10536 // CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10537 void test_vst3_p16(poly16_t * a, poly16x4x3_t b) {
   10538   vst3_p16(a, b);
   10539 }
   10540 
   10541 
   10542 // CHECK-LABEL: test_vst3q_lane_u16
   10543 // CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10544 void test_vst3q_lane_u16(uint16_t * a, uint16x8x3_t b) {
   10545   vst3q_lane_u16(a, b, 7);
   10546 }
   10547 
   10548 // CHECK-LABEL: test_vst3q_lane_u32
   10549 // CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10550 void test_vst3q_lane_u32(uint32_t * a, uint32x4x3_t b) {
   10551   vst3q_lane_u32(a, b, 3);
   10552 }
   10553 
   10554 // CHECK-LABEL: test_vst3q_lane_s16
   10555 // CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10556 void test_vst3q_lane_s16(int16_t * a, int16x8x3_t b) {
   10557   vst3q_lane_s16(a, b, 7);
   10558 }
   10559 
   10560 // CHECK-LABEL: test_vst3q_lane_s32
   10561 // CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10562 void test_vst3q_lane_s32(int32_t * a, int32x4x3_t b) {
   10563   vst3q_lane_s32(a, b, 3);
   10564 }
   10565 
   10566 // CHECK-LABEL: test_vst3q_lane_f16
   10567 // CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10568 void test_vst3q_lane_f16(float16_t * a, float16x8x3_t b) {
   10569   vst3q_lane_f16(a, b, 7);
   10570 }
   10571 
   10572 // CHECK-LABEL: test_vst3q_lane_f32
   10573 // CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10574 void test_vst3q_lane_f32(float32_t * a, float32x4x3_t b) {
   10575   vst3q_lane_f32(a, b, 3);
   10576 }
   10577 
   10578 // CHECK-LABEL: test_vst3q_lane_p16
   10579 // CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10580 void test_vst3q_lane_p16(poly16_t * a, poly16x8x3_t b) {
   10581   vst3q_lane_p16(a, b, 7);
   10582 }
   10583 
   10584 // CHECK-LABEL: test_vst3_lane_u8
   10585 // CHECK: vst3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10586 void test_vst3_lane_u8(uint8_t * a, uint8x8x3_t b) {
   10587   vst3_lane_u8(a, b, 7);
   10588 }
   10589 
   10590 // CHECK-LABEL: test_vst3_lane_u16
   10591 // CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10592 void test_vst3_lane_u16(uint16_t * a, uint16x4x3_t b) {
   10593   vst3_lane_u16(a, b, 3);
   10594 }
   10595 
   10596 // CHECK-LABEL: test_vst3_lane_u32
   10597 // CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10598 void test_vst3_lane_u32(uint32_t * a, uint32x2x3_t b) {
   10599   vst3_lane_u32(a, b, 1);
   10600 }
   10601 
   10602 // CHECK-LABEL: test_vst3_lane_s8
   10603 // CHECK: vst3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10604 void test_vst3_lane_s8(int8_t * a, int8x8x3_t b) {
   10605   vst3_lane_s8(a, b, 7);
   10606 }
   10607 
   10608 // CHECK-LABEL: test_vst3_lane_s16
   10609 // CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10610 void test_vst3_lane_s16(int16_t * a, int16x4x3_t b) {
   10611   vst3_lane_s16(a, b, 3);
   10612 }
   10613 
   10614 // CHECK-LABEL: test_vst3_lane_s32
   10615 // CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10616 void test_vst3_lane_s32(int32_t * a, int32x2x3_t b) {
   10617   vst3_lane_s32(a, b, 1);
   10618 }
   10619 
   10620 // CHECK-LABEL: test_vst3_lane_f16
   10621 // CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10622 void test_vst3_lane_f16(float16_t * a, float16x4x3_t b) {
   10623   vst3_lane_f16(a, b, 3);
   10624 }
   10625 
   10626 // CHECK-LABEL: test_vst3_lane_f32
   10627 // CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10628 void test_vst3_lane_f32(float32_t * a, float32x2x3_t b) {
   10629   vst3_lane_f32(a, b, 1);
   10630 }
   10631 
   10632 // CHECK-LABEL: test_vst3_lane_p8
   10633 // CHECK: vst3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10634 void test_vst3_lane_p8(poly8_t * a, poly8x8x3_t b) {
   10635   vst3_lane_p8(a, b, 7);
   10636 }
   10637 
   10638 // CHECK-LABEL: test_vst3_lane_p16
   10639 // CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10640 void test_vst3_lane_p16(poly16_t * a, poly16x4x3_t b) {
   10641   vst3_lane_p16(a, b, 3);
   10642 }
   10643 
   10644 
   10645 // CHECK-LABEL: test_vst4q_u8
   10646 // CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10647 void test_vst4q_u8(uint8_t * a, uint8x16x4_t b) {
   10648   vst4q_u8(a, b);
   10649 }
   10650 
   10651 // CHECK-LABEL: test_vst4q_u16
   10652 // CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10653 void test_vst4q_u16(uint16_t * a, uint16x8x4_t b) {
   10654   vst4q_u16(a, b);
   10655 }
   10656 
   10657 // CHECK-LABEL: test_vst4q_u32
   10658 // CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10659 void test_vst4q_u32(uint32_t * a, uint32x4x4_t b) {
   10660   vst4q_u32(a, b);
   10661 }
   10662 
   10663 // CHECK-LABEL: test_vst4q_s8
   10664 // CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10665 void test_vst4q_s8(int8_t * a, int8x16x4_t b) {
   10666   vst4q_s8(a, b);
   10667 }
   10668 
   10669 // CHECK-LABEL: test_vst4q_s16
   10670 // CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10671 void test_vst4q_s16(int16_t * a, int16x8x4_t b) {
   10672   vst4q_s16(a, b);
   10673 }
   10674 
   10675 // CHECK-LABEL: test_vst4q_s32
   10676 // CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10677 void test_vst4q_s32(int32_t * a, int32x4x4_t b) {
   10678   vst4q_s32(a, b);
   10679 }
   10680 
   10681 // CHECK-LABEL: test_vst4q_f16
   10682 // CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10683 void test_vst4q_f16(float16_t * a, float16x8x4_t b) {
   10684   vst4q_f16(a, b);
   10685 }
   10686 
   10687 // CHECK-LABEL: test_vst4q_f32
   10688 // CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10689 void test_vst4q_f32(float32_t * a, float32x4x4_t b) {
   10690   vst4q_f32(a, b);
   10691 }
   10692 
   10693 // CHECK-LABEL: test_vst4q_p8
   10694 // CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10695 void test_vst4q_p8(poly8_t * a, poly8x16x4_t b) {
   10696   vst4q_p8(a, b);
   10697 }
   10698 
   10699 // CHECK-LABEL: test_vst4q_p16
   10700 // CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
   10701 void test_vst4q_p16(poly16_t * a, poly16x8x4_t b) {
   10702   vst4q_p16(a, b);
   10703 }
   10704 
   10705 // CHECK-LABEL: test_vst4_u8
   10706 // CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10707 void test_vst4_u8(uint8_t * a, uint8x8x4_t b) {
   10708   vst4_u8(a, b);
   10709 }
   10710 
   10711 // CHECK-LABEL: test_vst4_u16
   10712 // CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10713 void test_vst4_u16(uint16_t * a, uint16x4x4_t b) {
   10714   vst4_u16(a, b);
   10715 }
   10716 
   10717 // CHECK-LABEL: test_vst4_u32
   10718 // CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10719 void test_vst4_u32(uint32_t * a, uint32x2x4_t b) {
   10720   vst4_u32(a, b);
   10721 }
   10722 
   10723 // CHECK-LABEL: test_vst4_u64
   10724 // CHECK: vst1.64
   10725 void test_vst4_u64(uint64_t * a, uint64x1x4_t b) {
   10726   vst4_u64(a, b);
   10727 }
   10728 
   10729 // CHECK-LABEL: test_vst4_s8
   10730 // CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10731 void test_vst4_s8(int8_t * a, int8x8x4_t b) {
   10732   vst4_s8(a, b);
   10733 }
   10734 
   10735 // CHECK-LABEL: test_vst4_s16
   10736 // CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10737 void test_vst4_s16(int16_t * a, int16x4x4_t b) {
   10738   vst4_s16(a, b);
   10739 }
   10740 
   10741 // CHECK-LABEL: test_vst4_s32
   10742 // CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10743 void test_vst4_s32(int32_t * a, int32x2x4_t b) {
   10744   vst4_s32(a, b);
   10745 }
   10746 
   10747 // CHECK-LABEL: test_vst4_s64
   10748 // CHECK: vst1.64
   10749 void test_vst4_s64(int64_t * a, int64x1x4_t b) {
   10750   vst4_s64(a, b);
   10751 }
   10752 
   10753 // CHECK-LABEL: test_vst4_f16
   10754 // CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10755 void test_vst4_f16(float16_t * a, float16x4x4_t b) {
   10756   vst4_f16(a, b);
   10757 }
   10758 
   10759 // CHECK-LABEL: test_vst4_f32
   10760 // CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10761 void test_vst4_f32(float32_t * a, float32x2x4_t b) {
   10762   vst4_f32(a, b);
   10763 }
   10764 
   10765 // CHECK-LABEL: test_vst4_p8
   10766 // CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10767 void test_vst4_p8(poly8_t * a, poly8x8x4_t b) {
   10768   vst4_p8(a, b);
   10769 }
   10770 
   10771 // CHECK-LABEL: test_vst4_p16
   10772 // CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
   10773 void test_vst4_p16(poly16_t * a, poly16x4x4_t b) {
   10774   vst4_p16(a, b);
   10775 }
   10776 
   10777 
   10778 // CHECK-LABEL: test_vst4q_lane_u16
   10779 // CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10780 void test_vst4q_lane_u16(uint16_t * a, uint16x8x4_t b) {
   10781   vst4q_lane_u16(a, b, 7);
   10782 }
   10783 
   10784 // CHECK-LABEL: test_vst4q_lane_u32
   10785 // CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10786 void test_vst4q_lane_u32(uint32_t * a, uint32x4x4_t b) {
   10787   vst4q_lane_u32(a, b, 3);
   10788 }
   10789 
   10790 // CHECK-LABEL: test_vst4q_lane_s16
   10791 // CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10792 void test_vst4q_lane_s16(int16_t * a, int16x8x4_t b) {
   10793   vst4q_lane_s16(a, b, 7);
   10794 }
   10795 
   10796 // CHECK-LABEL: test_vst4q_lane_s32
   10797 // CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10798 void test_vst4q_lane_s32(int32_t * a, int32x4x4_t b) {
   10799   vst4q_lane_s32(a, b, 3);
   10800 }
   10801 
   10802 // CHECK-LABEL: test_vst4q_lane_f16
   10803 // CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10804 void test_vst4q_lane_f16(float16_t * a, float16x8x4_t b) {
   10805   vst4q_lane_f16(a, b, 7);
   10806 }
   10807 
   10808 // CHECK-LABEL: test_vst4q_lane_f32
   10809 // CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10810 void test_vst4q_lane_f32(float32_t * a, float32x4x4_t b) {
   10811   vst4q_lane_f32(a, b, 3);
   10812 }
   10813 
   10814 // CHECK-LABEL: test_vst4q_lane_p16
   10815 // CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
   10816 void test_vst4q_lane_p16(poly16_t * a, poly16x8x4_t b) {
   10817   vst4q_lane_p16(a, b, 7);
   10818 }
   10819 
   10820 // CHECK-LABEL: test_vst4_lane_u8
   10821 // CHECK: vst4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10822 void test_vst4_lane_u8(uint8_t * a, uint8x8x4_t b) {
   10823   vst4_lane_u8(a, b, 7);
   10824 }
   10825 
   10826 // CHECK-LABEL: test_vst4_lane_u16
   10827 // CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10828 void test_vst4_lane_u16(uint16_t * a, uint16x4x4_t b) {
   10829   vst4_lane_u16(a, b, 3);
   10830 }
   10831 
   10832 // CHECK-LABEL: test_vst4_lane_u32
   10833 // CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10834 void test_vst4_lane_u32(uint32_t * a, uint32x2x4_t b) {
   10835   vst4_lane_u32(a, b, 1);
   10836 }
   10837 
   10838 // CHECK-LABEL: test_vst4_lane_s8
   10839 // CHECK: vst4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10840 void test_vst4_lane_s8(int8_t * a, int8x8x4_t b) {
   10841   vst4_lane_s8(a, b, 7);
   10842 }
   10843 
   10844 // CHECK-LABEL: test_vst4_lane_s16
   10845 // CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10846 void test_vst4_lane_s16(int16_t * a, int16x4x4_t b) {
   10847   vst4_lane_s16(a, b, 3);
   10848 }
   10849 
   10850 // CHECK-LABEL: test_vst4_lane_s32
   10851 // CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10852 void test_vst4_lane_s32(int32_t * a, int32x2x4_t b) {
   10853   vst4_lane_s32(a, b, 1);
   10854 }
   10855 
   10856 // CHECK-LABEL: test_vst4_lane_f16
   10857 // CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10858 void test_vst4_lane_f16(float16_t * a, float16x4x4_t b) {
   10859   vst4_lane_f16(a, b, 3);
   10860 }
   10861 
   10862 // CHECK-LABEL: test_vst4_lane_f32
   10863 // CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10864 void test_vst4_lane_f32(float32_t * a, float32x2x4_t b) {
   10865   vst4_lane_f32(a, b, 1);
   10866 }
   10867 
   10868 // CHECK-LABEL: test_vst4_lane_p8
   10869 // CHECK: vst4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10870 void test_vst4_lane_p8(poly8_t * a, poly8x8x4_t b) {
   10871   vst4_lane_p8(a, b, 7);
   10872 }
   10873 
   10874 // CHECK-LABEL: test_vst4_lane_p16
   10875 // CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
   10876 void test_vst4_lane_p16(poly16_t * a, poly16x4x4_t b) {
   10877   vst4_lane_p16(a, b, 3);
   10878 }
   10879 
   10880 
   10881 // CHECK-LABEL: test_vsub_s8
   10882 // CHECK: vsub.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   10883 int8x8_t test_vsub_s8(int8x8_t a, int8x8_t b) {
   10884   return vsub_s8(a, b);
   10885 }
   10886 
   10887 // CHECK-LABEL: test_vsub_s16
   10888 // CHECK: vsub.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   10889 int16x4_t test_vsub_s16(int16x4_t a, int16x4_t b) {
   10890   return vsub_s16(a, b);
   10891 }
   10892 
   10893 // CHECK-LABEL: test_vsub_s32
   10894 // CHECK: vsub.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   10895 int32x2_t test_vsub_s32(int32x2_t a, int32x2_t b) {
   10896   return vsub_s32(a, b);
   10897 }
   10898 
   10899 // CHECK-LABEL: test_vsub_s64
   10900 // CHECK: vsub.i64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   10901 int64x1_t test_vsub_s64(int64x1_t a, int64x1_t b) {
   10902   return vsub_s64(a, b);
   10903 }
   10904 
   10905 // CHECK-LABEL: test_vsub_f32
   10906 // CHECK: vsub.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   10907 float32x2_t test_vsub_f32(float32x2_t a, float32x2_t b) {
   10908   return vsub_f32(a, b);
   10909 }
   10910 
   10911 // CHECK-LABEL: test_vsub_u8
   10912 // CHECK: vsub.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   10913 uint8x8_t test_vsub_u8(uint8x8_t a, uint8x8_t b) {
   10914   return vsub_u8(a, b);
   10915 }
   10916 
   10917 // CHECK-LABEL: test_vsub_u16
   10918 // CHECK: vsub.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   10919 uint16x4_t test_vsub_u16(uint16x4_t a, uint16x4_t b) {
   10920   return vsub_u16(a, b);
   10921 }
   10922 
   10923 // CHECK-LABEL: test_vsub_u32
   10924 // CHECK: vsub.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   10925 uint32x2_t test_vsub_u32(uint32x2_t a, uint32x2_t b) {
   10926   return vsub_u32(a, b);
   10927 }
   10928 
   10929 // CHECK-LABEL: test_vsub_u64
   10930 // CHECK: vsub.i64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   10931 uint64x1_t test_vsub_u64(uint64x1_t a, uint64x1_t b) {
   10932   return vsub_u64(a, b);
   10933 }
   10934 
   10935 // CHECK-LABEL: test_vsubq_s8
   10936 // CHECK: vsub.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10937 int8x16_t test_vsubq_s8(int8x16_t a, int8x16_t b) {
   10938   return vsubq_s8(a, b);
   10939 }
   10940 
   10941 // CHECK-LABEL: test_vsubq_s16
   10942 // CHECK: vsub.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10943 int16x8_t test_vsubq_s16(int16x8_t a, int16x8_t b) {
   10944   return vsubq_s16(a, b);
   10945 }
   10946 
   10947 // CHECK-LABEL: test_vsubq_s32
   10948 // CHECK: vsub.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10949 int32x4_t test_vsubq_s32(int32x4_t a, int32x4_t b) {
   10950   return vsubq_s32(a, b);
   10951 }
   10952 
   10953 // CHECK-LABEL: test_vsubq_s64
   10954 // CHECK: vsub.i64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10955 int64x2_t test_vsubq_s64(int64x2_t a, int64x2_t b) {
   10956   return vsubq_s64(a, b);
   10957 }
   10958 
   10959 // CHECK-LABEL: test_vsubq_f32
   10960 // CHECK: vsub.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10961 float32x4_t test_vsubq_f32(float32x4_t a, float32x4_t b) {
   10962   return vsubq_f32(a, b);
   10963 }
   10964 
   10965 // CHECK-LABEL: test_vsubq_u8
   10966 // CHECK: vsub.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10967 uint8x16_t test_vsubq_u8(uint8x16_t a, uint8x16_t b) {
   10968   return vsubq_u8(a, b);
   10969 }
   10970 
   10971 // CHECK-LABEL: test_vsubq_u16
   10972 // CHECK: vsub.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10973 uint16x8_t test_vsubq_u16(uint16x8_t a, uint16x8_t b) {
   10974   return vsubq_u16(a, b);
   10975 }
   10976 
   10977 // CHECK-LABEL: test_vsubq_u32
   10978 // CHECK: vsub.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10979 uint32x4_t test_vsubq_u32(uint32x4_t a, uint32x4_t b) {
   10980   return vsubq_u32(a, b);
   10981 }
   10982 
   10983 // CHECK-LABEL: test_vsubq_u64
   10984 // CHECK: vsub.i64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10985 uint64x2_t test_vsubq_u64(uint64x2_t a, uint64x2_t b) {
   10986   return vsubq_u64(a, b);
   10987 }
   10988 
   10989 
   10990 // CHECK-LABEL: test_vsubhn_s16
   10991 // CHECK: vsubhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10992 int8x8_t test_vsubhn_s16(int16x8_t a, int16x8_t b) {
   10993   return vsubhn_s16(a, b);
   10994 }
   10995 
   10996 // CHECK-LABEL: test_vsubhn_s32
   10997 // CHECK: vsubhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   10998 int16x4_t test_vsubhn_s32(int32x4_t a, int32x4_t b) {
   10999   return vsubhn_s32(a, b);
   11000 }
   11001 
   11002 // CHECK-LABEL: test_vsubhn_s64
   11003 // CHECK: vsubhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11004 int32x2_t test_vsubhn_s64(int64x2_t a, int64x2_t b) {
   11005   return vsubhn_s64(a, b);
   11006 }
   11007 
   11008 // CHECK-LABEL: test_vsubhn_u16
   11009 // CHECK: vsubhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11010 uint8x8_t test_vsubhn_u16(uint16x8_t a, uint16x8_t b) {
   11011   return vsubhn_u16(a, b);
   11012 }
   11013 
   11014 // CHECK-LABEL: test_vsubhn_u32
   11015 // CHECK: vsubhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11016 uint16x4_t test_vsubhn_u32(uint32x4_t a, uint32x4_t b) {
   11017   return vsubhn_u32(a, b);
   11018 }
   11019 
   11020 // CHECK-LABEL: test_vsubhn_u64
   11021 // CHECK: vsubhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11022 uint32x2_t test_vsubhn_u64(uint64x2_t a, uint64x2_t b) {
   11023   return vsubhn_u64(a, b);
   11024 }
   11025 
   11026 
   11027 // CHECK-LABEL: test_vsubl_s8
   11028 // CHECK: vsubl.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11029 int16x8_t test_vsubl_s8(int8x8_t a, int8x8_t b) {
   11030   return vsubl_s8(a, b);
   11031 }
   11032 
   11033 // CHECK-LABEL: test_vsubl_s16
   11034 // CHECK: vsubl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11035 int32x4_t test_vsubl_s16(int16x4_t a, int16x4_t b) {
   11036   return vsubl_s16(a, b);
   11037 }
   11038 
   11039 // CHECK-LABEL: test_vsubl_s32
   11040 // CHECK: vsubl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11041 int64x2_t test_vsubl_s32(int32x2_t a, int32x2_t b) {
   11042   return vsubl_s32(a, b);
   11043 }
   11044 
   11045 // CHECK-LABEL: test_vsubl_u8
   11046 // CHECK: vsubl.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11047 uint16x8_t test_vsubl_u8(uint8x8_t a, uint8x8_t b) {
   11048   return vsubl_u8(a, b);
   11049 }
   11050 
   11051 // CHECK-LABEL: test_vsubl_u16
   11052 // CHECK: vsubl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11053 uint32x4_t test_vsubl_u16(uint16x4_t a, uint16x4_t b) {
   11054   return vsubl_u16(a, b);
   11055 }
   11056 
   11057 // CHECK-LABEL: test_vsubl_u32
   11058 // CHECK: vsubl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11059 uint64x2_t test_vsubl_u32(uint32x2_t a, uint32x2_t b) {
   11060   return vsubl_u32(a, b);
   11061 }
   11062 
   11063 
   11064 // CHECK-LABEL: test_vsubw_s8
   11065 // CHECK: vsubw.s8 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
   11066 int16x8_t test_vsubw_s8(int16x8_t a, int8x8_t b) {
   11067   return vsubw_s8(a, b);
   11068 }
   11069 
   11070 // CHECK-LABEL: test_vsubw_s16
   11071 // CHECK: vsubw.s16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
   11072 int32x4_t test_vsubw_s16(int32x4_t a, int16x4_t b) {
   11073   return vsubw_s16(a, b);
   11074 }
   11075 
   11076 // CHECK-LABEL: test_vsubw_s32
   11077 // CHECK: vsubw.s32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
   11078 int64x2_t test_vsubw_s32(int64x2_t a, int32x2_t b) {
   11079   return vsubw_s32(a, b);
   11080 }
   11081 
   11082 // CHECK-LABEL: test_vsubw_u8
   11083 // CHECK: vsubw.u8 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
   11084 uint16x8_t test_vsubw_u8(uint16x8_t a, uint8x8_t b) {
   11085   return vsubw_u8(a, b);
   11086 }
   11087 
   11088 // CHECK-LABEL: test_vsubw_u16
   11089 // CHECK: vsubw.u16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
   11090 uint32x4_t test_vsubw_u16(uint32x4_t a, uint16x4_t b) {
   11091   return vsubw_u16(a, b);
   11092 }
   11093 
   11094 // CHECK-LABEL: test_vsubw_u32
   11095 // CHECK: vsubw.u32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
   11096 uint64x2_t test_vsubw_u32(uint64x2_t a, uint32x2_t b) {
   11097   return vsubw_u32(a, b);
   11098 }
   11099 
   11100 
   11101 // CHECK-LABEL: test_vtbl1_u8
   11102 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
   11103 uint8x8_t test_vtbl1_u8(uint8x8_t a, uint8x8_t b) {
   11104   return vtbl1_u8(a, b);
   11105 }
   11106 
   11107 // CHECK-LABEL: test_vtbl1_s8
   11108 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
   11109 int8x8_t test_vtbl1_s8(int8x8_t a, int8x8_t b) {
   11110   return vtbl1_s8(a, b);
   11111 }
   11112 
   11113 // CHECK-LABEL: test_vtbl1_p8
   11114 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
   11115 poly8x8_t test_vtbl1_p8(poly8x8_t a, uint8x8_t b) {
   11116   return vtbl1_p8(a, b);
   11117 }
   11118 
   11119 
   11120 // CHECK-LABEL: test_vtbl2_u8
   11121 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11122 uint8x8_t test_vtbl2_u8(uint8x8x2_t a, uint8x8_t b) {
   11123   return vtbl2_u8(a, b);
   11124 }
   11125 
   11126 // CHECK-LABEL: test_vtbl2_s8
   11127 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11128 int8x8_t test_vtbl2_s8(int8x8x2_t a, int8x8_t b) {
   11129   return vtbl2_s8(a, b);
   11130 }
   11131 
   11132 // CHECK-LABEL: test_vtbl2_p8
   11133 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11134 poly8x8_t test_vtbl2_p8(poly8x8x2_t a, uint8x8_t b) {
   11135   return vtbl2_p8(a, b);
   11136 }
   11137 
   11138 
   11139 // CHECK-LABEL: test_vtbl3_u8
   11140 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11141 uint8x8_t test_vtbl3_u8(uint8x8x3_t a, uint8x8_t b) {
   11142   return vtbl3_u8(a, b);
   11143 }
   11144 
   11145 // CHECK-LABEL: test_vtbl3_s8
   11146 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11147 int8x8_t test_vtbl3_s8(int8x8x3_t a, int8x8_t b) {
   11148   return vtbl3_s8(a, b);
   11149 }
   11150 
   11151 // CHECK-LABEL: test_vtbl3_p8
   11152 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11153 poly8x8_t test_vtbl3_p8(poly8x8x3_t a, uint8x8_t b) {
   11154   return vtbl3_p8(a, b);
   11155 }
   11156 
   11157 
   11158 // CHECK-LABEL: test_vtbl4_u8
   11159 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11160 uint8x8_t test_vtbl4_u8(uint8x8x4_t a, uint8x8_t b) {
   11161   return vtbl4_u8(a, b);
   11162 }
   11163 
   11164 // CHECK-LABEL: test_vtbl4_s8
   11165 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11166 int8x8_t test_vtbl4_s8(int8x8x4_t a, int8x8_t b) {
   11167   return vtbl4_s8(a, b);
   11168 }
   11169 
   11170 // CHECK-LABEL: test_vtbl4_p8
   11171 // CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11172 poly8x8_t test_vtbl4_p8(poly8x8x4_t a, uint8x8_t b) {
   11173   return vtbl4_p8(a, b);
   11174 }
   11175 
   11176 
   11177 // CHECK-LABEL: test_vtbx1_u8
   11178 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
   11179 uint8x8_t test_vtbx1_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c) {
   11180   return vtbx1_u8(a, b, c);
   11181 }
   11182 
   11183 // CHECK-LABEL: test_vtbx1_s8
   11184 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
   11185 int8x8_t test_vtbx1_s8(int8x8_t a, int8x8_t b, int8x8_t c) {
   11186   return vtbx1_s8(a, b, c);
   11187 }
   11188 
   11189 // CHECK-LABEL: test_vtbx1_p8
   11190 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
   11191 poly8x8_t test_vtbx1_p8(poly8x8_t a, poly8x8_t b, uint8x8_t c) {
   11192   return vtbx1_p8(a, b, c);
   11193 }
   11194 
   11195 
   11196 // CHECK-LABEL: test_vtbx2_u8
   11197 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11198 uint8x8_t test_vtbx2_u8(uint8x8_t a, uint8x8x2_t b, uint8x8_t c) {
   11199   return vtbx2_u8(a, b, c);
   11200 }
   11201 
   11202 // CHECK-LABEL: test_vtbx2_s8
   11203 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11204 int8x8_t test_vtbx2_s8(int8x8_t a, int8x8x2_t b, int8x8_t c) {
   11205   return vtbx2_s8(a, b, c);
   11206 }
   11207 
   11208 // CHECK-LABEL: test_vtbx2_p8
   11209 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11210 poly8x8_t test_vtbx2_p8(poly8x8_t a, poly8x8x2_t b, uint8x8_t c) {
   11211   return vtbx2_p8(a, b, c);
   11212 }
   11213 
   11214 
   11215 // CHECK-LABEL: test_vtbx3_u8
   11216 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11217 uint8x8_t test_vtbx3_u8(uint8x8_t a, uint8x8x3_t b, uint8x8_t c) {
   11218   return vtbx3_u8(a, b, c);
   11219 }
   11220 
   11221 // CHECK-LABEL: test_vtbx3_s8
   11222 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11223 int8x8_t test_vtbx3_s8(int8x8_t a, int8x8x3_t b, int8x8_t c) {
   11224   return vtbx3_s8(a, b, c);
   11225 }
   11226 
   11227 // CHECK-LABEL: test_vtbx3_p8
   11228 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11229 poly8x8_t test_vtbx3_p8(poly8x8_t a, poly8x8x3_t b, uint8x8_t c) {
   11230   return vtbx3_p8(a, b, c);
   11231 }
   11232 
   11233 
   11234 // CHECK-LABEL: test_vtbx4_u8
   11235 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11236 uint8x8_t test_vtbx4_u8(uint8x8_t a, uint8x8x4_t b, uint8x8_t c) {
   11237   return vtbx4_u8(a, b, c);
   11238 }
   11239 
   11240 // CHECK-LABEL: test_vtbx4_s8
   11241 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11242 int8x8_t test_vtbx4_s8(int8x8_t a, int8x8x4_t b, int8x8_t c) {
   11243   return vtbx4_s8(a, b, c);
   11244 }
   11245 
   11246 // CHECK-LABEL: test_vtbx4_p8
   11247 // CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
   11248 poly8x8_t test_vtbx4_p8(poly8x8_t a, poly8x8x4_t b, uint8x8_t c) {
   11249   return vtbx4_p8(a, b, c);
   11250 }
   11251 
   11252 
   11253 // CHECK-LABEL: test_vtrn_s8
   11254 // CHECK: vtrn.8 d{{[0-9]+}}, d{{[0-9]+}}
   11255 int8x8x2_t test_vtrn_s8(int8x8_t a, int8x8_t b) {
   11256   return vtrn_s8(a, b);
   11257 }
   11258 
   11259 // CHECK-LABEL: test_vtrn_s16
   11260 // CHECK: vtrn.16 d{{[0-9]+}}, d{{[0-9]+}}
   11261 int16x4x2_t test_vtrn_s16(int16x4_t a, int16x4_t b) {
   11262   return vtrn_s16(a, b);
   11263 }
   11264 
   11265 // CHECK-LABEL: test_vtrn_s32
   11266 // CHECK: vtrn.32 d{{[0-9]+}}, d{{[0-9]+}}
   11267 int32x2x2_t test_vtrn_s32(int32x2_t a, int32x2_t b) {
   11268   return vtrn_s32(a, b);
   11269 }
   11270 
   11271 // CHECK-LABEL: test_vtrn_u8
   11272 // CHECK: vtrn.8 d{{[0-9]+}}, d{{[0-9]+}}
   11273 uint8x8x2_t test_vtrn_u8(uint8x8_t a, uint8x8_t b) {
   11274   return vtrn_u8(a, b);
   11275 }
   11276 
   11277 // CHECK-LABEL: test_vtrn_u16
   11278 // CHECK: vtrn.16 d{{[0-9]+}}, d{{[0-9]+}}
   11279 uint16x4x2_t test_vtrn_u16(uint16x4_t a, uint16x4_t b) {
   11280   return vtrn_u16(a, b);
   11281 }
   11282 
   11283 // CHECK-LABEL: test_vtrn_u32
   11284 // CHECK: vtrn.32 d{{[0-9]+}}, d{{[0-9]+}}
   11285 uint32x2x2_t test_vtrn_u32(uint32x2_t a, uint32x2_t b) {
   11286   return vtrn_u32(a, b);
   11287 }
   11288 
   11289 // CHECK-LABEL: test_vtrn_f32
   11290 // CHECK: vtrn.32 d{{[0-9]+}}, d{{[0-9]+}}
   11291 float32x2x2_t test_vtrn_f32(float32x2_t a, float32x2_t b) {
   11292   return vtrn_f32(a, b);
   11293 }
   11294 
   11295 // CHECK-LABEL: test_vtrn_p8
   11296 // CHECK: vtrn.8 d{{[0-9]+}}, d{{[0-9]+}}
   11297 poly8x8x2_t test_vtrn_p8(poly8x8_t a, poly8x8_t b) {
   11298   return vtrn_p8(a, b);
   11299 }
   11300 
   11301 // CHECK-LABEL: test_vtrn_p16
   11302 // CHECK: vtrn.16 d{{[0-9]+}}, d{{[0-9]+}}
   11303 poly16x4x2_t test_vtrn_p16(poly16x4_t a, poly16x4_t b) {
   11304   return vtrn_p16(a, b);
   11305 }
   11306 
   11307 // CHECK-LABEL: test_vtrnq_s8
   11308 // CHECK: vtrn.8 q{{[0-9]+}}, q{{[0-9]+}}
   11309 int8x16x2_t test_vtrnq_s8(int8x16_t a, int8x16_t b) {
   11310   return vtrnq_s8(a, b);
   11311 }
   11312 
   11313 // CHECK-LABEL: test_vtrnq_s16
   11314 // CHECK: vtrn.16 q{{[0-9]+}}, q{{[0-9]+}}
   11315 int16x8x2_t test_vtrnq_s16(int16x8_t a, int16x8_t b) {
   11316   return vtrnq_s16(a, b);
   11317 }
   11318 
   11319 // CHECK-LABEL: test_vtrnq_s32
   11320 // CHECK: vtrn.32 q{{[0-9]+}}, q{{[0-9]+}}
   11321 int32x4x2_t test_vtrnq_s32(int32x4_t a, int32x4_t b) {
   11322   return vtrnq_s32(a, b);
   11323 }
   11324 
   11325 // CHECK-LABEL: test_vtrnq_u8
   11326 // CHECK: vtrn.8 q{{[0-9]+}}, q{{[0-9]+}}
   11327 uint8x16x2_t test_vtrnq_u8(uint8x16_t a, uint8x16_t b) {
   11328   return vtrnq_u8(a, b);
   11329 }
   11330 
   11331 // CHECK-LABEL: test_vtrnq_u16
   11332 // CHECK: vtrn.16 q{{[0-9]+}}, q{{[0-9]+}}
   11333 uint16x8x2_t test_vtrnq_u16(uint16x8_t a, uint16x8_t b) {
   11334   return vtrnq_u16(a, b);
   11335 }
   11336 
   11337 // CHECK-LABEL: test_vtrnq_u32
   11338 // CHECK: vtrn.32 q{{[0-9]+}}, q{{[0-9]+}}
   11339 uint32x4x2_t test_vtrnq_u32(uint32x4_t a, uint32x4_t b) {
   11340   return vtrnq_u32(a, b);
   11341 }
   11342 
   11343 // CHECK-LABEL: test_vtrnq_f32
   11344 // CHECK: vtrn.32 q{{[0-9]+}}, q{{[0-9]+}}
   11345 float32x4x2_t test_vtrnq_f32(float32x4_t a, float32x4_t b) {
   11346   return vtrnq_f32(a, b);
   11347 }
   11348 
   11349 // CHECK-LABEL: test_vtrnq_p8
   11350 // CHECK: vtrn.8 q{{[0-9]+}}, q{{[0-9]+}}
   11351 poly8x16x2_t test_vtrnq_p8(poly8x16_t a, poly8x16_t b) {
   11352   return vtrnq_p8(a, b);
   11353 }
   11354 
   11355 // CHECK-LABEL: test_vtrnq_p16
   11356 // CHECK: vtrn.16 q{{[0-9]+}}, q{{[0-9]+}}
   11357 poly16x8x2_t test_vtrnq_p16(poly16x8_t a, poly16x8_t b) {
   11358   return vtrnq_p16(a, b);
   11359 }
   11360 
   11361 
   11362 // CHECK-LABEL: test_vtst_s8
   11363 // CHECK: vtst.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11364 uint8x8_t test_vtst_s8(int8x8_t a, int8x8_t b) {
   11365   return vtst_s8(a, b);
   11366 }
   11367 
   11368 // CHECK-LABEL: test_vtst_s16
   11369 // CHECK: vtst.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11370 uint16x4_t test_vtst_s16(int16x4_t a, int16x4_t b) {
   11371   return vtst_s16(a, b);
   11372 }
   11373 
   11374 // CHECK-LABEL: test_vtst_s32
   11375 // CHECK: vtst.32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11376 uint32x2_t test_vtst_s32(int32x2_t a, int32x2_t b) {
   11377   return vtst_s32(a, b);
   11378 }
   11379 
   11380 // CHECK-LABEL: test_vtst_u8
   11381 // CHECK: vtst.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11382 uint8x8_t test_vtst_u8(uint8x8_t a, uint8x8_t b) {
   11383   return vtst_u8(a, b);
   11384 }
   11385 
   11386 // CHECK-LABEL: test_vtst_u16
   11387 // CHECK: vtst.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11388 uint16x4_t test_vtst_u16(uint16x4_t a, uint16x4_t b) {
   11389   return vtst_u16(a, b);
   11390 }
   11391 
   11392 // CHECK-LABEL: test_vtst_u32
   11393 // CHECK: vtst.32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11394 uint32x2_t test_vtst_u32(uint32x2_t a, uint32x2_t b) {
   11395   return vtst_u32(a, b);
   11396 }
   11397 
   11398 // CHECK-LABEL: test_vtst_p8
   11399 // CHECK: vtst.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11400 uint8x8_t test_vtst_p8(poly8x8_t a, poly8x8_t b) {
   11401   return vtst_p8(a, b);
   11402 }
   11403 
   11404 // CHECK-LABEL: test_vtst_p16
   11405 // CHECK: vtst.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11406 uint16x4_t test_vtst_p16(poly16x4_t a, poly16x4_t b) {
   11407   return vtst_p16(a, b);
   11408 }
   11409 
   11410 // CHECK-LABEL: test_vtstq_s8
   11411 // CHECK: vtst.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11412 uint8x16_t test_vtstq_s8(int8x16_t a, int8x16_t b) {
   11413   return vtstq_s8(a, b);
   11414 }
   11415 
   11416 // CHECK-LABEL: test_vtstq_s16
   11417 // CHECK: vtst.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11418 uint16x8_t test_vtstq_s16(int16x8_t a, int16x8_t b) {
   11419   return vtstq_s16(a, b);
   11420 }
   11421 
   11422 // CHECK-LABEL: test_vtstq_s32
   11423 // CHECK: vtst.32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11424 uint32x4_t test_vtstq_s32(int32x4_t a, int32x4_t b) {
   11425   return vtstq_s32(a, b);
   11426 }
   11427 
   11428 // CHECK-LABEL: test_vtstq_u8
   11429 // CHECK: vtst.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11430 uint8x16_t test_vtstq_u8(uint8x16_t a, uint8x16_t b) {
   11431   return vtstq_u8(a, b);
   11432 }
   11433 
   11434 // CHECK-LABEL: test_vtstq_u16
   11435 // CHECK: vtst.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11436 uint16x8_t test_vtstq_u16(uint16x8_t a, uint16x8_t b) {
   11437   return vtstq_u16(a, b);
   11438 }
   11439 
   11440 // CHECK-LABEL: test_vtstq_u32
   11441 // CHECK: vtst.32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11442 uint32x4_t test_vtstq_u32(uint32x4_t a, uint32x4_t b) {
   11443   return vtstq_u32(a, b);
   11444 }
   11445 
   11446 // CHECK-LABEL: test_vtstq_p8
   11447 // CHECK: vtst.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11448 uint8x16_t test_vtstq_p8(poly8x16_t a, poly8x16_t b) {
   11449   return vtstq_p8(a, b);
   11450 }
   11451 
   11452 // CHECK-LABEL: test_vtstq_p16
   11453 // CHECK: vtst.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
   11454 uint16x8_t test_vtstq_p16(poly16x8_t a, poly16x8_t b) {
   11455   return vtstq_p16(a, b);
   11456 }
   11457 
   11458 
   11459 // CHECK-LABEL: test_vuzp_s8
   11460 // CHECK: vuzp.8 d{{[0-9]+}}, d{{[0-9]+}}
   11461 int8x8x2_t test_vuzp_s8(int8x8_t a, int8x8_t b) {
   11462   return vuzp_s8(a, b);
   11463 }
   11464 
   11465 // CHECK-LABEL: test_vuzp_s16
   11466 // CHECK: vuzp.16 d{{[0-9]+}}, d{{[0-9]+}}
   11467 int16x4x2_t test_vuzp_s16(int16x4_t a, int16x4_t b) {
   11468   return vuzp_s16(a, b);
   11469 }
   11470 
   11471 // CHECK-LABEL: test_vuzp_s32
   11472 // CHECK: {{vtrn|vuzp}}.32 d{{[0-9]+}}, d{{[0-9]+}}
   11473 int32x2x2_t test_vuzp_s32(int32x2_t a, int32x2_t b) {
   11474   return vuzp_s32(a, b);
   11475 }
   11476 
   11477 // CHECK-LABEL: test_vuzp_u8
   11478 // CHECK: vuzp.8 d{{[0-9]+}}, d{{[0-9]+}}
   11479 uint8x8x2_t test_vuzp_u8(uint8x8_t a, uint8x8_t b) {
   11480   return vuzp_u8(a, b);
   11481 }
   11482 
   11483 // CHECK-LABEL: test_vuzp_u16
   11484 // CHECK: vuzp.16 d{{[0-9]+}}, d{{[0-9]+}}
   11485 uint16x4x2_t test_vuzp_u16(uint16x4_t a, uint16x4_t b) {
   11486   return vuzp_u16(a, b);
   11487 }
   11488 
   11489 // CHECK-LABEL: test_vuzp_u32
   11490 // CHECK: {{vtrn|vuzp}}.32 d{{[0-9]+}}, d{{[0-9]+}}
   11491 uint32x2x2_t test_vuzp_u32(uint32x2_t a, uint32x2_t b) {
   11492   return vuzp_u32(a, b);
   11493 }
   11494 
   11495 // CHECK-LABEL: test_vuzp_f32
   11496 // CHECK: {{vtrn|vuzp}}.32 d{{[0-9]+}}, d{{[0-9]+}}
   11497 float32x2x2_t test_vuzp_f32(float32x2_t a, float32x2_t b) {
   11498   return vuzp_f32(a, b);
   11499 }
   11500 
   11501 // CHECK-LABEL: test_vuzp_p8
   11502 // CHECK: vuzp.8 d{{[0-9]+}}, d{{[0-9]+}}
   11503 poly8x8x2_t test_vuzp_p8(poly8x8_t a, poly8x8_t b) {
   11504   return vuzp_p8(a, b);
   11505 }
   11506 
   11507 // CHECK-LABEL: test_vuzp_p16
   11508 // CHECK: vuzp.16 d{{[0-9]+}}, d{{[0-9]+}}
   11509 poly16x4x2_t test_vuzp_p16(poly16x4_t a, poly16x4_t b) {
   11510   return vuzp_p16(a, b);
   11511 }
   11512 
   11513 // CHECK-LABEL: test_vuzpq_s8
   11514 // CHECK: vuzp.8 q{{[0-9]+}}, q{{[0-9]+}}
   11515 int8x16x2_t test_vuzpq_s8(int8x16_t a, int8x16_t b) {
   11516   return vuzpq_s8(a, b);
   11517 }
   11518 
   11519 // CHECK-LABEL: test_vuzpq_s16
   11520 // CHECK: vuzp.16 q{{[0-9]+}}, q{{[0-9]+}}
   11521 int16x8x2_t test_vuzpq_s16(int16x8_t a, int16x8_t b) {
   11522   return vuzpq_s16(a, b);
   11523 }
   11524 
   11525 // CHECK-LABEL: test_vuzpq_s32
   11526 // CHECK: {{vtrn|vuzp}}.32 q{{[0-9]+}}, q{{[0-9]+}}
   11527 int32x4x2_t test_vuzpq_s32(int32x4_t a, int32x4_t b) {
   11528   return vuzpq_s32(a, b);
   11529 }
   11530 
   11531 // CHECK-LABEL: test_vuzpq_u8
   11532 // CHECK: vuzp.8 q{{[0-9]+}}, q{{[0-9]+}}
   11533 uint8x16x2_t test_vuzpq_u8(uint8x16_t a, uint8x16_t b) {
   11534   return vuzpq_u8(a, b);
   11535 }
   11536 
   11537 // CHECK-LABEL: test_vuzpq_u16
   11538 // CHECK: vuzp.16 q{{[0-9]+}}, q{{[0-9]+}}
   11539 uint16x8x2_t test_vuzpq_u16(uint16x8_t a, uint16x8_t b) {
   11540   return vuzpq_u16(a, b);
   11541 }
   11542 
   11543 // CHECK-LABEL: test_vuzpq_u32
   11544 // CHECK: {{vtrn|vuzp}}.32 q{{[0-9]+}}, q{{[0-9]+}}
   11545 uint32x4x2_t test_vuzpq_u32(uint32x4_t a, uint32x4_t b) {
   11546   return vuzpq_u32(a, b);
   11547 }
   11548 
   11549 // CHECK-LABEL: test_vuzpq_f32
   11550 // CHECK: {{vtrn|vuzp}}.32 q{{[0-9]+}}, q{{[0-9]+}}
   11551 float32x4x2_t test_vuzpq_f32(float32x4_t a, float32x4_t b) {
   11552   return vuzpq_f32(a, b);
   11553 }
   11554 
   11555 // CHECK-LABEL: test_vuzpq_p8
   11556 // CHECK: vuzp.8 q{{[0-9]+}}, q{{[0-9]+}}
   11557 poly8x16x2_t test_vuzpq_p8(poly8x16_t a, poly8x16_t b) {
   11558   return vuzpq_p8(a, b);
   11559 }
   11560 
   11561 // CHECK-LABEL: test_vuzpq_p16
   11562 // CHECK: vuzp.16 q{{[0-9]+}}, q{{[0-9]+}}
   11563 poly16x8x2_t test_vuzpq_p16(poly16x8_t a, poly16x8_t b) {
   11564   return vuzpq_p16(a, b);
   11565 }
   11566 
   11567 
   11568 // CHECK-LABEL: test_vzip_s8
   11569 // CHECK: vzip.8 d{{[0-9]+}}, d{{[0-9]+}}
   11570 int8x8x2_t test_vzip_s8(int8x8_t a, int8x8_t b) {
   11571   return vzip_s8(a, b);
   11572 }
   11573 
   11574 // CHECK-LABEL: test_vzip_s16
   11575 // CHECK: vzip.16 d{{[0-9]+}}, d{{[0-9]+}}
   11576 int16x4x2_t test_vzip_s16(int16x4_t a, int16x4_t b) {
   11577   return vzip_s16(a, b);
   11578 }
   11579 
   11580 // CHECK-LABEL: test_vzip_s32
   11581 // CHECK: {{vtrn|vzip}}.32 d{{[0-9]+}}, d{{[0-9]+}}
   11582 int32x2x2_t test_vzip_s32(int32x2_t a, int32x2_t b) {
   11583   return vzip_s32(a, b);
   11584 }
   11585 
   11586 // CHECK-LABEL: test_vzip_u8
   11587 // CHECK: vzip.8 d{{[0-9]+}}, d{{[0-9]+}}
   11588 uint8x8x2_t test_vzip_u8(uint8x8_t a, uint8x8_t b) {
   11589   return vzip_u8(a, b);
   11590 }
   11591 
   11592 // CHECK-LABEL: test_vzip_u16
   11593 // CHECK: vzip.16 d{{[0-9]+}}, d{{[0-9]+}}
   11594 uint16x4x2_t test_vzip_u16(uint16x4_t a, uint16x4_t b) {
   11595   return vzip_u16(a, b);
   11596 }
   11597 
   11598 // CHECK-LABEL: test_vzip_u32
   11599 // CHECK: {{vtrn|vzip}}.32 d{{[0-9]+}}, d{{[0-9]+}}
   11600 uint32x2x2_t test_vzip_u32(uint32x2_t a, uint32x2_t b) {
   11601   return vzip_u32(a, b);
   11602 }
   11603 
   11604 // CHECK-LABEL: test_vzip_f32
   11605 // CHECK: {{vtrn|vzip}}.32 d{{[0-9]+}}, d{{[0-9]+}}
   11606 float32x2x2_t test_vzip_f32(float32x2_t a, float32x2_t b) {
   11607   return vzip_f32(a, b);
   11608 }
   11609 
   11610 // CHECK-LABEL: test_vzip_p8
   11611 // CHECK: vzip.8 d{{[0-9]+}}, d{{[0-9]+}}
   11612 poly8x8x2_t test_vzip_p8(poly8x8_t a, poly8x8_t b) {
   11613   return vzip_p8(a, b);
   11614 }
   11615 
   11616 // CHECK-LABEL: test_vzip_p16
   11617 // CHECK: vzip.16 d{{[0-9]+}}, d{{[0-9]+}}
   11618 poly16x4x2_t test_vzip_p16(poly16x4_t a, poly16x4_t b) {
   11619   return vzip_p16(a, b);
   11620 }
   11621 
   11622 // CHECK-LABEL: test_vzipq_s8
   11623 // CHECK: vzip.8 q{{[0-9]+}}, q{{[0-9]+}}
   11624 int8x16x2_t test_vzipq_s8(int8x16_t a, int8x16_t b) {
   11625   return vzipq_s8(a, b);
   11626 }
   11627 
   11628 // CHECK-LABEL: test_vzipq_s16
   11629 // CHECK: vzip.16 q{{[0-9]+}}, q{{[0-9]+}}
   11630 int16x8x2_t test_vzipq_s16(int16x8_t a, int16x8_t b) {
   11631   return vzipq_s16(a, b);
   11632 }
   11633 
   11634 // CHECK-LABEL: test_vzipq_s32
   11635 // CHECK: {{vtrn|vzip}}.32 q{{[0-9]+}}, q{{[0-9]+}}
   11636 int32x4x2_t test_vzipq_s32(int32x4_t a, int32x4_t b) {
   11637   return vzipq_s32(a, b);
   11638 }
   11639 
   11640 // CHECK-LABEL: test_vzipq_u8
   11641 // CHECK: vzip.8 q{{[0-9]+}}, q{{[0-9]+}}
   11642 uint8x16x2_t test_vzipq_u8(uint8x16_t a, uint8x16_t b) {
   11643   return vzipq_u8(a, b);
   11644 }
   11645 
   11646 // CHECK-LABEL: test_vzipq_u16
   11647 // CHECK: vzip.16 q{{[0-9]+}}, q{{[0-9]+}}
   11648 uint16x8x2_t test_vzipq_u16(uint16x8_t a, uint16x8_t b) {
   11649   return vzipq_u16(a, b);
   11650 }
   11651 
   11652 // CHECK-LABEL: test_vzipq_u32
   11653 // CHECK: {{vtrn|vzip}}.32 q{{[0-9]+}}, q{{[0-9]+}}
   11654 uint32x4x2_t test_vzipq_u32(uint32x4_t a, uint32x4_t b) {
   11655   return vzipq_u32(a, b);
   11656 }
   11657 
   11658 // CHECK-LABEL: test_vzipq_f32
   11659 // CHECK: {{vtrn|vzip}}.32 q{{[0-9]+}}, q{{[0-9]+}}
   11660 float32x4x2_t test_vzipq_f32(float32x4_t a, float32x4_t b) {
   11661   return vzipq_f32(a, b);
   11662 }
   11663 
   11664 // CHECK-LABEL: test_vzipq_p8
   11665 // CHECK: vzip.8 q{{[0-9]+}}, q{{[0-9]+}}
   11666 poly8x16x2_t test_vzipq_p8(poly8x16_t a, poly8x16_t b) {
   11667   return vzipq_p8(a, b);
   11668 }
   11669 
   11670 // CHECK-LABEL: test_vzipq_p16
   11671 // CHECK: vzip.16 q{{[0-9]+}}, q{{[0-9]+}}
   11672 poly16x8x2_t test_vzipq_p16(poly16x8_t a, poly16x8_t b) {
   11673   return vzipq_p16(a, b);
   11674 }
   11675 
   11676 
   11677