Home | History | Annotate | Download | only in CodeGen
      1 // REQUIRES: aarch64-registered-target
      2 // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
      3 // RUN:   -ffp-contract=fast -S -O3 -o - %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-ARM64
      4 
      5 // Test new aarch64 intrinsics and types
      6 
      7 #include <arm_neon.h>
      8 
      9 int8x8_t test_vadd_s8(int8x8_t v1, int8x8_t v2) {
     10    // CHECK-LABEL: test_vadd_s8
     11   return vadd_s8(v1, v2);
     12   // CHECK: add {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
     13 }
     14 
     15 int16x4_t test_vadd_s16(int16x4_t v1, int16x4_t v2) {
     16    // CHECK-LABEL: test_vadd_s16
     17   return vadd_s16(v1, v2);
     18   // CHECK: add {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
     19 }
     20 
     21 int32x2_t test_vadd_s32(int32x2_t v1, int32x2_t v2) {
     22    // CHECK-LABEL: test_vadd_s32
     23   return vadd_s32(v1, v2);
     24   // CHECK: add {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
     25 }
     26 
     27 int64x1_t test_vadd_s64(int64x1_t v1, int64x1_t v2) {
     28   // CHECK-LABEL: test_vadd_s64
     29   return vadd_s64(v1, v2);
     30   // CHECK: add {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
     31 }
     32 
     33 float32x2_t test_vadd_f32(float32x2_t v1, float32x2_t v2) {
     34    // CHECK-LABEL: test_vadd_f32
     35   return vadd_f32(v1, v2);
     36   // CHECK: fadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
     37 }
     38 
     39 uint8x8_t test_vadd_u8(uint8x8_t v1, uint8x8_t v2) {
     40    // CHECK-LABEL: test_vadd_u8
     41   return vadd_u8(v1, v2);
     42   // CHECK: add {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
     43 }
     44 
     45 uint16x4_t test_vadd_u16(uint16x4_t v1, uint16x4_t v2) {
     46    // CHECK-LABEL: test_vadd_u16
     47   return vadd_u16(v1, v2);
     48   // CHECK: add {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
     49 }
     50 
     51 uint32x2_t test_vadd_u32(uint32x2_t v1, uint32x2_t v2) {
     52    // CHECK-LABEL: test_vadd_u32
     53   return vadd_u32(v1, v2);
     54   // CHECK: add {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
     55 }
     56 
     57 uint64x1_t test_vadd_u64(uint64x1_t v1, uint64x1_t v2) {
     58    // CHECK-LABEL: test_vadd_u64
     59   return vadd_u64(v1, v2);
     60   // CHECK: add {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
     61 }
     62 
     63 int8x16_t test_vaddq_s8(int8x16_t v1, int8x16_t v2) {
     64    // CHECK-LABEL: test_vaddq_s8
     65   return vaddq_s8(v1, v2);
     66   // CHECK: add {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
     67 }
     68 
     69 int16x8_t test_vaddq_s16(int16x8_t v1, int16x8_t v2) {
     70    // CHECK-LABEL: test_vaddq_s16
     71   return vaddq_s16(v1, v2);
     72   // CHECK: add {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
     73 }
     74 
     75 int32x4_t test_vaddq_s32(int32x4_t v1,int32x4_t  v2) {
     76    // CHECK-LABEL: test_vaddq_s32
     77   return vaddq_s32(v1, v2);
     78   // CHECK: add {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
     79 }
     80 
     81 int64x2_t test_vaddq_s64(int64x2_t v1, int64x2_t v2) {
     82    // CHECK-LABEL: test_vaddq_s64
     83   return vaddq_s64(v1, v2);
     84   // CHECK: add {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
     85 }
     86 
     87 float32x4_t test_vaddq_f32(float32x4_t v1, float32x4_t v2) {
     88    // CHECK-LABEL: test_vaddq_f32
     89   return vaddq_f32(v1, v2);
     90   // CHECK: fadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
     91 }
     92 
     93 float64x2_t test_vaddq_f64(float64x2_t v1, float64x2_t v2) {
     94   // CHECK-LABEL: test_vaddq_f64
     95   return vaddq_f64(v1, v2);
     96   // CHECK: fadd {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
     97 }
     98 
     99 uint8x16_t test_vaddq_u8(uint8x16_t v1, uint8x16_t v2) {
    100    // CHECK-LABEL: test_vaddq_u8
    101   return vaddq_u8(v1, v2);
    102   // CHECK: add {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    103 }
    104 
    105 uint16x8_t test_vaddq_u16(uint16x8_t v1, uint16x8_t v2) {
    106    // CHECK-LABEL: test_vaddq_u16
    107   return vaddq_u16(v1, v2);
    108   // CHECK: add {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    109 }
    110 
    111 uint32x4_t test_vaddq_u32(uint32x4_t v1, uint32x4_t v2) {
    112    // CHECK: vaddq_u32
    113   return vaddq_u32(v1, v2);
    114   // CHECK: add {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    115 }
    116 
    117 uint64x2_t test_vaddq_u64(uint64x2_t v1, uint64x2_t v2) {
    118    // CHECK-LABEL: test_vaddq_u64
    119   return vaddq_u64(v1, v2);
    120   // CHECK: add {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    121 }
    122 
    123 int8x8_t test_vsub_s8(int8x8_t v1, int8x8_t v2) {
    124    // CHECK-LABEL: test_vsub_s8
    125   return vsub_s8(v1, v2);
    126   // CHECK: sub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    127 }
    128 int16x4_t test_vsub_s16(int16x4_t v1, int16x4_t v2) {
    129    // CHECK-LABEL: test_vsub_s16
    130   return vsub_s16(v1, v2);
    131   // CHECK: sub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    132 }
    133 int32x2_t test_vsub_s32(int32x2_t v1, int32x2_t v2) {
    134    // CHECK-LABEL: test_vsub_s32
    135   return vsub_s32(v1, v2);
    136   // CHECK: sub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    137 }
    138 
    139 int64x1_t test_vsub_s64(int64x1_t v1, int64x1_t v2) {
    140    // CHECK-LABEL: test_vsub_s64
    141   return vsub_s64(v1, v2);
    142   // CHECK: sub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
    143 }
    144 
    145 float32x2_t test_vsub_f32(float32x2_t v1, float32x2_t v2) {
    146    // CHECK-LABEL: test_vsub_f32
    147   return vsub_f32(v1, v2);
    148   // CHECK: fsub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    149 }
    150 
    151 uint8x8_t test_vsub_u8(uint8x8_t v1, uint8x8_t v2) {
    152    // CHECK-LABEL: test_vsub_u8
    153   return vsub_u8(v1, v2);
    154   // CHECK: sub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    155 }
    156 
    157 uint16x4_t test_vsub_u16(uint16x4_t v1, uint16x4_t v2) {
    158    // CHECK-LABEL: test_vsub_u16
    159   return vsub_u16(v1, v2);
    160   // CHECK: sub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    161 }
    162 
    163 uint32x2_t test_vsub_u32(uint32x2_t v1, uint32x2_t v2) {
    164    // CHECK-LABEL: test_vsub_u32
    165   return vsub_u32(v1, v2);
    166   // CHECK: sub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    167 }
    168 
    169 uint64x1_t test_vsub_u64(uint64x1_t v1, uint64x1_t v2) {
    170    // CHECK-LABEL: test_vsub_u64
    171   return vsub_u64(v1, v2);
    172   // CHECK: sub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
    173 }
    174 
    175 int8x16_t test_vsubq_s8(int8x16_t v1, int8x16_t v2) {
    176    // CHECK-LABEL: test_vsubq_s8
    177   return vsubq_s8(v1, v2);
    178   // CHECK: sub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    179 }
    180 
    181 int16x8_t test_vsubq_s16(int16x8_t v1, int16x8_t v2) {
    182    // CHECK-LABEL: test_vsubq_s16
    183   return vsubq_s16(v1, v2);
    184   // CHECK: sub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    185 }
    186 
    187 int32x4_t test_vsubq_s32(int32x4_t v1,int32x4_t  v2) {
    188    // CHECK-LABEL: test_vsubq_s32
    189   return vsubq_s32(v1, v2);
    190   // CHECK: sub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    191 }
    192 
    193 int64x2_t test_vsubq_s64(int64x2_t v1, int64x2_t v2) {
    194    // CHECK-LABEL: test_vsubq_s64
    195   return vsubq_s64(v1, v2);
    196   // CHECK: sub {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    197 }
    198 
    199 float32x4_t test_vsubq_f32(float32x4_t v1, float32x4_t v2) {
    200    // CHECK-LABEL: test_vsubq_f32
    201   return vsubq_f32(v1, v2);
    202   // CHECK: fsub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    203 }
    204 
    205 float64x2_t test_vsubq_f64(float64x2_t v1, float64x2_t v2) {
    206   // CHECK-LABEL: test_vsubq_f64
    207   return vsubq_f64(v1, v2);
    208   // CHECK: fsub {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    209 }
    210 
    211 uint8x16_t test_vsubq_u8(uint8x16_t v1, uint8x16_t v2) {
    212    // CHECK-LABEL: test_vsubq_u8
    213   return vsubq_u8(v1, v2);
    214   // CHECK: sub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    215 }
    216 
    217 uint16x8_t test_vsubq_u16(uint16x8_t v1, uint16x8_t v2) {
    218    // CHECK-LABEL: test_vsubq_u16
    219   return vsubq_u16(v1, v2);
    220   // CHECK: sub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    221 }
    222 
    223 uint32x4_t test_vsubq_u32(uint32x4_t v1, uint32x4_t v2) {
    224    // CHECK: vsubq_u32
    225   return vsubq_u32(v1, v2);
    226   // CHECK: sub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    227 }
    228 
    229 uint64x2_t test_vsubq_u64(uint64x2_t v1, uint64x2_t v2) {
    230    // CHECK-LABEL: test_vsubq_u64
    231   return vsubq_u64(v1, v2);
    232   // CHECK: sub {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    233 }
    234 
    235 int8x8_t test_vmul_s8(int8x8_t v1, int8x8_t v2) {
    236   // CHECK-LABEL: test_vmul_s8
    237   return vmul_s8(v1, v2);
    238   // CHECK: mul {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    239 }
    240 
    241 int16x4_t test_vmul_s16(int16x4_t v1, int16x4_t v2) {
    242   // CHECK-LABEL: test_vmul_s16
    243   return vmul_s16(v1, v2);
    244   // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    245 }
    246 
    247 int32x2_t test_vmul_s32(int32x2_t v1, int32x2_t v2) {
    248   // CHECK-LABEL: test_vmul_s32
    249   return vmul_s32(v1, v2);
    250   // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    251 }
    252 
    253 float32x2_t test_vmul_f32(float32x2_t v1, float32x2_t v2) {
    254   // CHECK-LABEL: test_vmul_f32
    255   return vmul_f32(v1, v2);
    256   // CHECK: fmul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    257 }
    258 
    259 
    260 uint8x8_t test_vmul_u8(uint8x8_t v1, uint8x8_t v2) {
    261   // CHECK-LABEL: test_vmul_u8
    262   return vmul_u8(v1, v2);
    263   // CHECK: mul {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    264 }
    265 
    266 uint16x4_t test_vmul_u16(uint16x4_t v1, uint16x4_t v2) {
    267   // CHECK-LABEL: test_vmul_u16
    268   return vmul_u16(v1, v2);
    269   // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    270 }
    271 
    272 uint32x2_t test_vmul_u32(uint32x2_t v1, uint32x2_t v2) {
    273   // CHECK-LABEL: test_vmul_u32
    274   return vmul_u32(v1, v2);
    275   // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    276 }
    277 
    278 int8x16_t test_vmulq_s8(int8x16_t v1, int8x16_t v2) {
    279   // CHECK-LABEL: test_vmulq_s8
    280   return vmulq_s8(v1, v2);
    281   // CHECK: mul {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    282 }
    283 
    284 int16x8_t test_vmulq_s16(int16x8_t v1, int16x8_t v2) {
    285   // CHECK-LABEL: test_vmulq_s16
    286   return vmulq_s16(v1, v2);
    287   // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    288 }
    289 
    290 int32x4_t test_vmulq_s32(int32x4_t v1, int32x4_t v2) {
    291   // CHECK-LABEL: test_vmulq_s32
    292   return vmulq_s32(v1, v2);
    293   // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    294 }
    295 
    296 uint8x16_t test_vmulq_u8(uint8x16_t v1, uint8x16_t v2) {
    297   // CHECK-LABEL: test_vmulq_u8
    298   return vmulq_u8(v1, v2);
    299   // CHECK: mul {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    300 }
    301 
    302 uint16x8_t test_vmulq_u16(uint16x8_t v1, uint16x8_t v2) {
    303   // CHECK-LABEL: test_vmulq_u16
    304   return vmulq_u16(v1, v2);
    305   // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    306 }
    307 
    308 uint32x4_t test_vmulq_u32(uint32x4_t v1, uint32x4_t v2) {
    309   // CHECK-LABEL: test_vmulq_u32
    310   return vmulq_u32(v1, v2);
    311   // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    312 }
    313 
    314 float32x4_t test_vmulq_f32(float32x4_t v1, float32x4_t v2) {
    315   // CHECK-LABEL: test_vmulq_f32
    316   return vmulq_f32(v1, v2);
    317   // CHECK: fmul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    318 }
    319 
    320 float64x2_t test_vmulq_f64(float64x2_t v1, float64x2_t v2) {
    321   // CHECK-LABEL: test_vmulq_f64
    322   return vmulq_f64(v1, v2);
    323   // CHECK: fmul {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    324 }
    325 
    326 poly8x8_t test_vmul_p8(poly8x8_t v1, poly8x8_t v2) {
    327   //  test_vmul_p8
    328   return vmul_p8(v1, v2);
    329   //  pmul {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    330 }
    331 
    332 poly8x16_t test_vmulq_p8(poly8x16_t v1, poly8x16_t v2) {
    333   // test_vmulq_p8
    334   return vmulq_p8(v1, v2);
    335   // pmul {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    336 }
    337 
    338 
    339 int8x8_t test_vmla_s8(int8x8_t v1, int8x8_t v2, int8x8_t v3) {
    340   // CHECK-LABEL: test_vmla_s8
    341   return vmla_s8(v1, v2, v3);
    342   // CHECK: mla {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    343 }
    344 
    345 int8x8_t test_vmla_s16(int16x4_t v1, int16x4_t v2, int16x4_t v3) {
    346   // CHECK-LABEL: test_vmla_s16
    347   return vmla_s16(v1, v2, v3);
    348   // CHECK: mla {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    349 }
    350 
    351 int32x2_t test_vmla_s32(int32x2_t v1, int32x2_t v2, int32x2_t v3) {
    352   // CHECK-LABEL: test_vmla_s32
    353   return vmla_s32(v1, v2, v3);
    354   // CHECK: mla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    355 }
    356 
    357 float32x2_t test_vmla_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
    358   // CHECK-LABEL: test_vmla_f32
    359   return vmla_f32(v1, v2, v3);
    360   // CHECK: fmla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    361 }
    362 
    363 uint8x8_t test_vmla_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
    364   // CHECK-LABEL: test_vmla_u8
    365   return vmla_u8(v1, v2, v3);
    366   // CHECK: mla {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    367 }
    368 
    369 uint16x4_t test_vmla_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
    370   // CHECK-LABEL: test_vmla_u16
    371   return vmla_u16(v1, v2, v3);
    372   // CHECK: mla {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    373 }
    374 
    375 uint32x2_t test_vmla_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
    376   // CHECK-LABEL: test_vmla_u32
    377   return vmla_u32(v1, v2, v3);
    378   // CHECK: mla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    379 }
    380 
    381 int8x16_t test_vmlaq_s8(int8x16_t v1, int8x16_t v2, int8x16_t v3) {
    382   // CHECK-LABEL: test_vmlaq_s8
    383   return vmlaq_s8(v1, v2, v3);
    384   // CHECK: mla {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    385 }
    386 
    387 int16x8_t test_vmlaq_s16(int16x8_t v1, int16x8_t v2, int16x8_t v3) {
    388   // CHECK-LABEL: test_vmlaq_s16
    389   return vmlaq_s16(v1, v2, v3);
    390   // CHECK: mla {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    391 }
    392 
    393 int32x4_t test_vmlaq_s32(int32x4_t v1, int32x4_t v2, int32x4_t v3) {
    394   // CHECK-LABEL: test_vmlaq_s32
    395   return vmlaq_s32(v1, v2, v3);
    396   // CHECK: mla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    397 }
    398 
    399 float32x4_t test_vmlaq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
    400   // CHECK-LABEL: test_vmlaq_f32
    401   return vmlaq_f32(v1, v2, v3);
    402   // CHECK: fmla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    403 }
    404 
    405 uint8x16_t test_vmlaq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
    406    // CHECK-LABEL: test_vmlaq_u8
    407   return vmlaq_u8(v1, v2, v3);
    408   // CHECK: mla {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    409 }
    410 
    411 uint16x8_t test_vmlaq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
    412   // CHECK-LABEL: test_vmlaq_u16
    413   return vmlaq_u16(v1, v2, v3);
    414   // CHECK: mla {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    415 }
    416 
    417 uint32x4_t test_vmlaq_u32(uint32x4_t v1, uint32x4_t v2, uint32x4_t v3) {
    418   // CHECK-LABEL: test_vmlaq_u32
    419   return vmlaq_u32(v1, v2, v3);
    420   // CHECK: mla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    421 }
    422 
    423 float64x2_t test_vmlaq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
    424   // CHECK-LABEL: test_vmlaq_f64
    425   return vmlaq_f64(v1, v2, v3);
    426   // CHECK: fmla {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    427 }
    428 
    429 int8x8_t test_vmls_s8(int8x8_t v1, int8x8_t v2, int8x8_t v3) {
    430   // CHECK-LABEL: test_vmls_s8
    431   return vmls_s8(v1, v2, v3);
    432   // CHECK: mls {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    433 }
    434 
    435 int8x8_t test_vmls_s16(int16x4_t v1, int16x4_t v2, int16x4_t v3) {
    436   // CHECK-LABEL: test_vmls_s16
    437   return vmls_s16(v1, v2, v3);
    438   // CHECK: mls {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    439 }
    440 
    441 int32x2_t test_vmls_s32(int32x2_t v1, int32x2_t v2, int32x2_t v3) {
    442   // CHECK-LABEL: test_vmls_s32
    443   return vmls_s32(v1, v2, v3);
    444   // CHECK: mls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    445 }
    446 
    447 float32x2_t test_vmls_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
    448   // CHECK-LABEL: test_vmls_f32
    449   return vmls_f32(v1, v2, v3);
    450   // CHECK: fmls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    451 }
    452 
    453 uint8x8_t test_vmls_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
    454   // CHECK-LABEL: test_vmls_u8
    455   return vmls_u8(v1, v2, v3);
    456   // CHECK: mls {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    457 }
    458 
    459 uint16x4_t test_vmls_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
    460   // CHECK-LABEL: test_vmls_u16
    461   return vmls_u16(v1, v2, v3);
    462   // CHECK: mls {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    463 }
    464 
    465 uint32x2_t test_vmls_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
    466   // CHECK-LABEL: test_vmls_u32
    467   return vmls_u32(v1, v2, v3);
    468   // CHECK: mls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    469 }
    470 int8x16_t test_vmlsq_s8(int8x16_t v1, int8x16_t v2, int8x16_t v3) {
    471   // CHECK-LABEL: test_vmlsq_s8
    472   return vmlsq_s8(v1, v2, v3);
    473   // CHECK: mls {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    474 }
    475 
    476 int16x8_t test_vmlsq_s16(int16x8_t v1, int16x8_t v2, int16x8_t v3) {
    477   // CHECK-LABEL: test_vmlsq_s16
    478   return vmlsq_s16(v1, v2, v3);
    479   // CHECK: mls {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    480 }
    481 
    482 int32x4_t test_vmlsq_s32(int32x4_t v1, int32x4_t v2, int32x4_t v3) {
    483   // CHECK-LABEL: test_vmlsq_s32
    484   return vmlsq_s32(v1, v2, v3);
    485   // CHECK: mls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    486 }
    487 
    488 float32x4_t test_vmlsq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
    489   // CHECK-LABEL: test_vmlsq_f32
    490   return vmlsq_f32(v1, v2, v3);
    491   // CHECK: fmls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    492 }
    493 uint8x16_t test_vmlsq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
    494   // CHECK-LABEL: test_vmlsq_u8
    495   return vmlsq_u8(v1, v2, v3);
    496   // CHECK: mls {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    497 }
    498 
    499 uint16x8_t test_vmlsq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
    500   // CHECK-LABEL: test_vmlsq_u16
    501   return vmlsq_u16(v1, v2, v3);
    502   // CHECK: mls {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    503 }
    504 
    505 uint32x4_t test_vmlsq_u32(uint32x4_t v1, uint32x4_t v2, uint32x4_t v3) {
    506   // CHECK-LABEL: test_vmlsq_u32
    507   return vmlsq_u32(v1, v2, v3);
    508   // CHECK: mls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    509 }
    510 
    511 float64x2_t test_vmlsq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
    512   // CHECK-LABEL: test_vmlsq_f64
    513   return vmlsq_f64(v1, v2, v3);
    514   // CHECK: fmls {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    515 }
    516 float32x2_t test_vfma_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
    517   // CHECK-LABEL: test_vfma_f32
    518   return vfma_f32(v1, v2, v3);
    519   // CHECK: fmla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    520 }
    521 
    522 float32x4_t test_vfmaq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
    523   // CHECK-LABEL: test_vfmaq_f32
    524   return vfmaq_f32(v1, v2, v3);
    525   // CHECK: fmla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    526 }
    527 
    528 float64x2_t test_vfmaq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
    529   // CHECK-LABEL: test_vfmaq_f64
    530   return vfmaq_f64(v1, v2, v3);
    531   // CHECK: fmla {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    532 }
    533 float32x2_t test_vfms_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
    534   // CHECK-LABEL: test_vfms_f32
    535   return vfms_f32(v1, v2, v3);
    536   // CHECK: fmls v0.2s, {{v1.2s, v2.2s|v2.2s, v1.2s}}
    537 }
    538 
    539 float32x4_t test_vfmsq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
    540   // CHECK-LABEL: test_vfmsq_f32
    541   return vfmsq_f32(v1, v2, v3);
    542   // CHECK: fmls v0.4s, {{v1.4s, v2.4s|v2.4s, v1.4s}}
    543 }
    544 
    545 float64x2_t test_vfmsq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
    546   // CHECK: vfmsq_f64
    547   return vfmsq_f64(v1, v2, v3);
    548   // CHECK: fmls v0.2d, {{v1.2d, v2.2d|v2.2d, v1.2d}}
    549 }
    550 
    551 float64x2_t test_vdivq_f64(float64x2_t v1, float64x2_t v2) {
    552   // CHECK-LABEL: test_vdivq_f64
    553   return vdivq_f64(v1, v2);
    554   // CHECK: fdiv {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    555 }
    556 
    557 float32x4_t test_vdivq_f32(float32x4_t v1, float32x4_t v2) {
    558   // CHECK-LABEL: test_vdivq_f32
    559   return vdivq_f32(v1, v2);
    560   // CHECK: fdiv {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    561 }
    562 
    563 float32x2_t test_vdiv_f32(float32x2_t v1, float32x2_t v2) {
    564   // CHECK-LABEL: test_vdiv_f32
    565   return vdiv_f32(v1, v2);
    566   // CHECK: fdiv {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    567 }
    568 
    569 int8x8_t test_vaba_s8(int8x8_t v1, int8x8_t v2, int8x8_t v3) {
    570   // CHECK-LABEL: test_vaba_s8
    571   return vaba_s8(v1, v2, v3);
    572   // CHECK: saba {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    573 }
    574 
    575 int16x4_t test_vaba_s16(int16x4_t v1, int16x4_t v2, int16x4_t v3) {
    576   // CHECK-LABEL: test_vaba_s16
    577   return vaba_s16(v1, v2, v3);
    578   // CHECK: saba {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    579 }
    580 
    581 int32x2_t test_vaba_s32(int32x2_t v1, int32x2_t v2, int32x2_t v3) {
    582   // CHECK-LABEL: test_vaba_s32
    583   return vaba_s32(v1, v2, v3);
    584   // CHECK: saba {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    585 }
    586 
    587 uint8x8_t test_vaba_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
    588   // CHECK-LABEL: test_vaba_u8
    589   return vaba_u8(v1, v2, v3);
    590   // CHECK: uaba {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    591 }
    592 
    593 uint16x4_t test_vaba_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
    594   // CHECK-LABEL: test_vaba_u16
    595   return vaba_u16(v1, v2, v3);
    596   // CHECK: uaba {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    597 }
    598 
    599 uint32x2_t test_vaba_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
    600   // CHECK-LABEL: test_vaba_u32
    601   return vaba_u32(v1, v2, v3);
    602   // CHECK: uaba {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    603 }
    604 
    605 int8x16_t test_vabaq_s8(int8x16_t v1, int8x16_t v2, int8x16_t v3) {
    606   // CHECK-LABEL: test_vabaq_s8
    607   return vabaq_s8(v1, v2, v3);
    608   // CHECK: saba {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    609 }
    610 
    611 int16x8_t test_vabaq_s16(int16x8_t v1, int16x8_t v2, int16x8_t v3) {
    612   // CHECK-LABEL: test_vabaq_s16
    613   return vabaq_s16(v1, v2, v3);
    614   // CHECK: saba {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    615 }
    616 
    617 int32x4_t test_vabaq_s32(int32x4_t v1, int32x4_t v2, int32x4_t v3) {
    618   // CHECK-LABEL: test_vabaq_s32
    619   return vabaq_s32(v1, v2, v3);
    620   // CHECK: saba {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    621 }
    622 
    623 uint8x16_t test_vabaq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
    624   // CHECK-LABEL: test_vabaq_u8
    625   return vabaq_u8(v1, v2, v3);
    626   // CHECK: uaba {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    627 }
    628 
    629 uint16x8_t test_vabaq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
    630   // CHECK-LABEL: test_vabaq_u16
    631   return vabaq_u16(v1, v2, v3);
    632   // CHECK: uaba {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    633 }
    634 
    635 uint32x4_t test_vabaq_u32(uint32x4_t v1, uint32x4_t v2, uint32x4_t v3) {
    636   // CHECK-LABEL: test_vabaq_u32
    637   return vabaq_u32(v1, v2, v3);
    638   // CHECK: uaba {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    639 }
    640 
    641 int8x8_t test_vabd_s8(int8x8_t v1, int8x8_t v2) {
    642   // CHECK-LABEL: test_vabd_s8
    643   return vabd_s8(v1, v2);
    644   // CHECK: sabd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    645 }
    646 
    647 int16x4_t test_vabd_s16(int16x4_t v1, int16x4_t v2) {
    648   // CHECK-LABEL: test_vabd_s16
    649   return vabd_s16(v1, v2);
    650   // CHECK: sabd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    651 }
    652 
    653 int32x2_t test_vabd_s32(int32x2_t v1, int32x2_t v2) {
    654   // CHECK-LABEL: test_vabd_s32
    655   return vabd_s32(v1, v2);
    656   // CHECK: sabd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    657 }
    658 
    659 uint8x8_t test_vabd_u8(uint8x8_t v1, uint8x8_t v2) {
    660   // CHECK-LABEL: test_vabd_u8
    661   return vabd_u8(v1, v2);
    662   // CHECK: uabd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    663 }
    664 
    665 uint16x4_t test_vabd_u16(uint16x4_t v1, uint16x4_t v2) {
    666   // CHECK-LABEL: test_vabd_u16
    667   return vabd_u16(v1, v2);
    668   // CHECK: uabd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
    669 }
    670 
    671 uint32x2_t test_vabd_u32(uint32x2_t v1, uint32x2_t v2) {
    672   // CHECK-LABEL: test_vabd_u32
    673   return vabd_u32(v1, v2);
    674   // CHECK: uabd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    675 }
    676 
    677 float32x2_t test_vabd_f32(float32x2_t v1, float32x2_t v2) {
    678   // CHECK-LABEL: test_vabd_f32
    679   return vabd_f32(v1, v2);
    680   // CHECK: fabd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    681 }
    682 
    683 int8x16_t test_vabdq_s8(int8x16_t v1, int8x16_t v2) {
    684   // CHECK-LABEL: test_vabdq_s8
    685   return vabdq_s8(v1, v2);
    686   // CHECK: sabd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    687 }
    688 
    689 int16x8_t test_vabdq_s16(int16x8_t v1, int16x8_t v2) {
    690   // CHECK-LABEL: test_vabdq_s16
    691   return vabdq_s16(v1, v2);
    692   // CHECK: sabd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    693 }
    694 
    695 int32x4_t test_vabdq_s32(int32x4_t v1, int32x4_t v2) {
    696   // CHECK-LABEL: test_vabdq_s32
    697   return vabdq_s32(v1, v2);
    698   // CHECK: sabd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    699 }
    700 
    701 uint8x16_t test_vabdq_u8(uint8x16_t v1, uint8x16_t v2) {
    702   // CHECK-LABEL: test_vabdq_u8
    703   return vabdq_u8(v1, v2);
    704   // CHECK: uabd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    705 }
    706 
    707 uint16x8_t test_vabdq_u16(uint16x8_t v1, uint16x8_t v2) {
    708   // CHECK-LABEL: test_vabdq_u16
    709   return vabdq_u16(v1, v2);
    710   // CHECK: uabd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
    711 }
    712 
    713 uint32x4_t test_vabdq_u32(uint32x4_t v1, uint32x4_t v2) {
    714   // CHECK-LABEL: test_vabdq_u32
    715   return vabdq_u32(v1, v2);
    716   // CHECK: uabd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    717 }
    718 
    719 float32x4_t test_vabdq_f32(float32x4_t v1, float32x4_t v2) {
    720   // CHECK-LABEL: test_vabdq_f32
    721   return vabdq_f32(v1, v2);
    722   // CHECK: fabd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    723 }
    724 
    725 float64x2_t test_vabdq_f64(float64x2_t v1, float64x2_t v2) {
    726   // CHECK-LABEL: test_vabdq_f64
    727   return vabdq_f64(v1, v2);
    728   // CHECK: fabd {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    729 }
    730 
    731 
    732 int8x8_t test_vbsl_s8(uint8x8_t v1, int8x8_t v2, int8x8_t v3) {
    733   // CHECK-LABEL: test_vbsl_s8
    734   return vbsl_s8(v1, v2, v3);
    735   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    736 }
    737 
    738 int8x8_t test_vbsl_s16(uint16x4_t v1, int16x4_t v2, int16x4_t v3) {
    739   // CHECK-LABEL: test_vbsl_s16
    740   return vbsl_s16(v1, v2, v3);
    741   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    742 }
    743 
    744 int32x2_t test_vbsl_s32(uint32x2_t v1, int32x2_t v2, int32x2_t v3) {
    745   // CHECK-LABEL: test_vbsl_s32
    746   return vbsl_s32(v1, v2, v3);
    747   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    748 }
    749 
    750 uint64x1_t test_vbsl_s64(uint64x1_t v1, uint64x1_t v2, uint64x1_t v3) {
    751   // CHECK-LABEL: test_vbsl_s64
    752   return vbsl_s64(v1, v2, v3);
    753   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    754 }
    755 
    756 uint8x8_t test_vbsl_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
    757   // CHECK-LABEL: test_vbsl_u8
    758   return vbsl_u8(v1, v2, v3);
    759   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    760 }
    761 
    762 uint16x4_t test_vbsl_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
    763   // CHECK-LABEL: test_vbsl_u16
    764   return vbsl_u16(v1, v2, v3);
    765   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    766 }
    767 
    768 uint32x2_t test_vbsl_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
    769   // CHECK-LABEL: test_vbsl_u32
    770   return vbsl_u32(v1, v2, v3);
    771   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    772 }
    773 
    774 uint64x1_t test_vbsl_u64(uint64x1_t v1, uint64x1_t v2, uint64x1_t v3) {
    775   // CHECK-LABEL: test_vbsl_u64
    776   return vbsl_u64(v1, v2, v3);
    777   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    778 }
    779 
    780 float32x2_t test_vbsl_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
    781   // CHECK-LABEL: test_vbsl_f32
    782   return vbsl_f32(v1, v2, v3);
    783   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    784 }
    785 
    786 float64x1_t test_vbsl_f64(uint64x1_t v1, float64x1_t v2, float64x1_t v3) {
    787   // CHECK-LABEL: test_vbsl_f64
    788   return vbsl_f64(v1, v2, v3);
    789   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    790 }
    791 
    792 poly8x8_t test_vbsl_p8(uint8x8_t v1, poly8x8_t v2, poly8x8_t v3) {
    793   // CHECK-LABEL: test_vbsl_p8
    794   return vbsl_p8(v1, v2, v3);
    795   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    796 }
    797 
    798 poly16x4_t test_vbsl_p16(uint16x4_t v1, poly16x4_t v2, poly16x4_t v3) {
    799   // CHECK-LABEL: test_vbsl_p16
    800   return vbsl_p16(v1, v2, v3);
    801   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
    802 }
    803 
    804 int8x16_t test_vbslq_s8(uint8x16_t v1, int8x16_t v2, int8x16_t v3) {
    805   // CHECK-LABEL: test_vbslq_s8
    806   return vbslq_s8(v1, v2, v3);
    807   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    808 }
    809 
    810 int16x8_t test_vbslq_s16(uint16x8_t v1, int16x8_t v2, int16x8_t v3) {
    811   // CHECK-LABEL: test_vbslq_s16
    812   return vbslq_s16(v1, v2, v3);
    813   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    814 }
    815 
    816 int32x4_t test_vbslq_s32(uint32x4_t v1, int32x4_t v2, int32x4_t v3) {
    817   // CHECK-LABEL: test_vbslq_s32
    818   return vbslq_s32(v1, v2, v3);
    819   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    820 }
    821 
    822 int64x2_t test_vbslq_s64(uint64x2_t v1, int64x2_t v2, int64x2_t v3) {
    823   // CHECK-LABEL: test_vbslq_s64
    824   return vbslq_s64(v1, v2, v3);
    825   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    826 }
    827 
    828 uint8x16_t test_vbslq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
    829   // CHECK-LABEL: test_vbslq_u8
    830   return vbslq_u8(v1, v2, v3);
    831   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    832 }
    833 
    834 uint16x8_t test_vbslq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
    835   // CHECK-LABEL: test_vbslq_u16
    836   return vbslq_u16(v1, v2, v3);
    837   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    838 }
    839 
    840 int32x4_t test_vbslq_u32(uint32x4_t v1, int32x4_t v2, int32x4_t v3) {
    841   // CHECK-LABEL: test_vbslq_u32
    842   return vbslq_s32(v1, v2, v3);
    843   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    844 }
    845 
    846 uint64x2_t test_vbslq_u64(uint64x2_t v1, uint64x2_t v2, uint64x2_t v3) {
    847   // CHECK-LABEL: test_vbslq_u64
    848   return vbslq_u64(v1, v2, v3);
    849   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    850 }
    851 
    852 float32x4_t test_vbslq_f32(uint32x4_t v1, float32x4_t v2, float32x4_t v3) {
    853   // CHECK-LABEL: test_vbslq_f32
    854   return vbslq_f32(v1, v2, v3);
    855   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    856 }
    857 
    858 poly8x16_t test_vbslq_p8(uint8x16_t v1, poly8x16_t v2, poly8x16_t v3) {
    859   // CHECK-LABEL: test_vbslq_p8
    860   return vbslq_p8(v1, v2, v3);
    861   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    862 }
    863 
    864 poly16x8_t test_vbslq_p16(uint16x8_t v1, poly16x8_t v2, poly16x8_t v3) {
    865   // CHECK-LABEL: test_vbslq_p16
    866   return vbslq_p16(v1, v2, v3);
    867   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    868 }
    869 
    870 float64x2_t test_vbslq_f64(uint64x2_t v1, float64x2_t v2, float64x2_t v3) {
    871   // CHECK-LABEL: test_vbslq_f64
    872   return vbslq_f64(v1, v2, v3);
    873   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
    874 }
    875 
    876 float32x2_t test_vrecps_f32(float32x2_t v1, float32x2_t v2) {
    877    // CHECK-LABEL: test_vrecps_f32
    878    return vrecps_f32(v1, v2);
    879    // CHECK: frecps {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    880 }
    881 
    882 float32x4_t test_vrecpsq_f32(float32x4_t v1, float32x4_t v2) {
    883    // CHECK-LABEL: test_vrecpsq_f32
    884    return vrecpsq_f32(v1, v2);
    885    // CHECK: frecps {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    886 }
    887 
    888 float64x2_t test_vrecpsq_f64(float64x2_t v1, float64x2_t v2) {
    889    // CHECK-LABEL: test_vrecpsq_f64
    890   return vrecpsq_f64(v1, v2);
    891   // CHECK: frecps {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    892 }
    893 
    894 float32x2_t test_vrsqrts_f32(float32x2_t v1, float32x2_t v2) {
    895    // CHECK-LABEL: test_vrsqrts_f32
    896   return vrsqrts_f32(v1, v2);
    897   // CHECK: frsqrts {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    898 }
    899 
    900 float32x4_t test_vrsqrtsq_f32(float32x4_t v1, float32x4_t v2) {
    901    // CHECK-LABEL: test_vrsqrtsq_f32
    902   return vrsqrtsq_f32(v1, v2);
    903   // CHECK: frsqrts {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    904 }
    905 
    906 float64x2_t test_vrsqrtsq_f64(float64x2_t v1, float64x2_t v2) {
    907    // CHECK-LABEL: test_vrsqrtsq_f64
    908   return vrsqrtsq_f64(v1, v2);
    909   // CHECK: frsqrts {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    910 }
    911 
    912 uint32x2_t test_vcage_f32(float32x2_t v1, float32x2_t v2) {
    913   // CHECK-LABEL: test_vcage_f32
    914   return vcage_f32(v1, v2);
    915   // CHECK: facge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    916 }
    917 
    918 uint64x1_t test_vcage_f64(float64x1_t a, float64x1_t b) {
    919   // CHECK-LABEL: test_vcage_f64
    920   return vcage_f64(a, b);
    921   // CHECK: facge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
    922 }
    923 
    924 uint32x4_t test_vcageq_f32(float32x4_t v1, float32x4_t v2) {
    925   // CHECK-LABEL: test_vcageq_f32
    926   return vcageq_f32(v1, v2);
    927   // CHECK: facge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    928 }
    929 
    930 uint64x2_t test_vcageq_f64(float64x2_t v1, float64x2_t v2) {
    931   // CHECK-LABEL: test_vcageq_f64
    932   return vcageq_f64(v1, v2);
    933   // CHECK: facge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    934 }
    935 
    936 uint32x2_t test_vcagt_f32(float32x2_t v1, float32x2_t v2) {
    937   // CHECK-LABEL: test_vcagt_f32
    938   return vcagt_f32(v1, v2);
    939   // CHECK: facgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
    940 }
    941 
    942 uint64x1_t test_vcagt_f64(float64x1_t a, float64x1_t b) {
    943   // CHECK-LABEL: test_vcagt_f64
    944   return vcagt_f64(a, b);
    945   // CHECK: facgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
    946 }
    947 
    948 uint32x4_t test_vcagtq_f32(float32x4_t v1, float32x4_t v2) {
    949   // CHECK-LABEL: test_vcagtq_f32
    950   return vcagtq_f32(v1, v2);
    951   // CHECK: facgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
    952 }
    953 
    954 uint64x2_t test_vcagtq_f64(float64x2_t v1, float64x2_t v2) {
    955   // CHECK-LABEL: test_vcagtq_f64
    956   return vcagtq_f64(v1, v2);
    957   // CHECK: facgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
    958 }
    959 
    960 uint32x2_t test_vcale_f32(float32x2_t v1, float32x2_t v2) {
    961   // CHECK-LABEL: test_vcale_f32
    962   return vcale_f32(v1, v2);
    963   // Using registers other than v0, v1 are possible, but would be odd.
    964   // CHECK: facge {{v[0-9]+}}.2s, v1.2s, v0.2s
    965 }
    966 
    967 uint64x1_t test_vcale_f64(float64x1_t a, float64x1_t b) {
    968   // CHECK-LABEL: test_vcale_f64
    969   return vcale_f64(a, b);
    970   // CHECK: facge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
    971 }
    972 
    973 uint32x4_t test_vcaleq_f32(float32x4_t v1, float32x4_t v2) {
    974   // CHECK-LABEL: test_vcaleq_f32
    975   return vcaleq_f32(v1, v2);
    976   // Using registers other than v0, v1 are possible, but would be odd.
    977   // CHECK: facge {{v[0-9]+}}.4s, v1.4s, v0.4s
    978 }
    979 
    980 uint64x2_t test_vcaleq_f64(float64x2_t v1, float64x2_t v2) {
    981   // CHECK-LABEL: test_vcaleq_f64
    982   return vcaleq_f64(v1, v2);
    983   // Using registers other than v0, v1 are possible, but would be odd.
    984   // CHECK: facge {{v[0-9]+}}.2d, v1.2d, v0.2d
    985 }
    986 
    987 uint32x2_t test_vcalt_f32(float32x2_t v1, float32x2_t v2) {
    988   // CHECK-LABEL: test_vcalt_f32
    989   return vcalt_f32(v1, v2);
    990   // Using registers other than v0, v1 are possible, but would be odd.
    991   // CHECK: facgt {{v[0-9]+}}.2s, v1.2s, v0.2s
    992 }
    993 
    994 uint64x1_t test_vcalt_f64(float64x1_t a, float64x1_t b) {
    995   // CHECK-LABEL: test_vcalt_f64
    996   return vcalt_f64(a, b);
    997   // CHECK: facgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
    998 }
    999 
   1000 uint32x4_t test_vcaltq_f32(float32x4_t v1, float32x4_t v2) {
   1001   // CHECK-LABEL: test_vcaltq_f32
   1002   return vcaltq_f32(v1, v2);
   1003   // Using registers other than v0, v1 are possible, but would be odd.
   1004   // CHECK: facgt {{v[0-9]+}}.4s, v1.4s, v0.4s
   1005 }
   1006 
   1007 uint64x2_t test_vcaltq_f64(float64x2_t v1, float64x2_t v2) {
   1008   // CHECK-LABEL: test_vcaltq_f64
   1009   return vcaltq_f64(v1, v2);
   1010   // Using registers other than v0, v1 are possible, but would be odd.
   1011   // CHECK: facgt {{v[0-9]+}}.2d, v1.2d, v0.2d
   1012 }
   1013 
   1014 uint8x8_t test_vtst_s8(int8x8_t v1, int8x8_t v2) {
   1015    // CHECK-LABEL: test_vtst_s8
   1016   return vtst_s8(v1, v2);
   1017   // CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1018 }
   1019 
   1020 uint16x4_t test_vtst_s16(int16x4_t v1, int16x4_t v2) {
   1021    // CHECK-LABEL: test_vtst_s16
   1022   return vtst_s16(v1, v2);
   1023   // CHECK: cmtst {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1024 }
   1025 
   1026 uint32x2_t test_vtst_s32(int32x2_t v1, int32x2_t v2) {
   1027    // CHECK-LABEL: test_vtst_s32
   1028   return vtst_s32(v1, v2);
   1029   // CHECK: cmtst {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1030 }
   1031 
   1032 uint8x8_t test_vtst_u8(uint8x8_t v1, uint8x8_t v2) {
   1033    // CHECK-LABEL: test_vtst_u8
   1034   return vtst_u8(v1, v2);
   1035   // CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1036 }
   1037 
   1038 uint16x4_t test_vtst_u16(uint16x4_t v1, uint16x4_t v2) {
   1039    // CHECK-LABEL: test_vtst_u16
   1040   return vtst_u16(v1, v2);
   1041   // CHECK: cmtst {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1042 }
   1043 
   1044 uint32x2_t test_vtst_u32(uint32x2_t v1, uint32x2_t v2) {
   1045    // CHECK-LABEL: test_vtst_u32
   1046   return vtst_u32(v1, v2);
   1047   // CHECK: cmtst {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1048 }
   1049 
   1050 uint8x16_t test_vtstq_s8(int8x16_t v1, int8x16_t v2) {
   1051    // CHECK-LABEL: test_vtstq_s8
   1052   return vtstq_s8(v1, v2);
   1053   // CHECK: cmtst {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1054 }
   1055 
   1056 uint16x8_t test_vtstq_s16(int16x8_t v1, int16x8_t v2) {
   1057    // CHECK-LABEL: test_vtstq_s16
   1058   return vtstq_s16(v1, v2);
   1059   // CHECK: cmtst {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1060 }
   1061 
   1062 uint32x4_t test_vtstq_s32(int32x4_t v1, int32x4_t v2) {
   1063    // CHECK-LABEL: test_vtstq_s32
   1064   return vtstq_s32(v1, v2);
   1065   // CHECK: cmtst {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1066 }
   1067 
   1068 uint8x16_t test_vtstq_u8(uint8x16_t v1, uint8x16_t v2) {
   1069    // CHECK-LABEL: test_vtstq_u8
   1070   return vtstq_u8(v1, v2);
   1071   // CHECK: cmtst {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1072 }
   1073 
   1074 uint16x8_t test_vtstq_u16(uint16x8_t v1, uint16x8_t v2) {
   1075    // CHECK-LABEL: test_vtstq_u16
   1076   return vtstq_u16(v1, v2);
   1077   // CHECK: cmtst {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1078 }
   1079 
   1080 uint32x4_t test_vtstq_u32(uint32x4_t v1, uint32x4_t v2) {
   1081    // CHECK-LABEL: test_vtstq_u32
   1082   return vtstq_u32(v1, v2);
   1083   // CHECK: cmtst {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1084 }
   1085 
   1086 uint64x2_t test_vtstq_s64(int64x2_t v1, int64x2_t v2) {
   1087    // CHECK-LABEL: test_vtstq_s64
   1088   return vtstq_s64(v1, v2);
   1089   // CHECK: cmtst {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1090 }
   1091 
   1092 uint64x2_t test_vtstq_u64(uint64x2_t v1, uint64x2_t v2) {
   1093    // CHECK-LABEL: test_vtstq_u64
   1094   return vtstq_u64(v1, v2);
   1095   // CHECK: cmtst {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1096 }
   1097 
   1098 uint8x8_t test_vtst_p8(poly8x8_t v1, poly8x8_t v2) {
   1099    // CHECK-LABEL: test_vtst_p8
   1100   return vtst_p8(v1, v2);
   1101   // CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1102 }
   1103 
   1104 uint16x4_t test_vtst_p16(poly16x4_t v1, poly16x4_t v2) {
   1105    // CHECK-LABEL: test_vtst_p16
   1106   return vtst_p16(v1, v2);
   1107   // CHECK: cmtst {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1108 }
   1109 
   1110 uint8x16_t test_vtstq_p8(poly8x16_t v1, poly8x16_t v2) {
   1111    // CHECK-LABEL: test_vtstq_p8
   1112   return vtstq_p8(v1, v2);
   1113   // CHECK: cmtst {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1114 }
   1115 
   1116 uint16x8_t test_vtstq_p16(poly16x8_t v1, poly16x8_t v2) {
   1117    // CHECK-LABEL: test_vtstq_p16
   1118   return vtstq_p16(v1, v2);
   1119   // CHECK: cmtst {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1120 }
   1121 
   1122 uint64x1_t test_vtst_s64(int64x1_t a, int64x1_t b) {
   1123   // CHECK-LABEL: test_vtst_s64
   1124   return vtst_s64(a, b);
   1125   // CHECK: cmtst {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1126 }
   1127 
   1128 uint64x1_t test_vtst_u64(uint64x1_t a, uint64x1_t b) {
   1129   // CHECK-LABEL: test_vtst_u64
   1130   return vtst_u64(a, b);
   1131   // CHECK: cmtst {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1132 }
   1133 
   1134 uint8x8_t test_vceq_s8(int8x8_t v1, int8x8_t v2) {
   1135   // CHECK-LABEL: test_vceq_s8
   1136   return vceq_s8(v1, v2);
   1137   // CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1138 }
   1139 
   1140 uint16x4_t test_vceq_s16(int16x4_t v1, int16x4_t v2) {
   1141   // CHECK-LABEL: test_vceq_s16
   1142   return vceq_s16(v1, v2);
   1143   // CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1144 }
   1145 
   1146 uint32x2_t test_vceq_s32(int32x2_t v1, int32x2_t v2) {
   1147   // CHECK-LABEL: test_vceq_s32
   1148   return vceq_s32(v1, v2);
   1149   // CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1150 }
   1151 
   1152 uint64x1_t test_vceq_s64(int64x1_t a, int64x1_t b) {
   1153   // CHECK-LABEL: test_vceq_s64
   1154   return vceq_s64(a, b);
   1155   // CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1156 }
   1157 
   1158 uint64x1_t test_vceq_u64(uint64x1_t a, uint64x1_t b) {
   1159   // CHECK-LABEL: test_vceq_u64
   1160   return vceq_u64(a, b);
   1161   // CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1162 }
   1163 
   1164 uint32x2_t test_vceq_f32(float32x2_t v1, float32x2_t v2) {
   1165   // CHECK-LABEL: test_vceq_f32
   1166   return vceq_f32(v1, v2);
   1167   // CHECK: fcmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1168 }
   1169 
   1170 uint64x1_t test_vceq_f64(float64x1_t a, float64x1_t b) {
   1171   // CHECK-LABEL: test_vceq_f64
   1172   return vceq_f64(a, b);
   1173   // CHECK: fcmeq {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1174 }
   1175 
   1176 uint8x8_t test_vceq_u8(uint8x8_t v1, uint8x8_t v2) {
   1177   // CHECK-LABEL: test_vceq_u8
   1178   return vceq_u8(v1, v2);
   1179   // CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1180 }
   1181 
   1182 uint16x4_t test_vceq_u16(uint16x4_t v1, uint16x4_t v2) {
   1183   // CHECK-LABEL: test_vceq_u16
   1184   return vceq_u16(v1, v2);
   1185   // CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1186 }
   1187 
   1188 uint32x2_t test_vceq_u32(uint32x2_t v1, uint32x2_t v2) {
   1189   // CHECK-LABEL: test_vceq_u32
   1190   return vceq_u32(v1, v2);
   1191   // CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1192 }
   1193 
   1194 uint8x8_t test_vceq_p8(poly8x8_t v1, poly8x8_t v2) {
   1195   // CHECK-LABEL: test_vceq_p8
   1196   return vceq_p8(v1, v2);
   1197   // CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1198 }
   1199 
   1200 uint8x16_t test_vceqq_s8(int8x16_t v1, int8x16_t v2) {
   1201   // CHECK-LABEL: test_vceqq_s8
   1202   return vceqq_s8(v1, v2);
   1203   // CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1204 }
   1205 
   1206 uint16x8_t test_vceqq_s16(int16x8_t v1, int16x8_t v2) {
   1207   // CHECK-LABEL: test_vceqq_s16
   1208   return vceqq_s16(v1, v2);
   1209   // CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1210 }
   1211 
   1212 uint32x4_t test_vceqq_s32(int32x4_t v1, int32x4_t v2) {
   1213   // CHECK-LABEL: test_vceqq_s32
   1214   return vceqq_s32(v1, v2);
   1215   // CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1216 }
   1217 
   1218 uint32x4_t test_vceqq_f32(float32x4_t v1, float32x4_t v2) {
   1219   // CHECK-LABEL: test_vceqq_f32
   1220   return vceqq_f32(v1, v2);
   1221   // CHECK: fcmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1222 }
   1223 
   1224 uint8x16_t test_vceqq_u8(uint8x16_t v1, uint8x16_t v2) {
   1225   // CHECK-LABEL: test_vceqq_u8
   1226   return vceqq_u8(v1, v2);
   1227   // CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1228 }
   1229 
   1230 uint16x8_t test_vceqq_u16(uint16x8_t v1, uint16x8_t v2) {
   1231   // CHECK-LABEL: test_vceqq_u16
   1232   return vceqq_u16(v1, v2);
   1233   // CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1234 }
   1235 
   1236 uint32x4_t test_vceqq_u32(uint32x4_t v1, uint32x4_t v2) {
   1237   // CHECK-LABEL: test_vceqq_u32
   1238   return vceqq_u32(v1, v2);
   1239   // CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1240 }
   1241 
   1242 uint8x16_t test_vceqq_p8(poly8x16_t v1, poly8x16_t v2) {
   1243   // CHECK-LABEL: test_vceqq_p8
   1244   return vceqq_p8(v1, v2);
   1245   // CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1246 }
   1247 
   1248 
   1249 uint64x2_t test_vceqq_s64(int64x2_t v1, int64x2_t v2) {
   1250   // CHECK-LABEL: test_vceqq_s64
   1251   return vceqq_s64(v1, v2);
   1252   // CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1253 }
   1254 
   1255 uint64x2_t test_vceqq_u64(uint64x2_t v1, uint64x2_t v2) {
   1256   // CHECK-LABEL: test_vceqq_u64
   1257   return vceqq_u64(v1, v2);
   1258   // CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1259 }
   1260 
   1261 uint64x2_t test_vceqq_f64(float64x2_t v1, float64x2_t v2) {
   1262   // CHECK-LABEL: test_vceqq_f64
   1263   return vceqq_f64(v1, v2);
   1264   // CHECK: fcmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1265 }
   1266 uint8x8_t test_vcge_s8(int8x8_t v1, int8x8_t v2) {
   1267 // CHECK-LABEL: test_vcge_s8
   1268   return vcge_s8(v1, v2);
   1269 // CHECK: cmge {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1270 }
   1271 
   1272 uint16x4_t test_vcge_s16(int16x4_t v1, int16x4_t v2) {
   1273 // CHECK-LABEL: test_vcge_s16
   1274   return vcge_s16(v1, v2);
   1275 // CHECK: cmge {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1276 }
   1277 
   1278 uint32x2_t test_vcge_s32(int32x2_t v1, int32x2_t v2) {
   1279 // CHECK-LABEL: test_vcge_s32
   1280   return vcge_s32(v1, v2);
   1281 // CHECK: cmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1282 }
   1283 
   1284 uint64x1_t test_vcge_s64(int64x1_t a, int64x1_t b) {
   1285   // CHECK-LABEL: test_vcge_s64
   1286   return vcge_s64(a, b);
   1287   // CHECK: cmge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1288 }
   1289 
   1290 uint64x1_t test_vcge_u64(uint64x1_t a, uint64x1_t b) {
   1291   // CHECK-LABEL: test_vcge_u64
   1292   return vcge_u64(a, b);
   1293   // CHECK: cmhs {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1294 }
   1295 
   1296 uint32x2_t test_vcge_f32(float32x2_t v1, float32x2_t v2) {
   1297 // CHECK-LABEL: test_vcge_f32
   1298   return vcge_f32(v1, v2);
   1299 // CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1300 }
   1301 
   1302 uint64x1_t test_vcge_f64(float64x1_t a, float64x1_t b) {
   1303   // CHECK-LABEL: test_vcge_f64
   1304   return vcge_f64(a, b);
   1305   // CHECK: fcmge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1306 }
   1307 
   1308 uint8x8_t test_vcge_u8(uint8x8_t v1, uint8x8_t v2) {
   1309 // CHECK-LABEL: test_vcge_u8
   1310   return vcge_u8(v1, v2);
   1311 // CHECK: cmhs {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1312 }
   1313 
   1314 uint16x4_t test_vcge_u16(uint16x4_t v1, uint16x4_t v2) {
   1315 // CHECK-LABEL: test_vcge_u16
   1316   return vcge_u16(v1, v2);
   1317 // CHECK: cmhs {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1318 }
   1319 
   1320 uint32x2_t test_vcge_u32(uint32x2_t v1, uint32x2_t v2) {
   1321 // CHECK-LABEL: test_vcge_u32
   1322   return vcge_u32(v1, v2);
   1323 // CHECK: cmhs {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1324 }
   1325 
   1326 uint8x16_t test_vcgeq_s8(int8x16_t v1, int8x16_t v2) {
   1327 // CHECK-LABEL: test_vcgeq_s8
   1328   return vcgeq_s8(v1, v2);
   1329 // CHECK: cmge {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1330 }
   1331 
   1332 uint16x8_t test_vcgeq_s16(int16x8_t v1, int16x8_t v2) {
   1333 // CHECK-LABEL: test_vcgeq_s16
   1334   return vcgeq_s16(v1, v2);
   1335 // CHECK: cmge {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1336 }
   1337 
   1338 uint32x4_t test_vcgeq_s32(int32x4_t v1, int32x4_t v2) {
   1339 // CHECK-LABEL: test_vcgeq_s32
   1340   return vcgeq_s32(v1, v2);
   1341 // CHECK: cmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1342 }
   1343 
   1344 uint32x4_t test_vcgeq_f32(float32x4_t v1, float32x4_t v2) {
   1345 // CHECK-LABEL: test_vcgeq_f32
   1346   return vcgeq_f32(v1, v2);
   1347 // CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1348 }
   1349 
   1350 uint8x16_t test_vcgeq_u8(uint8x16_t v1, uint8x16_t v2) {
   1351 // CHECK-LABEL: test_vcgeq_u8
   1352   return vcgeq_u8(v1, v2);
   1353 // CHECK: cmhs {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1354 }
   1355 
   1356 uint16x8_t test_vcgeq_u16(uint16x8_t v1, uint16x8_t v2) {
   1357 // CHECK-LABEL: test_vcgeq_u16
   1358   return vcgeq_u16(v1, v2);
   1359 // CHECK: cmhs {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1360 }
   1361 
   1362 uint32x4_t test_vcgeq_u32(uint32x4_t v1, uint32x4_t v2) {
   1363 // CHECK-LABEL: test_vcgeq_u32
   1364   return vcgeq_u32(v1, v2);
   1365 // CHECK: cmhs {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1366 }
   1367 
   1368 uint64x2_t test_vcgeq_s64(int64x2_t v1, int64x2_t v2) {
   1369 // CHECK-LABEL: test_vcgeq_s64
   1370   return vcgeq_s64(v1, v2);
   1371 // CHECK: cmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1372 }
   1373 
   1374 uint64x2_t test_vcgeq_u64(uint64x2_t v1, uint64x2_t v2) {
   1375 // CHECK-LABEL: test_vcgeq_u64
   1376   return vcgeq_u64(v1, v2);
   1377 // CHECK: cmhs {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1378 }
   1379 
   1380 uint64x2_t test_vcgeq_f64(float64x2_t v1, float64x2_t v2) {
   1381 // CHECK-LABEL: test_vcgeq_f64
   1382   return vcgeq_f64(v1, v2);
   1383 // CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1384 }
   1385 
   1386 // Notes about vcle:
   1387 // LE condition predicate implemented as GE, so check reversed operands.
   1388 // Using registers other than v0, v1 are possible, but would be odd.
   1389 uint8x8_t test_vcle_s8(int8x8_t v1, int8x8_t v2) {
   1390   // CHECK-LABEL: test_vcle_s8
   1391   return vcle_s8(v1, v2);
   1392   // CHECK: cmge {{v[0-9]+}}.8b, v1.8b, v0.8b
   1393 }
   1394 
   1395 uint16x4_t test_vcle_s16(int16x4_t v1, int16x4_t v2) {
   1396   // CHECK-LABEL: test_vcle_s16
   1397   return vcle_s16(v1, v2);
   1398   // CHECK: cmge {{v[0-9]+}}.4h, v1.4h, v0.4h
   1399 }
   1400 
   1401 uint32x2_t test_vcle_s32(int32x2_t v1, int32x2_t v2) {
   1402   // CHECK-LABEL: test_vcle_s32
   1403   return vcle_s32(v1, v2);
   1404   // CHECK: cmge {{v[0-9]+}}.2s, v1.2s, v0.2s
   1405 }
   1406 
   1407 uint64x1_t test_vcle_s64(int64x1_t a, int64x1_t b) {
   1408   // CHECK-LABEL: test_vcle_s64
   1409   return vcle_s64(a, b);
   1410   // CHECK: cmge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1411 }
   1412 
   1413 uint64x1_t test_vcle_u64(uint64x1_t a, uint64x1_t b) {
   1414   // CHECK-LABEL: test_vcle_u64
   1415   return vcle_u64(a, b);
   1416   // CHECK: cmhs {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1417 }
   1418 
   1419 uint32x2_t test_vcle_f32(float32x2_t v1, float32x2_t v2) {
   1420   // CHECK-LABEL: test_vcle_f32
   1421   return vcle_f32(v1, v2);
   1422   // CHECK: fcmge {{v[0-9]+}}.2s, v1.2s, v0.2s
   1423 }
   1424 
   1425 uint64x1_t test_vcle_f64(float64x1_t a, float64x1_t b) {
   1426   // CHECK-LABEL: test_vcle_f64
   1427   return vcle_f64(a, b);
   1428   // CHECK: fcmge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1429 }
   1430 
   1431 uint8x8_t test_vcle_u8(uint8x8_t v1, uint8x8_t v2) {
   1432   // CHECK-LABEL: test_vcle_u8
   1433   return vcle_u8(v1, v2);
   1434   // CHECK: cmhs {{v[0-9]+}}.8b, v1.8b, v0.8b
   1435 }
   1436 
   1437 uint16x4_t test_vcle_u16(uint16x4_t v1, uint16x4_t v2) {
   1438   // CHECK-LABEL: test_vcle_u16
   1439   return vcle_u16(v1, v2);
   1440   // CHECK: cmhs {{v[0-9]+}}.4h, v1.4h, v0.4h
   1441 }
   1442 
   1443 uint32x2_t test_vcle_u32(uint32x2_t v1, uint32x2_t v2) {
   1444   // CHECK-LABEL: test_vcle_u32
   1445   return vcle_u32(v1, v2);
   1446   // CHECK: cmhs {{v[0-9]+}}.2s, v1.2s, v0.2s
   1447 }
   1448 
   1449 uint8x16_t test_vcleq_s8(int8x16_t v1, int8x16_t v2) {
   1450   // CHECK-LABEL: test_vcleq_s8
   1451   return vcleq_s8(v1, v2);
   1452   // CHECK: cmge {{v[0-9]+}}.16b, v1.16b, v0.16b
   1453 }
   1454 
   1455 uint16x8_t test_vcleq_s16(int16x8_t v1, int16x8_t v2) {
   1456   // CHECK-LABEL: test_vcleq_s16
   1457   return vcleq_s16(v1, v2);
   1458   // CHECK: cmge {{v[0-9]+}}.8h, v1.8h, v0.8h
   1459 }
   1460 
   1461 uint32x4_t test_vcleq_s32(int32x4_t v1, int32x4_t v2) {
   1462   // CHECK-LABEL: test_vcleq_s32
   1463   return vcleq_s32(v1, v2);
   1464   // CHECK: cmge {{v[0-9]+}}.4s, v1.4s, v0.4s
   1465 }
   1466 
   1467 uint32x4_t test_vcleq_f32(float32x4_t v1, float32x4_t v2) {
   1468   // CHECK-LABEL: test_vcleq_f32
   1469   return vcleq_f32(v1, v2);
   1470   // CHECK: fcmge {{v[0-9]+}}.4s, v1.4s, v0.4s
   1471 }
   1472 
   1473 uint8x16_t test_vcleq_u8(uint8x16_t v1, uint8x16_t v2) {
   1474   // CHECK-LABEL: test_vcleq_u8
   1475   return vcleq_u8(v1, v2);
   1476   // CHECK: cmhs {{v[0-9]+}}.16b, v1.16b, v0.16b
   1477 }
   1478 
   1479 uint16x8_t test_vcleq_u16(uint16x8_t v1, uint16x8_t v2) {
   1480   // CHECK-LABEL: test_vcleq_u16
   1481   return vcleq_u16(v1, v2);
   1482   // CHECK: cmhs {{v[0-9]+}}.8h, v1.8h, v0.8h
   1483 }
   1484 
   1485 uint32x4_t test_vcleq_u32(uint32x4_t v1, uint32x4_t v2) {
   1486   // CHECK-LABEL: test_vcleq_u32
   1487   return vcleq_u32(v1, v2);
   1488   // CHECK: cmhs {{v[0-9]+}}.4s, v1.4s, v0.4s
   1489 }
   1490 
   1491 uint64x2_t test_vcleq_s64(int64x2_t v1, int64x2_t v2) {
   1492   // CHECK-LABEL: test_vcleq_s64
   1493   return vcleq_s64(v1, v2);
   1494   // CHECK: cmge {{v[0-9]+}}.2d, v1.2d, v0.2d
   1495 }
   1496 
   1497 uint64x2_t test_vcleq_u64(uint64x2_t v1, uint64x2_t v2) {
   1498   // CHECK-LABEL: test_vcleq_u64
   1499   return vcleq_u64(v1, v2);
   1500   // CHECK: cmhs {{v[0-9]+}}.2d, v1.2d, v0.2d
   1501 }
   1502 
   1503 uint64x2_t test_vcleq_f64(float64x2_t v1, float64x2_t v2) {
   1504   // CHECK-LABEL: test_vcleq_f64
   1505   return vcleq_f64(v1, v2);
   1506   // CHECK: fcmge {{v[0-9]+}}.2d, v1.2d, v0.2d
   1507 }
   1508 
   1509 
   1510 uint8x8_t test_vcgt_s8(int8x8_t v1, int8x8_t v2) {
   1511   // CHECK-LABEL: test_vcgt_s8
   1512   return vcgt_s8(v1, v2);
   1513   // CHECK: cmgt {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1514 }
   1515 
   1516 uint16x4_t test_vcgt_s16(int16x4_t v1, int16x4_t v2) {
   1517   // CHECK-LABEL: test_vcgt_s16
   1518   return vcgt_s16(v1, v2);
   1519   // CHECK: cmgt {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1520 }
   1521 
   1522 uint32x2_t test_vcgt_s32(int32x2_t v1, int32x2_t v2) {
   1523   // CHECK-LABEL: test_vcgt_s32
   1524   return vcgt_s32(v1, v2);
   1525   // CHECK: cmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1526 }
   1527 
   1528 uint64x1_t test_vcgt_s64(int64x1_t a, int64x1_t b) {
   1529   // CHECK-LABEL: test_vcgt_s64
   1530   return vcgt_s64(a, b);
   1531   // CHECK: cmgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1532 }
   1533 
   1534 uint64x1_t test_vcgt_u64(uint64x1_t a, uint64x1_t b) {
   1535   // CHECK-LABEL: test_vcgt_u64
   1536   return vcgt_u64(a, b);
   1537   // CHECK: cmhi {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1538 }
   1539 
   1540 uint32x2_t test_vcgt_f32(float32x2_t v1, float32x2_t v2) {
   1541   // CHECK-LABEL: test_vcgt_f32
   1542   return vcgt_f32(v1, v2);
   1543   // CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1544 }
   1545 
   1546 uint64x1_t test_vcgt_f64(float64x1_t a, float64x1_t b) {
   1547   // CHECK-LABEL: test_vcgt_f64
   1548   return vcgt_f64(a, b);
   1549   // CHECK: fcmgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1550 }
   1551 
   1552 uint8x8_t test_vcgt_u8(uint8x8_t v1, uint8x8_t v2) {
   1553   // CHECK-LABEL: test_vcgt_u8
   1554   return vcgt_u8(v1, v2);
   1555   // CHECK: cmhi {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1556 }
   1557 
   1558 uint16x4_t test_vcgt_u16(uint16x4_t v1, uint16x4_t v2) {
   1559   // CHECK-LABEL: test_vcgt_u16
   1560   return vcgt_u16(v1, v2);
   1561   // CHECK: cmhi {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1562 }
   1563 
   1564 uint32x2_t test_vcgt_u32(uint32x2_t v1, uint32x2_t v2) {
   1565   // CHECK-LABEL: test_vcgt_u32
   1566   return vcgt_u32(v1, v2);
   1567   // CHECK: cmhi {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1568 }
   1569 
   1570 uint8x16_t test_vcgtq_s8(int8x16_t v1, int8x16_t v2) {
   1571   // CHECK-LABEL: test_vcgtq_s8
   1572   return vcgtq_s8(v1, v2);
   1573   // CHECK: cmgt {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1574 }
   1575 
   1576 uint16x8_t test_vcgtq_s16(int16x8_t v1, int16x8_t v2) {
   1577   // CHECK-LABEL: test_vcgtq_s16
   1578   return vcgtq_s16(v1, v2);
   1579   // CHECK: cmgt {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1580 }
   1581 
   1582 uint32x4_t test_vcgtq_s32(int32x4_t v1, int32x4_t v2) {
   1583   // CHECK-LABEL: test_vcgtq_s32
   1584   return vcgtq_s32(v1, v2);
   1585   // CHECK: cmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1586 }
   1587 
   1588 uint32x4_t test_vcgtq_f32(float32x4_t v1, float32x4_t v2) {
   1589   // CHECK-LABEL: test_vcgtq_f32
   1590   return vcgtq_f32(v1, v2);
   1591   // CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1592 }
   1593 
   1594 uint8x16_t test_vcgtq_u8(uint8x16_t v1, uint8x16_t v2) {
   1595   // CHECK-LABEL: test_vcgtq_u8
   1596   return vcgtq_u8(v1, v2);
   1597   // CHECK: cmhi {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1598 }
   1599 
   1600 uint16x8_t test_vcgtq_u16(uint16x8_t v1, uint16x8_t v2) {
   1601   // CHECK-LABEL: test_vcgtq_u16
   1602   return vcgtq_u16(v1, v2);
   1603   // CHECK: cmhi {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1604 }
   1605 
   1606 uint32x4_t test_vcgtq_u32(uint32x4_t v1, uint32x4_t v2) {
   1607   // CHECK-LABEL: test_vcgtq_u32
   1608   return vcgtq_u32(v1, v2);
   1609   // CHECK: cmhi {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1610 }
   1611 
   1612 uint64x2_t test_vcgtq_s64(int64x2_t v1, int64x2_t v2) {
   1613   // CHECK-LABEL: test_vcgtq_s64
   1614   return vcgtq_s64(v1, v2);
   1615   // CHECK: cmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1616 }
   1617 
   1618 uint64x2_t test_vcgtq_u64(uint64x2_t v1, uint64x2_t v2) {
   1619   // CHECK-LABEL: test_vcgtq_u64
   1620   return vcgtq_u64(v1, v2);
   1621   // CHECK: cmhi {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1622 }
   1623 
   1624 uint64x2_t test_vcgtq_f64(float64x2_t v1, float64x2_t v2) {
   1625   // CHECK-LABEL: test_vcgtq_f64
   1626   return vcgtq_f64(v1, v2);
   1627   // CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   1628 }
   1629 
   1630 
   1631 // Notes about vclt:
   1632 // LT condition predicate implemented as GT, so check reversed operands.
   1633 // Using registers other than v0, v1 are possible, but would be odd.
   1634 
   1635 uint8x8_t test_vclt_s8(int8x8_t v1, int8x8_t v2) {
   1636   // CHECK-LABEL: test_vclt_s8
   1637   return vclt_s8(v1, v2);
   1638   // CHECK: cmgt {{v[0-9]+}}.8b, v1.8b, v0.8b
   1639 }
   1640 
   1641 uint16x4_t test_vclt_s16(int16x4_t v1, int16x4_t v2) {
   1642   // CHECK-LABEL: test_vclt_s16
   1643   return vclt_s16(v1, v2);
   1644   // CHECK: cmgt {{v[0-9]+}}.4h, v1.4h, v0.4h
   1645 }
   1646 
   1647 uint32x2_t test_vclt_s32(int32x2_t v1, int32x2_t v2) {
   1648   // CHECK-LABEL: test_vclt_s32
   1649   return vclt_s32(v1, v2);
   1650   // CHECK: cmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
   1651 }
   1652 
   1653 uint64x1_t test_vclt_s64(int64x1_t a, int64x1_t b) {
   1654   // CHECK-LABEL: test_vclt_s64
   1655   return vclt_s64(a, b);
   1656   // CHECK: cmgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1657 }
   1658 
   1659 uint64x1_t test_vclt_u64(uint64x1_t a, uint64x1_t b) {
   1660   // CHECK-LABEL: test_vclt_u64
   1661   return vclt_u64(a, b);
   1662   // CHECK: cmhi {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1663 }
   1664 
   1665 uint32x2_t test_vclt_f32(float32x2_t v1, float32x2_t v2) {
   1666   // CHECK-LABEL: test_vclt_f32
   1667   return vclt_f32(v1, v2);
   1668   // CHECK: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
   1669 }
   1670 
   1671 uint64x1_t test_vclt_f64(float64x1_t a, float64x1_t b) {
   1672   // CHECK-LABEL: test_vclt_f64
   1673   return vclt_f64(a, b);
   1674   // CHECK: fcmgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1675 }
   1676 
   1677 uint8x8_t test_vclt_u8(uint8x8_t v1, uint8x8_t v2) {
   1678   // CHECK-LABEL: test_vclt_u8
   1679   return vclt_u8(v1, v2);
   1680   // CHECK: cmhi {{v[0-9]+}}.8b, v1.8b, v0.8b
   1681 }
   1682 
   1683 uint16x4_t test_vclt_u16(uint16x4_t v1, uint16x4_t v2) {
   1684   // CHECK-LABEL: test_vclt_u16
   1685   return vclt_u16(v1, v2);
   1686   // CHECK: cmhi {{v[0-9]+}}.4h, v1.4h, v0.4h
   1687 }
   1688 
   1689 uint32x2_t test_vclt_u32(uint32x2_t v1, uint32x2_t v2) {
   1690   // CHECK-LABEL: test_vclt_u32
   1691   return vclt_u32(v1, v2);
   1692   // CHECK: cmhi {{v[0-9]+}}.2s, v1.2s, v0.2s
   1693 }
   1694 
   1695 uint8x16_t test_vcltq_s8(int8x16_t v1, int8x16_t v2) {
   1696   // CHECK-LABEL: test_vcltq_s8
   1697   return vcltq_s8(v1, v2);
   1698   // CHECK: cmgt {{v[0-9]+}}.16b, v1.16b, v0.16b
   1699 }
   1700 
   1701 uint16x8_t test_vcltq_s16(int16x8_t v1, int16x8_t v2) {
   1702   // CHECK-LABEL: test_vcltq_s16
   1703   return vcltq_s16(v1, v2);
   1704   // CHECK: cmgt {{v[0-9]+}}.8h, v1.8h, v0.8h
   1705 }
   1706 
   1707 uint32x4_t test_vcltq_s32(int32x4_t v1, int32x4_t v2) {
   1708   // CHECK-LABEL: test_vcltq_s32
   1709   return vcltq_s32(v1, v2);
   1710   // CHECK: cmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
   1711 }
   1712 
   1713 uint32x4_t test_vcltq_f32(float32x4_t v1, float32x4_t v2) {
   1714   // CHECK-LABEL: test_vcltq_f32
   1715   return vcltq_f32(v1, v2);
   1716   // CHECK: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
   1717 }
   1718 
   1719 uint8x16_t test_vcltq_u8(uint8x16_t v1, uint8x16_t v2) {
   1720   // CHECK-LABEL: test_vcltq_u8
   1721   return vcltq_u8(v1, v2);
   1722   // CHECK: cmhi {{v[0-9]+}}.16b, v1.16b, v0.16b
   1723 }
   1724 
   1725 uint16x8_t test_vcltq_u16(uint16x8_t v1, uint16x8_t v2) {
   1726   // CHECK-LABEL: test_vcltq_u16
   1727   return vcltq_u16(v1, v2);
   1728   // CHECK: cmhi {{v[0-9]+}}.8h, v1.8h, v0.8h
   1729 }
   1730 
   1731 uint32x4_t test_vcltq_u32(uint32x4_t v1, uint32x4_t v2) {
   1732   // CHECK-LABEL: test_vcltq_u32
   1733   return vcltq_u32(v1, v2);
   1734   // CHECK: cmhi {{v[0-9]+}}.4s, v1.4s, v0.4s
   1735 }
   1736 
   1737 uint64x2_t test_vcltq_s64(int64x2_t v1, int64x2_t v2) {
   1738   // CHECK-LABEL: test_vcltq_s64
   1739   return vcltq_s64(v1, v2);
   1740   // CHECK: cmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
   1741 }
   1742 
   1743 uint64x2_t test_vcltq_u64(uint64x2_t v1, uint64x2_t v2) {
   1744   // CHECK-LABEL: test_vcltq_u64
   1745   return vcltq_u64(v1, v2);
   1746   // CHECK: cmhi {{v[0-9]+}}.2d, v1.2d, v0.2d
   1747 }
   1748 
   1749 uint64x2_t test_vcltq_f64(float64x2_t v1, float64x2_t v2) {
   1750   // CHECK-LABEL: test_vcltq_f64
   1751   return vcltq_f64(v1, v2);
   1752   // CHECK: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
   1753 }
   1754 
   1755 
   1756 int8x8_t test_vhadd_s8(int8x8_t v1, int8x8_t v2) {
   1757 // CHECK-LABEL: test_vhadd_s8
   1758   return vhadd_s8(v1, v2);
   1759   // CHECK: shadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1760 }
   1761 
   1762 int16x4_t test_vhadd_s16(int16x4_t v1, int16x4_t v2) {
   1763 // CHECK-LABEL: test_vhadd_s16
   1764   return vhadd_s16(v1, v2);
   1765   // CHECK: shadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1766 }
   1767 
   1768 int32x2_t test_vhadd_s32(int32x2_t v1, int32x2_t v2) {
   1769 // CHECK-LABEL: test_vhadd_s32
   1770   return vhadd_s32(v1, v2);
   1771   // CHECK: shadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1772 }
   1773 
   1774 uint8x8_t test_vhadd_u8(uint8x8_t v1, uint8x8_t v2) {
   1775 // CHECK-LABEL: test_vhadd_u8
   1776   return vhadd_u8(v1, v2);
   1777   // CHECK: uhadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1778 }
   1779 
   1780 uint16x4_t test_vhadd_u16(uint16x4_t v1, uint16x4_t v2) {
   1781 // CHECK-LABEL: test_vhadd_u16
   1782   return vhadd_u16(v1, v2);
   1783   // CHECK: uhadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1784 }
   1785 
   1786 uint32x2_t test_vhadd_u32(uint32x2_t v1, uint32x2_t v2) {
   1787 // CHECK-LABEL: test_vhadd_u32
   1788   return vhadd_u32(v1, v2);
   1789   // CHECK: uhadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1790 }
   1791 
   1792 int8x16_t test_vhaddq_s8(int8x16_t v1, int8x16_t v2) {
   1793 // CHECK-LABEL: test_vhaddq_s8
   1794   return vhaddq_s8(v1, v2);
   1795   // CHECK: shadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1796 }
   1797 
   1798 int16x8_t test_vhaddq_s16(int16x8_t v1, int16x8_t v2) {
   1799 // CHECK-LABEL: test_vhaddq_s16
   1800   return vhaddq_s16(v1, v2);
   1801   // CHECK: shadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1802 }
   1803 
   1804 int32x4_t test_vhaddq_s32(int32x4_t v1, int32x4_t v2) {
   1805 // CHECK-LABEL: test_vhaddq_s32
   1806   return vhaddq_s32(v1, v2);
   1807   // CHECK: shadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1808 }
   1809 
   1810 uint8x16_t test_vhaddq_u8(uint8x16_t v1, uint8x16_t v2) {
   1811 // CHECK-LABEL: test_vhaddq_u8
   1812   return vhaddq_u8(v1, v2);
   1813   // CHECK: uhadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1814 }
   1815 
   1816 uint16x8_t test_vhaddq_u16(uint16x8_t v1, uint16x8_t v2) {
   1817 // CHECK-LABEL: test_vhaddq_u16
   1818   return vhaddq_u16(v1, v2);
   1819   // CHECK: uhadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1820 }
   1821 
   1822 uint32x4_t test_vhaddq_u32(uint32x4_t v1, uint32x4_t v2) {
   1823 // CHECK-LABEL: test_vhaddq_u32
   1824   return vhaddq_u32(v1, v2);
   1825   // CHECK: uhadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1826 }
   1827 
   1828 
   1829 int8x8_t test_vhsub_s8(int8x8_t v1, int8x8_t v2) {
   1830 // CHECK-LABEL: test_vhsub_s8
   1831   return vhsub_s8(v1, v2);
   1832   // CHECK: shsub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1833 }
   1834 
   1835 int16x4_t test_vhsub_s16(int16x4_t v1, int16x4_t v2) {
   1836 // CHECK-LABEL: test_vhsub_s16
   1837   return vhsub_s16(v1, v2);
   1838   // CHECK: shsub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1839 }
   1840 
   1841 int32x2_t test_vhsub_s32(int32x2_t v1, int32x2_t v2) {
   1842 // CHECK-LABEL: test_vhsub_s32
   1843   return vhsub_s32(v1, v2);
   1844   // CHECK: shsub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1845 }
   1846 
   1847 uint8x8_t test_vhsub_u8(uint8x8_t v1, uint8x8_t v2) {
   1848 // CHECK-LABEL: test_vhsub_u8
   1849   return vhsub_u8(v1, v2);
   1850   // CHECK: uhsub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1851 }
   1852 
   1853 uint16x4_t test_vhsub_u16(uint16x4_t v1, uint16x4_t v2) {
   1854 // CHECK-LABEL: test_vhsub_u16
   1855   return vhsub_u16(v1, v2);
   1856   // CHECK: uhsub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1857 }
   1858 
   1859 uint32x2_t test_vhsub_u32(uint32x2_t v1, uint32x2_t v2) {
   1860 // CHECK-LABEL: test_vhsub_u32
   1861   return vhsub_u32(v1, v2);
   1862   // CHECK: uhsub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1863 }
   1864 
   1865 int8x16_t test_vhsubq_s8(int8x16_t v1, int8x16_t v2) {
   1866 // CHECK-LABEL: test_vhsubq_s8
   1867   return vhsubq_s8(v1, v2);
   1868   // CHECK: shsub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1869 }
   1870 
   1871 int16x8_t test_vhsubq_s16(int16x8_t v1, int16x8_t v2) {
   1872 // CHECK-LABEL: test_vhsubq_s16
   1873   return vhsubq_s16(v1, v2);
   1874   // CHECK: shsub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1875 }
   1876 
   1877 int32x4_t test_vhsubq_s32(int32x4_t v1, int32x4_t v2) {
   1878 // CHECK-LABEL: test_vhsubq_s32
   1879   return vhsubq_s32(v1, v2);
   1880   // CHECK: shsub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1881 }
   1882 
   1883 uint8x16_t test_vhsubq_u8(uint8x16_t v1, uint8x16_t v2) {
   1884 // CHECK-LABEL: test_vhsubq_u8
   1885   return vhsubq_u8(v1, v2);
   1886   // CHECK: uhsub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1887 }
   1888 
   1889 uint16x8_t test_vhsubq_u16(uint16x8_t v1, uint16x8_t v2) {
   1890 // CHECK-LABEL: test_vhsubq_u16
   1891   return vhsubq_u16(v1, v2);
   1892   // CHECK: uhsub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1893 }
   1894 
   1895 uint32x4_t test_vhsubq_u32(uint32x4_t v1, uint32x4_t v2) {
   1896 // CHECK-LABEL: test_vhsubq_u32
   1897   return vhsubq_u32(v1, v2);
   1898   // CHECK: uhsub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1899 }
   1900 
   1901 
   1902 int8x8_t test_vrhadd_s8(int8x8_t v1, int8x8_t v2) {
   1903 // CHECK-LABEL: test_vrhadd_s8
   1904   return vrhadd_s8(v1, v2);
   1905 // CHECK: srhadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1906 }
   1907 
   1908 int16x4_t test_vrhadd_s16(int16x4_t v1, int16x4_t v2) {
   1909 // CHECK-LABEL: test_vrhadd_s16
   1910   return vrhadd_s16(v1, v2);
   1911 // CHECK: srhadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1912 }
   1913 
   1914 int32x2_t test_vrhadd_s32(int32x2_t v1, int32x2_t v2) {
   1915 // CHECK-LABEL: test_vrhadd_s32
   1916   return vrhadd_s32(v1, v2);
   1917 // CHECK: srhadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1918 }
   1919 
   1920 uint8x8_t test_vrhadd_u8(uint8x8_t v1, uint8x8_t v2) {
   1921 // CHECK-LABEL: test_vrhadd_u8
   1922   return vrhadd_u8(v1, v2);
   1923 // CHECK: urhadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1924 }
   1925 
   1926 uint16x4_t test_vrhadd_u16(uint16x4_t v1, uint16x4_t v2) {
   1927 // CHECK-LABEL: test_vrhadd_u16
   1928   return vrhadd_u16(v1, v2);
   1929 // CHECK: urhadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1930 }
   1931 
   1932 uint32x2_t test_vrhadd_u32(uint32x2_t v1, uint32x2_t v2) {
   1933 // CHECK-LABEL: test_vrhadd_u32
   1934   return vrhadd_u32(v1, v2);
   1935 // CHECK: urhadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1936 }
   1937 
   1938 int8x16_t test_vrhaddq_s8(int8x16_t v1, int8x16_t v2) {
   1939 // CHECK-LABEL: test_vrhaddq_s8
   1940   return vrhaddq_s8(v1, v2);
   1941 // CHECK: srhadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1942 }
   1943 
   1944 int16x8_t test_vrhaddq_s16(int16x8_t v1, int16x8_t v2) {
   1945 // CHECK-LABEL: test_vrhaddq_s16
   1946   return vrhaddq_s16(v1, v2);
   1947 // CHECK: srhadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1948 }
   1949 
   1950 int32x4_t test_vrhaddq_s32(int32x4_t v1, int32x4_t v2) {
   1951 // CHECK-LABEL: test_vrhaddq_s32
   1952   return vrhaddq_s32(v1, v2);
   1953 // CHECK: srhadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1954 }
   1955 
   1956 uint8x16_t test_vrhaddq_u8(uint8x16_t v1, uint8x16_t v2) {
   1957 // CHECK-LABEL: test_vrhaddq_u8
   1958   return vrhaddq_u8(v1, v2);
   1959 // CHECK: urhadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   1960 }
   1961 
   1962 uint16x8_t test_vrhaddq_u16(uint16x8_t v1, uint16x8_t v2) {
   1963 // CHECK-LABEL: test_vrhaddq_u16
   1964   return vrhaddq_u16(v1, v2);
   1965 // CHECK: urhadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   1966 }
   1967 
   1968 uint32x4_t test_vrhaddq_u32(uint32x4_t v1, uint32x4_t v2) {
   1969 // CHECK-LABEL: test_vrhaddq_u32
   1970   return vrhaddq_u32(v1, v2);
   1971 // CHECK: urhadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   1972 }
   1973 int8x8_t test_vqadd_s8(int8x8_t a, int8x8_t b) {
   1974 // CHECK-LABEL: test_vqadd_s8
   1975   return vqadd_s8(a, b);
   1976   // CHECK: sqadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   1977 }
   1978 
   1979 int16x4_t test_vqadd_s16(int16x4_t a, int16x4_t b) {
   1980 // CHECK-LABEL: test_vqadd_s16
   1981   return vqadd_s16(a, b);
   1982   // CHECK: sqadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   1983 }
   1984 
   1985 int32x2_t test_vqadd_s32(int32x2_t a, int32x2_t b) {
   1986 // CHECK-LABEL: test_vqadd_s32
   1987   return vqadd_s32(a, b);
   1988   // CHECK: sqadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   1989 }
   1990 
   1991 int64x1_t test_vqadd_s64(int64x1_t a, int64x1_t b) {
   1992 // CHECK-LABEL: test_vqadd_s64
   1993   return vqadd_s64(a, b);
   1994 // CHECK:  sqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   1995 }
   1996 
   1997 uint8x8_t test_vqadd_u8(uint8x8_t a, uint8x8_t b) {
   1998 // CHECK-LABEL: test_vqadd_u8
   1999   return vqadd_u8(a, b);
   2000   // CHECK: uqadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2001 }
   2002 
   2003 uint16x4_t test_vqadd_u16(uint16x4_t a, uint16x4_t b) {
   2004 // CHECK-LABEL: test_vqadd_u16
   2005   return vqadd_u16(a, b);
   2006   // CHECK: uqadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2007 }
   2008 
   2009 uint32x2_t test_vqadd_u32(uint32x2_t a, uint32x2_t b) {
   2010 // CHECK-LABEL: test_vqadd_u32
   2011   return vqadd_u32(a, b);
   2012   // CHECK: uqadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2013 }
   2014 
   2015 uint64x1_t test_vqadd_u64(uint64x1_t a, uint64x1_t b) {
   2016 // CHECK:  test_vqadd_u64
   2017   return vqadd_u64(a, b);
   2018 // CHECK:  uqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2019 }
   2020 
   2021 int8x16_t test_vqaddq_s8(int8x16_t a, int8x16_t b) {
   2022 // CHECK-LABEL: test_vqaddq_s8
   2023   return vqaddq_s8(a, b);
   2024   // CHECK: sqadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2025 }
   2026 
   2027 int16x8_t test_vqaddq_s16(int16x8_t a, int16x8_t b) {
   2028 // CHECK-LABEL: test_vqaddq_s16
   2029   return vqaddq_s16(a, b);
   2030   // CHECK: sqadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2031 }
   2032 
   2033 int32x4_t test_vqaddq_s32(int32x4_t a, int32x4_t b) {
   2034 // CHECK-LABEL: test_vqaddq_s32
   2035   return vqaddq_s32(a, b);
   2036   // CHECK: sqadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2037 }
   2038 
   2039 int64x2_t test_vqaddq_s64(int64x2_t a, int64x2_t b) {
   2040 // CHECK-LABEL: test_vqaddq_s64
   2041   return vqaddq_s64(a, b);
   2042 // CHECK: sqadd {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2043 }
   2044 
   2045 uint8x16_t test_vqaddq_u8(uint8x16_t a, uint8x16_t b) {
   2046 // CHECK-LABEL: test_vqaddq_u8
   2047   return vqaddq_u8(a, b);
   2048   // CHECK: uqadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2049 }
   2050 
   2051 uint16x8_t test_vqaddq_u16(uint16x8_t a, uint16x8_t b) {
   2052 // CHECK-LABEL: test_vqaddq_u16
   2053   return vqaddq_u16(a, b);
   2054   // CHECK: uqadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2055 }
   2056 
   2057 uint32x4_t test_vqaddq_u32(uint32x4_t a, uint32x4_t b) {
   2058 // CHECK-LABEL: test_vqaddq_u32
   2059   return vqaddq_u32(a, b);
   2060   // CHECK: uqadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2061 }
   2062 
   2063 uint64x2_t test_vqaddq_u64(uint64x2_t a, uint64x2_t b) {
   2064 // CHECK-LABEL: test_vqaddq_u64
   2065   return vqaddq_u64(a, b);
   2066 // CHECK: uqadd {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2067 }
   2068 
   2069 
   2070 int8x8_t test_vqsub_s8(int8x8_t a, int8x8_t b) {
   2071 // CHECK-LABEL: test_vqsub_s8
   2072   return vqsub_s8(a, b);
   2073   // CHECK: sqsub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2074 }
   2075 
   2076 int16x4_t test_vqsub_s16(int16x4_t a, int16x4_t b) {
   2077 // CHECK-LABEL: test_vqsub_s16
   2078   return vqsub_s16(a, b);
   2079   // CHECK: sqsub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2080 }
   2081 
   2082 int32x2_t test_vqsub_s32(int32x2_t a, int32x2_t b) {
   2083 // CHECK-LABEL: test_vqsub_s32
   2084   return vqsub_s32(a, b);
   2085   // CHECK: sqsub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2086 }
   2087 
   2088 int64x1_t test_vqsub_s64(int64x1_t a, int64x1_t b) {
   2089 // CHECK-LABEL: test_vqsub_s64
   2090   return vqsub_s64(a, b);
   2091 // CHECK: sqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2092 }
   2093 
   2094 uint8x8_t test_vqsub_u8(uint8x8_t a, uint8x8_t b) {
   2095 // CHECK-LABEL: test_vqsub_u8
   2096   return vqsub_u8(a, b);
   2097   // CHECK: uqsub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2098 }
   2099 
   2100 uint16x4_t test_vqsub_u16(uint16x4_t a, uint16x4_t b) {
   2101 // CHECK-LABEL: test_vqsub_u16
   2102   return vqsub_u16(a, b);
   2103   // CHECK: uqsub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2104 }
   2105 
   2106 uint32x2_t test_vqsub_u32(uint32x2_t a, uint32x2_t b) {
   2107 // CHECK-LABEL: test_vqsub_u32
   2108   return vqsub_u32(a, b);
   2109   // CHECK: uqsub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2110 }
   2111 
   2112 uint64x1_t test_vqsub_u64(uint64x1_t a, uint64x1_t b) {
   2113 // CHECK-LABEL: test_vqsub_u64
   2114   return vqsub_u64(a, b);
   2115 // CHECK:  uqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2116 }
   2117 
   2118 int8x16_t test_vqsubq_s8(int8x16_t a, int8x16_t b) {
   2119 // CHECK-LABEL: test_vqsubq_s8
   2120   return vqsubq_s8(a, b);
   2121   // CHECK: sqsub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2122 }
   2123 
   2124 int16x8_t test_vqsubq_s16(int16x8_t a, int16x8_t b) {
   2125 // CHECK-LABEL: test_vqsubq_s16
   2126   return vqsubq_s16(a, b);
   2127   // CHECK: sqsub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2128 }
   2129 
   2130 int32x4_t test_vqsubq_s32(int32x4_t a, int32x4_t b) {
   2131 // CHECK-LABEL: test_vqsubq_s32
   2132   return vqsubq_s32(a, b);
   2133   // CHECK: sqsub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2134 }
   2135 
   2136 int64x2_t test_vqsubq_s64(int64x2_t a, int64x2_t b) {
   2137 // CHECK-LABEL: test_vqsubq_s64
   2138   return vqsubq_s64(a, b);
   2139 // CHECK: sqsub {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2140 }
   2141 
   2142 uint8x16_t test_vqsubq_u8(uint8x16_t a, uint8x16_t b) {
   2143 // CHECK-LABEL: test_vqsubq_u8
   2144   return vqsubq_u8(a, b);
   2145   // CHECK: uqsub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2146 }
   2147 
   2148 uint16x8_t test_vqsubq_u16(uint16x8_t a, uint16x8_t b) {
   2149 // CHECK-LABEL: test_vqsubq_u16
   2150   return vqsubq_u16(a, b);
   2151   // CHECK: uqsub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2152 }
   2153 
   2154 uint32x4_t test_vqsubq_u32(uint32x4_t a, uint32x4_t b) {
   2155 // CHECK-LABEL: test_vqsubq_u32
   2156   return vqsubq_u32(a, b);
   2157   // CHECK: uqsub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2158 }
   2159 
   2160 uint64x2_t test_vqsubq_u64(uint64x2_t a, uint64x2_t b) {
   2161 // CHECK-LABEL: test_vqsubq_u64
   2162   return vqsubq_u64(a, b);
   2163   // CHECK: uqsub {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2164 }
   2165 
   2166 
   2167 int8x8_t test_vshl_s8(int8x8_t a, int8x8_t b) {
   2168 // CHECK-LABEL: test_vshl_s8
   2169   return vshl_s8(a, b);
   2170 // CHECK: sshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2171 }
   2172 
   2173 int16x4_t test_vshl_s16(int16x4_t a, int16x4_t b) {
   2174 // CHECK-LABEL: test_vshl_s16
   2175   return vshl_s16(a, b);
   2176 // CHECK: sshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2177 }
   2178 
   2179 int32x2_t test_vshl_s32(int32x2_t a, int32x2_t b) {
   2180 // CHECK-LABEL: test_vshl_s32
   2181   return vshl_s32(a, b);
   2182 // CHECK: sshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2183 }
   2184 
   2185 int64x1_t test_vshl_s64(int64x1_t a, int64x1_t b) {
   2186 // CHECK-LABEL: test_vshl_s64
   2187   return vshl_s64(a, b);
   2188 // CHECK: sshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2189 }
   2190 
   2191 uint8x8_t test_vshl_u8(uint8x8_t a, int8x8_t b) {
   2192 // CHECK-LABEL: test_vshl_u8
   2193   return vshl_u8(a, b);
   2194 // CHECK: ushl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2195 }
   2196 
   2197 uint16x4_t test_vshl_u16(uint16x4_t a, int16x4_t b) {
   2198 // CHECK-LABEL: test_vshl_u16
   2199   return vshl_u16(a, b);
   2200 // CHECK: ushl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2201 }
   2202 
   2203 uint32x2_t test_vshl_u32(uint32x2_t a, int32x2_t b) {
   2204 // CHECK-LABEL: test_vshl_u32
   2205   return vshl_u32(a, b);
   2206 // CHECK: ushl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2207 }
   2208 
   2209 uint64x1_t test_vshl_u64(uint64x1_t a, int64x1_t b) {
   2210 // CHECK-LABEL: test_vshl_u64
   2211   return vshl_u64(a, b);
   2212 // CHECK: ushl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2213 }
   2214 
   2215 int8x16_t test_vshlq_s8(int8x16_t a, int8x16_t b) {
   2216 // CHECK-LABEL: test_vshlq_s8
   2217   return vshlq_s8(a, b);
   2218 // CHECK: sshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2219 }
   2220 
   2221 int16x8_t test_vshlq_s16(int16x8_t a, int16x8_t b) {
   2222 // CHECK-LABEL: test_vshlq_s16
   2223   return vshlq_s16(a, b);
   2224 // CHECK: sshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2225 }
   2226 
   2227 int32x4_t test_vshlq_s32(int32x4_t a, int32x4_t b) {
   2228 // CHECK-LABEL: test_vshlq_s32
   2229   return vshlq_s32(a, b);
   2230 // CHECK: sshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2231 }
   2232 
   2233 int64x2_t test_vshlq_s64(int64x2_t a, int64x2_t b) {
   2234 // CHECK-LABEL: test_vshlq_s64
   2235   return vshlq_s64(a, b);
   2236 // CHECK: sshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2237 }
   2238 
   2239 uint8x16_t test_vshlq_u8(uint8x16_t a, int8x16_t b) {
   2240 // CHECK-LABEL: test_vshlq_u8
   2241   return vshlq_u8(a, b);
   2242 // CHECK: ushl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2243 }
   2244 
   2245 uint16x8_t test_vshlq_u16(uint16x8_t a, int16x8_t b) {
   2246 // CHECK-LABEL: test_vshlq_u16
   2247   return vshlq_u16(a, b);
   2248 // CHECK: ushl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2249 }
   2250 
   2251 uint32x4_t test_vshlq_u32(uint32x4_t a, int32x4_t b) {
   2252 // CHECK-LABEL: test_vshlq_u32
   2253   return vshlq_u32(a, b);
   2254 // CHECK: ushl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2255 }
   2256 
   2257 uint64x2_t test_vshlq_u64(uint64x2_t a, int64x2_t b) {
   2258 // CHECK-LABEL: test_vshlq_u64
   2259   return vshlq_u64(a, b);
   2260 // CHECK: ushl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2261 }
   2262 
   2263 
   2264 int8x8_t test_vqshl_s8(int8x8_t a, int8x8_t b) {
   2265 // CHECK-LABEL: test_vqshl_s8
   2266   return vqshl_s8(a, b);
   2267 // CHECK: sqshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2268 }
   2269 
   2270 int16x4_t test_vqshl_s16(int16x4_t a, int16x4_t b) {
   2271 // CHECK-LABEL: test_vqshl_s16
   2272   return vqshl_s16(a, b);
   2273 // CHECK: sqshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2274 }
   2275 
   2276 int32x2_t test_vqshl_s32(int32x2_t a, int32x2_t b) {
   2277 // CHECK-LABEL: test_vqshl_s32
   2278   return vqshl_s32(a, b);
   2279 // CHECK: sqshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2280 }
   2281 
   2282 int64x1_t test_vqshl_s64(int64x1_t a, int64x1_t b) {
   2283 // CHECK-LABEL: test_vqshl_s64
   2284   return vqshl_s64(a, b);
   2285 // CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2286 }
   2287 
   2288 uint8x8_t test_vqshl_u8(uint8x8_t a, int8x8_t b) {
   2289 // CHECK-LABEL: test_vqshl_u8
   2290   return vqshl_u8(a, b);
   2291 // CHECK: uqshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2292 }
   2293 
   2294 uint16x4_t test_vqshl_u16(uint16x4_t a, int16x4_t b) {
   2295 // CHECK-LABEL: test_vqshl_u16
   2296   return vqshl_u16(a, b);
   2297 // CHECK: uqshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2298 }
   2299 
   2300 uint32x2_t test_vqshl_u32(uint32x2_t a, int32x2_t b) {
   2301 // CHECK-LABEL: test_vqshl_u32
   2302   return vqshl_u32(a, b);
   2303 // CHECK: uqshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2304 }
   2305 
   2306 uint64x1_t test_vqshl_u64(uint64x1_t a, int64x1_t b) {
   2307 // CHECK-LABEL: test_vqshl_u64
   2308   return vqshl_u64(a, b);
   2309 // CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2310 }
   2311 
   2312 int8x16_t test_vqshlq_s8(int8x16_t a, int8x16_t b) {
   2313 // CHECK-LABEL: test_vqshlq_s8
   2314   return vqshlq_s8(a, b);
   2315 // CHECK: sqshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2316 }
   2317 
   2318 int16x8_t test_vqshlq_s16(int16x8_t a, int16x8_t b) {
   2319 // CHECK-LABEL: test_vqshlq_s16
   2320   return vqshlq_s16(a, b);
   2321 // CHECK: sqshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2322 }
   2323 
   2324 int32x4_t test_vqshlq_s32(int32x4_t a, int32x4_t b) {
   2325 // CHECK-LABEL: test_vqshlq_s32
   2326   return vqshlq_s32(a, b);
   2327 // CHECK: sqshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2328 }
   2329 
   2330 int64x2_t test_vqshlq_s64(int64x2_t a, int64x2_t b) {
   2331 // CHECK-LABEL: test_vqshlq_s64
   2332   return vqshlq_s64(a, b);
   2333 // CHECK: sqshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2334 }
   2335 
   2336 uint8x16_t test_vqshlq_u8(uint8x16_t a, int8x16_t b) {
   2337 // CHECK-LABEL: test_vqshlq_u8
   2338   return vqshlq_u8(a, b);
   2339 // CHECK: uqshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2340 }
   2341 
   2342 uint16x8_t test_vqshlq_u16(uint16x8_t a, int16x8_t b) {
   2343 // CHECK-LABEL: test_vqshlq_u16
   2344   return vqshlq_u16(a, b);
   2345 // CHECK: uqshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2346 }
   2347 
   2348 uint32x4_t test_vqshlq_u32(uint32x4_t a, int32x4_t b) {
   2349 // CHECK-LABEL: test_vqshlq_u32
   2350   return vqshlq_u32(a, b);
   2351 // CHECK: uqshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2352 }
   2353 
   2354 uint64x2_t test_vqshlq_u64(uint64x2_t a, int64x2_t b) {
   2355 // CHECK-LABEL: test_vqshlq_u64
   2356   return vqshlq_u64(a, b);
   2357 // CHECK: uqshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2358 }
   2359 
   2360 int8x8_t test_vrshl_s8(int8x8_t a, int8x8_t b) {
   2361 // CHECK-LABEL: test_vrshl_s8
   2362   return vrshl_s8(a, b);
   2363 // CHECK: srshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2364 }
   2365 
   2366 int16x4_t test_vrshl_s16(int16x4_t a, int16x4_t b) {
   2367 // CHECK-LABEL: test_vrshl_s16
   2368   return vrshl_s16(a, b);
   2369 // CHECK: srshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2370 }
   2371 
   2372 int32x2_t test_vrshl_s32(int32x2_t a, int32x2_t b) {
   2373 // CHECK-LABEL: test_vrshl_s32
   2374   return vrshl_s32(a, b);
   2375 // CHECK: srshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2376 }
   2377 
   2378 int64x1_t test_vrshl_s64(int64x1_t a, int64x1_t b) {
   2379 // CHECK-LABEL: test_vrshl_s64
   2380   return vrshl_s64(a, b);
   2381 // CHECK: srshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2382 }
   2383 
   2384 uint8x8_t test_vrshl_u8(uint8x8_t a, int8x8_t b) {
   2385 // CHECK-LABEL: test_vrshl_u8
   2386   return vrshl_u8(a, b);
   2387 // CHECK: urshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2388 }
   2389 
   2390 uint16x4_t test_vrshl_u16(uint16x4_t a, int16x4_t b) {
   2391 // CHECK-LABEL: test_vrshl_u16
   2392   return vrshl_u16(a, b);
   2393 // CHECK: urshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2394 }
   2395 
   2396 uint32x2_t test_vrshl_u32(uint32x2_t a, int32x2_t b) {
   2397 // CHECK-LABEL: test_vrshl_u32
   2398   return vrshl_u32(a, b);
   2399 // CHECK: urshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2400 }
   2401 
   2402 uint64x1_t test_vrshl_u64(uint64x1_t a, int64x1_t b) {
   2403 // CHECK-LABEL: test_vrshl_u64
   2404   return vrshl_u64(a, b);
   2405 // CHECK: urshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2406 }
   2407 
   2408 int8x16_t test_vrshlq_s8(int8x16_t a, int8x16_t b) {
   2409 // CHECK-LABEL: test_vrshlq_s8
   2410   return vrshlq_s8(a, b);
   2411 // CHECK: srshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2412 }
   2413 
   2414 int16x8_t test_vrshlq_s16(int16x8_t a, int16x8_t b) {
   2415 // CHECK-LABEL: test_vrshlq_s16
   2416   return vrshlq_s16(a, b);
   2417 // CHECK: srshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2418 }
   2419 
   2420 int32x4_t test_vrshlq_s32(int32x4_t a, int32x4_t b) {
   2421 // CHECK-LABEL: test_vrshlq_s32
   2422   return vrshlq_s32(a, b);
   2423 // CHECK: srshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2424 }
   2425 
   2426 int64x2_t test_vrshlq_s64(int64x2_t a, int64x2_t b) {
   2427 // CHECK-LABEL: test_vrshlq_s64
   2428   return vrshlq_s64(a, b);
   2429 // CHECK: srshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2430 }
   2431 
   2432 uint8x16_t test_vrshlq_u8(uint8x16_t a, int8x16_t b) {
   2433 // CHECK-LABEL: test_vrshlq_u8
   2434   return vrshlq_u8(a, b);
   2435 // CHECK: urshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2436 }
   2437 
   2438 uint16x8_t test_vrshlq_u16(uint16x8_t a, int16x8_t b) {
   2439 // CHECK-LABEL: test_vrshlq_u16
   2440   return vrshlq_u16(a, b);
   2441 // CHECK: urshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2442 }
   2443 
   2444 uint32x4_t test_vrshlq_u32(uint32x4_t a, int32x4_t b) {
   2445 // CHECK-LABEL: test_vrshlq_u32
   2446   return vrshlq_u32(a, b);
   2447 // CHECK: urshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2448 }
   2449 
   2450 uint64x2_t test_vrshlq_u64(uint64x2_t a, int64x2_t b) {
   2451 // CHECK-LABEL: test_vrshlq_u64
   2452   return vrshlq_u64(a, b);
   2453 // CHECK: urshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2454 }
   2455 
   2456 
   2457 int8x8_t test_vqrshl_s8(int8x8_t a, int8x8_t b) {
   2458 // CHECK-LABEL: test_vqrshl_s8
   2459   return vqrshl_s8(a, b);
   2460 // CHECK: sqrshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2461 }
   2462 
   2463 int16x4_t test_vqrshl_s16(int16x4_t a, int16x4_t b) {
   2464 // CHECK-LABEL: test_vqrshl_s16
   2465   return vqrshl_s16(a, b);
   2466 // CHECK: sqrshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2467 }
   2468 
   2469 int32x2_t test_vqrshl_s32(int32x2_t a, int32x2_t b) {
   2470 // CHECK-LABEL: test_vqrshl_s32
   2471   return vqrshl_s32(a, b);
   2472 // CHECK: sqrshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2473 }
   2474 
   2475 int64x1_t test_vqrshl_s64(int64x1_t a, int64x1_t b) {
   2476 // CHECK-LABEL: test_vqrshl_s64
   2477   return vqrshl_s64(a, b);
   2478 // CHECK: sqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2479 }
   2480 
   2481 uint8x8_t test_vqrshl_u8(uint8x8_t a, int8x8_t b) {
   2482 // CHECK-LABEL: test_vqrshl_u8
   2483   return vqrshl_u8(a, b);
   2484 // CHECK: uqrshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2485 }
   2486 
   2487 uint16x4_t test_vqrshl_u16(uint16x4_t a, int16x4_t b) {
   2488 // CHECK-LABEL: test_vqrshl_u16
   2489   return vqrshl_u16(a, b);
   2490 // CHECK: uqrshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2491 }
   2492 
   2493 uint32x2_t test_vqrshl_u32(uint32x2_t a, int32x2_t b) {
   2494 // CHECK-LABEL: test_vqrshl_u32
   2495   return vqrshl_u32(a, b);
   2496 // CHECK: uqrshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2497 }
   2498 
   2499 uint64x1_t test_vqrshl_u64(uint64x1_t a, int64x1_t b) {
   2500 // CHECK-LABEL: test_vqrshl_u64
   2501   return vqrshl_u64(a, b);
   2502 // CHECK: uqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   2503 }
   2504 
   2505 int8x16_t test_vqrshlq_s8(int8x16_t a, int8x16_t b) {
   2506 // CHECK-LABEL: test_vqrshlq_s8
   2507   return vqrshlq_s8(a, b);
   2508 // CHECK: sqrshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2509 }
   2510 
   2511 int16x8_t test_vqrshlq_s16(int16x8_t a, int16x8_t b) {
   2512 // CHECK-LABEL: test_vqrshlq_s16
   2513   return vqrshlq_s16(a, b);
   2514 // CHECK: sqrshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2515 }
   2516 
   2517 int32x4_t test_vqrshlq_s32(int32x4_t a, int32x4_t b) {
   2518 // CHECK-LABEL: test_vqrshlq_s32
   2519   return vqrshlq_s32(a, b);
   2520 // CHECK: sqrshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2521 }
   2522 
   2523 int64x2_t test_vqrshlq_s64(int64x2_t a, int64x2_t b) {
   2524 // CHECK-LABEL: test_vqrshlq_s64
   2525   return vqrshlq_s64(a, b);
   2526 // CHECK: sqrshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2527 }
   2528 
   2529 // CHECK-LABEL: test_vqrshlq_u8
   2530 uint8x16_t test_vqrshlq_u8(uint8x16_t a, int8x16_t b) {
   2531   return vqrshlq_u8(a, b);
   2532 // CHECK: uqrshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2533 }
   2534 
   2535 uint16x8_t test_vqrshlq_u16(uint16x8_t a, int16x8_t b) {
   2536 // CHECK-LABEL: test_vqrshlq_u16
   2537   return vqrshlq_u16(a, b);
   2538 // CHECK: uqrshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2539 }
   2540 
   2541 uint32x4_t test_vqrshlq_u32(uint32x4_t a, int32x4_t b) {
   2542 // CHECK-LABEL: test_vqrshlq_u32
   2543   return vqrshlq_u32(a, b);
   2544 // CHECK: uqrshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2545 }
   2546 
   2547 uint64x2_t test_vqrshlq_u64(uint64x2_t a, int64x2_t b) {
   2548 // CHECK-LABEL: test_vqrshlq_u64
   2549   return vqrshlq_u64(a, b);
   2550 // CHECK: uqrshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2551 }
   2552 
   2553 poly64x1_t test_vsli_n_p64(poly64x1_t a, poly64x1_t b) {
   2554 // CHECK-LABEL: test_vsli_n_p64
   2555   return vsli_n_p64(a, b, 0);
   2556 // CHECK: sli {{d[0-9]+}}, {{d[0-9]+}}, #0
   2557 }
   2558 
   2559 poly64x2_t test_vsliq_n_p64(poly64x2_t a, poly64x2_t b) {
   2560 // CHECK-LABEL: test_vsliq_n_p64
   2561   return vsliq_n_p64(a, b, 0);
   2562 // CHECK: sli {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
   2563 }
   2564 
   2565 int8x8_t test_vmax_s8(int8x8_t a, int8x8_t b) {
   2566 // CHECK-LABEL: test_vmax_s8
   2567   return vmax_s8(a, b);
   2568 // CHECK: smax {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2569 }
   2570 
   2571 int16x4_t test_vmax_s16(int16x4_t a, int16x4_t b) {
   2572 // CHECK-LABEL: test_vmax_s16
   2573   return vmax_s16(a, b);
   2574 // CHECK: smax {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2575 }
   2576 
   2577 int32x2_t test_vmax_s32(int32x2_t a, int32x2_t b) {
   2578 // CHECK-LABEL: test_vmax_s32
   2579   return vmax_s32(a, b);
   2580 // CHECK: smax {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2581 }
   2582 
   2583 uint8x8_t test_vmax_u8(uint8x8_t a, uint8x8_t b) {
   2584 // CHECK-LABEL: test_vmax_u8
   2585   return vmax_u8(a, b);
   2586 // CHECK: umax {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2587 }
   2588 
   2589 uint16x4_t test_vmax_u16(uint16x4_t a, uint16x4_t b) {
   2590 // CHECK-LABEL: test_vmax_u16
   2591   return vmax_u16(a, b);
   2592 // CHECK: umax {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2593 }
   2594 
   2595 uint32x2_t test_vmax_u32(uint32x2_t a, uint32x2_t b) {
   2596 // CHECK-LABEL: test_vmax_u32
   2597   return vmax_u32(a, b);
   2598 // CHECK: umax {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2599 }
   2600 
   2601 float32x2_t test_vmax_f32(float32x2_t a, float32x2_t b) {
   2602 // CHECK-LABEL: test_vmax_f32
   2603   return vmax_f32(a, b);
   2604 // CHECK: fmax {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2605 }
   2606 
   2607 int8x16_t test_vmaxq_s8(int8x16_t a, int8x16_t b) {
   2608 // CHECK-LABEL: test_vmaxq_s8
   2609   return vmaxq_s8(a, b);
   2610 // CHECK: smax {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2611 }
   2612 
   2613 int16x8_t test_vmaxq_s16(int16x8_t a, int16x8_t b) {
   2614 // CHECK-LABEL: test_vmaxq_s16
   2615   return vmaxq_s16(a, b);
   2616 // CHECK: smax {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2617 }
   2618 
   2619 int32x4_t test_vmaxq_s32(int32x4_t a, int32x4_t b) {
   2620 // CHECK-LABEL: test_vmaxq_s32
   2621   return vmaxq_s32(a, b);
   2622 // CHECK: smax {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2623 }
   2624 
   2625 uint8x16_t test_vmaxq_u8(uint8x16_t a, uint8x16_t b) {
   2626 // CHECK-LABEL: test_vmaxq_u8
   2627   return vmaxq_u8(a, b);
   2628 // CHECK: umax {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2629 }
   2630 
   2631 uint16x8_t test_vmaxq_u16(uint16x8_t a, uint16x8_t b) {
   2632 // CHECK-LABEL: test_vmaxq_u16
   2633   return vmaxq_u16(a, b);
   2634 // CHECK: umax {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2635 }
   2636 
   2637 uint32x4_t test_vmaxq_u32(uint32x4_t a, uint32x4_t b) {
   2638 // CHECK-LABEL: test_vmaxq_u32
   2639   return vmaxq_u32(a, b);
   2640 // CHECK: umax {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2641 }
   2642 
   2643 float32x4_t test_vmaxq_f32(float32x4_t a, float32x4_t b) {
   2644 // CHECK-LABEL: test_vmaxq_f32
   2645   return vmaxq_f32(a, b);
   2646 // CHECK: fmax {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2647 }
   2648 
   2649 float64x2_t test_vmaxq_f64(float64x2_t a, float64x2_t b) {
   2650 // CHECK-LABEL: test_vmaxq_f64
   2651   return vmaxq_f64(a, b);
   2652 // CHECK: fmax {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2653 }
   2654 
   2655 
   2656 int8x8_t test_vmin_s8(int8x8_t a, int8x8_t b) {
   2657 // CHECK-LABEL: test_vmin_s8
   2658   return vmin_s8(a, b);
   2659 // CHECK: smin {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2660 }
   2661 
   2662 int16x4_t test_vmin_s16(int16x4_t a, int16x4_t b) {
   2663 // CHECK-LABEL: test_vmin_s16
   2664   return vmin_s16(a, b);
   2665 // CHECK: smin {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2666 }
   2667 
   2668 int32x2_t test_vmin_s32(int32x2_t a, int32x2_t b) {
   2669 // CHECK-LABEL: test_vmin_s32
   2670   return vmin_s32(a, b);
   2671 // CHECK: smin {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2672 }
   2673 
   2674 uint8x8_t test_vmin_u8(uint8x8_t a, uint8x8_t b) {
   2675 // CHECK-LABEL: test_vmin_u8
   2676   return vmin_u8(a, b);
   2677 // CHECK: umin {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2678 }
   2679 
   2680 uint16x4_t test_vmin_u16(uint16x4_t a, uint16x4_t b) {
   2681 // CHECK-LABEL: test_vmin_u16
   2682   return vmin_u16(a, b);
   2683 // CHECK: umin {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2684 }
   2685 
   2686 uint32x2_t test_vmin_u32(uint32x2_t a, uint32x2_t b) {
   2687 // CHECK-LABEL: test_vmin_u32
   2688   return vmin_u32(a, b);
   2689 // CHECK: umin {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2690 }
   2691 
   2692 float32x2_t test_vmin_f32(float32x2_t a, float32x2_t b) {
   2693 // CHECK-LABEL: test_vmin_f32
   2694   return vmin_f32(a, b);
   2695 // CHECK: fmin {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2696 }
   2697 
   2698 int8x16_t test_vminq_s8(int8x16_t a, int8x16_t b) {
   2699 // CHECK-LABEL: test_vminq_s8
   2700   return vminq_s8(a, b);
   2701 // CHECK: smin {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2702 }
   2703 
   2704 int16x8_t test_vminq_s16(int16x8_t a, int16x8_t b) {
   2705 // CHECK-LABEL: test_vminq_s16
   2706   return vminq_s16(a, b);
   2707 // CHECK: smin {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2708 }
   2709 
   2710 int32x4_t test_vminq_s32(int32x4_t a, int32x4_t b) {
   2711 // CHECK-LABEL: test_vminq_s32
   2712   return vminq_s32(a, b);
   2713 // CHECK: smin {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2714 }
   2715 
   2716 uint8x16_t test_vminq_u8(uint8x16_t a, uint8x16_t b) {
   2717 // CHECK-LABEL: test_vminq_u8
   2718   return vminq_u8(a, b);
   2719 // CHECK: umin {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2720 }
   2721 
   2722 uint16x8_t test_vminq_u16(uint16x8_t a, uint16x8_t b) {
   2723 // CHECK-LABEL: test_vminq_u16
   2724   return vminq_u16(a, b);
   2725 // CHECK: umin {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2726 }
   2727 
   2728 uint32x4_t test_vminq_u32(uint32x4_t a, uint32x4_t b) {
   2729 // CHECK-LABEL: test_vminq_u32
   2730   return vminq_u32(a, b);
   2731 // CHECK: umin {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2732 }
   2733 
   2734 float32x4_t test_vminq_f32(float32x4_t a, float32x4_t b) {
   2735 // CHECK-LABEL: test_vminq_f32
   2736   return vminq_f32(a, b);
   2737 // CHECK: fmin {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2738 }
   2739 
   2740 float64x2_t test_vminq_f64(float64x2_t a, float64x2_t b) {
   2741 // CHECK-LABEL: test_vminq_f64
   2742   return vminq_f64(a, b);
   2743 // CHECK: fmin {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2744 }
   2745 
   2746 float32x2_t test_vmaxnm_f32(float32x2_t a, float32x2_t b) {
   2747 // CHECK-LABEL: test_vmaxnm_f32
   2748   return vmaxnm_f32(a, b);
   2749 // CHECK: fmaxnm {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2750 }
   2751 
   2752 float32x4_t test_vmaxnmq_f32(float32x4_t a, float32x4_t b) {
   2753 // CHECK-LABEL: test_vmaxnmq_f32
   2754   return vmaxnmq_f32(a, b);
   2755 // CHECK: fmaxnm {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2756 }
   2757 
   2758 float64x2_t test_vmaxnmq_f64(float64x2_t a, float64x2_t b) {
   2759 // CHECK-LABEL: test_vmaxnmq_f64
   2760   return vmaxnmq_f64(a, b);
   2761 // CHECK: fmaxnm {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2762 }
   2763 
   2764 float32x2_t test_vminnm_f32(float32x2_t a, float32x2_t b) {
   2765 // CHECK-LABEL: test_vminnm_f32
   2766   return vminnm_f32(a, b);
   2767 // CHECK: fminnm {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2768 }
   2769 
   2770 float32x4_t test_vminnmq_f32(float32x4_t a, float32x4_t b) {
   2771 // CHECK-LABEL: test_vminnmq_f32
   2772   return vminnmq_f32(a, b);
   2773 // CHECK: fminnm {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2774 }
   2775 
   2776 float64x2_t test_vminnmq_f64(float64x2_t a, float64x2_t b) {
   2777 // CHECK-LABEL: test_vminnmq_f64
   2778   return vminnmq_f64(a, b);
   2779 // CHECK: fminnm {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2780 }
   2781 
   2782 int8x8_t test_vpmax_s8(int8x8_t a, int8x8_t b) {
   2783 // CHECK-LABEL: test_vpmax_s8
   2784   return vpmax_s8(a, b);
   2785 // CHECK: smaxp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2786 }
   2787 
   2788 int16x4_t test_vpmax_s16(int16x4_t a, int16x4_t b) {
   2789 // CHECK-LABEL: test_vpmax_s16
   2790   return vpmax_s16(a, b);
   2791 // CHECK: smaxp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2792 }
   2793 
   2794 int32x2_t test_vpmax_s32(int32x2_t a, int32x2_t b) {
   2795 // CHECK-LABEL: test_vpmax_s32
   2796   return vpmax_s32(a, b);
   2797 // CHECK: smaxp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2798 }
   2799 
   2800 uint8x8_t test_vpmax_u8(uint8x8_t a, uint8x8_t b) {
   2801 // CHECK-LABEL: test_vpmax_u8
   2802   return vpmax_u8(a, b);
   2803 // CHECK: umaxp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2804 }
   2805 
   2806 uint16x4_t test_vpmax_u16(uint16x4_t a, uint16x4_t b) {
   2807 // CHECK-LABEL: test_vpmax_u16
   2808   return vpmax_u16(a, b);
   2809 // CHECK: umaxp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2810 }
   2811 
   2812 uint32x2_t test_vpmax_u32(uint32x2_t a, uint32x2_t b) {
   2813 // CHECK-LABEL: test_vpmax_u32
   2814   return vpmax_u32(a, b);
   2815 // CHECK: umaxp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2816 }
   2817 
   2818 float32x2_t test_vpmax_f32(float32x2_t a, float32x2_t b) {
   2819 // CHECK-LABEL: test_vpmax_f32
   2820   return vpmax_f32(a, b);
   2821 // CHECK: fmaxp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2822 }
   2823 
   2824 int8x16_t test_vpmaxq_s8(int8x16_t a, int8x16_t b) {
   2825 // CHECK-LABEL: test_vpmaxq_s8
   2826   return vpmaxq_s8(a, b);
   2827 // CHECK: smaxp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2828 }
   2829 
   2830 int16x8_t test_vpmaxq_s16(int16x8_t a, int16x8_t b) {
   2831 // CHECK-LABEL: test_vpmaxq_s16
   2832   return vpmaxq_s16(a, b);
   2833 // CHECK: smaxp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2834 }
   2835 
   2836 int32x4_t test_vpmaxq_s32(int32x4_t a, int32x4_t b) {
   2837 // CHECK-LABEL: test_vpmaxq_s32
   2838   return vpmaxq_s32(a, b);
   2839 // CHECK: smaxp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2840 }
   2841 
   2842 uint8x16_t test_vpmaxq_u8(uint8x16_t a, uint8x16_t b) {
   2843 // CHECK-LABEL: test_vpmaxq_u8
   2844   return vpmaxq_u8(a, b);
   2845 // CHECK: umaxp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2846 }
   2847 
   2848 uint16x8_t test_vpmaxq_u16(uint16x8_t a, uint16x8_t b) {
   2849 // CHECK-LABEL: test_vpmaxq_u16
   2850   return vpmaxq_u16(a, b);
   2851 // CHECK: umaxp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2852 }
   2853 
   2854 uint32x4_t test_vpmaxq_u32(uint32x4_t a, uint32x4_t b) {
   2855 // CHECK-LABEL: test_vpmaxq_u32
   2856   return vpmaxq_u32(a, b);
   2857 // CHECK: umaxp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2858 }
   2859 
   2860 float32x4_t test_vpmaxq_f32(float32x4_t a, float32x4_t b) {
   2861 // CHECK-LABEL: test_vpmaxq_f32
   2862   return vpmaxq_f32(a, b);
   2863 // CHECK: fmaxp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2864 }
   2865 
   2866 float64x2_t test_vpmaxq_f64(float64x2_t a, float64x2_t b) {
   2867 // CHECK-LABEL: test_vpmaxq_f64
   2868   return vpmaxq_f64(a, b);
   2869 // CHECK: fmaxp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2870 }
   2871 
   2872 int8x8_t test_vpmin_s8(int8x8_t a, int8x8_t b) {
   2873 // CHECK-LABEL: test_vpmin_s8
   2874   return vpmin_s8(a, b);
   2875 // CHECK: sminp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2876 }
   2877 
   2878 int16x4_t test_vpmin_s16(int16x4_t a, int16x4_t b) {
   2879 // CHECK-LABEL: test_vpmin_s16
   2880   return vpmin_s16(a, b);
   2881 // CHECK: sminp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2882 }
   2883 
   2884 int32x2_t test_vpmin_s32(int32x2_t a, int32x2_t b) {
   2885 // CHECK-LABEL: test_vpmin_s32
   2886   return vpmin_s32(a, b);
   2887 // CHECK: sminp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2888 }
   2889 
   2890 uint8x8_t test_vpmin_u8(uint8x8_t a, uint8x8_t b) {
   2891 // CHECK-LABEL: test_vpmin_u8
   2892   return vpmin_u8(a, b);
   2893 // CHECK: uminp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   2894 }
   2895 
   2896 uint16x4_t test_vpmin_u16(uint16x4_t a, uint16x4_t b) {
   2897 // CHECK-LABEL: test_vpmin_u16
   2898   return vpmin_u16(a, b);
   2899 // CHECK: uminp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   2900 }
   2901 
   2902 uint32x2_t test_vpmin_u32(uint32x2_t a, uint32x2_t b) {
   2903 // CHECK-LABEL: test_vpmin_u32
   2904   return vpmin_u32(a, b);
   2905 // CHECK: uminp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2906 }
   2907 
   2908 float32x2_t test_vpmin_f32(float32x2_t a, float32x2_t b) {
   2909 // CHECK-LABEL: test_vpmin_f32
   2910   return vpmin_f32(a, b);
   2911 // CHECK: fminp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2912 }
   2913 
   2914 int8x16_t test_vpminq_s8(int8x16_t a, int8x16_t b) {
   2915 // CHECK-LABEL: test_vpminq_s8
   2916   return vpminq_s8(a, b);
   2917 // CHECK: sminp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2918 }
   2919 
   2920 int16x8_t test_vpminq_s16(int16x8_t a, int16x8_t b) {
   2921 // CHECK-LABEL: test_vpminq_s16
   2922   return vpminq_s16(a, b);
   2923 // CHECK: sminp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2924 }
   2925 
   2926 int32x4_t test_vpminq_s32(int32x4_t a, int32x4_t b) {
   2927 // CHECK-LABEL: test_vpminq_s32
   2928   return vpminq_s32(a, b);
   2929 // CHECK: sminp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2930 }
   2931 
   2932 uint8x16_t test_vpminq_u8(uint8x16_t a, uint8x16_t b) {
   2933 // CHECK-LABEL: test_vpminq_u8
   2934   return vpminq_u8(a, b);
   2935 // CHECK: uminp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   2936 }
   2937 
   2938 uint16x8_t test_vpminq_u16(uint16x8_t a, uint16x8_t b) {
   2939 // CHECK-LABEL: test_vpminq_u16
   2940   return vpminq_u16(a, b);
   2941 // CHECK: uminp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   2942 }
   2943 
   2944 uint32x4_t test_vpminq_u32(uint32x4_t a, uint32x4_t b) {
   2945 // CHECK-LABEL: test_vpminq_u32
   2946   return vpminq_u32(a, b);
   2947 // CHECK: uminp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2948 }
   2949 
   2950 float32x4_t test_vpminq_f32(float32x4_t a, float32x4_t b) {
   2951 // CHECK-LABEL: test_vpminq_f32
   2952   return vpminq_f32(a, b);
   2953 // CHECK: fminp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2954 }
   2955 
   2956 float64x2_t test_vpminq_f64(float64x2_t a, float64x2_t b) {
   2957 // CHECK-LABEL: test_vpminq_f64
   2958   return vpminq_f64(a, b);
   2959 // CHECK: fminp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2960 }
   2961 
   2962 float32x2_t test_vpmaxnm_f32(float32x2_t a, float32x2_t b) {
   2963 // CHECK-LABEL: test_vpmaxnm_f32
   2964   return vpmaxnm_f32(a, b);
   2965 // CHECK: fmaxnmp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2966 }
   2967 
   2968 float32x4_t test_vpmaxnmq_f32(float32x4_t a, float32x4_t b) {
   2969 // CHECK-LABEL: test_vpmaxnmq_f32
   2970   return vpmaxnmq_f32(a, b);
   2971 // CHECK: fmaxnmp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2972 }
   2973 
   2974 float64x2_t test_vpmaxnmq_f64(float64x2_t a, float64x2_t b) {
   2975 // CHECK-LABEL: test_vpmaxnmq_f64
   2976   return vpmaxnmq_f64(a, b);
   2977 // CHECK: fmaxnmp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2978 }
   2979 
   2980 float32x2_t test_vpminnm_f32(float32x2_t a, float32x2_t b) {
   2981 // CHECK-LABEL: test_vpminnm_f32
   2982   return vpminnm_f32(a, b);
   2983 // CHECK: fminnmp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   2984 }
   2985 
   2986 float32x4_t test_vpminnmq_f32(float32x4_t a, float32x4_t b) {
   2987 // CHECK-LABEL: test_vpminnmq_f32
   2988   return vpminnmq_f32(a, b);
   2989 // CHECK: fminnmp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   2990 }
   2991 
   2992 float64x2_t test_vpminnmq_f64(float64x2_t a, float64x2_t b) {
   2993 // CHECK-LABEL: test_vpminnmq_f64
   2994   return vpminnmq_f64(a, b);
   2995 // CHECK: fminnmp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   2996 }
   2997 
   2998 int8x8_t test_vpadd_s8(int8x8_t a, int8x8_t b) {
   2999 // CHECK-LABEL: test_vpadd_s8
   3000   return vpadd_s8(a, b);
   3001 // CHECK: addp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   3002 }
   3003 
   3004 int16x4_t test_vpadd_s16(int16x4_t a, int16x4_t b) {
   3005 // CHECK-LABEL: test_vpadd_s16
   3006   return vpadd_s16(a, b);
   3007 // CHECK: addp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   3008 }
   3009 
   3010 int32x2_t test_vpadd_s32(int32x2_t a, int32x2_t b) {
   3011 // CHECK-LABEL: test_vpadd_s32
   3012   return vpadd_s32(a, b);
   3013 // CHECK: addp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   3014 }
   3015 
   3016 uint8x8_t test_vpadd_u8(uint8x8_t a, uint8x8_t b) {
   3017 // CHECK-LABEL: test_vpadd_u8
   3018   return vpadd_u8(a, b);
   3019 // CHECK: addp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   3020 }
   3021 
   3022 uint16x4_t test_vpadd_u16(uint16x4_t a, uint16x4_t b) {
   3023 // CHECK-LABEL: test_vpadd_u16
   3024   return vpadd_u16(a, b);
   3025 // CHECK: addp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   3026 }
   3027 
   3028 uint32x2_t test_vpadd_u32(uint32x2_t a, uint32x2_t b) {
   3029 // CHECK-LABEL: test_vpadd_u32
   3030   return vpadd_u32(a, b);
   3031 // CHECK: addp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   3032 }
   3033 
   3034 float32x2_t test_vpadd_f32(float32x2_t a, float32x2_t b) {
   3035 // CHECK-LABEL: test_vpadd_f32
   3036   return vpadd_f32(a, b);
   3037 // CHECK: faddp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   3038 }
   3039 
   3040 int8x16_t test_vpaddq_s8(int8x16_t a, int8x16_t b) {
   3041 // CHECK-LABEL: test_vpaddq_s8
   3042   return vpaddq_s8(a, b);
   3043 // CHECK: addp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   3044 }
   3045 
   3046 int16x8_t test_vpaddq_s16(int16x8_t a, int16x8_t b) {
   3047 // CHECK-LABEL: test_vpaddq_s16
   3048   return vpaddq_s16(a, b);
   3049 // CHECK: addp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   3050 }
   3051 
   3052 int32x4_t test_vpaddq_s32(int32x4_t a, int32x4_t b) {
   3053 // CHECK-LABEL: test_vpaddq_s32
   3054   return vpaddq_s32(a, b);
   3055 // CHECK: addp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   3056 }
   3057 
   3058 uint8x16_t test_vpaddq_u8(uint8x16_t a, uint8x16_t b) {
   3059 // CHECK-LABEL: test_vpaddq_u8
   3060   return vpaddq_u8(a, b);
   3061 // CHECK: addp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   3062 }
   3063 
   3064 uint16x8_t test_vpaddq_u16(uint16x8_t a, uint16x8_t b) {
   3065 // CHECK-LABEL: test_vpaddq_u16
   3066   return vpaddq_u16(a, b);
   3067 // CHECK: addp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   3068 }
   3069 
   3070 uint32x4_t test_vpaddq_u32(uint32x4_t a, uint32x4_t b) {
   3071 // CHECK-LABEL: test_vpaddq_u32
   3072   return vpaddq_u32(a, b);
   3073 // CHECK: addp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   3074 }
   3075 
   3076 float32x4_t test_vpaddq_f32(float32x4_t a, float32x4_t b) {
   3077 // CHECK-LABEL: test_vpaddq_f32
   3078   return vpaddq_f32(a, b);
   3079 // CHECK: faddp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   3080 }
   3081 
   3082 float64x2_t test_vpaddq_f64(float64x2_t a, float64x2_t b) {
   3083 // CHECK-LABEL: test_vpaddq_f64
   3084   return vpaddq_f64(a, b);
   3085 // CHECK: faddp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   3086 }
   3087 
   3088 int16x4_t test_vqdmulh_s16(int16x4_t a, int16x4_t b) {
   3089 // CHECK-LABEL: test_vqdmulh_s16
   3090   return vqdmulh_s16(a, b);
   3091 // CHECK: sqdmulh {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   3092 }
   3093 
   3094 int32x2_t test_vqdmulh_s32(int32x2_t a, int32x2_t b) {
   3095 // CHECK-LABEL: test_vqdmulh_s32
   3096   return vqdmulh_s32(a, b);
   3097 // CHECK: sqdmulh {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   3098 }
   3099 
   3100 int16x8_t test_vqdmulhq_s16(int16x8_t a, int16x8_t b) {
   3101 // CHECK-LABEL: test_vqdmulhq_s16
   3102   return vqdmulhq_s16(a, b);
   3103 // CHECK: sqdmulh {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   3104 }
   3105 
   3106 int32x4_t test_vqdmulhq_s32(int32x4_t a, int32x4_t b) {
   3107 // CHECK-LABEL: test_vqdmulhq_s32
   3108   return vqdmulhq_s32(a, b);
   3109 // CHECK: sqdmulh {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   3110 }
   3111 
   3112 int16x4_t test_vqrdmulh_s16(int16x4_t a, int16x4_t b) {
   3113 // CHECK-LABEL: test_vqrdmulh_s16
   3114   return vqrdmulh_s16(a, b);
   3115 // CHECK: sqrdmulh {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   3116 }
   3117 
   3118 int32x2_t test_vqrdmulh_s32(int32x2_t a, int32x2_t b) {
   3119 // CHECK-LABEL: test_vqrdmulh_s32
   3120   return vqrdmulh_s32(a, b);
   3121 // CHECK: sqrdmulh {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   3122 }
   3123 
   3124 int16x8_t test_vqrdmulhq_s16(int16x8_t a, int16x8_t b) {
   3125 // CHECK-LABEL: test_vqrdmulhq_s16
   3126   return vqrdmulhq_s16(a, b);
   3127 // CHECK: sqrdmulh {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   3128 }
   3129 
   3130 int32x4_t test_vqrdmulhq_s32(int32x4_t a, int32x4_t b) {
   3131 // CHECK-LABEL: test_vqrdmulhq_s32
   3132   return vqrdmulhq_s32(a, b);
   3133 // CHECK: sqrdmulh {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   3134 }
   3135 
   3136 float32x2_t test_vmulx_f32(float32x2_t a, float32x2_t b) {
   3137 // CHECK-LABEL: test_vmulx_f32
   3138   return vmulx_f32(a, b);
   3139 // CHECK: fmulx {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   3140 }
   3141 
   3142 float32x4_t test_vmulxq_f32(float32x4_t a, float32x4_t b) {
   3143 // CHECK-LABEL: test_vmulxq_f32
   3144   return vmulxq_f32(a, b);
   3145 // CHECK: fmulx {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   3146 }
   3147 
   3148 float64x2_t test_vmulxq_f64(float64x2_t a, float64x2_t b) {
   3149 // CHECK-LABEL: test_vmulxq_f64
   3150   return vmulxq_f64(a, b);
   3151 // CHECK: fmulx {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   3152 }
   3153 
   3154 int8x8_t test_vshl_n_s8(int8x8_t a) {
   3155 // CHECK-LABEL: test_vshl_n_s8
   3156   return vshl_n_s8(a, 3);
   3157 // CHECK: shl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3158 }
   3159 
   3160 int16x4_t test_vshl_n_s16(int16x4_t a) {
   3161 // CHECK-LABEL: test_vshl_n_s16
   3162   return vshl_n_s16(a, 3);
   3163 // CHECK: shl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3164 }
   3165 
   3166 int32x2_t test_vshl_n_s32(int32x2_t a) {
   3167 // CHECK-LABEL: test_vshl_n_s32
   3168   return vshl_n_s32(a, 3);
   3169 // CHECK: shl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3170 }
   3171 
   3172 int8x16_t test_vshlq_n_s8(int8x16_t a) {
   3173 // CHECK-LABEL: test_vshlq_n_s8
   3174   return vshlq_n_s8(a, 3);
   3175 // CHECK: shl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3176 }
   3177 
   3178 int16x8_t test_vshlq_n_s16(int16x8_t a) {
   3179 // CHECK-LABEL: test_vshlq_n_s16
   3180   return vshlq_n_s16(a, 3);
   3181 // CHECK: shl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3182 }
   3183 
   3184 int32x4_t test_vshlq_n_s32(int32x4_t a) {
   3185 // CHECK-LABEL: test_vshlq_n_s32
   3186   return vshlq_n_s32(a, 3);
   3187 // CHECK: shl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3188 }
   3189 
   3190 int64x2_t test_vshlq_n_s64(int64x2_t a) {
   3191 // CHECK-LABEL: test_vshlq_n_s64
   3192   return vshlq_n_s64(a, 3);
   3193 // CHECK: shl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3194 }
   3195 
   3196 int8x8_t test_vshl_n_u8(int8x8_t a) {
   3197 // CHECK-LABEL: test_vshl_n_u8
   3198   return vshl_n_u8(a, 3);
   3199 // CHECK: shl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3200 }
   3201 
   3202 int16x4_t test_vshl_n_u16(int16x4_t a) {
   3203 // CHECK-LABEL: test_vshl_n_u16
   3204   return vshl_n_u16(a, 3);
   3205 // CHECK: shl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3206 }
   3207 
   3208 int32x2_t test_vshl_n_u32(int32x2_t a) {
   3209 // CHECK-LABEL: test_vshl_n_u32
   3210   return vshl_n_u32(a, 3);
   3211 // CHECK: shl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3212 }
   3213 
   3214 int8x16_t test_vshlq_n_u8(int8x16_t a) {
   3215 // CHECK-LABEL: test_vshlq_n_u8
   3216   return vshlq_n_u8(a, 3);
   3217 // CHECK: shl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3218 }
   3219 
   3220 int16x8_t test_vshlq_n_u16(int16x8_t a) {
   3221 // CHECK-LABEL: test_vshlq_n_u16
   3222   return vshlq_n_u16(a, 3);
   3223 // CHECK: shl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3224 }
   3225 
   3226 int32x4_t test_vshlq_n_u32(int32x4_t a) {
   3227 // CHECK-LABEL: test_vshlq_n_u32
   3228   return vshlq_n_u32(a, 3);
   3229 // CHECK: shl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3230 }
   3231 
   3232 int64x2_t test_vshlq_n_u64(int64x2_t a) {
   3233 // CHECK-LABEL: test_vshlq_n_u64
   3234   return vshlq_n_u64(a, 3);
   3235 // CHECK: shl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3236 }
   3237 
   3238 int8x8_t test_vshr_n_s8(int8x8_t a) {
   3239   // CHECK-LABEL: test_vshr_n_s8
   3240   return vshr_n_s8(a, 3);
   3241   // CHECK: sshr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3242 }
   3243 
   3244 int16x4_t test_vshr_n_s16(int16x4_t a) {
   3245   // CHECK-LABEL: test_vshr_n_s16
   3246   return vshr_n_s16(a, 3);
   3247   // CHECK: sshr {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3248 }
   3249 
   3250 int32x2_t test_vshr_n_s32(int32x2_t a) {
   3251   // CHECK-LABEL: test_vshr_n_s32
   3252   return vshr_n_s32(a, 3);
   3253   // CHECK: sshr {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3254 }
   3255 
   3256 int8x16_t test_vshrq_n_s8(int8x16_t a) {
   3257   // CHECK-LABEL: test_vshrq_n_s8
   3258   return vshrq_n_s8(a, 3);
   3259   // CHECK: sshr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3260 }
   3261 
   3262 int16x8_t test_vshrq_n_s16(int16x8_t a) {
   3263   // CHECK-LABEL: test_vshrq_n_s16
   3264   return vshrq_n_s16(a, 3);
   3265   // CHECK: sshr {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3266 }
   3267 
   3268 int32x4_t test_vshrq_n_s32(int32x4_t a) {
   3269   // CHECK-LABEL: test_vshrq_n_s32
   3270   return vshrq_n_s32(a, 3);
   3271   // CHECK: sshr {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3272 }
   3273 
   3274 int64x2_t test_vshrq_n_s64(int64x2_t a) {
   3275   // CHECK-LABEL: test_vshrq_n_s64
   3276   return vshrq_n_s64(a, 3);
   3277   // CHECK: sshr {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3278 }
   3279 
   3280 int8x8_t test_vshr_n_u8(int8x8_t a) {
   3281   // CHECK-LABEL: test_vshr_n_u8
   3282   return vshr_n_u8(a, 3);
   3283   // CHECK: ushr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3284 }
   3285 
   3286 int16x4_t test_vshr_n_u16(int16x4_t a) {
   3287   // CHECK-LABEL: test_vshr_n_u16
   3288   return vshr_n_u16(a, 3);
   3289   // CHECK: ushr {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3290 }
   3291 
   3292 int32x2_t test_vshr_n_u32(int32x2_t a) {
   3293   // CHECK-LABEL: test_vshr_n_u32
   3294   return vshr_n_u32(a, 3);
   3295   // CHECK: ushr {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3296 }
   3297 
   3298 int8x16_t test_vshrq_n_u8(int8x16_t a) {
   3299   // CHECK-LABEL: test_vshrq_n_u8
   3300   return vshrq_n_u8(a, 3);
   3301   // CHECK: ushr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3302 }
   3303 
   3304 int16x8_t test_vshrq_n_u16(int16x8_t a) {
   3305   // CHECK-LABEL: test_vshrq_n_u16
   3306   return vshrq_n_u16(a, 3);
   3307   // CHECK: ushr {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3308 }
   3309 
   3310 int32x4_t test_vshrq_n_u32(int32x4_t a) {
   3311   // CHECK-LABEL: test_vshrq_n_u32
   3312   return vshrq_n_u32(a, 3);
   3313   // CHECK: ushr {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3314 }
   3315 
   3316 int64x2_t test_vshrq_n_u64(int64x2_t a) {
   3317   // CHECK-LABEL: test_vshrq_n_u64
   3318   return vshrq_n_u64(a, 3);
   3319   // CHECK: ushr {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3320 }
   3321 
   3322 int8x8_t test_vsra_n_s8(int8x8_t a, int8x8_t b) {
   3323   // CHECK-LABEL: test_vsra_n_s8
   3324   return vsra_n_s8(a, b, 3);
   3325   // CHECK: ssra {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3326 }
   3327 
   3328 int16x4_t test_vsra_n_s16(int16x4_t a, int16x4_t b) {
   3329   // CHECK-LABEL: test_vsra_n_s16
   3330   return vsra_n_s16(a, b, 3);
   3331   // CHECK: ssra {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3332 }
   3333 
   3334 int32x2_t test_vsra_n_s32(int32x2_t a, int32x2_t b) {
   3335   // CHECK-LABEL: test_vsra_n_s32
   3336   return vsra_n_s32(a, b, 3);
   3337   // CHECK: ssra {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3338 }
   3339 
   3340 int8x16_t test_vsraq_n_s8(int8x16_t a, int8x16_t b) {
   3341   // CHECK-LABEL: test_vsraq_n_s8
   3342   return vsraq_n_s8(a, b, 3);
   3343   // CHECK: ssra {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3344 }
   3345 
   3346 int16x8_t test_vsraq_n_s16(int16x8_t a, int16x8_t b) {
   3347   // CHECK-LABEL: test_vsraq_n_s16
   3348   return vsraq_n_s16(a, b, 3);
   3349   // CHECK: ssra {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3350 }
   3351 
   3352 int32x4_t test_vsraq_n_s32(int32x4_t a, int32x4_t b) {
   3353   // CHECK-LABEL: test_vsraq_n_s32
   3354   return vsraq_n_s32(a, b, 3);
   3355   // CHECK: ssra {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3356 }
   3357 
   3358 int64x2_t test_vsraq_n_s64(int64x2_t a, int64x2_t b) {
   3359   // CHECK-LABEL: test_vsraq_n_s64
   3360   return vsraq_n_s64(a, b, 3);
   3361   // CHECK: ssra {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3362 }
   3363 
   3364 int8x8_t test_vsra_n_u8(int8x8_t a, int8x8_t b) {
   3365   // CHECK-LABEL: test_vsra_n_u8
   3366   return vsra_n_u8(a, b, 3);
   3367   // CHECK: usra {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3368 }
   3369 
   3370 int16x4_t test_vsra_n_u16(int16x4_t a, int16x4_t b) {
   3371   // CHECK-LABEL: test_vsra_n_u16
   3372   return vsra_n_u16(a, b, 3);
   3373   // CHECK: usra {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3374 }
   3375 
   3376 int32x2_t test_vsra_n_u32(int32x2_t a, int32x2_t b) {
   3377   // CHECK-LABEL: test_vsra_n_u32
   3378   return vsra_n_u32(a, b, 3);
   3379   // CHECK: usra {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3380 }
   3381 
   3382 int8x16_t test_vsraq_n_u8(int8x16_t a, int8x16_t b) {
   3383   // CHECK-LABEL: test_vsraq_n_u8
   3384   return vsraq_n_u8(a, b, 3);
   3385   // CHECK: usra {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3386 }
   3387 
   3388 int16x8_t test_vsraq_n_u16(int16x8_t a, int16x8_t b) {
   3389   // CHECK-LABEL: test_vsraq_n_u16
   3390   return vsraq_n_u16(a, b, 3);
   3391   // CHECK: usra {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3392 }
   3393 
   3394 int32x4_t test_vsraq_n_u32(int32x4_t a, int32x4_t b) {
   3395   // CHECK-LABEL: test_vsraq_n_u32
   3396   return vsraq_n_u32(a, b, 3);
   3397   // CHECK: usra {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3398 }
   3399 
   3400 int64x2_t test_vsraq_n_u64(int64x2_t a, int64x2_t b) {
   3401   // CHECK-LABEL: test_vsraq_n_u64
   3402   return vsraq_n_u64(a, b, 3);
   3403   // CHECK: usra {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3404 }
   3405 
   3406 int8x8_t test_vrshr_n_s8(int8x8_t a) {
   3407   // CHECK-LABEL: test_vrshr_n_s8
   3408   return vrshr_n_s8(a, 3);
   3409   // CHECK: srshr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3410 }
   3411 
   3412 int16x4_t test_vrshr_n_s16(int16x4_t a) {
   3413   // CHECK-LABEL: test_vrshr_n_s16
   3414   return vrshr_n_s16(a, 3);
   3415   // CHECK: srshr {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3416 }
   3417 
   3418 int32x2_t test_vrshr_n_s32(int32x2_t a) {
   3419   // CHECK-LABEL: test_vrshr_n_s32
   3420   return vrshr_n_s32(a, 3);
   3421   // CHECK: srshr {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3422 }
   3423 
   3424 int8x16_t test_vrshrq_n_s8(int8x16_t a) {
   3425   // CHECK-LABEL: test_vrshrq_n_s8
   3426   return vrshrq_n_s8(a, 3);
   3427   // CHECK: srshr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3428 }
   3429 
   3430 int16x8_t test_vrshrq_n_s16(int16x8_t a) {
   3431   // CHECK-LABEL: test_vrshrq_n_s16
   3432   return vrshrq_n_s16(a, 3);
   3433   // CHECK: srshr {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3434 }
   3435 
   3436 int32x4_t test_vrshrq_n_s32(int32x4_t a) {
   3437   // CHECK-LABEL: test_vrshrq_n_s32
   3438   return vrshrq_n_s32(a, 3);
   3439   // CHECK: srshr {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3440 }
   3441 
   3442 int64x2_t test_vrshrq_n_s64(int64x2_t a) {
   3443   // CHECK-LABEL: test_vrshrq_n_s64
   3444   return vrshrq_n_s64(a, 3);
   3445   // CHECK: srshr {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3446 }
   3447 
   3448 int8x8_t test_vrshr_n_u8(int8x8_t a) {
   3449   // CHECK-LABEL: test_vrshr_n_u8
   3450   return vrshr_n_u8(a, 3);
   3451   // CHECK: urshr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3452 }
   3453 
   3454 int16x4_t test_vrshr_n_u16(int16x4_t a) {
   3455   // CHECK-LABEL: test_vrshr_n_u16
   3456   return vrshr_n_u16(a, 3);
   3457   // CHECK: urshr {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3458 }
   3459 
   3460 int32x2_t test_vrshr_n_u32(int32x2_t a) {
   3461   // CHECK-LABEL: test_vrshr_n_u32
   3462   return vrshr_n_u32(a, 3);
   3463   // CHECK: urshr {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3464 }
   3465 
   3466 int8x16_t test_vrshrq_n_u8(int8x16_t a) {
   3467   // CHECK-LABEL: test_vrshrq_n_u8
   3468   return vrshrq_n_u8(a, 3);
   3469   // CHECK: urshr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3470 }
   3471 
   3472 int16x8_t test_vrshrq_n_u16(int16x8_t a) {
   3473   // CHECK-LABEL: test_vrshrq_n_u16
   3474   return vrshrq_n_u16(a, 3);
   3475   // CHECK: urshr {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3476 }
   3477 
   3478 int32x4_t test_vrshrq_n_u32(int32x4_t a) {
   3479   // CHECK-LABEL: test_vrshrq_n_u32
   3480   return vrshrq_n_u32(a, 3);
   3481   // CHECK: urshr {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3482 }
   3483 
   3484 int64x2_t test_vrshrq_n_u64(int64x2_t a) {
   3485   // CHECK-LABEL: test_vrshrq_n_u64
   3486   return vrshrq_n_u64(a, 3);
   3487   // CHECK: urshr {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3488 }
   3489 
   3490 int8x8_t test_vrsra_n_s8(int8x8_t a, int8x8_t b) {
   3491   // CHECK-LABEL: test_vrsra_n_s8
   3492   return vrsra_n_s8(a, b, 3);
   3493   // CHECK: srsra {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3494 }
   3495 
   3496 int16x4_t test_vrsra_n_s16(int16x4_t a, int16x4_t b) {
   3497   // CHECK-LABEL: test_vrsra_n_s16
   3498   return vrsra_n_s16(a, b, 3);
   3499   // CHECK: srsra {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3500 }
   3501 
   3502 int32x2_t test_vrsra_n_s32(int32x2_t a, int32x2_t b) {
   3503   // CHECK-LABEL: test_vrsra_n_s32
   3504   return vrsra_n_s32(a, b, 3);
   3505   // CHECK: srsra {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3506 }
   3507 
   3508 int8x16_t test_vrsraq_n_s8(int8x16_t a, int8x16_t b) {
   3509   // CHECK-LABEL: test_vrsraq_n_s8
   3510   return vrsraq_n_s8(a, b, 3);
   3511   // CHECK: srsra {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3512 }
   3513 
   3514 int16x8_t test_vrsraq_n_s16(int16x8_t a, int16x8_t b) {
   3515   // CHECK-LABEL: test_vrsraq_n_s16
   3516   return vrsraq_n_s16(a, b, 3);
   3517   // CHECK: srsra {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3518 }
   3519 
   3520 int32x4_t test_vrsraq_n_s32(int32x4_t a, int32x4_t b) {
   3521   // CHECK-LABEL: test_vrsraq_n_s32
   3522   return vrsraq_n_s32(a, b, 3);
   3523   // CHECK: srsra {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3524 }
   3525 
   3526 int64x2_t test_vrsraq_n_s64(int64x2_t a, int64x2_t b) {
   3527   // CHECK-LABEL: test_vrsraq_n_s64
   3528   return vrsraq_n_s64(a, b, 3);
   3529   // CHECK: srsra {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3530 }
   3531 
   3532 int8x8_t test_vrsra_n_u8(int8x8_t a, int8x8_t b) {
   3533   // CHECK-LABEL: test_vrsra_n_u8
   3534   return vrsra_n_u8(a, b, 3);
   3535   // CHECK: ursra {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3536 }
   3537 
   3538 int16x4_t test_vrsra_n_u16(int16x4_t a, int16x4_t b) {
   3539   // CHECK-LABEL: test_vrsra_n_u16
   3540   return vrsra_n_u16(a, b, 3);
   3541   // CHECK: ursra {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3542 }
   3543 
   3544 int32x2_t test_vrsra_n_u32(int32x2_t a, int32x2_t b) {
   3545   // CHECK-LABEL: test_vrsra_n_u32
   3546   return vrsra_n_u32(a, b, 3);
   3547   // CHECK: ursra {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3548 }
   3549 
   3550 int8x16_t test_vrsraq_n_u8(int8x16_t a, int8x16_t b) {
   3551   // CHECK-LABEL: test_vrsraq_n_u8
   3552   return vrsraq_n_u8(a, b, 3);
   3553   // CHECK: ursra {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3554 }
   3555 
   3556 int16x8_t test_vrsraq_n_u16(int16x8_t a, int16x8_t b) {
   3557   // CHECK-LABEL: test_vrsraq_n_u16
   3558   return vrsraq_n_u16(a, b, 3);
   3559   // CHECK: ursra {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3560 }
   3561 
   3562 int32x4_t test_vrsraq_n_u32(int32x4_t a, int32x4_t b) {
   3563   // CHECK-LABEL: test_vrsraq_n_u32
   3564   return vrsraq_n_u32(a, b, 3);
   3565   // CHECK: ursra {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3566 }
   3567 
   3568 int64x2_t test_vrsraq_n_u64(int64x2_t a, int64x2_t b) {
   3569   // CHECK-LABEL: test_vrsraq_n_u64
   3570   return vrsraq_n_u64(a, b, 3);
   3571   // CHECK: ursra {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3572 }
   3573 
   3574 int8x8_t test_vsri_n_s8(int8x8_t a, int8x8_t b) {
   3575   // CHECK-LABEL: test_vsri_n_s8
   3576   return vsri_n_s8(a, b, 3);
   3577   // CHECK: sri {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3578 }
   3579 
   3580 int16x4_t test_vsri_n_s16(int16x4_t a, int16x4_t b) {
   3581   // CHECK-LABEL: test_vsri_n_s16
   3582   return vsri_n_s16(a, b, 3);
   3583   // CHECK: sri {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3584 }
   3585 
   3586 int32x2_t test_vsri_n_s32(int32x2_t a, int32x2_t b) {
   3587   // CHECK-LABEL: test_vsri_n_s32
   3588   return vsri_n_s32(a, b, 3);
   3589   // CHECK: sri {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3590 }
   3591 
   3592 int8x16_t test_vsriq_n_s8(int8x16_t a, int8x16_t b) {
   3593   // CHECK-LABEL: test_vsriq_n_s8
   3594   return vsriq_n_s8(a, b, 3);
   3595   // CHECK: sri {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3596 }
   3597 
   3598 int16x8_t test_vsriq_n_s16(int16x8_t a, int16x8_t b) {
   3599   // CHECK-LABEL: test_vsriq_n_s16
   3600   return vsriq_n_s16(a, b, 3);
   3601   // CHECK: sri {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3602 }
   3603 
   3604 int32x4_t test_vsriq_n_s32(int32x4_t a, int32x4_t b) {
   3605   // CHECK-LABEL: test_vsriq_n_s32
   3606   return vsriq_n_s32(a, b, 3);
   3607   // CHECK: sri {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3608 }
   3609 
   3610 int64x2_t test_vsriq_n_s64(int64x2_t a, int64x2_t b) {
   3611   // CHECK-LABEL: test_vsriq_n_s64
   3612   return vsriq_n_s64(a, b, 3);
   3613   // CHECK: sri {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3614 }
   3615 
   3616 int8x8_t test_vsri_n_u8(int8x8_t a, int8x8_t b) {
   3617   // CHECK-LABEL: test_vsri_n_u8
   3618   return vsri_n_u8(a, b, 3);
   3619   // CHECK: sri {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3620 }
   3621 
   3622 int16x4_t test_vsri_n_u16(int16x4_t a, int16x4_t b) {
   3623   // CHECK-LABEL: test_vsri_n_u16
   3624   return vsri_n_u16(a, b, 3);
   3625   // CHECK: sri {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3626 }
   3627 
   3628 int32x2_t test_vsri_n_u32(int32x2_t a, int32x2_t b) {
   3629   // CHECK-LABEL: test_vsri_n_u32
   3630   return vsri_n_u32(a, b, 3);
   3631   // CHECK: sri {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3632 }
   3633 
   3634 int8x16_t test_vsriq_n_u8(int8x16_t a, int8x16_t b) {
   3635   // CHECK-LABEL: test_vsriq_n_u8
   3636   return vsriq_n_u8(a, b, 3);
   3637   // CHECK: sri {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3638 }
   3639 
   3640 int16x8_t test_vsriq_n_u16(int16x8_t a, int16x8_t b) {
   3641   // CHECK-LABEL: test_vsriq_n_u16
   3642   return vsriq_n_u16(a, b, 3);
   3643   // CHECK: sri {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3644 }
   3645 
   3646 int32x4_t test_vsriq_n_u32(int32x4_t a, int32x4_t b) {
   3647   // CHECK-LABEL: test_vsriq_n_u32
   3648   return vsriq_n_u32(a, b, 3);
   3649   // CHECK: sri {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3650 }
   3651 
   3652 int64x2_t test_vsriq_n_u64(int64x2_t a, int64x2_t b) {
   3653   // CHECK-LABEL: test_vsriq_n_u64
   3654   return vsriq_n_u64(a, b, 3);
   3655   // CHECK: sri {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3656 }
   3657 
   3658 poly8x8_t test_vsri_n_p8(poly8x8_t a, poly8x8_t b) {
   3659   // CHECK-LABEL: test_vsri_n_p8
   3660   return vsri_n_p8(a, b, 3);
   3661   // CHECK: sri {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3662 }
   3663 
   3664 poly16x4_t test_vsri_n_p16(poly16x4_t a, poly16x4_t b) {
   3665   // CHECK-LABEL: test_vsri_n_p16
   3666   return vsri_n_p16(a, b, 15);
   3667   // CHECK: sri {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #15
   3668 }
   3669 
   3670 poly8x16_t test_vsriq_n_p8(poly8x16_t a, poly8x16_t b) {
   3671   // CHECK-LABEL: test_vsriq_n_p8
   3672   return vsriq_n_p8(a, b, 3);
   3673   // CHECK: sri {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3674 }
   3675 
   3676 poly16x8_t test_vsriq_n_p16(poly16x8_t a, poly16x8_t b) {
   3677   // CHECK-LABEL: test_vsriq_n_p16
   3678   return vsriq_n_p16(a, b, 15);
   3679   // CHECK: sri {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #15
   3680 }
   3681 
   3682 int8x8_t test_vsli_n_s8(int8x8_t a, int8x8_t b) {
   3683   // CHECK-LABEL: test_vsli_n_s8
   3684   return vsli_n_s8(a, b, 3);
   3685   // CHECK: sli {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3686 }
   3687 
   3688 int16x4_t test_vsli_n_s16(int16x4_t a, int16x4_t b) {
   3689   // CHECK-LABEL: test_vsli_n_s16
   3690   return vsli_n_s16(a, b, 3);
   3691   // CHECK: sli {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3692 }
   3693 
   3694 int32x2_t test_vsli_n_s32(int32x2_t a, int32x2_t b) {
   3695   // CHECK-LABEL: test_vsli_n_s32
   3696   return vsli_n_s32(a, b, 3);
   3697   // CHECK: sli {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3698 }
   3699 
   3700 int8x16_t test_vsliq_n_s8(int8x16_t a, int8x16_t b) {
   3701   // CHECK-LABEL: test_vsliq_n_s8
   3702   return vsliq_n_s8(a, b, 3);
   3703   // CHECK: sli {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3704 }
   3705 
   3706 int16x8_t test_vsliq_n_s16(int16x8_t a, int16x8_t b) {
   3707   // CHECK-LABEL: test_vsliq_n_s16
   3708   return vsliq_n_s16(a, b, 3);
   3709   // CHECK: sli {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3710 }
   3711 
   3712 int32x4_t test_vsliq_n_s32(int32x4_t a, int32x4_t b) {
   3713   // CHECK-LABEL: test_vsliq_n_s32
   3714   return vsliq_n_s32(a, b, 3);
   3715   // CHECK: sli {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3716 }
   3717 
   3718 int64x2_t test_vsliq_n_s64(int64x2_t a, int64x2_t b) {
   3719   // CHECK-LABEL: test_vsliq_n_s64
   3720   return vsliq_n_s64(a, b, 3);
   3721   // CHECK: sli {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3722 }
   3723 
   3724 uint8x8_t test_vsli_n_u8(uint8x8_t a, uint8x8_t b) {
   3725   // CHECK-LABEL: test_vsli_n_u8
   3726   return vsli_n_u8(a, b, 3);
   3727   // CHECK: sli {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3728 }
   3729 
   3730 uint16x4_t test_vsli_n_u16(uint16x4_t a, uint16x4_t b) {
   3731   // CHECK-LABEL: test_vsli_n_u16
   3732   return vsli_n_u16(a, b, 3);
   3733   // CHECK: sli {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3734 }
   3735 
   3736 uint32x2_t test_vsli_n_u32(uint32x2_t a, uint32x2_t b) {
   3737   // CHECK-LABEL: test_vsli_n_u32
   3738   return vsli_n_u32(a, b, 3);
   3739   // CHECK: sli {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3740 }
   3741 
   3742 uint8x16_t test_vsliq_n_u8(uint8x16_t a, uint8x16_t b) {
   3743   // CHECK-LABEL: test_vsliq_n_u8
   3744   return vsliq_n_u8(a, b, 3);
   3745   // CHECK: sli {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3746 }
   3747 
   3748 uint16x8_t test_vsliq_n_u16(uint16x8_t a, uint16x8_t b) {
   3749   // CHECK-LABEL: test_vsliq_n_u16
   3750   return vsliq_n_u16(a, b, 3);
   3751   // CHECK: sli {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3752 }
   3753 
   3754 uint32x4_t test_vsliq_n_u32(uint32x4_t a, uint32x4_t b) {
   3755   // CHECK-LABEL: test_vsliq_n_u32
   3756   return vsliq_n_u32(a, b, 3);
   3757   // CHECK: sli {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3758 }
   3759 
   3760 uint64x2_t test_vsliq_n_u64(uint64x2_t a, uint64x2_t b) {
   3761   // CHECK-LABEL: test_vsliq_n_u64
   3762   return vsliq_n_u64(a, b, 3);
   3763   // CHECK: sli {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3764 }
   3765 
   3766 poly8x8_t test_vsli_n_p8(poly8x8_t a, poly8x8_t b) {
   3767   // CHECK-LABEL: test_vsli_n_p8
   3768   return vsli_n_p8(a, b, 3);
   3769   // CHECK: sli {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3770 }
   3771 
   3772 poly16x4_t test_vsli_n_p16(poly16x4_t a, poly16x4_t b) {
   3773   // CHECK-LABEL: test_vsli_n_p16
   3774   return vsli_n_p16(a, b, 15);
   3775   // CHECK: sli {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #15
   3776 }
   3777 
   3778 poly8x16_t test_vsliq_n_p8(poly8x16_t a, poly8x16_t b) {
   3779   // CHECK-LABEL: test_vsliq_n_p8
   3780   return vsliq_n_p8(a, b, 3);
   3781   // CHECK: sli {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3782 }
   3783 
   3784 poly16x8_t test_vsliq_n_p16(poly16x8_t a, poly16x8_t b) {
   3785   // CHECK-LABEL: test_vsliq_n_p16
   3786   return vsliq_n_p16(a, b, 15);
   3787   // CHECK: sli {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #15
   3788 }
   3789 
   3790 int8x8_t test_vqshlu_n_s8(int8x8_t a) {
   3791   // CHECK-LABEL: test_vqshlu_n_s8
   3792   return vqshlu_n_s8(a, 3);
   3793   // CHECK: sqshlu {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
   3794 }
   3795 
   3796 int16x4_t test_vqshlu_n_s16(int16x4_t a) {
   3797   // CHECK-LABEL: test_vqshlu_n_s16
   3798   return vqshlu_n_s16(a, 3);
   3799   // CHECK: sqshlu {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
   3800 }
   3801 
   3802 int32x2_t test_vqshlu_n_s32(int32x2_t a) {
   3803   // CHECK-LABEL: test_vqshlu_n_s32
   3804   return vqshlu_n_s32(a, 3);
   3805   // CHECK: sqshlu {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
   3806 }
   3807 
   3808 int8x16_t test_vqshluq_n_s8(int8x16_t a) {
   3809   // CHECK-LABEL: test_vqshluq_n_s8
   3810   return vqshluq_n_s8(a, 3);
   3811   // CHECK: sqshlu {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
   3812 }
   3813 
   3814 int16x8_t test_vqshluq_n_s16(int16x8_t a) {
   3815   // CHECK-LABEL: test_vqshluq_n_s16
   3816   return vqshluq_n_s16(a, 3);
   3817   // CHECK: sqshlu {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
   3818 }
   3819 
   3820 int32x4_t test_vqshluq_n_s32(int32x4_t a) {
   3821   // CHECK-LABEL: test_vqshluq_n_s32
   3822   return vqshluq_n_s32(a, 3);
   3823   // CHECK: sqshlu {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
   3824 }
   3825 
   3826 int64x2_t test_vqshluq_n_s64(int64x2_t a) {
   3827   // CHECK-LABEL: test_vqshluq_n_s64
   3828   return vqshluq_n_s64(a, 3);
   3829   // CHECK: sqshlu {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
   3830 }
   3831 
   3832 int8x8_t test_vshrn_n_s16(int16x8_t a) {
   3833   // CHECK-LABEL: test_vshrn_n_s16
   3834   return vshrn_n_s16(a, 3);
   3835   // CHECK: shrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
   3836 }
   3837 
   3838 int16x4_t test_vshrn_n_s32(int32x4_t a) {
   3839   // CHECK-LABEL: test_vshrn_n_s32
   3840   return vshrn_n_s32(a, 9);
   3841   // CHECK: shrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
   3842 }
   3843 
   3844 int32x2_t test_vshrn_n_s64(int64x2_t a) {
   3845   // CHECK-LABEL: test_vshrn_n_s64
   3846   return vshrn_n_s64(a, 19);
   3847   // CHECK: shrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
   3848 }
   3849 
   3850 uint8x8_t test_vshrn_n_u16(uint16x8_t a) {
   3851   // CHECK-LABEL: test_vshrn_n_u16
   3852   return vshrn_n_u16(a, 3);
   3853   // CHECK: shrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
   3854 }
   3855 
   3856 uint16x4_t test_vshrn_n_u32(uint32x4_t a) {
   3857   // CHECK-LABEL: test_vshrn_n_u32
   3858   return vshrn_n_u32(a, 9);
   3859   // CHECK: shrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
   3860 }
   3861 
   3862 uint32x2_t test_vshrn_n_u64(uint64x2_t a) {
   3863   // CHECK-LABEL: test_vshrn_n_u64
   3864   return vshrn_n_u64(a, 19);
   3865   // CHECK: shrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
   3866 }
   3867 
   3868 int8x16_t test_vshrn_high_n_s16(int8x8_t a, int16x8_t b) {
   3869   // CHECK-LABEL: test_vshrn_high_n_s16
   3870   return vshrn_high_n_s16(a, b, 3);
   3871   // CHECK: shrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
   3872 }
   3873 
   3874 int16x8_t test_vshrn_high_n_s32(int16x4_t a, int32x4_t b) {
   3875   // CHECK-LABEL: test_vshrn_high_n_s32
   3876   return vshrn_high_n_s32(a, b, 9);
   3877   // CHECK: shrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
   3878 }
   3879 
   3880 int32x4_t test_vshrn_high_n_s64(int32x2_t a, int64x2_t b) {
   3881   // CHECK-LABEL: test_vshrn_high_n_s64
   3882   return vshrn_high_n_s64(a, b, 19);
   3883   // CHECK: shrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
   3884 }
   3885 
   3886 uint8x16_t test_vshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
   3887   // CHECK-LABEL: test_vshrn_high_n_u16
   3888   return vshrn_high_n_u16(a, b, 3);
   3889   // CHECK: shrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
   3890 }
   3891 
   3892 uint16x8_t test_vshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
   3893   // CHECK-LABEL: test_vshrn_high_n_u32
   3894   return vshrn_high_n_u32(a, b, 9);
   3895   // CHECK: shrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
   3896 }
   3897 
   3898 uint32x4_t test_vshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
   3899   // CHECK-LABEL: test_vshrn_high_n_u64
   3900   return vshrn_high_n_u64(a, b, 19);
   3901   // CHECK: shrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
   3902 }
   3903 
   3904 int8x8_t test_vqshrun_n_s16(int16x8_t a) {
   3905   // CHECK-LABEL: test_vqshrun_n_s16
   3906   return vqshrun_n_s16(a, 3);
   3907   // CHECK: sqshrun {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
   3908 }
   3909 
   3910 int16x4_t test_vqshrun_n_s32(int32x4_t a) {
   3911   // CHECK-LABEL: test_vqshrun_n_s32
   3912   return vqshrun_n_s32(a, 9);
   3913   // CHECK: sqshrun {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
   3914 }
   3915 
   3916 int32x2_t test_vqshrun_n_s64(int64x2_t a) {
   3917   // CHECK-LABEL: test_vqshrun_n_s64
   3918   return vqshrun_n_s64(a, 19);
   3919   // CHECK: sqshrun {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
   3920 }
   3921 
   3922 int8x16_t test_vqshrun_high_n_s16(int8x8_t a, int16x8_t b) {
   3923   // CHECK-LABEL: test_vqshrun_high_n_s16
   3924   return vqshrun_high_n_s16(a, b, 3);
   3925   // CHECK: sqshrun2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
   3926 }
   3927 
   3928 int16x8_t test_vqshrun_high_n_s32(int16x4_t a, int32x4_t b) {
   3929   // CHECK-LABEL: test_vqshrun_high_n_s32
   3930   return vqshrun_high_n_s32(a, b, 9);
   3931   // CHECK: sqshrun2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
   3932 }
   3933 
   3934 int32x4_t test_vqshrun_high_n_s64(int32x2_t a, int64x2_t b) {
   3935   // CHECK-LABEL: test_vqshrun_high_n_s64
   3936   return vqshrun_high_n_s64(a, b, 19);
   3937   // CHECK: sqshrun2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
   3938 }
   3939 
   3940 int8x8_t test_vrshrn_n_s16(int16x8_t a) {
   3941   // CHECK-LABEL: test_vrshrn_n_s16
   3942   return vrshrn_n_s16(a, 3);
   3943   // CHECK: rshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
   3944 }
   3945 
   3946 int16x4_t test_vrshrn_n_s32(int32x4_t a) {
   3947   // CHECK-LABEL: test_vrshrn_n_s32
   3948   return vrshrn_n_s32(a, 9);
   3949   // CHECK: rshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
   3950 }
   3951 
   3952 int32x2_t test_vrshrn_n_s64(int64x2_t a) {
   3953   // CHECK-LABEL: test_vrshrn_n_s64
   3954   return vrshrn_n_s64(a, 19);
   3955   // CHECK: rshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
   3956 }
   3957 
   3958 uint8x8_t test_vrshrn_n_u16(uint16x8_t a) {
   3959   // CHECK-LABEL: test_vrshrn_n_u16
   3960   return vrshrn_n_u16(a, 3);
   3961   // CHECK: rshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
   3962 }
   3963 
   3964 uint16x4_t test_vrshrn_n_u32(uint32x4_t a) {
   3965   // CHECK-LABEL: test_vrshrn_n_u32
   3966   return vrshrn_n_u32(a, 9);
   3967   // CHECK: rshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
   3968 }
   3969 
   3970 uint32x2_t test_vrshrn_n_u64(uint64x2_t a) {
   3971   // CHECK-LABEL: test_vrshrn_n_u64
   3972   return vrshrn_n_u64(a, 19);
   3973   // CHECK: rshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
   3974 }
   3975 
   3976 int8x16_t test_vrshrn_high_n_s16(int8x8_t a, int16x8_t b) {
   3977   // CHECK-LABEL: test_vrshrn_high_n_s16
   3978   return vrshrn_high_n_s16(a, b, 3);
   3979   // CHECK: rshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
   3980 }
   3981 
   3982 int16x8_t test_vrshrn_high_n_s32(int16x4_t a, int32x4_t b) {
   3983   // CHECK-LABEL: test_vrshrn_high_n_s32
   3984   return vrshrn_high_n_s32(a, b, 9);
   3985   // CHECK: rshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
   3986 }
   3987 
   3988 int32x4_t test_vrshrn_high_n_s64(int32x2_t a, int64x2_t b) {
   3989   // CHECK-LABEL: test_vrshrn_high_n_s64
   3990   return vrshrn_high_n_s64(a, b, 19);
   3991   // CHECK: rshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
   3992 }
   3993 
   3994 uint8x16_t test_vrshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
   3995   // CHECK-LABEL: test_vrshrn_high_n_u16
   3996   return vrshrn_high_n_u16(a, b, 3);
   3997   // CHECK: rshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
   3998 }
   3999 
   4000 uint16x8_t test_vrshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
   4001   // CHECK-LABEL: test_vrshrn_high_n_u32
   4002   return vrshrn_high_n_u32(a, b, 9);
   4003   // CHECK: rshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
   4004 }
   4005 
   4006 uint32x4_t test_vrshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
   4007   // CHECK-LABEL: test_vrshrn_high_n_u64
   4008   return vrshrn_high_n_u64(a, b, 19);
   4009   // CHECK: rshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
   4010 }
   4011 
   4012 int8x8_t test_vqrshrun_n_s16(int16x8_t a) {
   4013   // CHECK-LABEL: test_vqrshrun_n_s16
   4014   return vqrshrun_n_s16(a, 3);
   4015   // CHECK: sqrshrun {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
   4016 }
   4017 
   4018 int16x4_t test_vqrshrun_n_s32(int32x4_t a) {
   4019   // CHECK-LABEL: test_vqrshrun_n_s32
   4020   return vqrshrun_n_s32(a, 9);
   4021   // CHECK: sqrshrun {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
   4022 }
   4023 
   4024 int32x2_t test_vqrshrun_n_s64(int64x2_t a) {
   4025   // CHECK-LABEL: test_vqrshrun_n_s64
   4026   return vqrshrun_n_s64(a, 19);
   4027   // CHECK: sqrshrun {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
   4028 }
   4029 
   4030 int8x16_t test_vqrshrun_high_n_s16(int8x8_t a, int16x8_t b) {
   4031   // CHECK-LABEL: test_vqrshrun_high_n_s16
   4032   return vqrshrun_high_n_s16(a, b, 3);
   4033   // CHECK: sqrshrun2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
   4034 }
   4035 
   4036 int16x8_t test_vqrshrun_high_n_s32(int16x4_t a, int32x4_t b) {
   4037   // CHECK-LABEL: test_vqrshrun_high_n_s32
   4038   return vqrshrun_high_n_s32(a, b, 9);
   4039   // CHECK: sqrshrun2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
   4040 }
   4041 
   4042 int32x4_t test_vqrshrun_high_n_s64(int32x2_t a, int64x2_t b) {
   4043   // CHECK-LABEL: test_vqrshrun_high_n_s64
   4044   return vqrshrun_high_n_s64(a, b, 19);
   4045   // CHECK: sqrshrun2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
   4046 }
   4047 
   4048 int8x8_t test_vqshrn_n_s16(int16x8_t a) {
   4049   // CHECK-LABEL: test_vqshrn_n_s16
   4050   return vqshrn_n_s16(a, 3);
   4051   // CHECK: sqshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
   4052 }
   4053 
   4054 int16x4_t test_vqshrn_n_s32(int32x4_t a) {
   4055   // CHECK-LABEL: test_vqshrn_n_s32
   4056   return vqshrn_n_s32(a, 9);
   4057   // CHECK: sqshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
   4058 }
   4059 
   4060 int32x2_t test_vqshrn_n_s64(int64x2_t a) {
   4061   // CHECK-LABEL: test_vqshrn_n_s64
   4062   return vqshrn_n_s64(a, 19);
   4063   // CHECK: sqshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
   4064 }
   4065 
   4066 uint8x8_t test_vqshrn_n_u16(uint16x8_t a) {
   4067   // CHECK-LABEL: test_vqshrn_n_u16
   4068   return vqshrn_n_u16(a, 3);
   4069   // CHECK: uqshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
   4070 }
   4071 
   4072 uint16x4_t test_vqshrn_n_u32(uint32x4_t a) {
   4073   // CHECK-LABEL: test_vqshrn_n_u32
   4074   return vqshrn_n_u32(a, 9);
   4075   // CHECK: uqshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
   4076 }
   4077 
   4078 uint32x2_t test_vqshrn_n_u64(uint64x2_t a) {
   4079   // CHECK-LABEL: test_vqshrn_n_u64
   4080   return vqshrn_n_u64(a, 19);
   4081   // CHECK: uqshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
   4082 }
   4083 
   4084 int8x16_t test_vqshrn_high_n_s16(int8x8_t a, int16x8_t b) {
   4085   // CHECK-LABEL: test_vqshrn_high_n_s16
   4086   return vqshrn_high_n_s16(a, b, 3);
   4087   // CHECK: sqshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
   4088 }
   4089 
   4090 int16x8_t test_vqshrn_high_n_s32(int16x4_t a, int32x4_t b) {
   4091   // CHECK-LABEL: test_vqshrn_high_n_s32
   4092   return vqshrn_high_n_s32(a, b, 9);
   4093   // CHECK: sqshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
   4094 }
   4095 
   4096 int32x4_t test_vqshrn_high_n_s64(int32x2_t a, int64x2_t b) {
   4097   // CHECK-LABEL: test_vqshrn_high_n_s64
   4098   return vqshrn_high_n_s64(a, b, 19);
   4099   // CHECK: sqshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
   4100 }
   4101 
   4102 uint8x16_t test_vqshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
   4103   // CHECK-LABEL: test_vqshrn_high_n_u16
   4104   return vqshrn_high_n_u16(a, b, 3);
   4105   // CHECK: uqshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
   4106 }
   4107 
   4108 uint16x8_t test_vqshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
   4109   // CHECK-LABEL: test_vqshrn_high_n_u32
   4110   return vqshrn_high_n_u32(a, b, 9);
   4111   // CHECK: uqshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
   4112 }
   4113 
   4114 uint32x4_t test_vqshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
   4115   // CHECK-LABEL: test_vqshrn_high_n_u64
   4116   return vqshrn_high_n_u64(a, b, 19);
   4117   // CHECK: uqshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
   4118 }
   4119 
   4120 int8x8_t test_vqrshrn_n_s16(int16x8_t a) {
   4121   // CHECK-LABEL: test_vqrshrn_n_s16
   4122   return vqrshrn_n_s16(a, 3);
   4123   // CHECK: sqrshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
   4124 }
   4125 
   4126 int16x4_t test_vqrshrn_n_s32(int32x4_t a) {
   4127   // CHECK-LABEL: test_vqrshrn_n_s32
   4128   return vqrshrn_n_s32(a, 9);
   4129   // CHECK: sqrshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
   4130 }
   4131 
   4132 int32x2_t test_vqrshrn_n_s64(int64x2_t a) {
   4133   // CHECK-LABEL: test_vqrshrn_n_s64
   4134   return vqrshrn_n_s64(a, 19);
   4135   // CHECK: sqrshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
   4136 }
   4137 
   4138 uint8x8_t test_vqrshrn_n_u16(uint16x8_t a) {
   4139   // CHECK-LABEL: test_vqrshrn_n_u16
   4140   return vqrshrn_n_u16(a, 3);
   4141   // CHECK: uqrshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
   4142 }
   4143 
   4144 uint16x4_t test_vqrshrn_n_u32(uint32x4_t a) {
   4145   // CHECK-LABEL: test_vqrshrn_n_u32
   4146   return vqrshrn_n_u32(a, 9);
   4147   // CHECK: uqrshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
   4148 }
   4149 
   4150 uint32x2_t test_vqrshrn_n_u64(uint64x2_t a) {
   4151   // CHECK-LABEL: test_vqrshrn_n_u64
   4152   return vqrshrn_n_u64(a, 19);
   4153   // CHECK: uqrshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
   4154 }
   4155 
   4156 int8x16_t test_vqrshrn_high_n_s16(int8x8_t a, int16x8_t b) {
   4157   // CHECK-LABEL: test_vqrshrn_high_n_s16
   4158   return vqrshrn_high_n_s16(a, b, 3);
   4159   // CHECK: sqrshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
   4160 }
   4161 
   4162 int16x8_t test_vqrshrn_high_n_s32(int16x4_t a, int32x4_t b) {
   4163   // CHECK-LABEL: test_vqrshrn_high_n_s32
   4164   return vqrshrn_high_n_s32(a, b, 9);
   4165   // CHECK: sqrshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
   4166 }
   4167 
   4168 int32x4_t test_vqrshrn_high_n_s64(int32x2_t a, int64x2_t b) {
   4169   // CHECK-LABEL: test_vqrshrn_high_n_s64
   4170   return vqrshrn_high_n_s64(a, b, 19);
   4171   // CHECK: sqrshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
   4172 }
   4173 
   4174 uint8x16_t test_vqrshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
   4175   // CHECK-LABEL: test_vqrshrn_high_n_u16
   4176   return vqrshrn_high_n_u16(a, b, 3);
   4177   // CHECK: uqrshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
   4178 }
   4179 
   4180 uint16x8_t test_vqrshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
   4181   // CHECK-LABEL: test_vqrshrn_high_n_u32
   4182   return vqrshrn_high_n_u32(a, b, 9);
   4183   // CHECK: uqrshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
   4184 }
   4185 
   4186 uint32x4_t test_vqrshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
   4187   // CHECK-LABEL: test_vqrshrn_high_n_u64
   4188   return vqrshrn_high_n_u64(a, b, 19);
   4189   // CHECK: uqrshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
   4190 }
   4191 
   4192 int16x8_t test_vshll_n_s8(int8x8_t a) {
   4193 // CHECK-LABEL: test_vshll_n_s8
   4194   return vshll_n_s8(a, 3);
   4195 // CHECK: sshll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #3
   4196 }
   4197 
   4198 int32x4_t test_vshll_n_s16(int16x4_t a) {
   4199 // CHECK-LABEL: test_vshll_n_s16
   4200   return vshll_n_s16(a, 9);
   4201 // CHECK: sshll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #9
   4202 }
   4203 
   4204 int64x2_t test_vshll_n_s32(int32x2_t a) {
   4205 // CHECK-LABEL: test_vshll_n_s32
   4206   return vshll_n_s32(a, 19);
   4207 // CHECK: sshll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #19
   4208 }
   4209 
   4210 uint16x8_t test_vshll_n_u8(uint8x8_t a) {
   4211 // CHECK-LABEL: test_vshll_n_u8
   4212   return vshll_n_u8(a, 3);
   4213 // CHECK: ushll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #3
   4214 }
   4215 
   4216 uint32x4_t test_vshll_n_u16(uint16x4_t a) {
   4217 // CHECK-LABEL: test_vshll_n_u16
   4218   return vshll_n_u16(a, 9);
   4219 // CHECK: ushll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #9
   4220 }
   4221 
   4222 uint64x2_t test_vshll_n_u32(uint32x2_t a) {
   4223 // CHECK-LABEL: test_vshll_n_u32
   4224   return vshll_n_u32(a, 19);
   4225 // CHECK: ushll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #19
   4226 }
   4227 
   4228 int16x8_t test_vshll_high_n_s8(int8x16_t a) {
   4229 // CHECK-LABEL: test_vshll_high_n_s8
   4230   return vshll_high_n_s8(a, 3);
   4231 // CHECK: sshll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #3
   4232 }
   4233 
   4234 int32x4_t test_vshll_high_n_s16(int16x8_t a) {
   4235 // CHECK-LABEL: test_vshll_high_n_s16
   4236   return vshll_high_n_s16(a, 9);
   4237 // CHECK: sshll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #9
   4238 }
   4239 
   4240 int64x2_t test_vshll_high_n_s32(int32x4_t a) {
   4241 // CHECK-LABEL: test_vshll_high_n_s32
   4242   return vshll_high_n_s32(a, 19);
   4243 // CHECK: sshll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #19
   4244 }
   4245 
   4246 uint16x8_t test_vshll_high_n_u8(uint8x16_t a) {
   4247 // CHECK-LABEL: test_vshll_high_n_u8
   4248   return vshll_high_n_u8(a, 3);
   4249 // CHECK: ushll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #3
   4250 }
   4251 
   4252 uint32x4_t test_vshll_high_n_u16(uint16x8_t a) {
   4253 // CHECK-LABEL: test_vshll_high_n_u16
   4254   return vshll_high_n_u16(a, 9);
   4255 // CHECK: ushll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #9
   4256 }
   4257 
   4258 uint64x2_t test_vshll_high_n_u32(uint32x4_t a) {
   4259 // CHECK-LABEL: test_vshll_high_n_u32
   4260   return vshll_high_n_u32(a, 19);
   4261 // CHECK: ushll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #19
   4262 }
   4263 
   4264 int16x8_t test_vmovl_s8(int8x8_t a) {
   4265 // CHECK-LABEL: test_vmovl_s8
   4266   return vmovl_s8(a);
   4267 // CHECK: sshll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #0
   4268 }
   4269 
   4270 int32x4_t test_vmovl_s16(int16x4_t a) {
   4271 // CHECK-LABEL: test_vmovl_s16
   4272   return vmovl_s16(a);
   4273 // CHECK: sshll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #0
   4274 }
   4275 
   4276 int64x2_t test_vmovl_s32(int32x2_t a) {
   4277 // CHECK-LABEL: test_vmovl_s32
   4278   return vmovl_s32(a);
   4279 // CHECK: sshll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #0
   4280 }
   4281 
   4282 uint16x8_t test_vmovl_u8(uint8x8_t a) {
   4283 // CHECK-LABEL: test_vmovl_u8
   4284   return vmovl_u8(a);
   4285 // CHECK: ushll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #0
   4286 }
   4287 
   4288 uint32x4_t test_vmovl_u16(uint16x4_t a) {
   4289 // CHECK-LABEL: test_vmovl_u16
   4290   return vmovl_u16(a);
   4291 // CHECK: ushll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #0
   4292 }
   4293 
   4294 uint64x2_t test_vmovl_u32(uint32x2_t a) {
   4295 // CHECK-LABEL: test_vmovl_u32
   4296   return vmovl_u32(a);
   4297 // CHECK: ushll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #0
   4298 }
   4299 
   4300 int16x8_t test_vmovl_high_s8(int8x16_t a) {
   4301 // CHECK-LABEL: test_vmovl_high_s8
   4302   return vmovl_high_s8(a);
   4303 // CHECK: sshll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #0
   4304 }
   4305 
   4306 int32x4_t test_vmovl_high_s16(int16x8_t a) {
   4307 // CHECK-LABEL: test_vmovl_high_s16
   4308   return vmovl_high_s16(a);
   4309 // CHECK: sshll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #0
   4310 }
   4311 
   4312 int64x2_t test_vmovl_high_s32(int32x4_t a) {
   4313 // CHECK-LABEL: test_vmovl_high_s32
   4314   return vmovl_high_s32(a);
   4315 // CHECK: sshll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #0
   4316 }
   4317 
   4318 uint16x8_t test_vmovl_high_u8(uint8x16_t a) {
   4319 // CHECK-LABEL: test_vmovl_high_u8
   4320   return vmovl_high_u8(a);
   4321 // CHECK: ushll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #0
   4322 }
   4323 
   4324 uint32x4_t test_vmovl_high_u16(uint16x8_t a) {
   4325 // CHECK-LABEL: test_vmovl_high_u16
   4326   return vmovl_high_u16(a);
   4327 // CHECK: ushll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #0
   4328 }
   4329 
   4330 uint64x2_t test_vmovl_high_u32(uint32x4_t a) {
   4331 // CHECK-LABEL: test_vmovl_high_u32
   4332   return vmovl_high_u32(a);
   4333 // CHECK: ushll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #0
   4334 }
   4335 
   4336 float32x2_t test_vcvt_n_f32_s32(int32x2_t a) {
   4337   // CHECK-LABEL: test_vcvt_n_f32_s32
   4338   return vcvt_n_f32_s32(a, 31);
   4339   // CHECK: scvtf {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #31
   4340 }
   4341 
   4342 float32x4_t test_vcvtq_n_f32_s32(int32x4_t a) {
   4343   // CHECK-LABEL: test_vcvtq_n_f32_s32
   4344   return vcvtq_n_f32_s32(a, 31);
   4345   // CHECK: scvtf {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #31
   4346 }
   4347 
   4348 float64x2_t test_vcvtq_n_f64_s64(int64x2_t a) {
   4349   // CHECK-LABEL: test_vcvtq_n_f64_s64
   4350   return vcvtq_n_f64_s64(a, 50);
   4351   // CHECK: scvtf {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #50
   4352 }
   4353 
   4354 float32x2_t test_vcvt_n_f32_u32(uint32x2_t a) {
   4355   // CHECK-LABEL: test_vcvt_n_f32_u32
   4356   return vcvt_n_f32_u32(a, 31);
   4357   // CHECK: ucvtf {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #31
   4358 }
   4359 
   4360 float32x4_t test_vcvtq_n_f32_u32(uint32x4_t a) {
   4361   // CHECK-LABEL: test_vcvtq_n_f32_u32
   4362   return vcvtq_n_f32_u32(a, 31);
   4363   // CHECK: ucvtf {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #31
   4364 }
   4365 
   4366 float64x2_t test_vcvtq_n_f64_u64(uint64x2_t a) {
   4367   // CHECK-LABEL: test_vcvtq_n_f64_u64
   4368   return vcvtq_n_f64_u64(a, 50);
   4369   // CHECK: ucvtf {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #50
   4370 }
   4371 
   4372 int32x2_t test_vcvt_n_s32_f32(float32x2_t a) {
   4373   // CHECK-LABEL: test_vcvt_n_s32_f32
   4374   return vcvt_n_s32_f32(a, 31);
   4375   // CHECK: fcvtzs {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #31
   4376 }
   4377 
   4378 int32x4_t test_vcvtq_n_s32_f32(float32x4_t a) {
   4379   // CHECK-LABEL: test_vcvtq_n_s32_f32
   4380   return vcvtq_n_s32_f32(a, 31);
   4381   // CHECK: fcvtzs {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #31
   4382 }
   4383 
   4384 int64x2_t test_vcvtq_n_s64_f64(float64x2_t a) {
   4385   // CHECK-LABEL: test_vcvtq_n_s64_f64
   4386   return vcvtq_n_s64_f64(a, 50);
   4387   // CHECK: fcvtzs {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #50
   4388 }
   4389 
   4390 uint32x2_t test_vcvt_n_u32_f32(float32x2_t a) {
   4391   // CHECK-LABEL: test_vcvt_n_u32_f32
   4392   return vcvt_n_u32_f32(a, 31);
   4393   // CHECK: fcvtzu {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #31
   4394 }
   4395 
   4396 uint32x4_t test_vcvtq_n_u32_f32(float32x4_t a) {
   4397   // CHECK-LABEL: test_vcvtq_n_u32_f32
   4398   return vcvtq_n_u32_f32(a, 31);
   4399   // CHECK: fcvtzu {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #31
   4400 }
   4401 
   4402 uint64x2_t test_vcvtq_n_u64_f64(float64x2_t a) {
   4403   // CHECK-LABEL: test_vcvtq_n_u64_f64
   4404   return vcvtq_n_u64_f64(a, 50);
   4405   // CHECK: fcvtzu {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #50
   4406 }
   4407 
   4408 int16x8_t test_vaddl_s8(int8x8_t a, int8x8_t b) {
   4409   // CHECK-LABEL: test_vaddl_s8
   4410   return vaddl_s8(a, b);
   4411   // CHECK: saddl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   4412 }
   4413 
   4414 int32x4_t test_vaddl_s16(int16x4_t a, int16x4_t b) {
   4415   // CHECK-LABEL: test_vaddl_s16
   4416   return vaddl_s16(a, b);
   4417   // CHECK: saddl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   4418 }
   4419 
   4420 int64x2_t test_vaddl_s32(int32x2_t a, int32x2_t b) {
   4421   // CHECK-LABEL: test_vaddl_s32
   4422   return vaddl_s32(a, b);
   4423   // CHECK: saddl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   4424 }
   4425 
   4426 uint16x8_t test_vaddl_u8(uint8x8_t a, uint8x8_t b) {
   4427   // CHECK-LABEL: test_vaddl_u8
   4428   return vaddl_u8(a, b);
   4429   // CHECK: uaddl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   4430 }
   4431 
   4432 uint32x4_t test_vaddl_u16(uint16x4_t a, uint16x4_t b) {
   4433   // CHECK-LABEL: test_vaddl_u16
   4434   return vaddl_u16(a, b);
   4435   // CHECK: uaddl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   4436 }
   4437 
   4438 uint64x2_t test_vaddl_u32(uint32x2_t a, uint32x2_t b) {
   4439   // CHECK-LABEL: test_vaddl_u32
   4440   return vaddl_u32(a, b);
   4441   // CHECK: uaddl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   4442 }
   4443 
   4444 int16x8_t test_vaddl_high_s8(int8x16_t a, int8x16_t b) {
   4445   // CHECK-LABEL: test_vaddl_high_s8
   4446   return vaddl_high_s8(a, b);
   4447   // CHECK: saddl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   4448 }
   4449 
   4450 int32x4_t test_vaddl_high_s16(int16x8_t a, int16x8_t b) {
   4451   // CHECK-LABEL: test_vaddl_high_s16
   4452   return vaddl_high_s16(a, b);
   4453   // CHECK: saddl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4454 }
   4455 
   4456 int64x2_t test_vaddl_high_s32(int32x4_t a, int32x4_t b) {
   4457   // CHECK-LABEL: test_vaddl_high_s32
   4458   return vaddl_high_s32(a, b);
   4459   // CHECK: saddl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4460 }
   4461 
   4462 uint16x8_t test_vaddl_high_u8(uint8x16_t a, uint8x16_t b) {
   4463   // CHECK-LABEL: test_vaddl_high_u8
   4464   return vaddl_high_u8(a, b);
   4465   // CHECK: uaddl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   4466 }
   4467 
   4468 uint32x4_t test_vaddl_high_u16(uint16x8_t a, uint16x8_t b) {
   4469   // CHECK-LABEL: test_vaddl_high_u16
   4470   return vaddl_high_u16(a, b);
   4471   // CHECK: uaddl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4472 }
   4473 
   4474 uint64x2_t test_vaddl_high_u32(uint32x4_t a, uint32x4_t b) {
   4475   // CHECK-LABEL: test_vaddl_high_u32
   4476   return vaddl_high_u32(a, b);
   4477   // CHECK: uaddl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4478 }
   4479 
   4480 int16x8_t test_vaddw_s8(int16x8_t a, int8x8_t b) {
   4481   // CHECK-LABEL: test_vaddw_s8
   4482   return vaddw_s8(a, b);
   4483   // CHECK: saddw {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8b
   4484 }
   4485 
   4486 int32x4_t test_vaddw_s16(int32x4_t a, int16x4_t b) {
   4487   // CHECK-LABEL: test_vaddw_s16
   4488   return vaddw_s16(a, b);
   4489   // CHECK: saddw {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4h
   4490 }
   4491 
   4492 int64x2_t test_vaddw_s32(int64x2_t a, int32x2_t b) {
   4493   // CHECK-LABEL: test_vaddw_s32
   4494   return vaddw_s32(a, b);
   4495   // CHECK: saddw {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2s
   4496 }
   4497 
   4498 uint16x8_t test_vaddw_u8(uint16x8_t a, uint8x8_t b) {
   4499   // CHECK-LABEL: test_vaddw_u8
   4500   return vaddw_u8(a, b);
   4501   // CHECK: uaddw {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8b
   4502 }
   4503 
   4504 uint32x4_t test_vaddw_u16(uint32x4_t a, uint16x4_t b) {
   4505   // CHECK-LABEL: test_vaddw_u16
   4506   return vaddw_u16(a, b);
   4507   // CHECK: uaddw {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4h
   4508 }
   4509 
   4510 uint64x2_t test_vaddw_u32(uint64x2_t a, uint32x2_t b) {
   4511   // CHECK-LABEL: test_vaddw_u32
   4512   return vaddw_u32(a, b);
   4513   // CHECK: uaddw {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2s
   4514 }
   4515 
   4516 int16x8_t test_vaddw_high_s8(int16x8_t a, int8x16_t b) {
   4517   // CHECK-LABEL: test_vaddw_high_s8
   4518   return vaddw_high_s8(a, b);
   4519   // CHECK: saddw2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.16b
   4520 }
   4521 
   4522 int32x4_t test_vaddw_high_s16(int32x4_t a, int16x8_t b) {
   4523   // CHECK-LABEL: test_vaddw_high_s16
   4524   return vaddw_high_s16(a, b);
   4525   // CHECK: saddw2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.8h
   4526 }
   4527 
   4528 int64x2_t test_vaddw_high_s32(int64x2_t a, int32x4_t b) {
   4529   // CHECK-LABEL: test_vaddw_high_s32
   4530   return vaddw_high_s32(a, b);
   4531   // CHECK: saddw2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.4s
   4532 }
   4533 
   4534 uint16x8_t test_vaddw_high_u8(uint16x8_t a, uint8x16_t b) {
   4535   // CHECK-LABEL: test_vaddw_high_u8
   4536   return vaddw_high_u8(a, b);
   4537   // CHECK: uaddw2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.16b
   4538 }
   4539 
   4540 uint32x4_t test_vaddw_high_u16(uint32x4_t a, uint16x8_t b) {
   4541   // CHECK-LABEL: test_vaddw_high_u16
   4542   return vaddw_high_u16(a, b);
   4543   // CHECK: uaddw2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.8h
   4544 }
   4545 
   4546 uint64x2_t test_vaddw_high_u32(uint64x2_t a, uint32x4_t b) {
   4547   // CHECK-LABEL: test_vaddw_high_u32
   4548   return vaddw_high_u32(a, b);
   4549   // CHECK: uaddw2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.4s
   4550 }
   4551 
   4552 int16x8_t test_vsubl_s8(int8x8_t a, int8x8_t b) {
   4553   // CHECK-LABEL: test_vsubl_s8
   4554   return vsubl_s8(a, b);
   4555   // CHECK: ssubl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   4556 }
   4557 
   4558 int32x4_t test_vsubl_s16(int16x4_t a, int16x4_t b) {
   4559   // CHECK-LABEL: test_vsubl_s16
   4560   return vsubl_s16(a, b);
   4561   // CHECK: ssubl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   4562 }
   4563 
   4564 int64x2_t test_vsubl_s32(int32x2_t a, int32x2_t b) {
   4565   // CHECK-LABEL: test_vsubl_s32
   4566   return vsubl_s32(a, b);
   4567   // CHECK: ssubl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   4568 }
   4569 
   4570 uint16x8_t test_vsubl_u8(uint8x8_t a, uint8x8_t b) {
   4571   // CHECK-LABEL: test_vsubl_u8
   4572   return vsubl_u8(a, b);
   4573   // CHECK: usubl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   4574 }
   4575 
   4576 uint32x4_t test_vsubl_u16(uint16x4_t a, uint16x4_t b) {
   4577   // CHECK-LABEL: test_vsubl_u16
   4578   return vsubl_u16(a, b);
   4579   // CHECK: usubl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   4580 }
   4581 
   4582 uint64x2_t test_vsubl_u32(uint32x2_t a, uint32x2_t b) {
   4583   // CHECK-LABEL: test_vsubl_u32
   4584   return vsubl_u32(a, b);
   4585   // CHECK: usubl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   4586 }
   4587 
   4588 int16x8_t test_vsubl_high_s8(int8x16_t a, int8x16_t b) {
   4589   // CHECK-LABEL: test_vsubl_high_s8
   4590   return vsubl_high_s8(a, b);
   4591   // CHECK: ssubl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   4592 }
   4593 
   4594 int32x4_t test_vsubl_high_s16(int16x8_t a, int16x8_t b) {
   4595   // CHECK-LABEL: test_vsubl_high_s16
   4596   return vsubl_high_s16(a, b);
   4597   // CHECK: ssubl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4598 }
   4599 
   4600 int64x2_t test_vsubl_high_s32(int32x4_t a, int32x4_t b) {
   4601   // CHECK-LABEL: test_vsubl_high_s32
   4602   return vsubl_high_s32(a, b);
   4603   // CHECK: ssubl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4604 }
   4605 
   4606 uint16x8_t test_vsubl_high_u8(uint8x16_t a, uint8x16_t b) {
   4607   // CHECK-LABEL: test_vsubl_high_u8
   4608   return vsubl_high_u8(a, b);
   4609   // CHECK: usubl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   4610 }
   4611 
   4612 uint32x4_t test_vsubl_high_u16(uint16x8_t a, uint16x8_t b) {
   4613   // CHECK-LABEL: test_vsubl_high_u16
   4614   return vsubl_high_u16(a, b);
   4615   // CHECK: usubl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4616 }
   4617 
   4618 uint64x2_t test_vsubl_high_u32(uint32x4_t a, uint32x4_t b) {
   4619   // CHECK-LABEL: test_vsubl_high_u32
   4620   return vsubl_high_u32(a, b);
   4621   // CHECK: usubl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4622 }
   4623 
   4624 int16x8_t test_vsubw_s8(int16x8_t a, int8x8_t b) {
   4625   // CHECK-LABEL: test_vsubw_s8
   4626   return vsubw_s8(a, b);
   4627   // CHECK: ssubw {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8b
   4628 }
   4629 
   4630 int32x4_t test_vsubw_s16(int32x4_t a, int16x4_t b) {
   4631   // CHECK-LABEL: test_vsubw_s16
   4632   return vsubw_s16(a, b);
   4633   // CHECK: ssubw {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4h
   4634 }
   4635 
   4636 int64x2_t test_vsubw_s32(int64x2_t a, int32x2_t b) {
   4637   // CHECK-LABEL: test_vsubw_s32
   4638   return vsubw_s32(a, b);
   4639   // CHECK: ssubw {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2s
   4640 }
   4641 
   4642 uint16x8_t test_vsubw_u8(uint16x8_t a, uint8x8_t b) {
   4643   // CHECK-LABEL: test_vsubw_u8
   4644   return vsubw_u8(a, b);
   4645   // CHECK: usubw {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8b
   4646 }
   4647 
   4648 uint32x4_t test_vsubw_u16(uint32x4_t a, uint16x4_t b) {
   4649   // CHECK-LABEL: test_vsubw_u16
   4650   return vsubw_u16(a, b);
   4651   // CHECK: usubw {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4h
   4652 }
   4653 
   4654 uint64x2_t test_vsubw_u32(uint64x2_t a, uint32x2_t b) {
   4655   // CHECK-LABEL: test_vsubw_u32
   4656   return vsubw_u32(a, b);
   4657   // CHECK: usubw {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2s
   4658 }
   4659 
   4660 int16x8_t test_vsubw_high_s8(int16x8_t a, int8x16_t b) {
   4661   // CHECK-LABEL: test_vsubw_high_s8
   4662   return vsubw_high_s8(a, b);
   4663   // CHECK: ssubw2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.16b
   4664 }
   4665 
   4666 int32x4_t test_vsubw_high_s16(int32x4_t a, int16x8_t b) {
   4667   // CHECK-LABEL: test_vsubw_high_s16
   4668   return vsubw_high_s16(a, b);
   4669   // CHECK: ssubw2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.8h
   4670 }
   4671 
   4672 int64x2_t test_vsubw_high_s32(int64x2_t a, int32x4_t b) {
   4673   // CHECK-LABEL: test_vsubw_high_s32
   4674   return vsubw_high_s32(a, b);
   4675   // CHECK: ssubw2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.4s
   4676 }
   4677 
   4678 uint16x8_t test_vsubw_high_u8(uint16x8_t a, uint8x16_t b) {
   4679   // CHECK-LABEL: test_vsubw_high_u8
   4680   return vsubw_high_u8(a, b);
   4681   // CHECK: usubw2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.16b
   4682 }
   4683 
   4684 uint32x4_t test_vsubw_high_u16(uint32x4_t a, uint16x8_t b) {
   4685   // CHECK-LABEL: test_vsubw_high_u16
   4686   return vsubw_high_u16(a, b);
   4687   // CHECK: usubw2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.8h
   4688 }
   4689 
   4690 uint64x2_t test_vsubw_high_u32(uint64x2_t a, uint32x4_t b) {
   4691   // CHECK-LABEL: test_vsubw_high_u32
   4692   return vsubw_high_u32(a, b);
   4693   // CHECK: usubw2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.4s
   4694 }
   4695 
   4696 int8x8_t test_vaddhn_s16(int16x8_t a, int16x8_t b) {
   4697   // CHECK-LABEL: test_vaddhn_s16
   4698   return vaddhn_s16(a, b);
   4699   // CHECK: addhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4700 }
   4701 
   4702 int16x4_t test_vaddhn_s32(int32x4_t a, int32x4_t b) {
   4703   // CHECK-LABEL: test_vaddhn_s32
   4704   return vaddhn_s32(a, b);
   4705   // CHECK: addhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4706 }
   4707 
   4708 int32x2_t test_vaddhn_s64(int64x2_t a, int64x2_t b) {
   4709   // CHECK-LABEL: test_vaddhn_s64
   4710   return vaddhn_s64(a, b);
   4711   // CHECK: addhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4712 }
   4713 
   4714 uint8x8_t test_vaddhn_u16(uint16x8_t a, uint16x8_t b) {
   4715   // CHECK-LABEL: test_vaddhn_u16
   4716   return vaddhn_u16(a, b);
   4717   // CHECK: addhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4718 }
   4719 
   4720 uint16x4_t test_vaddhn_u32(uint32x4_t a, uint32x4_t b) {
   4721   // CHECK-LABEL: test_vaddhn_u32
   4722   return vaddhn_u32(a, b);
   4723   // CHECK: addhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4724 }
   4725 
   4726 uint32x2_t test_vaddhn_u64(uint64x2_t a, uint64x2_t b) {
   4727   // CHECK-LABEL: test_vaddhn_u64
   4728   return vaddhn_u64(a, b);
   4729   // CHECK: addhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4730 }
   4731 
   4732 int8x16_t test_vaddhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
   4733   // CHECK-LABEL: test_vaddhn_high_s16
   4734   return vaddhn_high_s16(r, a, b);
   4735   // CHECK: addhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4736 }
   4737 
   4738 int16x8_t test_vaddhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
   4739   // CHECK-LABEL: test_vaddhn_high_s32
   4740   return vaddhn_high_s32(r, a, b);
   4741   // CHECK: addhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4742 }
   4743 
   4744 int32x4_t test_vaddhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
   4745   // CHECK-LABEL: test_vaddhn_high_s64
   4746   return vaddhn_high_s64(r, a, b);
   4747   // CHECK: addhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4748 }
   4749 
   4750 uint8x16_t test_vaddhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
   4751   // CHECK-LABEL: test_vaddhn_high_u16
   4752   return vaddhn_high_u16(r, a, b);
   4753   // CHECK: addhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4754 }
   4755 
   4756 uint16x8_t test_vaddhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
   4757   // CHECK-LABEL: test_vaddhn_high_u32
   4758   return vaddhn_high_u32(r, a, b);
   4759   // CHECK: addhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4760 }
   4761 
   4762 uint32x4_t test_vaddhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
   4763   // CHECK-LABEL: test_vaddhn_high_u64
   4764   return vaddhn_high_u64(r, a, b);
   4765   // CHECK: addhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4766 }
   4767 
   4768 int8x8_t test_vraddhn_s16(int16x8_t a, int16x8_t b) {
   4769   // CHECK-LABEL: test_vraddhn_s16
   4770   return vraddhn_s16(a, b);
   4771   // CHECK: raddhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4772 }
   4773 
   4774 int16x4_t test_vraddhn_s32(int32x4_t a, int32x4_t b) {
   4775   // CHECK-LABEL: test_vraddhn_s32
   4776   return vraddhn_s32(a, b);
   4777   // CHECK: raddhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4778 }
   4779 
   4780 int32x2_t test_vraddhn_s64(int64x2_t a, int64x2_t b) {
   4781   // CHECK-LABEL: test_vraddhn_s64
   4782   return vraddhn_s64(a, b);
   4783   // CHECK: raddhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4784 }
   4785 
   4786 uint8x8_t test_vraddhn_u16(uint16x8_t a, uint16x8_t b) {
   4787   // CHECK-LABEL: test_vraddhn_u16
   4788   return vraddhn_u16(a, b);
   4789   // CHECK: raddhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4790 }
   4791 
   4792 uint16x4_t test_vraddhn_u32(uint32x4_t a, uint32x4_t b) {
   4793   // CHECK-LABEL: test_vraddhn_u32
   4794   return vraddhn_u32(a, b);
   4795   // CHECK: raddhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4796 }
   4797 
   4798 uint32x2_t test_vraddhn_u64(uint64x2_t a, uint64x2_t b) {
   4799   // CHECK-LABEL: test_vraddhn_u64
   4800   return vraddhn_u64(a, b);
   4801   // CHECK: raddhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4802 }
   4803 
   4804 int8x16_t test_vraddhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
   4805   // CHECK-LABEL: test_vraddhn_high_s16
   4806   return vraddhn_high_s16(r, a, b);
   4807   // CHECK: raddhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4808 }
   4809 
   4810 int16x8_t test_vraddhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
   4811   // CHECK-LABEL: test_vraddhn_high_s32
   4812   return vraddhn_high_s32(r, a, b);
   4813   // CHECK: raddhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4814 }
   4815 
   4816 int32x4_t test_vraddhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
   4817   // CHECK-LABEL: test_vraddhn_high_s64
   4818   return vraddhn_high_s64(r, a, b);
   4819   // CHECK: raddhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4820 }
   4821 
   4822 uint8x16_t test_vraddhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
   4823   // CHECK-LABEL: test_vraddhn_high_u16
   4824   return vraddhn_high_u16(r, a, b);
   4825   // CHECK: raddhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4826 }
   4827 
   4828 uint16x8_t test_vraddhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
   4829   // CHECK-LABEL: test_vraddhn_high_u32
   4830   return vraddhn_high_u32(r, a, b);
   4831   // CHECK: raddhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4832 }
   4833 
   4834 uint32x4_t test_vraddhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
   4835   // CHECK-LABEL: test_vraddhn_high_u64
   4836   return vraddhn_high_u64(r, a, b);
   4837   // CHECK: raddhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4838 }
   4839 
   4840 int8x8_t test_vsubhn_s16(int16x8_t a, int16x8_t b) {
   4841   // CHECK-LABEL: test_vsubhn_s16
   4842   return vsubhn_s16(a, b);
   4843   // CHECK: subhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4844 }
   4845 
   4846 int16x4_t test_vsubhn_s32(int32x4_t a, int32x4_t b) {
   4847   // CHECK-LABEL: test_vsubhn_s32
   4848   return vsubhn_s32(a, b);
   4849   // CHECK: subhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4850 }
   4851 
   4852 int32x2_t test_vsubhn_s64(int64x2_t a, int64x2_t b) {
   4853   // CHECK-LABEL: test_vsubhn_s64
   4854   return vsubhn_s64(a, b);
   4855   // CHECK: subhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4856 }
   4857 
   4858 uint8x8_t test_vsubhn_u16(uint16x8_t a, uint16x8_t b) {
   4859   // CHECK-LABEL: test_vsubhn_u16
   4860   return vsubhn_u16(a, b);
   4861   // CHECK: subhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4862 }
   4863 
   4864 uint16x4_t test_vsubhn_u32(uint32x4_t a, uint32x4_t b) {
   4865   // CHECK-LABEL: test_vsubhn_u32
   4866   return vsubhn_u32(a, b);
   4867   // CHECK: subhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4868 }
   4869 
   4870 uint32x2_t test_vsubhn_u64(uint64x2_t a, uint64x2_t b) {
   4871   // CHECK-LABEL: test_vsubhn_u64
   4872   return vsubhn_u64(a, b);
   4873   // CHECK: subhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4874 }
   4875 
   4876 int8x16_t test_vsubhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
   4877   // CHECK-LABEL: test_vsubhn_high_s16
   4878   return vsubhn_high_s16(r, a, b);
   4879   // CHECK: subhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4880 }
   4881 
   4882 int16x8_t test_vsubhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
   4883   // CHECK-LABEL: test_vsubhn_high_s32
   4884   return vsubhn_high_s32(r, a, b);
   4885   // CHECK: subhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4886 }
   4887 
   4888 int32x4_t test_vsubhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
   4889   // CHECK-LABEL: test_vsubhn_high_s64
   4890   return vsubhn_high_s64(r, a, b);
   4891   // CHECK: subhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4892 }
   4893 
   4894 uint8x16_t test_vsubhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
   4895   // CHECK-LABEL: test_vsubhn_high_u16
   4896   return vsubhn_high_u16(r, a, b);
   4897   // CHECK: subhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4898 }
   4899 
   4900 uint16x8_t test_vsubhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
   4901   // CHECK-LABEL: test_vsubhn_high_u32
   4902   return vsubhn_high_u32(r, a, b);
   4903   // CHECK: subhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4904 }
   4905 
   4906 uint32x4_t test_vsubhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
   4907   // CHECK-LABEL: test_vsubhn_high_u64
   4908   return vsubhn_high_u64(r, a, b);
   4909   // CHECK: subhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4910 }
   4911 
   4912 int8x8_t test_vrsubhn_s16(int16x8_t a, int16x8_t b) {
   4913   // CHECK-LABEL: test_vrsubhn_s16
   4914   return vrsubhn_s16(a, b);
   4915   // CHECK: rsubhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4916 }
   4917 
   4918 int16x4_t test_vrsubhn_s32(int32x4_t a, int32x4_t b) {
   4919   // CHECK-LABEL: test_vrsubhn_s32
   4920   return vrsubhn_s32(a, b);
   4921   // CHECK: rsubhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4922 }
   4923 
   4924 int32x2_t test_vrsubhn_s64(int64x2_t a, int64x2_t b) {
   4925   // CHECK-LABEL: test_vrsubhn_s64
   4926   return vrsubhn_s64(a, b);
   4927   // CHECK: rsubhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4928 }
   4929 
   4930 uint8x8_t test_vrsubhn_u16(uint16x8_t a, uint16x8_t b) {
   4931   // CHECK-LABEL: test_vrsubhn_u16
   4932   return vrsubhn_u16(a, b);
   4933   // CHECK: rsubhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4934 }
   4935 
   4936 uint16x4_t test_vrsubhn_u32(uint32x4_t a, uint32x4_t b) {
   4937   // CHECK-LABEL: test_vrsubhn_u32
   4938   return vrsubhn_u32(a, b);
   4939   // CHECK: rsubhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4940 }
   4941 
   4942 uint32x2_t test_vrsubhn_u64(uint64x2_t a, uint64x2_t b) {
   4943   // CHECK-LABEL: test_vrsubhn_u64
   4944   return vrsubhn_u64(a, b);
   4945   // CHECK: rsubhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4946 }
   4947 
   4948 int8x16_t test_vrsubhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
   4949   // CHECK-LABEL: test_vrsubhn_high_s16
   4950   return vrsubhn_high_s16(r, a, b);
   4951   // CHECK: rsubhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4952 }
   4953 
   4954 int16x8_t test_vrsubhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
   4955   // CHECK-LABEL: test_vrsubhn_high_s32
   4956   return vrsubhn_high_s32(r, a, b);
   4957   // CHECK: rsubhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4958 }
   4959 
   4960 int32x4_t test_vrsubhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
   4961   // CHECK-LABEL: test_vrsubhn_high_s64
   4962   return vrsubhn_high_s64(r, a, b);
   4963   // CHECK: rsubhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4964 }
   4965 
   4966 uint8x16_t test_vrsubhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
   4967   // CHECK-LABEL: test_vrsubhn_high_u16
   4968   return vrsubhn_high_u16(r, a, b);
   4969   // CHECK: rsubhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   4970 }
   4971 
   4972 uint16x8_t test_vrsubhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
   4973   // CHECK-LABEL: test_vrsubhn_high_u32
   4974   return vrsubhn_high_u32(r, a, b);
   4975   // CHECK: rsubhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   4976 }
   4977 
   4978 uint32x4_t test_vrsubhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
   4979   // CHECK-LABEL: test_vrsubhn_high_u64
   4980   return vrsubhn_high_u64(r, a, b);
   4981   // CHECK: rsubhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   4982 }
   4983 
   4984 int16x8_t test_vabdl_s8(int8x8_t a, int8x8_t b) {
   4985   // CHECK-LABEL: test_vabdl_s8
   4986   return vabdl_s8(a, b);
   4987   // CHECK: sabdl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   4988 }
   4989 int32x4_t test_vabdl_s16(int16x4_t a, int16x4_t b) {
   4990   // CHECK-LABEL: test_vabdl_s16
   4991   return vabdl_s16(a, b);
   4992   // CHECK: sabdl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   4993 }
   4994 int64x2_t test_vabdl_s32(int32x2_t a, int32x2_t b) {
   4995   // CHECK-LABEL: test_vabdl_s32
   4996   return vabdl_s32(a, b);
   4997   // CHECK: sabdl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   4998 }
   4999 uint16x8_t test_vabdl_u8(uint8x8_t a, uint8x8_t b) {
   5000   // CHECK-LABEL: test_vabdl_u8
   5001   return vabdl_u8(a, b);
   5002   // CHECK: uabdl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   5003 }
   5004 uint32x4_t test_vabdl_u16(uint16x4_t a, uint16x4_t b) {
   5005   // CHECK-LABEL: test_vabdl_u16
   5006   return vabdl_u16(a, b);
   5007   // CHECK: uabdl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5008 }
   5009 uint64x2_t test_vabdl_u32(uint32x2_t a, uint32x2_t b) {
   5010   // CHECK-LABEL: test_vabdl_u32
   5011   return vabdl_u32(a, b);
   5012   // CHECK: uabdl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5013 }
   5014 
   5015 int16x8_t test_vabal_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
   5016   // CHECK-LABEL: test_vabal_s8
   5017   return vabal_s8(a, b, c);
   5018   // CHECK: sabal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   5019 }
   5020 int32x4_t test_vabal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   5021   // CHECK-LABEL: test_vabal_s16
   5022   return vabal_s16(a, b, c);
   5023   // CHECK: sabal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5024 }
   5025 int64x2_t test_vabal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   5026   // CHECK-LABEL: test_vabal_s32
   5027   return vabal_s32(a, b, c);
   5028   // CHECK: sabal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5029 }
   5030 uint16x8_t test_vabal_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
   5031   // CHECK-LABEL: test_vabal_u8
   5032   return vabal_u8(a, b, c);
   5033   // CHECK: uabal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   5034 }
   5035 uint32x4_t test_vabal_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
   5036   // CHECK-LABEL: test_vabal_u16
   5037   return vabal_u16(a, b, c);
   5038   // CHECK: uabal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5039 }
   5040 uint64x2_t test_vabal_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
   5041   // CHECK-LABEL: test_vabal_u32
   5042   return vabal_u32(a, b, c);
   5043   // CHECK: uabal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5044 }
   5045 
   5046 int16x8_t test_vabdl_high_s8(int8x16_t a, int8x16_t b) {
   5047   // CHECK-LABEL: test_vabdl_high_s8
   5048   return vabdl_high_s8(a, b);
   5049   // CHECK: sabdl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5050 }
   5051 int32x4_t test_vabdl_high_s16(int16x8_t a, int16x8_t b) {
   5052   // CHECK-LABEL: test_vabdl_high_s16
   5053   return vabdl_high_s16(a, b);
   5054   // CHECK: sabdl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5055 }
   5056 int64x2_t test_vabdl_high_s32(int32x4_t a, int32x4_t b) {
   5057   // CHECK-LABEL: test_vabdl_high_s32
   5058   return vabdl_high_s32(a, b);
   5059   // CHECK: sabdl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5060 }
   5061 uint16x8_t test_vabdl_high_u8(uint8x16_t a, uint8x16_t b) {
   5062   // CHECK-LABEL: test_vabdl_high_u8
   5063   return vabdl_high_u8(a, b);
   5064   // CHECK: uabdl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5065 }
   5066 uint32x4_t test_vabdl_high_u16(uint16x8_t a, uint16x8_t b) {
   5067   // CHECK-LABEL: test_vabdl_high_u16
   5068   return vabdl_high_u16(a, b);
   5069   // CHECK: uabdl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5070 }
   5071 uint64x2_t test_vabdl_high_u32(uint32x4_t a, uint32x4_t b) {
   5072   // CHECK-LABEL: test_vabdl_high_u32
   5073   return vabdl_high_u32(a, b);
   5074   // CHECK: uabdl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5075 }
   5076 
   5077 int16x8_t test_vabal_high_s8(int16x8_t a, int8x16_t b, int8x16_t c) {
   5078   // CHECK-LABEL: test_vabal_high_s8
   5079   return vabal_high_s8(a, b, c);
   5080   // CHECK: sabal2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5081 }
   5082 int32x4_t test_vabal_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
   5083   // CHECK-LABEL: test_vabal_high_s16
   5084   return vabal_high_s16(a, b, c);
   5085   // CHECK: sabal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5086 }
   5087 int64x2_t test_vabal_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
   5088   // CHECK-LABEL: test_vabal_high_s32
   5089   return vabal_high_s32(a, b, c);
   5090   // CHECK: sabal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5091 }
   5092 uint16x8_t test_vabal_high_u8(uint16x8_t a, uint8x16_t b, uint8x16_t c) {
   5093   // CHECK-LABEL: test_vabal_high_u8
   5094   return vabal_high_u8(a, b, c);
   5095   // CHECK: uabal2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5096 }
   5097 uint32x4_t test_vabal_high_u16(uint32x4_t a, uint16x8_t b, uint16x8_t c) {
   5098   // CHECK-LABEL: test_vabal_high_u16
   5099   return vabal_high_u16(a, b, c);
   5100   // CHECK: uabal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5101 }
   5102 uint64x2_t test_vabal_high_u32(uint64x2_t a, uint32x4_t b, uint32x4_t c) {
   5103   // CHECK-LABEL: test_vabal_high_u32
   5104   return vabal_high_u32(a, b, c);
   5105   // CHECK: uabal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5106 }
   5107 
   5108 int16x8_t test_vmull_s8(int8x8_t a, int8x8_t b) {
   5109   // CHECK-LABEL: test_vmull_s8
   5110   return vmull_s8(a, b);
   5111   // CHECK: smull {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   5112 }
   5113 int32x4_t test_vmull_s16(int16x4_t a, int16x4_t b) {
   5114   // CHECK-LABEL: test_vmull_s16
   5115   return vmull_s16(a, b);
   5116   // CHECK: smull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5117 }
   5118 int64x2_t test_vmull_s32(int32x2_t a, int32x2_t b) {
   5119   // CHECK-LABEL: test_vmull_s32
   5120   return vmull_s32(a, b);
   5121   // CHECK: smull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5122 }
   5123 uint16x8_t test_vmull_u8(uint8x8_t a, uint8x8_t b) {
   5124   // CHECK-LABEL: test_vmull_u8
   5125   return vmull_u8(a, b);
   5126   // CHECK: umull {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   5127 }
   5128 uint32x4_t test_vmull_u16(uint16x4_t a, uint16x4_t b) {
   5129   // CHECK-LABEL: test_vmull_u16
   5130   return vmull_u16(a, b);
   5131   // CHECK: umull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5132 }
   5133 uint64x2_t test_vmull_u32(uint32x2_t a, uint32x2_t b) {
   5134   // CHECK-LABEL: test_vmull_u32
   5135   return vmull_u32(a, b);
   5136   // CHECK: umull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5137 }
   5138 
   5139 int16x8_t test_vmull_high_s8(int8x16_t a, int8x16_t b) {
   5140   // CHECK-LABEL: test_vmull_high_s8
   5141   return vmull_high_s8(a, b);
   5142   // CHECK: smull2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5143 }
   5144 int32x4_t test_vmull_high_s16(int16x8_t a, int16x8_t b) {
   5145   // CHECK-LABEL: test_vmull_high_s16
   5146   return vmull_high_s16(a, b);
   5147   // CHECK: smull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5148 }
   5149 int64x2_t test_vmull_high_s32(int32x4_t a, int32x4_t b) {
   5150   // CHECK-LABEL: test_vmull_high_s32
   5151   return vmull_high_s32(a, b);
   5152   // CHECK: smull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5153 }
   5154 uint16x8_t test_vmull_high_u8(uint8x16_t a, uint8x16_t b) {
   5155   // CHECK-LABEL: test_vmull_high_u8
   5156   return vmull_high_u8(a, b);
   5157   // CHECK: umull2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5158 }
   5159 uint32x4_t test_vmull_high_u16(uint16x8_t a, uint16x8_t b) {
   5160   // CHECK-LABEL: test_vmull_high_u16
   5161   return vmull_high_u16(a, b);
   5162   // CHECK: umull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5163 }
   5164 uint64x2_t test_vmull_high_u32(uint32x4_t a, uint32x4_t b) {
   5165   // CHECK-LABEL: test_vmull_high_u32
   5166   return vmull_high_u32(a, b);
   5167   // CHECK: umull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5168 }
   5169 
   5170 int16x8_t test_vmlal_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
   5171   // CHECK-LABEL: test_vmlal_s8
   5172   return vmlal_s8(a, b, c);
   5173   // CHECK: smlal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   5174 }
   5175 int32x4_t test_vmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   5176   // CHECK-LABEL: test_vmlal_s16
   5177   return vmlal_s16(a, b, c);
   5178   // CHECK: smlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5179 }
   5180 int64x2_t test_vmlal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   5181   // CHECK-LABEL: test_vmlal_s32
   5182   return vmlal_s32(a, b, c);
   5183   // CHECK: smlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5184 }
   5185 uint16x8_t test_vmlal_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
   5186   // CHECK-LABEL: test_vmlal_u8
   5187   return vmlal_u8(a, b, c);
   5188   // CHECK: umlal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   5189 }
   5190 uint32x4_t test_vmlal_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
   5191   // CHECK-LABEL: test_vmlal_u16
   5192   return vmlal_u16(a, b, c);
   5193   // CHECK: umlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5194 }
   5195 uint64x2_t test_vmlal_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
   5196   // CHECK-LABEL: test_vmlal_u32
   5197   return vmlal_u32(a, b, c);
   5198   // CHECK: umlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5199 }
   5200 
   5201 int16x8_t test_vmlal_high_s8(int16x8_t a, int8x16_t b, int8x16_t c) {
   5202   // CHECK-LABEL: test_vmlal_high_s8
   5203   return vmlal_high_s8(a, b, c);
   5204   // CHECK: smlal2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5205 }
   5206 int32x4_t test_vmlal_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
   5207   // CHECK-LABEL: test_vmlal_high_s16
   5208   return vmlal_high_s16(a, b, c);
   5209   // CHECK: smlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5210 }
   5211 int64x2_t test_vmlal_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
   5212   // CHECK-LABEL: test_vmlal_high_s32
   5213   return vmlal_high_s32(a, b, c);
   5214   // CHECK: smlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5215 }
   5216 uint16x8_t test_vmlal_high_u8(uint16x8_t a, uint8x16_t b, uint8x16_t c) {
   5217   // CHECK-LABEL: test_vmlal_high_u8
   5218   return vmlal_high_u8(a, b, c);
   5219   // CHECK: umlal2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5220 }
   5221 uint32x4_t test_vmlal_high_u16(uint32x4_t a, uint16x8_t b, uint16x8_t c) {
   5222   // CHECK-LABEL: test_vmlal_high_u16
   5223   return vmlal_high_u16(a, b, c);
   5224   // CHECK: umlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5225 }
   5226 uint64x2_t test_vmlal_high_u32(uint64x2_t a, uint32x4_t b, uint32x4_t c) {
   5227   // CHECK-LABEL: test_vmlal_high_u32
   5228   return vmlal_high_u32(a, b, c);
   5229   // CHECK: umlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5230 }
   5231 
   5232 int16x8_t test_vmlsl_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
   5233   // CHECK-LABEL: test_vmlsl_s8
   5234   return vmlsl_s8(a, b, c);
   5235   // CHECK: smlsl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   5236 }
   5237 int32x4_t test_vmlsl_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   5238   // CHECK-LABEL: test_vmlsl_s16
   5239   return vmlsl_s16(a, b, c);
   5240   // CHECK: smlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5241 }
   5242 int64x2_t test_vmlsl_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   5243   // CHECK-LABEL: test_vmlsl_s32
   5244   return vmlsl_s32(a, b, c);
   5245   // CHECK: smlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5246 }
   5247 uint16x8_t test_vmlsl_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
   5248   // CHECK-LABEL: test_vmlsl_u8
   5249   return vmlsl_u8(a, b, c);
   5250   // CHECK: umlsl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   5251 }
   5252 uint32x4_t test_vmlsl_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
   5253   // CHECK-LABEL: test_vmlsl_u16
   5254   return vmlsl_u16(a, b, c);
   5255   // CHECK: umlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5256 }
   5257 uint64x2_t test_vmlsl_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
   5258   // CHECK-LABEL: test_vmlsl_u32
   5259   return vmlsl_u32(a, b, c);
   5260   // CHECK: umlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5261 }
   5262 
   5263 int16x8_t test_vmlsl_high_s8(int16x8_t a, int8x16_t b, int8x16_t c) {
   5264   // CHECK-LABEL: test_vmlsl_high_s8
   5265   return vmlsl_high_s8(a, b, c);
   5266   // CHECK: smlsl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5267 }
   5268 int32x4_t test_vmlsl_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
   5269   // CHECK-LABEL: test_vmlsl_high_s16
   5270   return vmlsl_high_s16(a, b, c);
   5271   // CHECK: smlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5272 }
   5273 int64x2_t test_vmlsl_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
   5274   // CHECK-LABEL: test_vmlsl_high_s32
   5275   return vmlsl_high_s32(a, b, c);
   5276   // CHECK: smlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5277 }
   5278 uint16x8_t test_vmlsl_high_u8(uint16x8_t a, uint8x16_t b, uint8x16_t c) {
   5279   // CHECK-LABEL: test_vmlsl_high_u8
   5280   return vmlsl_high_u8(a, b, c);
   5281   // CHECK: umlsl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5282 }
   5283 uint32x4_t test_vmlsl_high_u16(uint32x4_t a, uint16x8_t b, uint16x8_t c) {
   5284   // CHECK-LABEL: test_vmlsl_high_u16
   5285   return vmlsl_high_u16(a, b, c);
   5286   // CHECK: umlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5287 }
   5288 uint64x2_t test_vmlsl_high_u32(uint64x2_t a, uint32x4_t b, uint32x4_t c) {
   5289   // CHECK-LABEL: test_vmlsl_high_u32
   5290   return vmlsl_high_u32(a, b, c);
   5291   // CHECK: umlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5292 }
   5293 
   5294 int32x4_t test_vqdmull_s16(int16x4_t a, int16x4_t b) {
   5295   // CHECK-LABEL: test_vqdmull_s16
   5296   return vqdmull_s16(a, b);
   5297   // CHECK: sqdmull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5298 }
   5299 int64x2_t test_vqdmull_s32(int32x2_t a, int32x2_t b) {
   5300   // CHECK-LABEL: test_vqdmull_s32
   5301   return vqdmull_s32(a, b);
   5302   // CHECK: sqdmull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5303 }
   5304 
   5305 int32x4_t test_vqdmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   5306   // CHECK-LABEL: test_vqdmlal_s16
   5307   return vqdmlal_s16(a, b, c);
   5308   // CHECK: sqdmlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5309 }
   5310 
   5311 int64x2_t test_vqdmlal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   5312   // CHECK-LABEL: test_vqdmlal_s32
   5313   return vqdmlal_s32(a, b, c);
   5314   // CHECK: sqdmlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5315 }
   5316 
   5317 int32x4_t test_vqdmlsl_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
   5318   // CHECK-LABEL: test_vqdmlsl_s16
   5319   return vqdmlsl_s16(a, b, c);
   5320   // CHECK: sqdmlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   5321 }
   5322 
   5323 int64x2_t test_vqdmlsl_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
   5324   // CHECK-LABEL: test_vqdmlsl_s32
   5325   return vqdmlsl_s32(a, b, c);
   5326   // CHECK: sqdmlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5327 }
   5328 
   5329 int32x4_t test_vqdmull_high_s16(int16x8_t a, int16x8_t b) {
   5330   // CHECK-LABEL: test_vqdmull_high_s16
   5331   return vqdmull_high_s16(a, b);
   5332   // CHECK: sqdmull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5333 }
   5334 int64x2_t test_vqdmull_high_s32(int32x4_t a, int32x4_t b) {
   5335   // CHECK-LABEL: test_vqdmull_high_s32
   5336   return vqdmull_high_s32(a, b);
   5337   // CHECK: sqdmull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5338 }
   5339 
   5340 int32x4_t test_vqdmlal_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
   5341   // CHECK-LABEL: test_vqdmlal_high_s16
   5342   return vqdmlal_high_s16(a, b, c);
   5343   // CHECK: sqdmlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5344 }
   5345 
   5346 int64x2_t test_vqdmlal_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
   5347   // CHECK-LABEL: test_vqdmlal_high_s32
   5348   return vqdmlal_high_s32(a, b, c);
   5349   // CHECK: sqdmlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5350 }
   5351 
   5352 int32x4_t test_vqdmlsl_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
   5353   // CHECK-LABEL: test_vqdmlsl_high_s16
   5354   return vqdmlsl_high_s16(a, b, c);
   5355   // CHECK: sqdmlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   5356 }
   5357 
   5358 int64x2_t test_vqdmlsl_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
   5359   // CHECK-LABEL: test_vqdmlsl_high_s32
   5360   return vqdmlsl_high_s32(a, b, c);
   5361   // CHECK: sqdmlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5362 }
   5363 
   5364 poly16x8_t test_vmull_p8(poly8x8_t a, poly8x8_t b) {
   5365   // CHECK-LABEL: test_vmull_p8
   5366   return vmull_p8(a, b);
   5367   // CHECK: pmull {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   5368 }
   5369 
   5370 poly16x8_t test_vmull_high_p8(poly8x16_t a, poly8x16_t b) {
   5371   // CHECK-LABEL: test_vmull_high_p8
   5372   return vmull_high_p8(a, b);
   5373   // CHECK: pmull2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   5374 }
   5375 
   5376 int64_t test_vaddd_s64(int64_t a, int64_t b) {
   5377 // CHECK-LABEL: test_vaddd_s64
   5378   return vaddd_s64(a, b);
   5379 // CHECK: add {{[xd][0-9]+}}, {{[xd][0-9]+}}, {{[xd][0-9]+}}
   5380 }
   5381 
   5382 uint64_t test_vaddd_u64(uint64_t a, uint64_t b) {
   5383 // CHECK-LABEL: test_vaddd_u64
   5384   return vaddd_u64(a, b);
   5385 // CHECK: add {{[xd][0-9]+}}, {{[xd][0-9]+}}, {{[xd][0-9]+}}
   5386 }
   5387 
   5388 int64_t test_vsubd_s64(int64_t a, int64_t b) {
   5389 // CHECK-LABEL: test_vsubd_s64
   5390   return vsubd_s64(a, b);
   5391 // CHECK: sub {{[xd][0-9]+}}, {{[xd][0-9]+}}, {{[xd][0-9]+}}
   5392 }
   5393 
   5394 uint64_t test_vsubd_u64(uint64_t a, uint64_t b) {
   5395 // CHECK-LABEL: test_vsubd_u64
   5396   return vsubd_u64(a, b);
   5397 // CHECK: sub {{[xd][0-9]+}}, {{[xd][0-9]+}}, {{[xd][0-9]+}}
   5398 }
   5399 
   5400 int8_t test_vqaddb_s8(int8_t a, int8_t b) {
   5401 // CHECK-LABEL: test_vqaddb_s8
   5402   return vqaddb_s8(a, b);
   5403 // CHECK: sqadd {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   5404 }
   5405 
   5406 int16_t test_vqaddh_s16(int16_t a, int16_t b) {
   5407 // CHECK-LABEL: test_vqaddh_s16
   5408   return vqaddh_s16(a, b);
   5409 // CHECK: sqadd {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   5410 }
   5411 
   5412 int32_t test_vqadds_s32(int32_t a, int32_t b) {
   5413 // CHECK-LABEL: test_vqadds_s32
   5414   return vqadds_s32(a, b);
   5415 // CHECK: sqadd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5416 }
   5417 
   5418 int64_t test_vqaddd_s64(int64_t a, int64_t b) {
   5419 // CHECK-LABEL: test_vqaddd_s64
   5420   return vqaddd_s64(a, b);
   5421 // CHECK: sqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5422 }
   5423 
   5424 uint8_t test_vqaddb_u8(uint8_t a, uint8_t b) {
   5425 // CHECK-LABEL: test_vqaddb_u8
   5426   return vqaddb_u8(a, b);
   5427 // CHECK: uqadd {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   5428 }
   5429 
   5430 uint16_t test_vqaddh_u16(uint16_t a, uint16_t b) {
   5431 // CHECK-LABEL: test_vqaddh_u16
   5432   return vqaddh_u16(a, b);
   5433 // CHECK: uqadd {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   5434 }
   5435 
   5436 uint32_t test_vqadds_u32(uint32_t a, uint32_t b) {
   5437 // CHECK-LABEL: test_vqadds_u32
   5438   return vqadds_u32(a, b);
   5439 // CHECK: uqadd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5440 }
   5441 
   5442 uint64_t test_vqaddd_u64(uint64_t a, uint64_t b) {
   5443 // CHECK-LABEL: test_vqaddd_u64
   5444   return vqaddd_u64(a, b);
   5445 // CHECK: uqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5446 }
   5447 
   5448 int8_t test_vqsubb_s8(int8_t a, int8_t b) {
   5449 // CHECK-LABEL: test_vqsubb_s8
   5450   return vqsubb_s8(a, b);
   5451 // CHECK: sqsub {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   5452 }
   5453 
   5454 int16_t test_vqsubh_s16(int16_t a, int16_t b) {
   5455 // CHECK-LABEL: test_vqsubh_s16
   5456   return vqsubh_s16(a, b);
   5457 // CHECK: sqsub {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   5458 }
   5459 
   5460 int32_t test_vqsubs_s32(int32_t a, int32_t b) {
   5461   // CHECK-LABEL: test_vqsubs_s32
   5462   return vqsubs_s32(a, b);
   5463 // CHECK: sqsub {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5464 }
   5465 
   5466 int64_t test_vqsubd_s64(int64_t a, int64_t b) {
   5467 // CHECK-LABEL: test_vqsubd_s64
   5468   return vqsubd_s64(a, b);
   5469 // CHECK: sqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5470 }
   5471 
   5472 uint8_t test_vqsubb_u8(uint8_t a, uint8_t b) {
   5473 // CHECK-LABEL: test_vqsubb_u8
   5474   return vqsubb_u8(a, b);
   5475 // CHECK: uqsub {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   5476 }
   5477 
   5478 uint16_t test_vqsubh_u16(uint16_t a, uint16_t b) {
   5479 // CHECK-LABEL: test_vqsubh_u16
   5480   return vqsubh_u16(a, b);
   5481 // CHECK: uqsub {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   5482 }
   5483 
   5484 uint32_t test_vqsubs_u32(uint32_t a, uint32_t b) {
   5485 // CHECK-LABEL: test_vqsubs_u32
   5486   return vqsubs_u32(a, b);
   5487 // CHECK: uqsub {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5488 }
   5489 
   5490 uint64_t test_vqsubd_u64(uint64_t a, uint64_t b) {
   5491 // CHECK-LABEL: test_vqsubd_u64
   5492   return vqsubd_u64(a, b);
   5493 // CHECK: uqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5494 }
   5495 
   5496 int64_t test_vshld_s64(int64_t a, int64_t b) {
   5497 // CHECK-LABEL: test_vshld_s64
   5498   return vshld_s64(a, b);
   5499 // CHECK: sshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5500 }
   5501 
   5502 uint64_t test_vshld_u64(uint64_t a, uint64_t b) {
   5503 // CHECK-LABEL: test_vshld_u64
   5504   return vshld_u64(a, b);
   5505 // CHECK: ushl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5506 }
   5507 
   5508 // CHECK-LABEL: test_vqshlb_s8
   5509 int8_t test_vqshlb_s8(int8_t a, int8_t b) {
   5510   return vqshlb_s8(a, b);
   5511 // CHECK: sqshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   5512 }
   5513 
   5514 // CHECK-LABEL: test_vqshlh_s16
   5515 int16_t test_vqshlh_s16(int16_t a, int16_t b) {
   5516   return vqshlh_s16(a, b);
   5517 // CHECK: sqshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   5518 }
   5519 
   5520 // CHECK-LABEL: test_vqshls_s32
   5521 int32_t test_vqshls_s32(int32_t a, int32_t b) {
   5522   return vqshls_s32(a, b);
   5523 // CHECK: sqshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5524 }
   5525 
   5526 // CHECK-LABEL: test_vqshld_s64
   5527 int64_t test_vqshld_s64(int64_t a, int64_t b) {
   5528   return vqshld_s64(a, b);
   5529 // CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5530 }
   5531 
   5532 // CHECK-LABEL: test_vqshlb_u8
   5533 uint8_t test_vqshlb_u8(uint8_t a, uint8_t b) {
   5534   return vqshlb_u8(a, b);
   5535 // CHECK: uqshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   5536 }
   5537 
   5538 // CHECK-LABEL: test_vqshlh_u16
   5539 uint16_t test_vqshlh_u16(uint16_t a, uint16_t b) {
   5540   return vqshlh_u16(a, b);
   5541 // CHECK: uqshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   5542 }
   5543 
   5544 // CHECK-LABEL: test_vqshls_u32
   5545 uint32_t test_vqshls_u32(uint32_t a, uint32_t b) {
   5546   return vqshls_u32(a, b);
   5547 // CHECK: uqshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5548 }
   5549 
   5550 // CHECK-LABEL: test_vqshld_u64
   5551 uint64_t test_vqshld_u64(uint64_t a, uint64_t b) {
   5552   return vqshld_u64(a, b);
   5553 // CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5554 }
   5555 
   5556 // CHECK-LABEL: test_vrshld_s64
   5557 int64_t test_vrshld_s64(int64_t a, int64_t b) {
   5558   return vrshld_s64(a, b);
   5559 // CHECK: srshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5560 }
   5561 
   5562 
   5563 // CHECK-LABEL: test_vrshld_u64
   5564 uint64_t test_vrshld_u64(uint64_t a, uint64_t b) {
   5565   return vrshld_u64(a, b);
   5566 // CHECK: urshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5567 }
   5568 
   5569 // CHECK-LABEL: test_vqrshlb_s8
   5570 int8_t test_vqrshlb_s8(int8_t a, int8_t b) {
   5571   return vqrshlb_s8(a, b);
   5572 // CHECK: sqrshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   5573 }
   5574 
   5575 // CHECK-LABEL: test_vqrshlh_s16
   5576 int16_t test_vqrshlh_s16(int16_t a, int16_t b) {
   5577   return vqrshlh_s16(a, b);
   5578 // CHECK: sqrshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   5579 }
   5580 
   5581 // CHECK-LABEL: test_vqrshls_s32
   5582 int32_t test_vqrshls_s32(int32_t a, int32_t b) {
   5583   return vqrshls_s32(a, b);
   5584 // CHECK: sqrshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5585 }
   5586 
   5587 // CHECK-LABEL: test_vqrshld_s64
   5588 int64_t test_vqrshld_s64(int64_t a, int64_t b) {
   5589   return vqrshld_s64(a, b);
   5590 // CHECK: sqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5591 }
   5592 
   5593 // CHECK-LABEL: test_vqrshlb_u8
   5594 uint8_t test_vqrshlb_u8(uint8_t a, uint8_t b) {
   5595   return vqrshlb_u8(a, b);
   5596 // CHECK: uqrshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   5597 }
   5598 
   5599 // CHECK-LABEL: test_vqrshlh_u16
   5600 uint16_t test_vqrshlh_u16(uint16_t a, uint16_t b) {
   5601   return vqrshlh_u16(a, b);
   5602 // CHECK: uqrshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   5603 }
   5604 
   5605 // CHECK-LABEL: test_vqrshls_u32
   5606 uint32_t test_vqrshls_u32(uint32_t a, uint32_t b) {
   5607   return vqrshls_u32(a, b);
   5608 // CHECK: uqrshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5609 }
   5610 
   5611 // CHECK-LABEL: test_vqrshld_u64
   5612 uint64_t test_vqrshld_u64(uint64_t a, uint64_t b) {
   5613   return vqrshld_u64(a, b);
   5614 // CHECK: uqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5615 }
   5616 
   5617 // CHECK-LABEL: test_vpaddd_s64
   5618 int64_t test_vpaddd_s64(int64x2_t a) {
   5619   return vpaddd_s64(a);
   5620 // CHECK: addp {{d[0-9]+}}, {{v[0-9]+}}.2d
   5621 }
   5622 
   5623 // CHECK-LABEL: test_vpadds_f32
   5624 float32_t test_vpadds_f32(float32x2_t a) {
   5625   return vpadds_f32(a);
   5626 // CHECK: faddp {{s[0-9]+}}, {{v[0-9]+}}.2s
   5627 }
   5628 
   5629 // CHECK-LABEL: test_vpaddd_f64
   5630 float64_t test_vpaddd_f64(float64x2_t a) {
   5631   return vpaddd_f64(a);
   5632 // CHECK: faddp {{d[0-9]+}}, {{v[0-9]+}}.2d
   5633 }
   5634 
   5635 // CHECK-LABEL: test_vpmaxnms_f32
   5636 float32_t test_vpmaxnms_f32(float32x2_t a) {
   5637   return vpmaxnms_f32(a);
   5638 // CHECK: fmaxnmp {{s[0-9]+}}, {{v[0-9]+}}.2s
   5639 }
   5640 
   5641 // CHECK-LABEL: test_vpmaxnmqd_f64
   5642 float64_t test_vpmaxnmqd_f64(float64x2_t a) {
   5643   return vpmaxnmqd_f64(a);
   5644 // CHECK: fmaxnmp {{d[0-9]+}}, {{v[0-9]+}}.2d
   5645 }
   5646 
   5647 // CHECK-LABEL: test_vpmaxs_f32
   5648 float32_t test_vpmaxs_f32(float32x2_t a) {
   5649   return vpmaxs_f32(a);
   5650 // CHECK: fmaxp {{s[0-9]+}}, {{v[0-9]+}}.2s
   5651 }
   5652 
   5653 // CHECK-LABEL: test_vpmaxqd_f64
   5654 float64_t test_vpmaxqd_f64(float64x2_t a) {
   5655   return vpmaxqd_f64(a);
   5656 // CHECK: fmaxp {{d[0-9]+}}, {{v[0-9]+}}.2d
   5657 }
   5658 
   5659 // CHECK-LABEL: test_vpminnms_f32
   5660 float32_t test_vpminnms_f32(float32x2_t a) {
   5661   return vpminnms_f32(a);
   5662 // CHECK: fminnmp {{s[0-9]+}}, {{v[0-9]+}}.2s
   5663 }
   5664 
   5665 // CHECK-LABEL: test_vpminnmqd_f64
   5666 float64_t test_vpminnmqd_f64(float64x2_t a) {
   5667   return vpminnmqd_f64(a);
   5668 // CHECK: fminnmp {{d[0-9]+}}, {{v[0-9]+}}.2d
   5669 }
   5670 
   5671 // CHECK-LABEL: test_vpmins_f32
   5672 float32_t test_vpmins_f32(float32x2_t a) {
   5673   return vpmins_f32(a);
   5674 // CHECK: fminp {{s[0-9]+}}, {{v[0-9]+}}.2s
   5675 }
   5676 
   5677 // CHECK-LABEL: test_vpminqd_f64
   5678 float64_t test_vpminqd_f64(float64x2_t a) {
   5679   return vpminqd_f64(a);
   5680 // CHECK: fminp {{d[0-9]+}}, {{v[0-9]+}}.2d
   5681 }
   5682 
   5683 int16_t test_vqdmulhh_s16(int16_t a, int16_t b) {
   5684 // CHECK-LABEL: test_vqdmulhh_s16
   5685   return vqdmulhh_s16(a, b);
   5686 // CHECK: sqdmulh {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   5687 }
   5688 
   5689 int32_t test_vqdmulhs_s32(int32_t a, int32_t b) {
   5690 // CHECK-LABEL: test_vqdmulhs_s32
   5691   return vqdmulhs_s32(a, b);
   5692 // CHECK: sqdmulh {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5693 }
   5694 
   5695 int16_t test_vqrdmulhh_s16(int16_t a, int16_t b) {
   5696 // CHECK-LABEL: test_vqrdmulhh_s16
   5697   return vqrdmulhh_s16(a, b);
   5698 // CHECK: sqrdmulh {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   5699 }
   5700 
   5701 int32_t test_vqrdmulhs_s32(int32_t a, int32_t b) {
   5702 // CHECK-LABEL: test_vqrdmulhs_s32
   5703   return vqrdmulhs_s32(a, b);
   5704 // CHECK: sqrdmulh {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5705 }
   5706 
   5707 float32_t test_vmulxs_f32(float32_t a, float32_t b) {
   5708 // CHECK-LABEL: test_vmulxs_f32
   5709   return vmulxs_f32(a, b);
   5710 // CHECK: fmulx {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5711 }
   5712 
   5713 float64_t test_vmulxd_f64(float64_t a, float64_t b) {
   5714 // CHECK-LABEL: test_vmulxd_f64
   5715   return vmulxd_f64(a, b);
   5716 // CHECK: fmulx {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5717 }
   5718 
   5719 float64x1_t test_vmulx_f64(float64x1_t a, float64x1_t b) {
   5720 // CHECK-LABEL: test_vmulx_f64
   5721   return vmulx_f64(a, b);
   5722 // CHECK: fmulx {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5723 }
   5724 
   5725 float32_t test_vrecpss_f32(float32_t a, float32_t b) {
   5726 // CHECK-LABEL: test_vrecpss_f32
   5727   return vrecpss_f32(a, b);
   5728 // CHECK: frecps {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5729 }
   5730 
   5731 float64_t test_vrecpsd_f64(float64_t a, float64_t b) {
   5732 // CHECK-LABEL: test_vrecpsd_f64
   5733   return vrecpsd_f64(a, b);
   5734 // CHECK: frecps {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5735 }
   5736 
   5737 float32_t test_vrsqrtss_f32(float32_t a, float32_t b) {
   5738 // CHECK-LABEL: test_vrsqrtss_f32
   5739   return vrsqrtss_f32(a, b);
   5740 // CHECK: frsqrts {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   5741 }
   5742 
   5743 float64_t test_vrsqrtsd_f64(float64_t a, float64_t b) {
   5744 // CHECK-LABEL: test_vrsqrtsd_f64
   5745   return vrsqrtsd_f64(a, b);
   5746 // CHECK: frsqrts {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   5747 }
   5748 
   5749 float32_t test_vcvts_f32_s32(int32_t a) {
   5750 // CHECK-LABEL: test_vcvts_f32_s32
   5751 // CHECK: scvtf {{s[0-9]+}}, {{[ws][0-9]+}}
   5752   return vcvts_f32_s32(a);
   5753 }
   5754 
   5755 float64_t test_vcvtd_f64_s64(int64_t a) {
   5756 // CHECK-LABEL: test_vcvtd_f64_s64
   5757 // CHECK: scvtf {{d[0-9]+}}, {{[dx][0-9]+}}
   5758   return vcvtd_f64_s64(a);
   5759 }
   5760 
   5761 float32_t test_vcvts_f32_u32(uint32_t a) {
   5762 // CHECK-LABEL: test_vcvts_f32_u32
   5763 // CHECK: ucvtf {{s[0-9]+}}, {{[ws][0-9]+}}
   5764   return vcvts_f32_u32(a);
   5765 }
   5766 
   5767 float64_t test_vcvtd_f64_u64(uint64_t a) {
   5768 // CHECK-LABEL: test_vcvtd_f64_u64
   5769 // CHECK: ucvtf {{d[0-9]+}}, {{[xd][0-9]+}}
   5770   return vcvtd_f64_u64(a);
   5771 }
   5772 
   5773 float32_t test_vrecpes_f32(float32_t a) {
   5774 // CHECK-LABEL: test_vrecpes_f32
   5775 // CHECK: frecpe {{s[0-9]+}}, {{s[0-9]+}}
   5776   return vrecpes_f32(a);
   5777 }
   5778 
   5779 float64_t test_vrecped_f64(float64_t a) {
   5780 // CHECK-LABEL: test_vrecped_f64
   5781 // CHECK: frecpe {{d[0-9]+}}, {{d[0-9]+}}
   5782   return vrecped_f64(a);
   5783 }
   5784 
   5785 float32_t test_vrecpxs_f32(float32_t a) {
   5786 // CHECK-LABEL: test_vrecpxs_f32
   5787 // CHECK: frecpx {{s[0-9]+}}, {{s[0-9]+}}
   5788   return vrecpxs_f32(a);
   5789  }
   5790 
   5791 float64_t test_vrecpxd_f64(float64_t a) {
   5792 // CHECK-LABEL: test_vrecpxd_f64
   5793 // CHECK: frecpx {{d[0-9]+}}, {{d[0-9]+}}
   5794   return vrecpxd_f64(a);
   5795 }
   5796 
   5797 uint32x2_t test_vrsqrte_u32(uint32x2_t a) {
   5798 // CHECK-LABEL: test_vrsqrte_u32
   5799 // CHECK: ursqrte {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   5800   return vrsqrte_u32(a);
   5801 }
   5802 
   5803 uint32x4_t test_vrsqrteq_u32(uint32x4_t a) {
   5804 // CHECK-LABEL: test_vrsqrteq_u32
   5805 // CHECK: ursqrte {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   5806   return vrsqrteq_u32(a);
   5807 }
   5808 
   5809 float32_t test_vrsqrtes_f32(float32_t a) {
   5810 // CHECK: vrsqrtes_f32
   5811 // CHECK: frsqrte {{s[0-9]+}}, {{s[0-9]+}}
   5812   return vrsqrtes_f32(a);
   5813 }
   5814 
   5815 float64_t test_vrsqrted_f64(float64_t a) {
   5816 // CHECK: vrsqrted_f64
   5817 // CHECK: frsqrte {{d[0-9]+}}, {{d[0-9]+}}
   5818   return vrsqrted_f64(a);
   5819 }
   5820 
   5821 uint8x16_t test_vld1q_u8(uint8_t const *a) {
   5822   // CHECK-LABEL: test_vld1q_u8
   5823   return vld1q_u8(a);
   5824   // CHECK: {{ld1 { v[0-9]+.16b }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5825 }
   5826 
   5827 uint16x8_t test_vld1q_u16(uint16_t const *a) {
   5828   // CHECK-LABEL: test_vld1q_u16
   5829   return vld1q_u16(a);
   5830   // CHECK: {{ld1 { v[0-9]+.8h }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5831 }
   5832 
   5833 uint32x4_t test_vld1q_u32(uint32_t const *a) {
   5834   // CHECK-LABEL: test_vld1q_u32
   5835   return vld1q_u32(a);
   5836   // CHECK: {{ld1 { v[0-9]+.4s }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5837 }
   5838 
   5839 uint64x2_t test_vld1q_u64(uint64_t const *a) {
   5840   // CHECK-LABEL: test_vld1q_u64
   5841   return vld1q_u64(a);
   5842   // CHECK: {{ld1 { v[0-9]+.2d }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5843 }
   5844 
   5845 int8x16_t test_vld1q_s8(int8_t const *a) {
   5846   // CHECK-LABEL: test_vld1q_s8
   5847   return vld1q_s8(a);
   5848   // CHECK: {{ld1 { v[0-9]+.16b }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5849 }
   5850 
   5851 int16x8_t test_vld1q_s16(int16_t const *a) {
   5852   // CHECK-LABEL: test_vld1q_s16
   5853   return vld1q_s16(a);
   5854   // CHECK: {{ld1 { v[0-9]+.8h }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5855 }
   5856 
   5857 int32x4_t test_vld1q_s32(int32_t const *a) {
   5858   // CHECK-LABEL: test_vld1q_s32
   5859   return vld1q_s32(a);
   5860   // CHECK: {{ld1 { v[0-9]+.4s }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5861 }
   5862 
   5863 int64x2_t test_vld1q_s64(int64_t const *a) {
   5864   // CHECK-LABEL: test_vld1q_s64
   5865   return vld1q_s64(a);
   5866   // CHECK: {{ld1 { v[0-9]+.2d }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5867 }
   5868 
   5869 float16x8_t test_vld1q_f16(float16_t const *a) {
   5870   // CHECK-LABEL: test_vld1q_f16
   5871   return vld1q_f16(a);
   5872   // CHECK: {{ld1 { v[0-9]+.8h }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5873 }
   5874 
   5875 float32x4_t test_vld1q_f32(float32_t const *a) {
   5876   // CHECK-LABEL: test_vld1q_f32
   5877   return vld1q_f32(a);
   5878   // CHECK: {{ld1 { v[0-9]+.4s }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5879 }
   5880 
   5881 float64x2_t test_vld1q_f64(float64_t const *a) {
   5882   // CHECK-LABEL: test_vld1q_f64
   5883   return vld1q_f64(a);
   5884   // CHECK: {{ld1 { v[0-9]+.2d }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5885 }
   5886 
   5887 poly8x16_t test_vld1q_p8(poly8_t const *a) {
   5888   // CHECK-LABEL: test_vld1q_p8
   5889   return vld1q_p8(a);
   5890   // CHECK: {{ld1 { v[0-9]+.16b }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5891 }
   5892 
   5893 poly16x8_t test_vld1q_p16(poly16_t const *a) {
   5894   // CHECK-LABEL: test_vld1q_p16
   5895   return vld1q_p16(a);
   5896   // CHECK: {{ld1 { v[0-9]+.8h }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
   5897 }
   5898 
   5899 uint8x8_t test_vld1_u8(uint8_t const *a) {
   5900   // CHECK-LABEL: test_vld1_u8
   5901   return vld1_u8(a);
   5902   // CHECK: {{ld1 { v[0-9]+.8b }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5903 }
   5904 
   5905 uint16x4_t test_vld1_u16(uint16_t const *a) {
   5906   // CHECK-LABEL: test_vld1_u16
   5907   return vld1_u16(a);
   5908   // CHECK: {{ld1 { v[0-9]+.4h }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5909 }
   5910 
   5911 uint32x2_t test_vld1_u32(uint32_t const *a) {
   5912   // CHECK-LABEL: test_vld1_u32
   5913   return vld1_u32(a);
   5914   // CHECK: {{ld1 { v[0-9]+.2s }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5915 }
   5916 
   5917 uint64x1_t test_vld1_u64(uint64_t const *a) {
   5918   // CHECK-LABEL: test_vld1_u64
   5919   return vld1_u64(a);
   5920   // CHECK: {{ld1 { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5921 }
   5922 
   5923 int8x8_t test_vld1_s8(int8_t const *a) {
   5924   // CHECK-LABEL: test_vld1_s8
   5925   return vld1_s8(a);
   5926   // CHECK: {{ld1 { v[0-9]+.8b }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5927 }
   5928 
   5929 int16x4_t test_vld1_s16(int16_t const *a) {
   5930   // CHECK-LABEL: test_vld1_s16
   5931   return vld1_s16(a);
   5932   // CHECK: {{ld1 { v[0-9]+.4h }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5933 }
   5934 
   5935 int32x2_t test_vld1_s32(int32_t const *a) {
   5936   // CHECK-LABEL: test_vld1_s32
   5937   return vld1_s32(a);
   5938   // CHECK: {{ld1 { v[0-9]+.2s }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5939 }
   5940 
   5941 int64x1_t test_vld1_s64(int64_t const *a) {
   5942   // CHECK-LABEL: test_vld1_s64
   5943   return vld1_s64(a);
   5944   // CHECK: {{ld1 { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5945 }
   5946 
   5947 float16x4_t test_vld1_f16(float16_t const *a) {
   5948   // CHECK-LABEL: test_vld1_f16
   5949   return vld1_f16(a);
   5950   // CHECK: {{ld1 { v[0-9]+.4h }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5951 }
   5952 
   5953 float32x2_t test_vld1_f32(float32_t const *a) {
   5954   // CHECK-LABEL: test_vld1_f32
   5955   return vld1_f32(a);
   5956   // CHECK: {{ld1 { v[0-9]+.2s }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5957 }
   5958 
   5959 float64x1_t test_vld1_f64(float64_t const *a) {
   5960   // CHECK-LABEL: test_vld1_f64
   5961   return vld1_f64(a);
   5962   // CHECK: {{ld1 { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5963 }
   5964 
   5965 poly8x8_t test_vld1_p8(poly8_t const *a) {
   5966   // CHECK-LABEL: test_vld1_p8
   5967   return vld1_p8(a);
   5968   // CHECK: {{ld1 { v[0-9]+.8b }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5969 }
   5970 
   5971 poly16x4_t test_vld1_p16(poly16_t const *a) {
   5972   // CHECK-LABEL: test_vld1_p16
   5973   return vld1_p16(a);
   5974   // CHECK: {{ld1 { v[0-9]+.4h }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
   5975 }
   5976 
   5977 uint8x16x2_t test_vld2q_u8(uint8_t const *a) {
   5978   // CHECK-LABEL: test_vld2q_u8
   5979   return vld2q_u8(a);
   5980   // CHECK: ld2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   5981 }
   5982 
   5983 uint16x8x2_t test_vld2q_u16(uint16_t const *a) {
   5984   // CHECK-LABEL: test_vld2q_u16
   5985   return vld2q_u16(a);
   5986   // CHECK: ld2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   5987 }
   5988 
   5989 uint32x4x2_t test_vld2q_u32(uint32_t const *a) {
   5990   // CHECK-LABEL: test_vld2q_u32
   5991   return vld2q_u32(a);
   5992   // CHECK: ld2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   5993 }
   5994 
   5995 uint64x2x2_t test_vld2q_u64(uint64_t const *a) {
   5996   // CHECK-LABEL: test_vld2q_u64
   5997   return vld2q_u64(a);
   5998   // CHECK: ld2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   5999 }
   6000 
   6001 int8x16x2_t test_vld2q_s8(int8_t const *a) {
   6002   // CHECK-LABEL: test_vld2q_s8
   6003   return vld2q_s8(a);
   6004   // CHECK: ld2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6005 }
   6006 
   6007 int16x8x2_t test_vld2q_s16(int16_t const *a) {
   6008   // CHECK-LABEL: test_vld2q_s16
   6009   return vld2q_s16(a);
   6010   // CHECK: ld2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6011 }
   6012 
   6013 int32x4x2_t test_vld2q_s32(int32_t const *a) {
   6014   // CHECK-LABEL: test_vld2q_s32
   6015   return vld2q_s32(a);
   6016   // CHECK: ld2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6017 }
   6018 
   6019 int64x2x2_t test_vld2q_s64(int64_t const *a) {
   6020   // CHECK-LABEL: test_vld2q_s64
   6021   return vld2q_s64(a);
   6022   // CHECK: ld2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6023 }
   6024 
   6025 float16x8x2_t test_vld2q_f16(float16_t const *a) {
   6026   // CHECK-LABEL: test_vld2q_f16
   6027   return vld2q_f16(a);
   6028   // CHECK: ld2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6029 }
   6030 
   6031 float32x4x2_t test_vld2q_f32(float32_t const *a) {
   6032   // CHECK-LABEL: test_vld2q_f32
   6033   return vld2q_f32(a);
   6034   // CHECK: ld2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6035 }
   6036 
   6037 float64x2x2_t test_vld2q_f64(float64_t const *a) {
   6038   // CHECK-LABEL: test_vld2q_f64
   6039   return vld2q_f64(a);
   6040   // CHECK: ld2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6041 }
   6042 
   6043 poly8x16x2_t test_vld2q_p8(poly8_t const *a) {
   6044   // CHECK-LABEL: test_vld2q_p8
   6045   return vld2q_p8(a);
   6046   // CHECK: ld2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6047 }
   6048 
   6049 poly16x8x2_t test_vld2q_p16(poly16_t const *a) {
   6050   // CHECK-LABEL: test_vld2q_p16
   6051   return vld2q_p16(a);
   6052   // CHECK: ld2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6053 }
   6054 
   6055 uint8x8x2_t test_vld2_u8(uint8_t const *a) {
   6056   // CHECK-LABEL: test_vld2_u8
   6057   return vld2_u8(a);
   6058   // CHECK: ld2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6059 }
   6060 
   6061 uint16x4x2_t test_vld2_u16(uint16_t const *a) {
   6062   // CHECK-LABEL: test_vld2_u16
   6063   return vld2_u16(a);
   6064   // CHECK: ld2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6065 }
   6066 
   6067 uint32x2x2_t test_vld2_u32(uint32_t const *a) {
   6068   // CHECK-LABEL: test_vld2_u32
   6069   return vld2_u32(a);
   6070   // CHECK: ld2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6071 }
   6072 
   6073 uint64x1x2_t test_vld2_u64(uint64_t const *a) {
   6074   // CHECK-LABEL: test_vld2_u64
   6075   return vld2_u64(a);
   6076   // CHECK: {{ld1|ld2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6077 }
   6078 
   6079 int8x8x2_t test_vld2_s8(int8_t const *a) {
   6080   // CHECK-LABEL: test_vld2_s8
   6081   return vld2_s8(a);
   6082   // CHECK: ld2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6083 }
   6084 
   6085 int16x4x2_t test_vld2_s16(int16_t const *a) {
   6086   // CHECK-LABEL: test_vld2_s16
   6087   return vld2_s16(a);
   6088   // CHECK: ld2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6089 }
   6090 
   6091 int32x2x2_t test_vld2_s32(int32_t const *a) {
   6092   // CHECK-LABEL: test_vld2_s32
   6093   return vld2_s32(a);
   6094   // CHECK: ld2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6095 }
   6096 
   6097 int64x1x2_t test_vld2_s64(int64_t const *a) {
   6098   // CHECK-LABEL: test_vld2_s64
   6099   return vld2_s64(a);
   6100   // CHECK: {{ld1|ld2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6101 }
   6102 
   6103 float16x4x2_t test_vld2_f16(float16_t const *a) {
   6104   // CHECK-LABEL: test_vld2_f16
   6105   return vld2_f16(a);
   6106   // CHECK: ld2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6107 }
   6108 
   6109 float32x2x2_t test_vld2_f32(float32_t const *a) {
   6110   // CHECK-LABEL: test_vld2_f32
   6111   return vld2_f32(a);
   6112   // CHECK: ld2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6113 }
   6114 
   6115 float64x1x2_t test_vld2_f64(float64_t const *a) {
   6116   // CHECK-LABEL: test_vld2_f64
   6117   return vld2_f64(a);
   6118   // CHECK: {{ld1|ld2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6119 }
   6120 
   6121 poly8x8x2_t test_vld2_p8(poly8_t const *a) {
   6122   // CHECK-LABEL: test_vld2_p8
   6123   return vld2_p8(a);
   6124   // CHECK: ld2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6125 }
   6126 
   6127 poly16x4x2_t test_vld2_p16(poly16_t const *a) {
   6128   // CHECK-LABEL: test_vld2_p16
   6129   return vld2_p16(a);
   6130   // CHECK: ld2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6131 }
   6132 
   6133 uint8x16x3_t test_vld3q_u8(uint8_t const *a) {
   6134   // CHECK-LABEL: test_vld3q_u8
   6135   return vld3q_u8(a);
   6136   // CHECK: ld3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6137 }
   6138 
   6139 uint16x8x3_t test_vld3q_u16(uint16_t const *a) {
   6140   // CHECK-LABEL: test_vld3q_u16
   6141   return vld3q_u16(a);
   6142   // CHECK: ld3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6143 }
   6144 
   6145 uint32x4x3_t test_vld3q_u32(uint32_t const *a) {
   6146   // CHECK-LABEL: test_vld3q_u32
   6147   return vld3q_u32(a);
   6148   // CHECK: ld3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6149 }
   6150 
   6151 uint64x2x3_t test_vld3q_u64(uint64_t const *a) {
   6152   // CHECK-LABEL: test_vld3q_u64
   6153   return vld3q_u64(a);
   6154   // CHECK: ld3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6155 }
   6156 
   6157 int8x16x3_t test_vld3q_s8(int8_t const *a) {
   6158   // CHECK-LABEL: test_vld3q_s8
   6159   return vld3q_s8(a);
   6160   // CHECK: ld3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6161 }
   6162 
   6163 int16x8x3_t test_vld3q_s16(int16_t const *a) {
   6164   // CHECK-LABEL: test_vld3q_s16
   6165   return vld3q_s16(a);
   6166   // CHECK: ld3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6167 }
   6168 
   6169 int32x4x3_t test_vld3q_s32(int32_t const *a) {
   6170   // CHECK-LABEL: test_vld3q_s32
   6171   return vld3q_s32(a);
   6172   // CHECK: ld3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6173 }
   6174 
   6175 int64x2x3_t test_vld3q_s64(int64_t const *a) {
   6176   // CHECK-LABEL: test_vld3q_s64
   6177   return vld3q_s64(a);
   6178   // CHECK: ld3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6179 }
   6180 
   6181 float16x8x3_t test_vld3q_f16(float16_t const *a) {
   6182   // CHECK-LABEL: test_vld3q_f16
   6183   return vld3q_f16(a);
   6184   // CHECK: ld3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6185 }
   6186 
   6187 float32x4x3_t test_vld3q_f32(float32_t const *a) {
   6188   // CHECK-LABEL: test_vld3q_f32
   6189   return vld3q_f32(a);
   6190   // CHECK: ld3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6191 }
   6192 
   6193 float64x2x3_t test_vld3q_f64(float64_t const *a) {
   6194   // CHECK-LABEL: test_vld3q_f64
   6195   return vld3q_f64(a);
   6196   // CHECK: ld3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6197 }
   6198 
   6199 poly8x16x3_t test_vld3q_p8(poly8_t const *a) {
   6200   // CHECK-LABEL: test_vld3q_p8
   6201   return vld3q_p8(a);
   6202   // CHECK: ld3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6203 }
   6204 
   6205 poly16x8x3_t test_vld3q_p16(poly16_t const *a) {
   6206   // CHECK-LABEL: test_vld3q_p16
   6207   return vld3q_p16(a);
   6208   // CHECK: ld3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6209 }
   6210 
   6211 uint8x8x3_t test_vld3_u8(uint8_t const *a) {
   6212   // CHECK-LABEL: test_vld3_u8
   6213   return vld3_u8(a);
   6214   // CHECK: ld3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6215 }
   6216 
   6217 uint16x4x3_t test_vld3_u16(uint16_t const *a) {
   6218   // CHECK-LABEL: test_vld3_u16
   6219   return vld3_u16(a);
   6220   // CHECK: ld3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6221 }
   6222 
   6223 uint32x2x3_t test_vld3_u32(uint32_t const *a) {
   6224   // CHECK-LABEL: test_vld3_u32
   6225   return vld3_u32(a);
   6226   // CHECK: ld3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6227 }
   6228 
   6229 uint64x1x3_t test_vld3_u64(uint64_t const *a) {
   6230   // CHECK-LABEL: test_vld3_u64
   6231   return vld3_u64(a);
   6232   // CHECK: {{ld1|ld3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6233 }
   6234 
   6235 int8x8x3_t test_vld3_s8(int8_t const *a) {
   6236   // CHECK-LABEL: test_vld3_s8
   6237   return vld3_s8(a);
   6238   // CHECK: ld3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6239 }
   6240 
   6241 int16x4x3_t test_vld3_s16(int16_t const *a) {
   6242   // CHECK-LABEL: test_vld3_s16
   6243   return vld3_s16(a);
   6244   // CHECK: ld3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6245 }
   6246 
   6247 int32x2x3_t test_vld3_s32(int32_t const *a) {
   6248   // CHECK-LABEL: test_vld3_s32
   6249   return vld3_s32(a);
   6250   // CHECK: ld3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6251 }
   6252 
   6253 int64x1x3_t test_vld3_s64(int64_t const *a) {
   6254   // CHECK-LABEL: test_vld3_s64
   6255   return vld3_s64(a);
   6256   // CHECK: {{ld1|ld3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6257 }
   6258 
   6259 float16x4x3_t test_vld3_f16(float16_t const *a) {
   6260   // CHECK-LABEL: test_vld3_f16
   6261   return vld3_f16(a);
   6262   // CHECK: ld3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6263 }
   6264 
   6265 float32x2x3_t test_vld3_f32(float32_t const *a) {
   6266   // CHECK-LABEL: test_vld3_f32
   6267   return vld3_f32(a);
   6268   // CHECK: ld3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6269 }
   6270 
   6271 float64x1x3_t test_vld3_f64(float64_t const *a) {
   6272   // CHECK-LABEL: test_vld3_f64
   6273   return vld3_f64(a);
   6274   // CHECK: {{ld1|ld3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6275 }
   6276 
   6277 poly8x8x3_t test_vld3_p8(poly8_t const *a) {
   6278   // CHECK-LABEL: test_vld3_p8
   6279   return vld3_p8(a);
   6280   // CHECK: ld3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6281 }
   6282 
   6283 poly16x4x3_t test_vld3_p16(poly16_t const *a) {
   6284   // CHECK-LABEL: test_vld3_p16
   6285   return vld3_p16(a);
   6286   // CHECK: ld3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6287 }
   6288 
   6289 uint8x16x4_t test_vld4q_u8(uint8_t const *a) {
   6290   // CHECK-LABEL: test_vld4q_u8
   6291   return vld4q_u8(a);
   6292   // CHECK: ld4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6293 }
   6294 
   6295 uint16x8x4_t test_vld4q_u16(uint16_t const *a) {
   6296   // CHECK-LABEL: test_vld4q_u16
   6297   return vld4q_u16(a);
   6298   // CHECK: ld4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6299 }
   6300 
   6301 uint32x4x4_t test_vld4q_u32(uint32_t const *a) {
   6302   // CHECK-LABEL: test_vld4q_u32
   6303   return vld4q_u32(a);
   6304   // CHECK: ld4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6305 }
   6306 
   6307 uint64x2x4_t test_vld4q_u64(uint64_t const *a) {
   6308   // CHECK-LABEL: test_vld4q_u64
   6309   return vld4q_u64(a);
   6310   // CHECK: ld4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6311 }
   6312 
   6313 int8x16x4_t test_vld4q_s8(int8_t const *a) {
   6314   // CHECK-LABEL: test_vld4q_s8
   6315   return vld4q_s8(a);
   6316   // CHECK: ld4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6317 }
   6318 
   6319 int16x8x4_t test_vld4q_s16(int16_t const *a) {
   6320   // CHECK-LABEL: test_vld4q_s16
   6321   return vld4q_s16(a);
   6322   // CHECK: ld4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6323 }
   6324 
   6325 int32x4x4_t test_vld4q_s32(int32_t const *a) {
   6326   // CHECK-LABEL: test_vld4q_s32
   6327   return vld4q_s32(a);
   6328   // CHECK: ld4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6329 }
   6330 
   6331 int64x2x4_t test_vld4q_s64(int64_t const *a) {
   6332   // CHECK-LABEL: test_vld4q_s64
   6333   return vld4q_s64(a);
   6334   // CHECK: ld4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6335 }
   6336 
   6337 float16x8x4_t test_vld4q_f16(float16_t const *a) {
   6338   // CHECK-LABEL: test_vld4q_f16
   6339   return vld4q_f16(a);
   6340   // CHECK: ld4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6341 }
   6342 
   6343 float32x4x4_t test_vld4q_f32(float32_t const *a) {
   6344   // CHECK-LABEL: test_vld4q_f32
   6345   return vld4q_f32(a);
   6346   // CHECK: ld4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6347 }
   6348 
   6349 float64x2x4_t test_vld4q_f64(float64_t const *a) {
   6350   // CHECK-LABEL: test_vld4q_f64
   6351   return vld4q_f64(a);
   6352   // CHECK: ld4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6353 }
   6354 
   6355 poly8x16x4_t test_vld4q_p8(poly8_t const *a) {
   6356   // CHECK-LABEL: test_vld4q_p8
   6357   return vld4q_p8(a);
   6358   // CHECK: ld4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6359 }
   6360 
   6361 poly16x8x4_t test_vld4q_p16(poly16_t const *a) {
   6362   // CHECK-LABEL: test_vld4q_p16
   6363   return vld4q_p16(a);
   6364   // CHECK: ld4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6365 }
   6366 
   6367 uint8x8x4_t test_vld4_u8(uint8_t const *a) {
   6368   // CHECK-LABEL: test_vld4_u8
   6369   return vld4_u8(a);
   6370   // CHECK: ld4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6371 }
   6372 
   6373 uint16x4x4_t test_vld4_u16(uint16_t const *a) {
   6374   // CHECK-LABEL: test_vld4_u16
   6375   return vld4_u16(a);
   6376   // CHECK: ld4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6377 }
   6378 
   6379 uint32x2x4_t test_vld4_u32(uint32_t const *a) {
   6380   // CHECK-LABEL: test_vld4_u32
   6381   return vld4_u32(a);
   6382   // CHECK: ld4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6383 }
   6384 
   6385 uint64x1x4_t test_vld4_u64(uint64_t const *a) {
   6386   // CHECK-LABEL: test_vld4_u64
   6387   return vld4_u64(a);
   6388   // CHECK: {{ld1|ld4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6389 }
   6390 
   6391 int8x8x4_t test_vld4_s8(int8_t const *a) {
   6392   // CHECK-LABEL: test_vld4_s8
   6393   return vld4_s8(a);
   6394   // CHECK: ld4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6395 }
   6396 
   6397 int16x4x4_t test_vld4_s16(int16_t const *a) {
   6398   // CHECK-LABEL: test_vld4_s16
   6399   return vld4_s16(a);
   6400   // CHECK: ld4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6401 }
   6402 
   6403 int32x2x4_t test_vld4_s32(int32_t const *a) {
   6404   // CHECK-LABEL: test_vld4_s32
   6405   return vld4_s32(a);
   6406   // CHECK: ld4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6407 }
   6408 
   6409 int64x1x4_t test_vld4_s64(int64_t const *a) {
   6410   // CHECK-LABEL: test_vld4_s64
   6411   return vld4_s64(a);
   6412   // CHECK: {{ld1|ld4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6413 }
   6414 
   6415 float16x4x4_t test_vld4_f16(float16_t const *a) {
   6416   // CHECK-LABEL: test_vld4_f16
   6417   return vld4_f16(a);
   6418   // CHECK: ld4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6419 }
   6420 
   6421 float32x2x4_t test_vld4_f32(float32_t const *a) {
   6422   // CHECK-LABEL: test_vld4_f32
   6423   return vld4_f32(a);
   6424   // CHECK: ld4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6425 }
   6426 
   6427 float64x1x4_t test_vld4_f64(float64_t const *a) {
   6428   // CHECK-LABEL: test_vld4_f64
   6429   return vld4_f64(a);
   6430   // CHECK: {{ld1|ld4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6431 }
   6432 
   6433 poly8x8x4_t test_vld4_p8(poly8_t const *a) {
   6434   // CHECK-LABEL: test_vld4_p8
   6435   return vld4_p8(a);
   6436   // CHECK: ld4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6437 }
   6438 
   6439 poly16x4x4_t test_vld4_p16(poly16_t const *a) {
   6440   // CHECK-LABEL: test_vld4_p16
   6441   return vld4_p16(a);
   6442   // CHECK: ld4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6443 }
   6444 
   6445 void test_vst1q_u8(uint8_t *a, uint8x16_t b) {
   6446   // CHECK-LABEL: test_vst1q_u8
   6447   vst1q_u8(a, b);
   6448   // CHECK: {{st1 { v[0-9]+.16b }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6449 }
   6450 
   6451 void test_vst1q_u16(uint16_t *a, uint16x8_t b) {
   6452   // CHECK-LABEL: test_vst1q_u16
   6453   vst1q_u16(a, b);
   6454   // CHECK: {{st1 { v[0-9]+.8h }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6455 }
   6456 
   6457 void test_vst1q_u32(uint32_t *a, uint32x4_t b) {
   6458   // CHECK-LABEL: test_vst1q_u32
   6459   vst1q_u32(a, b);
   6460   // CHECK: {{st1 { v[0-9]+.4s }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6461 }
   6462 
   6463 void test_vst1q_u64(uint64_t *a, uint64x2_t b) {
   6464   // CHECK-LABEL: test_vst1q_u64
   6465   vst1q_u64(a, b);
   6466   // CHECK: {{st1 { v[0-9]+.2d }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6467 }
   6468 
   6469 void test_vst1q_s8(int8_t *a, int8x16_t b) {
   6470   // CHECK-LABEL: test_vst1q_s8
   6471   vst1q_s8(a, b);
   6472   // CHECK: {{st1 { v[0-9]+.16b }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6473 }
   6474 
   6475 void test_vst1q_s16(int16_t *a, int16x8_t b) {
   6476   // CHECK-LABEL: test_vst1q_s16
   6477   vst1q_s16(a, b);
   6478   // CHECK: {{st1 { v[0-9]+.8h }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6479 }
   6480 
   6481 void test_vst1q_s32(int32_t *a, int32x4_t b) {
   6482   // CHECK-LABEL: test_vst1q_s32
   6483   vst1q_s32(a, b);
   6484   // CHECK: {{st1 { v[0-9]+.4s }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6485 }
   6486 
   6487 void test_vst1q_s64(int64_t *a, int64x2_t b) {
   6488   // CHECK-LABEL: test_vst1q_s64
   6489   vst1q_s64(a, b);
   6490   // CHECK: {{st1 { v[0-9]+.2d }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6491 }
   6492 
   6493 void test_vst1q_f16(float16_t *a, float16x8_t b) {
   6494   // CHECK-LABEL: test_vst1q_f16
   6495   vst1q_f16(a, b);
   6496   // CHECK: {{st1 { v[0-9]+.8h }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6497 }
   6498 
   6499 void test_vst1q_f32(float32_t *a, float32x4_t b) {
   6500   // CHECK-LABEL: test_vst1q_f32
   6501   vst1q_f32(a, b);
   6502   // CHECK: {{st1 { v[0-9]+.4s }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6503 }
   6504 
   6505 void test_vst1q_f64(float64_t *a, float64x2_t b) {
   6506   // CHECK-LABEL: test_vst1q_f64
   6507   vst1q_f64(a, b);
   6508   // CHECK: {{st1 { v[0-9]+.2d }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6509 }
   6510 
   6511 void test_vst1q_p8(poly8_t *a, poly8x16_t b) {
   6512   // CHECK-LABEL: test_vst1q_p8
   6513   vst1q_p8(a, b);
   6514   // CHECK: {{st1 { v[0-9]+.16b }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6515 }
   6516 
   6517 void test_vst1q_p16(poly16_t *a, poly16x8_t b) {
   6518   // CHECK-LABEL: test_vst1q_p16
   6519   vst1q_p16(a, b);
   6520   // CHECK: {{st1 { v[0-9]+.8h }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
   6521 }
   6522 
   6523 void test_vst1_u8(uint8_t *a, uint8x8_t b) {
   6524   // CHECK-LABEL: test_vst1_u8
   6525   vst1_u8(a, b);
   6526   // CHECK: {{st1 { v[0-9]+.8b }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6527 }
   6528 
   6529 void test_vst1_u16(uint16_t *a, uint16x4_t b) {
   6530   // CHECK-LABEL: test_vst1_u16
   6531   vst1_u16(a, b);
   6532   // CHECK: {{st1 { v[0-9]+.4h }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6533 }
   6534 
   6535 void test_vst1_u32(uint32_t *a, uint32x2_t b) {
   6536   // CHECK-LABEL: test_vst1_u32
   6537   vst1_u32(a, b);
   6538   // CHECK: {{st1 { v[0-9]+.2s }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6539 }
   6540 
   6541 void test_vst1_u64(uint64_t *a, uint64x1_t b) {
   6542   // CHECK-LABEL: test_vst1_u64
   6543   vst1_u64(a, b);
   6544   // CHECK: {{st1 { v[0-9]+.1d }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6545 }
   6546 
   6547 void test_vst1_s8(int8_t *a, int8x8_t b) {
   6548   // CHECK-LABEL: test_vst1_s8
   6549   vst1_s8(a, b);
   6550   // CHECK: {{st1 { v[0-9]+.8b }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6551 }
   6552 
   6553 void test_vst1_s16(int16_t *a, int16x4_t b) {
   6554   // CHECK-LABEL: test_vst1_s16
   6555   vst1_s16(a, b);
   6556   // CHECK: {{st1 { v[0-9]+.4h }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6557 }
   6558 
   6559 void test_vst1_s32(int32_t *a, int32x2_t b) {
   6560   // CHECK-LABEL: test_vst1_s32
   6561   vst1_s32(a, b);
   6562   // CHECK: {{st1 { v[0-9]+.2s }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6563 }
   6564 
   6565 void test_vst1_s64(int64_t *a, int64x1_t b) {
   6566   // CHECK-LABEL: test_vst1_s64
   6567   vst1_s64(a, b);
   6568   // CHECK: {{st1 { v[0-9]+.1d }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6569 }
   6570 
   6571 void test_vst1_f16(float16_t *a, float16x4_t b) {
   6572   // CHECK-LABEL: test_vst1_f16
   6573   vst1_f16(a, b);
   6574   // CHECK: {{st1 { v[0-9]+.4h }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6575 }
   6576 
   6577 void test_vst1_f32(float32_t *a, float32x2_t b) {
   6578   // CHECK-LABEL: test_vst1_f32
   6579   vst1_f32(a, b);
   6580   // CHECK: {{st1 { v[0-9]+.2s }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6581 }
   6582 
   6583 void test_vst1_f64(float64_t *a, float64x1_t b) {
   6584   // CHECK-LABEL: test_vst1_f64
   6585   vst1_f64(a, b);
   6586   // CHECK: {{st1 { v[0-9]+.1d }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6587 }
   6588 
   6589 void test_vst1_p8(poly8_t *a, poly8x8_t b) {
   6590   // CHECK-LABEL: test_vst1_p8
   6591   vst1_p8(a, b);
   6592   // CHECK: {{st1 { v[0-9]+.8b }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6593 }
   6594 
   6595 void test_vst1_p16(poly16_t *a, poly16x4_t b) {
   6596   // CHECK-LABEL: test_vst1_p16
   6597   vst1_p16(a, b);
   6598   // CHECK: {{st1 { v[0-9]+.4h }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
   6599 }
   6600 
   6601 void test_vst2q_u8(uint8_t *a, uint8x16x2_t b) {
   6602   // CHECK-LABEL: test_vst2q_u8
   6603   vst2q_u8(a, b);
   6604   // CHECK: st2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6605 }
   6606 
   6607 void test_vst2q_u16(uint16_t *a, uint16x8x2_t b) {
   6608   // CHECK-LABEL: test_vst2q_u16
   6609   vst2q_u16(a, b);
   6610   // CHECK: st2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6611 }
   6612 
   6613 void test_vst2q_u32(uint32_t *a, uint32x4x2_t b) {
   6614   // CHECK-LABEL: test_vst2q_u32
   6615   vst2q_u32(a, b);
   6616   // CHECK: st2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6617 }
   6618 
   6619 void test_vst2q_u64(uint64_t *a, uint64x2x2_t b) {
   6620   // CHECK-LABEL: test_vst2q_u64
   6621   vst2q_u64(a, b);
   6622   // CHECK: st2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6623 }
   6624 
   6625 void test_vst2q_s8(int8_t *a, int8x16x2_t b) {
   6626   // CHECK-LABEL: test_vst2q_s8
   6627   vst2q_s8(a, b);
   6628   // CHECK: st2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6629 }
   6630 
   6631 void test_vst2q_s16(int16_t *a, int16x8x2_t b) {
   6632   // CHECK-LABEL: test_vst2q_s16
   6633   vst2q_s16(a, b);
   6634   // CHECK: st2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6635 }
   6636 
   6637 void test_vst2q_s32(int32_t *a, int32x4x2_t b) {
   6638   // CHECK-LABEL: test_vst2q_s32
   6639   vst2q_s32(a, b);
   6640   // CHECK: st2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6641 }
   6642 
   6643 void test_vst2q_s64(int64_t *a, int64x2x2_t b) {
   6644   // CHECK-LABEL: test_vst2q_s64
   6645   vst2q_s64(a, b);
   6646   // CHECK: st2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6647 }
   6648 
   6649 void test_vst2q_f16(float16_t *a, float16x8x2_t b) {
   6650   // CHECK-LABEL: test_vst2q_f16
   6651   vst2q_f16(a, b);
   6652   // CHECK: st2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6653 }
   6654 
   6655 void test_vst2q_f32(float32_t *a, float32x4x2_t b) {
   6656   // CHECK-LABEL: test_vst2q_f32
   6657   vst2q_f32(a, b);
   6658   // CHECK: st2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6659 }
   6660 
   6661 void test_vst2q_f64(float64_t *a, float64x2x2_t b) {
   6662   // CHECK-LABEL: test_vst2q_f64
   6663   vst2q_f64(a, b);
   6664   // CHECK: st2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6665 }
   6666 
   6667 void test_vst2q_p8(poly8_t *a, poly8x16x2_t b) {
   6668   // CHECK-LABEL: test_vst2q_p8
   6669   vst2q_p8(a, b);
   6670   // CHECK: st2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6671 }
   6672 
   6673 void test_vst2q_p16(poly16_t *a, poly16x8x2_t b) {
   6674   // CHECK-LABEL: test_vst2q_p16
   6675   vst2q_p16(a, b);
   6676   // CHECK: st2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6677 }
   6678 
   6679 void test_vst2_u8(uint8_t *a, uint8x8x2_t b) {
   6680   // CHECK-LABEL: test_vst2_u8
   6681   vst2_u8(a, b);
   6682   // CHECK: st2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6683 }
   6684 
   6685 void test_vst2_u16(uint16_t *a, uint16x4x2_t b) {
   6686   // CHECK-LABEL: test_vst2_u16
   6687   vst2_u16(a, b);
   6688   // CHECK: st2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6689 }
   6690 
   6691 void test_vst2_u32(uint32_t *a, uint32x2x2_t b) {
   6692   // CHECK-LABEL: test_vst2_u32
   6693   vst2_u32(a, b);
   6694   // CHECK: st2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6695 }
   6696 
   6697 void test_vst2_u64(uint64_t *a, uint64x1x2_t b) {
   6698   // CHECK-LABEL: test_vst2_u64
   6699   vst2_u64(a, b);
   6700   // CHECK: {{st1|st2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6701 }
   6702 
   6703 void test_vst2_s8(int8_t *a, int8x8x2_t b) {
   6704   // CHECK-LABEL: test_vst2_s8
   6705   vst2_s8(a, b);
   6706   // CHECK: st2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6707 }
   6708 
   6709 void test_vst2_s16(int16_t *a, int16x4x2_t b) {
   6710   // CHECK-LABEL: test_vst2_s16
   6711   vst2_s16(a, b);
   6712   // CHECK: st2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6713 }
   6714 
   6715 void test_vst2_s32(int32_t *a, int32x2x2_t b) {
   6716   // CHECK-LABEL: test_vst2_s32
   6717   vst2_s32(a, b);
   6718   // CHECK: st2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6719 }
   6720 
   6721 void test_vst2_s64(int64_t *a, int64x1x2_t b) {
   6722   // CHECK-LABEL: test_vst2_s64
   6723   vst2_s64(a, b);
   6724   // CHECK: {{st1|st2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6725 }
   6726 
   6727 void test_vst2_f16(float16_t *a, float16x4x2_t b) {
   6728   // CHECK-LABEL: test_vst2_f16
   6729   vst2_f16(a, b);
   6730   // CHECK: st2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6731 }
   6732 
   6733 void test_vst2_f32(float32_t *a, float32x2x2_t b) {
   6734   // CHECK-LABEL: test_vst2_f32
   6735   vst2_f32(a, b);
   6736   // CHECK: st2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6737 }
   6738 
   6739 void test_vst2_f64(float64_t *a, float64x1x2_t b) {
   6740   // CHECK-LABEL: test_vst2_f64
   6741   vst2_f64(a, b);
   6742   // CHECK: {{st1|st2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6743 }
   6744 
   6745 void test_vst2_p8(poly8_t *a, poly8x8x2_t b) {
   6746   // CHECK-LABEL: test_vst2_p8
   6747   vst2_p8(a, b);
   6748   // CHECK: st2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6749 }
   6750 
   6751 void test_vst2_p16(poly16_t *a, poly16x4x2_t b) {
   6752   // CHECK-LABEL: test_vst2_p16
   6753   vst2_p16(a, b);
   6754   // CHECK: st2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6755 }
   6756 
   6757 void test_vst3q_u8(uint8_t *a, uint8x16x3_t b) {
   6758   // CHECK-LABEL: test_vst3q_u8
   6759   vst3q_u8(a, b);
   6760   // CHECK: st3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6761 }
   6762 
   6763 void test_vst3q_u16(uint16_t *a, uint16x8x3_t b) {
   6764   // CHECK-LABEL: test_vst3q_u16
   6765   vst3q_u16(a, b);
   6766   // CHECK: st3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6767 }
   6768 
   6769 void test_vst3q_u32(uint32_t *a, uint32x4x3_t b) {
   6770   // CHECK-LABEL: test_vst3q_u32
   6771   vst3q_u32(a, b);
   6772   // CHECK: st3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6773 }
   6774 
   6775 void test_vst3q_u64(uint64_t *a, uint64x2x3_t b) {
   6776   // CHECK-LABEL: test_vst3q_u64
   6777   vst3q_u64(a, b);
   6778   // CHECK: st3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6779 }
   6780 
   6781 void test_vst3q_s8(int8_t *a, int8x16x3_t b) {
   6782   // CHECK-LABEL: test_vst3q_s8
   6783   vst3q_s8(a, b);
   6784   // CHECK: st3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6785 }
   6786 
   6787 void test_vst3q_s16(int16_t *a, int16x8x3_t b) {
   6788   // CHECK-LABEL: test_vst3q_s16
   6789   vst3q_s16(a, b);
   6790   // CHECK: st3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6791 }
   6792 
   6793 void test_vst3q_s32(int32_t *a, int32x4x3_t b) {
   6794   // CHECK-LABEL: test_vst3q_s32
   6795   vst3q_s32(a, b);
   6796   // CHECK: st3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6797 }
   6798 
   6799 void test_vst3q_s64(int64_t *a, int64x2x3_t b) {
   6800   // CHECK-LABEL: test_vst3q_s64
   6801   vst3q_s64(a, b);
   6802   // CHECK: st3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6803 }
   6804 
   6805 void test_vst3q_f16(float16_t *a, float16x8x3_t b) {
   6806   // CHECK-LABEL: test_vst3q_f16
   6807   vst3q_f16(a, b);
   6808   // CHECK: st3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6809 }
   6810 
   6811 void test_vst3q_f32(float32_t *a, float32x4x3_t b) {
   6812   // CHECK-LABEL: test_vst3q_f32
   6813   vst3q_f32(a, b);
   6814   // CHECK: st3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6815 }
   6816 
   6817 void test_vst3q_f64(float64_t *a, float64x2x3_t b) {
   6818   // CHECK-LABEL: test_vst3q_f64
   6819   vst3q_f64(a, b);
   6820   // CHECK: st3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6821 }
   6822 
   6823 void test_vst3q_p8(poly8_t *a, poly8x16x3_t b) {
   6824   // CHECK-LABEL: test_vst3q_p8
   6825   vst3q_p8(a, b);
   6826   // CHECK: st3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6827 }
   6828 
   6829 void test_vst3q_p16(poly16_t *a, poly16x8x3_t b) {
   6830   // CHECK-LABEL: test_vst3q_p16
   6831   vst3q_p16(a, b);
   6832   // CHECK: st3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6833 }
   6834 
   6835 void test_vst3_u8(uint8_t *a, uint8x8x3_t b) {
   6836   // CHECK-LABEL: test_vst3_u8
   6837   vst3_u8(a, b);
   6838   // CHECK: st3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6839 }
   6840 
   6841 void test_vst3_u16(uint16_t *a, uint16x4x3_t b) {
   6842   // CHECK-LABEL: test_vst3_u16
   6843   vst3_u16(a, b);
   6844   // CHECK: st3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6845 }
   6846 
   6847 void test_vst3_u32(uint32_t *a, uint32x2x3_t b) {
   6848   // CHECK-LABEL: test_vst3_u32
   6849   vst3_u32(a, b);
   6850   // CHECK: st3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6851 }
   6852 
   6853 void test_vst3_u64(uint64_t *a, uint64x1x3_t b) {
   6854   // CHECK-LABEL: test_vst3_u64
   6855   vst3_u64(a, b);
   6856   // CHECK: {{st1|st3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6857 }
   6858 
   6859 void test_vst3_s8(int8_t *a, int8x8x3_t b) {
   6860   // CHECK-LABEL: test_vst3_s8
   6861   vst3_s8(a, b);
   6862   // CHECK: st3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6863 }
   6864 
   6865 void test_vst3_s16(int16_t *a, int16x4x3_t b) {
   6866   // CHECK-LABEL: test_vst3_s16
   6867   vst3_s16(a, b);
   6868   // CHECK: st3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6869 }
   6870 
   6871 void test_vst3_s32(int32_t *a, int32x2x3_t b) {
   6872   // CHECK-LABEL: test_vst3_s32
   6873   vst3_s32(a, b);
   6874   // CHECK: st3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6875 }
   6876 
   6877 void test_vst3_s64(int64_t *a, int64x1x3_t b) {
   6878   // CHECK-LABEL: test_vst3_s64
   6879   vst3_s64(a, b);
   6880   // CHECK: {{st1|st3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6881 }
   6882 
   6883 void test_vst3_f16(float16_t *a, float16x4x3_t b) {
   6884   // CHECK-LABEL: test_vst3_f16
   6885   vst3_f16(a, b);
   6886   // CHECK: st3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6887 }
   6888 
   6889 void test_vst3_f32(float32_t *a, float32x2x3_t b) {
   6890   // CHECK-LABEL: test_vst3_f32
   6891   vst3_f32(a, b);
   6892   // CHECK: st3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   6893 }
   6894 
   6895 void test_vst3_f64(float64_t *a, float64x1x3_t b) {
   6896   // CHECK-LABEL: test_vst3_f64
   6897   vst3_f64(a, b);
   6898   // CHECK: {{st1|st3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   6899 }
   6900 
   6901 void test_vst3_p8(poly8_t *a, poly8x8x3_t b) {
   6902   // CHECK-LABEL: test_vst3_p8
   6903   vst3_p8(a, b);
   6904   // CHECK: st3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6905 }
   6906 
   6907 void test_vst3_p16(poly16_t *a, poly16x4x3_t b) {
   6908   // CHECK-LABEL: test_vst3_p16
   6909   vst3_p16(a, b);
   6910   // CHECK: st3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   6911 }
   6912 
   6913 void test_vst4q_u8(uint8_t *a, uint8x16x4_t b) {
   6914   // CHECK-LABEL: test_vst4q_u8
   6915   vst4q_u8(a, b);
   6916   // CHECK: st4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6917 }
   6918 
   6919 void test_vst4q_u16(uint16_t *a, uint16x8x4_t b) {
   6920   // CHECK-LABEL: test_vst4q_u16
   6921   vst4q_u16(a, b);
   6922   // CHECK: st4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6923 }
   6924 
   6925 void test_vst4q_u32(uint32_t *a, uint32x4x4_t b) {
   6926   // CHECK-LABEL: test_vst4q_u32
   6927   vst4q_u32(a, b);
   6928   // CHECK: st4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6929 }
   6930 
   6931 void test_vst4q_u64(uint64_t *a, uint64x2x4_t b) {
   6932   // CHECK-LABEL: test_vst4q_u64
   6933   vst4q_u64(a, b);
   6934   // CHECK: st4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6935 }
   6936 
   6937 void test_vst4q_s8(int8_t *a, int8x16x4_t b) {
   6938   // CHECK-LABEL: test_vst4q_s8
   6939   vst4q_s8(a, b);
   6940   // CHECK: st4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6941 }
   6942 
   6943 void test_vst4q_s16(int16_t *a, int16x8x4_t b) {
   6944   // CHECK-LABEL: test_vst4q_s16
   6945   vst4q_s16(a, b);
   6946   // CHECK: st4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6947 }
   6948 
   6949 void test_vst4q_s32(int32_t *a, int32x4x4_t b) {
   6950   // CHECK-LABEL: test_vst4q_s32
   6951   vst4q_s32(a, b);
   6952   // CHECK: st4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6953 }
   6954 
   6955 void test_vst4q_s64(int64_t *a, int64x2x4_t b) {
   6956   // CHECK-LABEL: test_vst4q_s64
   6957   vst4q_s64(a, b);
   6958   // CHECK: st4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6959 }
   6960 
   6961 void test_vst4q_f16(float16_t *a, float16x8x4_t b) {
   6962   // CHECK-LABEL: test_vst4q_f16
   6963   vst4q_f16(a, b);
   6964   // CHECK: st4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6965 }
   6966 
   6967 void test_vst4q_f32(float32_t *a, float32x4x4_t b) {
   6968   // CHECK-LABEL: test_vst4q_f32
   6969   vst4q_f32(a, b);
   6970   // CHECK: st4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   6971 }
   6972 
   6973 void test_vst4q_f64(float64_t *a, float64x2x4_t b) {
   6974   // CHECK-LABEL: test_vst4q_f64
   6975   vst4q_f64(a, b);
   6976   // CHECK: st4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   6977 }
   6978 
   6979 void test_vst4q_p8(poly8_t *a, poly8x16x4_t b) {
   6980   // CHECK-LABEL: test_vst4q_p8
   6981   vst4q_p8(a, b);
   6982   // CHECK: st4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   6983 }
   6984 
   6985 void test_vst4q_p16(poly16_t *a, poly16x8x4_t b) {
   6986   // CHECK-LABEL: test_vst4q_p16
   6987   vst4q_p16(a, b);
   6988   // CHECK: st4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   6989 }
   6990 
   6991 void test_vst4_u8(uint8_t *a, uint8x8x4_t b) {
   6992   // CHECK-LABEL: test_vst4_u8
   6993   vst4_u8(a, b);
   6994   // CHECK: st4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   6995 }
   6996 
   6997 void test_vst4_u16(uint16_t *a, uint16x4x4_t b) {
   6998   // CHECK-LABEL: test_vst4_u16
   6999   vst4_u16(a, b);
   7000   // CHECK: st4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7001 }
   7002 
   7003 void test_vst4_u32(uint32_t *a, uint32x2x4_t b) {
   7004   // CHECK-LABEL: test_vst4_u32
   7005   vst4_u32(a, b);
   7006   // CHECK: st4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7007 }
   7008 
   7009 void test_vst4_u64(uint64_t *a, uint64x1x4_t b) {
   7010   // CHECK-LABEL: test_vst4_u64
   7011   vst4_u64(a, b);
   7012   // CHECK: {{st1|st4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7013 }
   7014 
   7015 void test_vst4_s8(int8_t *a, int8x8x4_t b) {
   7016   // CHECK-LABEL: test_vst4_s8
   7017   vst4_s8(a, b);
   7018 // CHECK: st4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7019 }
   7020 
   7021 void test_vst4_s16(int16_t *a, int16x4x4_t b) {
   7022   // CHECK-LABEL: test_vst4_s16
   7023   vst4_s16(a, b);
   7024   // CHECK: st4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7025 }
   7026 
   7027 void test_vst4_s32(int32_t *a, int32x2x4_t b) {
   7028   // CHECK-LABEL: test_vst4_s32
   7029   vst4_s32(a, b);
   7030   // CHECK: st4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7031 }
   7032 
   7033 void test_vst4_s64(int64_t *a, int64x1x4_t b) {
   7034   // CHECK-LABEL: test_vst4_s64
   7035   vst4_s64(a, b);
   7036   // CHECK: {{st1|st4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7037 }
   7038 
   7039 void test_vst4_f16(float16_t *a, float16x4x4_t b) {
   7040   // CHECK-LABEL: test_vst4_f16
   7041   vst4_f16(a, b);
   7042   // CHECK: st4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7043 }
   7044 
   7045 void test_vst4_f32(float32_t *a, float32x2x4_t b) {
   7046   // CHECK-LABEL: test_vst4_f32
   7047   vst4_f32(a, b);
   7048   // CHECK: st4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7049 }
   7050 
   7051 void test_vst4_f64(float64_t *a, float64x1x4_t b) {
   7052   // CHECK-LABEL: test_vst4_f64
   7053   vst4_f64(a, b);
   7054   // CHECK: {{st1|st4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7055 }
   7056 
   7057 void test_vst4_p8(poly8_t *a, poly8x8x4_t b) {
   7058   // CHECK-LABEL: test_vst4_p8
   7059   vst4_p8(a, b);
   7060   // CHECK: st4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7061 }
   7062 
   7063 void test_vst4_p16(poly16_t *a, poly16x4x4_t b) {
   7064   // CHECK-LABEL: test_vst4_p16
   7065   vst4_p16(a, b);
   7066   // CHECK: st4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7067 }
   7068 
   7069 uint8x16x2_t test_vld1q_u8_x2(uint8_t const *a) {
   7070   // CHECK-LABEL: test_vld1q_u8_x2
   7071   return vld1q_u8_x2(a);
   7072   // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7073 }
   7074 
   7075 uint16x8x2_t test_vld1q_u16_x2(uint16_t const *a) {
   7076   // CHECK-LABEL: test_vld1q_u16_x2
   7077   return vld1q_u16_x2(a);
   7078   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7079 }
   7080 
   7081 uint32x4x2_t test_vld1q_u32_x2(uint32_t const *a) {
   7082   // CHECK-LABEL: test_vld1q_u32_x2
   7083   return vld1q_u32_x2(a);
   7084   // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7085 }
   7086 
   7087 uint64x2x2_t test_vld1q_u64_x2(uint64_t const *a) {
   7088   // CHECK-LABEL: test_vld1q_u64_x2
   7089   return vld1q_u64_x2(a);
   7090   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7091 }
   7092 
   7093 int8x16x2_t test_vld1q_s8_x2(int8_t const *a) {
   7094   // CHECK-LABEL: test_vld1q_s8_x2
   7095   return vld1q_s8_x2(a);
   7096   // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7097 }
   7098 
   7099 int16x8x2_t test_vld1q_s16_x2(int16_t const *a) {
   7100   // CHECK-LABEL: test_vld1q_s16_x2
   7101   return vld1q_s16_x2(a);
   7102   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7103 }
   7104 
   7105 int32x4x2_t test_vld1q_s32_x2(int32_t const *a) {
   7106   // CHECK-LABEL: test_vld1q_s32_x2
   7107   return vld1q_s32_x2(a);
   7108   // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7109 }
   7110 
   7111 int64x2x2_t test_vld1q_s64_x2(int64_t const *a) {
   7112   // CHECK-LABEL: test_vld1q_s64_x2
   7113   return vld1q_s64_x2(a);
   7114   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7115 }
   7116 
   7117 float16x8x2_t test_vld1q_f16_x2(float16_t const *a) {
   7118   // CHECK-LABEL: test_vld1q_f16_x2
   7119   return vld1q_f16_x2(a);
   7120   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7121 }
   7122 
   7123 float32x4x2_t test_vld1q_f32_x2(float32_t const *a) {
   7124   // CHECK-LABEL: test_vld1q_f32_x2
   7125   return vld1q_f32_x2(a);
   7126   // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7127 }
   7128 
   7129 float64x2x2_t test_vld1q_f64_x2(float64_t const *a) {
   7130   // CHECK-LABEL: test_vld1q_f64_x2
   7131   return vld1q_f64_x2(a);
   7132   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7133 }
   7134 
   7135 poly8x16x2_t test_vld1q_p8_x2(poly8_t const *a) {
   7136   // CHECK-LABEL: test_vld1q_p8_x2
   7137   return vld1q_p8_x2(a);
   7138   // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7139 }
   7140 
   7141 poly16x8x2_t test_vld1q_p16_x2(poly16_t const *a) {
   7142   // CHECK-LABEL: test_vld1q_p16_x2
   7143   return vld1q_p16_x2(a);
   7144   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7145 }
   7146 
   7147 poly64x2x2_t test_vld1q_p64_x2(poly64_t const *a) {
   7148   // CHECK-LABEL: test_vld1q_p64_x2
   7149   return vld1q_p64_x2(a);
   7150   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7151 }
   7152 
   7153 uint8x8x2_t test_vld1_u8_x2(uint8_t const *a) {
   7154   // CHECK-LABEL: test_vld1_u8_x2
   7155   return vld1_u8_x2(a);
   7156   // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7157 }
   7158 
   7159 uint16x4x2_t test_vld1_u16_x2(uint16_t const *a) {
   7160   // CHECK-LABEL: test_vld1_u16_x2
   7161   return vld1_u16_x2(a);
   7162   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7163 }
   7164 
   7165 uint32x2x2_t test_vld1_u32_x2(uint32_t const *a) {
   7166   // CHECK-LABEL: test_vld1_u32_x2
   7167   return vld1_u32_x2(a);
   7168   // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7169 }
   7170 
   7171 uint64x1x2_t test_vld1_u64_x2(uint64_t const *a) {
   7172   // CHECK-LABEL: test_vld1_u64_x2
   7173   return vld1_u64_x2(a);
   7174   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7175 }
   7176 
   7177 int8x8x2_t test_vld1_s8_x2(int8_t const *a) {
   7178   // CHECK-LABEL: test_vld1_s8_x2
   7179   return vld1_s8_x2(a);
   7180   // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7181 }
   7182 
   7183 int16x4x2_t test_vld1_s16_x2(int16_t const *a) {
   7184   // CHECK-LABEL: test_vld1_s16_x2
   7185   return vld1_s16_x2(a);
   7186   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7187 }
   7188 
   7189 int32x2x2_t test_vld1_s32_x2(int32_t const *a) {
   7190   // CHECK-LABEL: test_vld1_s32_x2
   7191   return vld1_s32_x2(a);
   7192   // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7193 }
   7194 
   7195 int64x1x2_t test_vld1_s64_x2(int64_t const *a) {
   7196   // CHECK-LABEL: test_vld1_s64_x2
   7197   return vld1_s64_x2(a);
   7198   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7199 }
   7200 
   7201 float16x4x2_t test_vld1_f16_x2(float16_t const *a) {
   7202   // CHECK-LABEL: test_vld1_f16_x2
   7203   return vld1_f16_x2(a);
   7204   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7205 }
   7206 
   7207 float32x2x2_t test_vld1_f32_x2(float32_t const *a) {
   7208   // CHECK-LABEL: test_vld1_f32_x2
   7209   return vld1_f32_x2(a);
   7210   // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7211 }
   7212 
   7213 float64x1x2_t test_vld1_f64_x2(float64_t const *a) {
   7214   // CHECK-LABEL: test_vld1_f64_x2
   7215   return vld1_f64_x2(a);
   7216   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7217 }
   7218 
   7219 poly8x8x2_t test_vld1_p8_x2(poly8_t const *a) {
   7220   // CHECK-LABEL: test_vld1_p8_x2
   7221   return vld1_p8_x2(a);
   7222   // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7223 }
   7224 
   7225 poly16x4x2_t test_vld1_p16_x2(poly16_t const *a) {
   7226   // CHECK-LABEL: test_vld1_p16_x2
   7227   return vld1_p16_x2(a);
   7228   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7229 }
   7230 
   7231 poly64x1x2_t test_vld1_p64_x2(poly64_t const *a) {
   7232   // CHECK-LABEL: test_vld1_p64_x2
   7233   return vld1_p64_x2(a);
   7234   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7235 }
   7236 
   7237 uint8x16x3_t test_vld1q_u8_x3(uint8_t const *a) {
   7238   // CHECK-LABEL: test_vld1q_u8_x3
   7239   return vld1q_u8_x3(a);
   7240   // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7241 }
   7242 
   7243 uint16x8x3_t test_vld1q_u16_x3(uint16_t const *a) {
   7244   // CHECK-LABEL: test_vld1q_u16_x3
   7245   return vld1q_u16_x3(a);
   7246   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7247 }
   7248 
   7249 uint32x4x3_t test_vld1q_u32_x3(uint32_t const *a) {
   7250   // CHECK-LABEL: test_vld1q_u32_x3
   7251   return vld1q_u32_x3(a);
   7252   // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7253 }
   7254 
   7255 uint64x2x3_t test_vld1q_u64_x3(uint64_t const *a) {
   7256   // CHECK-LABEL: test_vld1q_u64_x3
   7257   return vld1q_u64_x3(a);
   7258   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7259 }
   7260 
   7261 int8x16x3_t test_vld1q_s8_x3(int8_t const *a) {
   7262   // CHECK-LABEL: test_vld1q_s8_x3
   7263   return vld1q_s8_x3(a);
   7264   // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7265 }
   7266 
   7267 int16x8x3_t test_vld1q_s16_x3(int16_t const *a) {
   7268   // CHECK-LABEL: test_vld1q_s16_x3
   7269   return vld1q_s16_x3(a);
   7270   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7271 }
   7272 
   7273 int32x4x3_t test_vld1q_s32_x3(int32_t const *a) {
   7274   // CHECK-LABEL: test_vld1q_s32_x3
   7275   return vld1q_s32_x3(a);
   7276   // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7277 }
   7278 
   7279 int64x2x3_t test_vld1q_s64_x3(int64_t const *a) {
   7280   // CHECK-LABEL: test_vld1q_s64_x3
   7281   return vld1q_s64_x3(a);
   7282   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7283 }
   7284 
   7285 float16x8x3_t test_vld1q_f16_x3(float16_t const *a) {
   7286   // CHECK-LABEL: test_vld1q_f16_x3
   7287   return vld1q_f16_x3(a);
   7288   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7289 }
   7290 
   7291 float32x4x3_t test_vld1q_f32_x3(float32_t const *a) {
   7292   // CHECK-LABEL: test_vld1q_f32_x3
   7293   return vld1q_f32_x3(a);
   7294   // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7295 }
   7296 
   7297 float64x2x3_t test_vld1q_f64_x3(float64_t const *a) {
   7298   // CHECK-LABEL: test_vld1q_f64_x3
   7299   return vld1q_f64_x3(a);
   7300   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7301 }
   7302 
   7303 poly8x16x3_t test_vld1q_p8_x3(poly8_t const *a) {
   7304   // CHECK-LABEL: test_vld1q_p8_x3
   7305   return vld1q_p8_x3(a);
   7306   // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7307 }
   7308 
   7309 poly16x8x3_t test_vld1q_p16_x3(poly16_t const *a) {
   7310   // CHECK-LABEL: test_vld1q_p16_x3
   7311   return vld1q_p16_x3(a);
   7312   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7313 }
   7314 
   7315 poly64x2x3_t test_vld1q_p64_x3(poly64_t const *a) {
   7316   // CHECK-LABEL: test_vld1q_p64_x3
   7317   return vld1q_p64_x3(a);
   7318   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7319 }
   7320 
   7321 uint8x8x3_t test_vld1_u8_x3(uint8_t const *a) {
   7322   // CHECK-LABEL: test_vld1_u8_x3
   7323   return vld1_u8_x3(a);
   7324   // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7325 }
   7326 
   7327 uint16x4x3_t test_vld1_u16_x3(uint16_t const *a) {
   7328   // CHECK-LABEL: test_vld1_u16_x3
   7329   return vld1_u16_x3(a);
   7330   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7331 }
   7332 
   7333 uint32x2x3_t test_vld1_u32_x3(uint32_t const *a) {
   7334   // CHECK-LABEL: test_vld1_u32_x3
   7335   return vld1_u32_x3(a);
   7336   // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7337 }
   7338 
   7339 uint64x1x3_t test_vld1_u64_x3(uint64_t const *a) {
   7340   // CHECK-LABEL: test_vld1_u64_x3
   7341   return vld1_u64_x3(a);
   7342   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7343 }
   7344 
   7345 int8x8x3_t test_vld1_s8_x3(int8_t const *a) {
   7346   // CHECK-LABEL: test_vld1_s8_x3
   7347   return vld1_s8_x3(a);
   7348   // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7349 }
   7350 
   7351 int16x4x3_t test_vld1_s16_x3(int16_t const *a) {
   7352   // CHECK-LABEL: test_vld1_s16_x3
   7353   return vld1_s16_x3(a);
   7354   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7355 }
   7356 
   7357 int32x2x3_t test_vld1_s32_x3(int32_t const *a) {
   7358   // CHECK-LABEL: test_vld1_s32_x3
   7359   return vld1_s32_x3(a);
   7360   // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7361 }
   7362 
   7363 int64x1x3_t test_vld1_s64_x3(int64_t const *a) {
   7364   // CHECK-LABEL: test_vld1_s64_x3
   7365   return vld1_s64_x3(a);
   7366   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7367 }
   7368 
   7369 float16x4x3_t test_vld1_f16_x3(float16_t const *a) {
   7370   // CHECK-LABEL: test_vld1_f16_x3
   7371   return vld1_f16_x3(a);
   7372   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7373 }
   7374 
   7375 float32x2x3_t test_vld1_f32_x3(float32_t const *a) {
   7376   // CHECK-LABEL: test_vld1_f32_x3
   7377   return vld1_f32_x3(a);
   7378   // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7379 }
   7380 
   7381 float64x1x3_t test_vld1_f64_x3(float64_t const *a) {
   7382   // CHECK-LABEL: test_vld1_f64_x3
   7383   return vld1_f64_x3(a);
   7384   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7385 }
   7386 
   7387 poly8x8x3_t test_vld1_p8_x3(poly8_t const *a) {
   7388   // CHECK-LABEL: test_vld1_p8_x3
   7389   return vld1_p8_x3(a);
   7390   // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7391 }
   7392 
   7393 poly16x4x3_t test_vld1_p16_x3(poly16_t const *a) {
   7394   // CHECK-LABEL: test_vld1_p16_x3
   7395   return vld1_p16_x3(a);
   7396   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7397 }
   7398 
   7399 poly64x1x3_t test_vld1_p64_x3(poly64_t const *a) {
   7400   // CHECK-LABEL: test_vld1_p64_x3
   7401   return vld1_p64_x3(a);
   7402   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7403 }
   7404 
   7405 uint8x16x4_t test_vld1q_u8_x4(uint8_t const *a) {
   7406   // CHECK-LABEL: test_vld1q_u8_x4
   7407   return vld1q_u8_x4(a);
   7408   // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7409 }
   7410 
   7411 uint16x8x4_t test_vld1q_u16_x4(uint16_t const *a) {
   7412   // CHECK-LABEL: test_vld1q_u16_x4
   7413   return vld1q_u16_x4(a);
   7414   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7415 }
   7416 
   7417 uint32x4x4_t test_vld1q_u32_x4(uint32_t const *a) {
   7418   // CHECK-LABEL: test_vld1q_u32_x4
   7419   return vld1q_u32_x4(a);
   7420   // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7421 }
   7422 
   7423 uint64x2x4_t test_vld1q_u64_x4(uint64_t const *a) {
   7424   // CHECK-LABEL: test_vld1q_u64_x4
   7425   return vld1q_u64_x4(a);
   7426   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7427 }
   7428 
   7429 int8x16x4_t test_vld1q_s8_x4(int8_t const *a) {
   7430   // CHECK-LABEL: test_vld1q_s8_x4
   7431   return vld1q_s8_x4(a);
   7432   // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7433 }
   7434 
   7435 int16x8x4_t test_vld1q_s16_x4(int16_t const *a) {
   7436   // CHECK-LABEL: test_vld1q_s16_x4
   7437   return vld1q_s16_x4(a);
   7438   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7439 }
   7440 
   7441 int32x4x4_t test_vld1q_s32_x4(int32_t const *a) {
   7442   // CHECK-LABEL: test_vld1q_s32_x4
   7443   return vld1q_s32_x4(a);
   7444   // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7445 }
   7446 
   7447 int64x2x4_t test_vld1q_s64_x4(int64_t const *a) {
   7448   // CHECK-LABEL: test_vld1q_s64_x4
   7449   return vld1q_s64_x4(a);
   7450   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7451 }
   7452 
   7453 float16x8x4_t test_vld1q_f16_x4(float16_t const *a) {
   7454   // CHECK-LABEL: test_vld1q_f16_x4
   7455   return vld1q_f16_x4(a);
   7456   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7457 }
   7458 
   7459 float32x4x4_t test_vld1q_f32_x4(float32_t const *a) {
   7460   // CHECK-LABEL: test_vld1q_f32_x4
   7461   return vld1q_f32_x4(a);
   7462   // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7463 }
   7464 
   7465 float64x2x4_t test_vld1q_f64_x4(float64_t const *a) {
   7466   // CHECK-LABEL: test_vld1q_f64_x4
   7467   return vld1q_f64_x4(a);
   7468   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7469 }
   7470 
   7471 poly8x16x4_t test_vld1q_p8_x4(poly8_t const *a) {
   7472   // CHECK-LABEL: test_vld1q_p8_x4
   7473   return vld1q_p8_x4(a);
   7474   // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7475 }
   7476 
   7477 poly16x8x4_t test_vld1q_p16_x4(poly16_t const *a) {
   7478   // CHECK-LABEL: test_vld1q_p16_x4
   7479   return vld1q_p16_x4(a);
   7480   // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7481 }
   7482 
   7483 poly64x2x4_t test_vld1q_p64_x4(poly64_t const *a) {
   7484   // CHECK-LABEL: test_vld1q_p64_x4
   7485   return vld1q_p64_x4(a);
   7486   // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7487 }
   7488 
   7489 uint8x8x4_t test_vld1_u8_x4(uint8_t const *a) {
   7490   // CHECK-LABEL: test_vld1_u8_x4
   7491   return vld1_u8_x4(a);
   7492   // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7493 }
   7494 
   7495 uint16x4x4_t test_vld1_u16_x4(uint16_t const *a) {
   7496   // CHECK-LABEL: test_vld1_u16_x4
   7497   return vld1_u16_x4(a);
   7498   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7499 }
   7500 
   7501 uint32x2x4_t test_vld1_u32_x4(uint32_t const *a) {
   7502   // CHECK-LABEL: test_vld1_u32_x4
   7503   return vld1_u32_x4(a);
   7504   // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7505 }
   7506 
   7507 uint64x1x4_t test_vld1_u64_x4(uint64_t const *a) {
   7508   // CHECK-LABEL: test_vld1_u64_x4
   7509   return vld1_u64_x4(a);
   7510   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7511 }
   7512 
   7513 int8x8x4_t test_vld1_s8_x4(int8_t const *a) {
   7514   // CHECK-LABEL: test_vld1_s8_x4
   7515   return vld1_s8_x4(a);
   7516   // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7517 }
   7518 
   7519 int16x4x4_t test_vld1_s16_x4(int16_t const *a) {
   7520   // CHECK-LABEL: test_vld1_s16_x4
   7521   return vld1_s16_x4(a);
   7522   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7523 }
   7524 
   7525 int32x2x4_t test_vld1_s32_x4(int32_t const *a) {
   7526   // CHECK-LABEL: test_vld1_s32_x4
   7527   return vld1_s32_x4(a);
   7528   // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7529 }
   7530 
   7531 int64x1x4_t test_vld1_s64_x4(int64_t const *a) {
   7532   // CHECK-LABEL: test_vld1_s64_x4
   7533   return vld1_s64_x4(a);
   7534   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7535 }
   7536 
   7537 float16x4x4_t test_vld1_f16_x4(float16_t const *a) {
   7538   // CHECK-LABEL: test_vld1_f16_x4
   7539   return vld1_f16_x4(a);
   7540   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7541 }
   7542 
   7543 float32x2x4_t test_vld1_f32_x4(float32_t const *a) {
   7544   // CHECK-LABEL: test_vld1_f32_x4
   7545   return vld1_f32_x4(a);
   7546   // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7547 }
   7548 
   7549 float64x1x4_t test_vld1_f64_x4(float64_t const *a) {
   7550   // CHECK-LABEL: test_vld1_f64_x4
   7551   return vld1_f64_x4(a);
   7552   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7553 }
   7554 
   7555 poly8x8x4_t test_vld1_p8_x4(poly8_t const *a) {
   7556   // CHECK-LABEL: test_vld1_p8_x4
   7557   return vld1_p8_x4(a);
   7558   // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7559 }
   7560 
   7561 poly16x4x4_t test_vld1_p16_x4(poly16_t const *a) {
   7562   // CHECK-LABEL: test_vld1_p16_x4
   7563   return vld1_p16_x4(a);
   7564   // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7565 }
   7566 
   7567 poly64x1x4_t test_vld1_p64_x4(poly64_t const *a) {
   7568   // CHECK-LABEL: test_vld1_p64_x4
   7569   return vld1_p64_x4(a);
   7570   // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7571 }
   7572 
   7573 void test_vst1q_u8_x2(uint8_t *a, uint8x16x2_t b) {
   7574   // CHECK-LABEL: test_vst1q_u8_x2
   7575   vst1q_u8_x2(a, b);
   7576   // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7577 }
   7578 
   7579 void test_vst1q_u16_x2(uint16_t *a, uint16x8x2_t b) {
   7580   // CHECK-LABEL: test_vst1q_u16_x2
   7581   vst1q_u16_x2(a, b);
   7582   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7583 }
   7584 
   7585 void test_vst1q_u32_x2(uint32_t *a, uint32x4x2_t b) {
   7586   // CHECK-LABEL: test_vst1q_u32_x2
   7587   vst1q_u32_x2(a, b);
   7588   // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7589 }
   7590 
   7591 void test_vst1q_u64_x2(uint64_t *a, uint64x2x2_t b) {
   7592   // CHECK-LABEL: test_vst1q_u64_x2
   7593   vst1q_u64_x2(a, b);
   7594   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7595 }
   7596 
   7597 void test_vst1q_s8_x2(int8_t *a, int8x16x2_t b) {
   7598   // CHECK-LABEL: test_vst1q_s8_x2
   7599   vst1q_s8_x2(a, b);
   7600   // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7601 }
   7602 
   7603 void test_vst1q_s16_x2(int16_t *a, int16x8x2_t b) {
   7604   // CHECK-LABEL: test_vst1q_s16_x2
   7605   vst1q_s16_x2(a, b);
   7606   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7607 }
   7608 
   7609 void test_vst1q_s32_x2(int32_t *a, int32x4x2_t b) {
   7610   // CHECK-LABEL: test_vst1q_s32_x2
   7611   vst1q_s32_x2(a, b);
   7612   // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7613 }
   7614 
   7615 void test_vst1q_s64_x2(int64_t *a, int64x2x2_t b) {
   7616   // CHECK-LABEL: test_vst1q_s64_x2
   7617   vst1q_s64_x2(a, b);
   7618   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7619 }
   7620 
   7621 void test_vst1q_f16_x2(float16_t *a, float16x8x2_t b) {
   7622   // CHECK-LABEL: test_vst1q_f16_x2
   7623   vst1q_f16_x2(a, b);
   7624   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7625 }
   7626 
   7627 void test_vst1q_f32_x2(float32_t *a, float32x4x2_t b) {
   7628   // CHECK-LABEL: test_vst1q_f32_x2
   7629   vst1q_f32_x2(a, b);
   7630   // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7631 }
   7632 
   7633 void test_vst1q_f64_x2(float64_t *a, float64x2x2_t b) {
   7634   // CHECK-LABEL: test_vst1q_f64_x2
   7635   vst1q_f64_x2(a, b);
   7636   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7637 }
   7638 
   7639 void test_vst1q_p8_x2(poly8_t *a, poly8x16x2_t b) {
   7640   // CHECK-LABEL: test_vst1q_p8_x2
   7641   vst1q_p8_x2(a, b);
   7642   // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7643 }
   7644 
   7645 void test_vst1q_p16_x2(poly16_t *a, poly16x8x2_t b) {
   7646   // CHECK-LABEL: test_vst1q_p16_x2
   7647   vst1q_p16_x2(a, b);
   7648   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7649 }
   7650 
   7651 void test_vst1q_p64_x2(poly64_t *a, poly64x2x2_t b) {
   7652   // CHECK-LABEL: test_vst1q_p64_x2
   7653   vst1q_p64_x2(a, b);
   7654   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7655 }
   7656 
   7657 void test_vst1_u8_x2(uint8_t *a, uint8x8x2_t b) {
   7658   // CHECK-LABEL: test_vst1_u8_x2
   7659   vst1_u8_x2(a, b);
   7660   // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7661 }
   7662 
   7663 void test_vst1_u16_x2(uint16_t *a, uint16x4x2_t b) {
   7664   // CHECK-LABEL: test_vst1_u16_x2
   7665   vst1_u16_x2(a, b);
   7666   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7667 }
   7668 
   7669 void test_vst1_u32_x2(uint32_t *a, uint32x2x2_t b) {
   7670   // CHECK-LABEL: test_vst1_u32_x2
   7671   vst1_u32_x2(a, b);
   7672   // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7673 }
   7674 
   7675 void test_vst1_u64_x2(uint64_t *a, uint64x1x2_t b) {
   7676   // CHECK-LABEL: test_vst1_u64_x2
   7677   vst1_u64_x2(a, b);
   7678   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7679 }
   7680 
   7681 void test_vst1_s8_x2(int8_t *a, int8x8x2_t b) {
   7682   // CHECK-LABEL: test_vst1_s8_x2
   7683   vst1_s8_x2(a, b);
   7684   // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7685 }
   7686 
   7687 void test_vst1_s16_x2(int16_t *a, int16x4x2_t b) {
   7688   // CHECK-LABEL: test_vst1_s16_x2
   7689   vst1_s16_x2(a, b);
   7690   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7691 }
   7692 
   7693 void test_vst1_s32_x2(int32_t *a, int32x2x2_t b) {
   7694   // CHECK-LABEL: test_vst1_s32_x2
   7695   vst1_s32_x2(a, b);
   7696   // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7697 }
   7698 
   7699 void test_vst1_s64_x2(int64_t *a, int64x1x2_t b) {
   7700   // CHECK-LABEL: test_vst1_s64_x2
   7701   vst1_s64_x2(a, b);
   7702   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7703 }
   7704 
   7705 void test_vst1_f16_x2(float16_t *a, float16x4x2_t b) {
   7706   // CHECK-LABEL: test_vst1_f16_x2
   7707   vst1_f16_x2(a, b);
   7708   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7709 }
   7710 
   7711 void test_vst1_f32_x2(float32_t *a, float32x2x2_t b) {
   7712   // CHECK-LABEL: test_vst1_f32_x2
   7713   vst1_f32_x2(a, b);
   7714   // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7715 }
   7716 
   7717 void test_vst1_f64_x2(float64_t *a, float64x1x2_t b) {
   7718   // CHECK-LABEL: test_vst1_f64_x2
   7719   vst1_f64_x2(a, b);
   7720   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7721 }
   7722 
   7723 void test_vst1_p8_x2(poly8_t *a, poly8x8x2_t b) {
   7724   // CHECK-LABEL: test_vst1_p8_x2
   7725   vst1_p8_x2(a, b);
   7726   // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7727 }
   7728 
   7729 void test_vst1_p16_x2(poly16_t *a, poly16x4x2_t b) {
   7730   // CHECK-LABEL: test_vst1_p16_x2
   7731   vst1_p16_x2(a, b);
   7732   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7733 }
   7734 
   7735 void test_vst1_p64_x2(poly64_t *a, poly64x1x2_t b) {
   7736   // CHECK-LABEL: test_vst1_p64_x2
   7737   vst1_p64_x2(a, b);
   7738   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7739 }
   7740 
   7741 void test_vst1q_u8_x3(uint8_t *a, uint8x16x3_t b) {
   7742   // CHECK-LABEL: test_vst1q_u8_x3
   7743   vst1q_u8_x3(a, b);
   7744   // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7745 }
   7746 
   7747 void test_vst1q_u16_x3(uint16_t *a, uint16x8x3_t b) {
   7748   // CHECK-LABEL: test_vst1q_u16_x3
   7749   vst1q_u16_x3(a, b);
   7750   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7751 }
   7752 
   7753 void test_vst1q_u32_x3(uint32_t *a, uint32x4x3_t b) {
   7754   // CHECK-LABEL: test_vst1q_u32_x3
   7755   vst1q_u32_x3(a, b);
   7756   // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7757 }
   7758 
   7759 void test_vst1q_u64_x3(uint64_t *a, uint64x2x3_t b) {
   7760   // CHECK-LABEL: test_vst1q_u64_x3
   7761   vst1q_u64_x3(a, b);
   7762   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7763 }
   7764 
   7765 void test_vst1q_s8_x3(int8_t *a, int8x16x3_t b) {
   7766   // CHECK-LABEL: test_vst1q_s8_x3
   7767   vst1q_s8_x3(a, b);
   7768   // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7769 }
   7770 
   7771 void test_vst1q_s16_x3(int16_t *a, int16x8x3_t b) {
   7772   // CHECK-LABEL: test_vst1q_s16_x3
   7773   vst1q_s16_x3(a, b);
   7774   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7775 }
   7776 
   7777 void test_vst1q_s32_x3(int32_t *a, int32x4x3_t b) {
   7778   // CHECK-LABEL: test_vst1q_s32_x3
   7779   vst1q_s32_x3(a, b);
   7780   // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7781 }
   7782 
   7783 void test_vst1q_s64_x3(int64_t *a, int64x2x3_t b) {
   7784   // CHECK-LABEL: test_vst1q_s64_x3
   7785   vst1q_s64_x3(a, b);
   7786   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7787 }
   7788 
   7789 void test_vst1q_f16_x3(float16_t *a, float16x8x3_t b) {
   7790   // CHECK-LABEL: test_vst1q_f16_x3
   7791   vst1q_f16_x3(a, b);
   7792   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7793 }
   7794 
   7795 void test_vst1q_f32_x3(float32_t *a, float32x4x3_t b) {
   7796   // CHECK-LABEL: test_vst1q_f32_x3
   7797   vst1q_f32_x3(a, b);
   7798   // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7799 }
   7800 
   7801 void test_vst1q_f64_x3(float64_t *a, float64x2x3_t b) {
   7802   // CHECK-LABEL: test_vst1q_f64_x3
   7803   vst1q_f64_x3(a, b);
   7804   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7805 }
   7806 
   7807 void test_vst1q_p8_x3(poly8_t *a, poly8x16x3_t b) {
   7808   // CHECK-LABEL: test_vst1q_p8_x3
   7809   vst1q_p8_x3(a, b);
   7810   // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7811 }
   7812 
   7813 void test_vst1q_p16_x3(poly16_t *a, poly16x8x3_t b) {
   7814   // CHECK-LABEL: test_vst1q_p16_x3
   7815   vst1q_p16_x3(a, b);
   7816   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7817 }
   7818 
   7819 void test_vst1q_p64_x3(poly64_t *a, poly64x2x3_t b) {
   7820   // CHECK-LABEL: test_vst1q_p64_x3
   7821   vst1q_p64_x3(a, b);
   7822   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7823 }
   7824 
   7825 void test_vst1_u8_x3(uint8_t *a, uint8x8x3_t b) {
   7826   // CHECK-LABEL: test_vst1_u8_x3
   7827   vst1_u8_x3(a, b);
   7828   // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7829 }
   7830 
   7831 void test_vst1_u16_x3(uint16_t *a, uint16x4x3_t b) {
   7832   // CHECK-LABEL: test_vst1_u16_x3
   7833   vst1_u16_x3(a, b);
   7834   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7835 }
   7836 
   7837 void test_vst1_u32_x3(uint32_t *a, uint32x2x3_t b) {
   7838   // CHECK-LABEL: test_vst1_u32_x3
   7839   vst1_u32_x3(a, b);
   7840   // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7841 }
   7842 
   7843 void test_vst1_u64_x3(uint64_t *a, uint64x1x3_t b) {
   7844   // CHECK-LABEL: test_vst1_u64_x3
   7845   vst1_u64_x3(a, b);
   7846   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7847 }
   7848 
   7849 void test_vst1_s8_x3(int8_t *a, int8x8x3_t b) {
   7850   // CHECK-LABEL: test_vst1_s8_x3
   7851   vst1_s8_x3(a, b);
   7852   // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7853 }
   7854 
   7855 void test_vst1_s16_x3(int16_t *a, int16x4x3_t b) {
   7856   // CHECK-LABEL: test_vst1_s16_x3
   7857   vst1_s16_x3(a, b);
   7858   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7859 }
   7860 
   7861 void test_vst1_s32_x3(int32_t *a, int32x2x3_t b) {
   7862   // CHECK-LABEL: test_vst1_s32_x3
   7863   vst1_s32_x3(a, b);
   7864   // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7865 }
   7866 
   7867 void test_vst1_s64_x3(int64_t *a, int64x1x3_t b) {
   7868   // CHECK-LABEL: test_vst1_s64_x3
   7869   vst1_s64_x3(a, b);
   7870   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7871 }
   7872 
   7873 void test_vst1_f16_x3(float16_t *a, float16x4x3_t b) {
   7874   // CHECK-LABEL: test_vst1_f16_x3
   7875   vst1_f16_x3(a, b);
   7876   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7877 }
   7878 
   7879 void test_vst1_f32_x3(float32_t *a, float32x2x3_t b) {
   7880   // CHECK-LABEL: test_vst1_f32_x3
   7881   vst1_f32_x3(a, b);
   7882   // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   7883 }
   7884 
   7885 void test_vst1_f64_x3(float64_t *a, float64x1x3_t b) {
   7886   // CHECK-LABEL: test_vst1_f64_x3
   7887   vst1_f64_x3(a, b);
   7888   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7889 }
   7890 
   7891 void test_vst1_p8_x3(poly8_t *a, poly8x8x3_t b) {
   7892   // CHECK-LABEL: test_vst1_p8_x3
   7893   vst1_p8_x3(a, b);
   7894   // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7895 }
   7896 
   7897 void test_vst1_p16_x3(poly16_t *a, poly16x4x3_t b) {
   7898   // CHECK-LABEL: test_vst1_p16_x3
   7899   vst1_p16_x3(a, b);
   7900   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   7901 }
   7902 
   7903 void test_vst1_p64_x3(poly64_t *a, poly64x1x3_t b) {
   7904   // CHECK-LABEL: test_vst1_p64_x3
   7905   vst1_p64_x3(a, b);
   7906   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   7907 }
   7908 
   7909 void test_vst1q_u8_x4(uint8_t *a, uint8x16x4_t b) {
   7910   // CHECK-LABEL: test_vst1q_u8_x4
   7911   vst1q_u8_x4(a, b);
   7912   // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7913 }
   7914 
   7915 void test_vst1q_u16_x4(uint16_t *a, uint16x8x4_t b) {
   7916   // CHECK-LABEL: test_vst1q_u16_x4
   7917   vst1q_u16_x4(a, b);
   7918   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7919 }
   7920 
   7921 void test_vst1q_u32_x4(uint32_t *a, uint32x4x4_t b) {
   7922   // CHECK-LABEL: test_vst1q_u32_x4
   7923   vst1q_u32_x4(a, b);
   7924   // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7925 }
   7926 
   7927 void test_vst1q_u64_x4(uint64_t *a, uint64x2x4_t b) {
   7928   // CHECK-LABEL: test_vst1q_u64_x4
   7929   vst1q_u64_x4(a, b);
   7930   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7931 }
   7932 
   7933 void test_vst1q_s8_x4(int8_t *a, int8x16x4_t b) {
   7934   // CHECK-LABEL: test_vst1q_s8_x4
   7935   vst1q_s8_x4(a, b);
   7936   // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7937 }
   7938 
   7939 void test_vst1q_s16_x4(int16_t *a, int16x8x4_t b) {
   7940   // CHECK-LABEL: test_vst1q_s16_x4
   7941   vst1q_s16_x4(a, b);
   7942   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7943 }
   7944 
   7945 void test_vst1q_s32_x4(int32_t *a, int32x4x4_t b) {
   7946   // CHECK-LABEL: test_vst1q_s32_x4
   7947   vst1q_s32_x4(a, b);
   7948   // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7949 }
   7950 
   7951 void test_vst1q_s64_x4(int64_t *a, int64x2x4_t b) {
   7952   // CHECK-LABEL: test_vst1q_s64_x4
   7953   vst1q_s64_x4(a, b);
   7954   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7955 }
   7956 
   7957 void test_vst1q_f16_x4(float16_t *a, float16x8x4_t b) {
   7958   // CHECK-LABEL: test_vst1q_f16_x4
   7959   vst1q_f16_x4(a, b);
   7960   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7961 }
   7962 
   7963 void test_vst1q_f32_x4(float32_t *a, float32x4x4_t b) {
   7964   // CHECK-LABEL: test_vst1q_f32_x4
   7965   vst1q_f32_x4(a, b);
   7966   // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
   7967 }
   7968 
   7969 void test_vst1q_f64_x4(float64_t *a, float64x2x4_t b) {
   7970   // CHECK-LABEL: test_vst1q_f64_x4
   7971   vst1q_f64_x4(a, b);
   7972   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7973 }
   7974 
   7975 void test_vst1q_p8_x4(poly8_t *a, poly8x16x4_t b) {
   7976   // CHECK-LABEL: test_vst1q_p8_x4
   7977   vst1q_p8_x4(a, b);
   7978   // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
   7979 }
   7980 
   7981 void test_vst1q_p16_x4(poly16_t *a, poly16x8x4_t b) {
   7982   // CHECK-LABEL: test_vst1q_p16_x4
   7983   vst1q_p16_x4(a, b);
   7984   // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
   7985 }
   7986 
   7987 void test_vst1q_p64_x4(poly64_t *a, poly64x2x4_t b) {
   7988   // CHECK-LABEL: test_vst1q_p64_x4
   7989   vst1q_p64_x4(a, b);
   7990   // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
   7991 }
   7992 
   7993 void test_vst1_u8_x4(uint8_t *a, uint8x8x4_t b) {
   7994   // CHECK-LABEL: test_vst1_u8_x4
   7995   vst1_u8_x4(a, b);
   7996   // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   7997 }
   7998 
   7999 void test_vst1_u16_x4(uint16_t *a, uint16x4x4_t b) {
   8000   // CHECK-LABEL: test_vst1_u16_x4
   8001   vst1_u16_x4(a, b);
   8002   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   8003 }
   8004 
   8005 void test_vst1_u32_x4(uint32_t *a, uint32x2x4_t b) {
   8006   // CHECK-LABEL: test_vst1_u32_x4
   8007   vst1_u32_x4(a, b);
   8008   // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   8009 }
   8010 
   8011 void test_vst1_u64_x4(uint64_t *a, uint64x1x4_t b) {
   8012   // CHECK-LABEL: test_vst1_u64_x4
   8013   vst1_u64_x4(a, b);
   8014   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   8015 }
   8016 
   8017 void test_vst1_s8_x4(int8_t *a, int8x8x4_t b) {
   8018   // CHECK-LABEL: test_vst1_s8_x4
   8019   vst1_s8_x4(a, b);
   8020   // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   8021 }
   8022 
   8023 void test_vst1_s16_x4(int16_t *a, int16x4x4_t b) {
   8024   // CHECK-LABEL: test_vst1_s16_x4
   8025   vst1_s16_x4(a, b);
   8026   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   8027 }
   8028 
   8029 void test_vst1_s32_x4(int32_t *a, int32x2x4_t b) {
   8030   // CHECK-LABEL: test_vst1_s32_x4
   8031   vst1_s32_x4(a, b);
   8032   // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   8033 }
   8034 
   8035 void test_vst1_s64_x4(int64_t *a, int64x1x4_t b) {
   8036   // CHECK-LABEL: test_vst1_s64_x4
   8037   vst1_s64_x4(a, b);
   8038   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   8039 }
   8040 
   8041 void test_vst1_f16_x4(float16_t *a, float16x4x4_t b) {
   8042   // CHECK-LABEL: test_vst1_f16_x4
   8043   vst1_f16_x4(a, b);
   8044   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   8045 }
   8046 
   8047 void test_vst1_f32_x4(float32_t *a, float32x2x4_t b) {
   8048   // CHECK-LABEL: test_vst1_f32_x4
   8049   vst1_f32_x4(a, b);
   8050   // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
   8051 }
   8052 
   8053 void test_vst1_f64_x4(float64_t *a, float64x1x4_t b) {
   8054   // CHECK-LABEL: test_vst1_f64_x4
   8055   vst1_f64_x4(a, b);
   8056   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   8057 }
   8058 
   8059 void test_vst1_p8_x4(poly8_t *a, poly8x8x4_t b) {
   8060   // CHECK-LABEL: test_vst1_p8_x4
   8061   vst1_p8_x4(a, b);
   8062   // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
   8063 }
   8064 
   8065 void test_vst1_p16_x4(poly16_t *a, poly16x4x4_t b) {
   8066   // CHECK-LABEL: test_vst1_p16_x4
   8067   vst1_p16_x4(a, b);
   8068   // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
   8069 }
   8070 
   8071 void test_vst1_p64_x4(poly64_t *a, poly64x1x4_t b) {
   8072   // CHECK-LABEL: test_vst1_p64_x4
   8073   vst1_p64_x4(a, b);
   8074   // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
   8075 }
   8076 
   8077 int64_t test_vceqd_s64(int64_t a, int64_t b) {
   8078 // CHECK-LABEL: test_vceqd_s64
   8079 // CHECK: {{cmeq d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
   8080   return (int64_t)vceqd_s64(a, b);
   8081 }
   8082 
   8083 uint64_t test_vceqd_u64(uint64_t a, uint64_t b) {
   8084 // CHECK-LABEL: test_vceqd_u64
   8085 // CHECK: {{cmeq d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
   8086   return (int64_t)vceqd_u64(a, b);
   8087 }
   8088 
   8089 int64_t test_vceqzd_s64(int64_t a) {
   8090 // CHECK-LABEL: test_vceqzd_s64
   8091 // CHECK: {{cmeq d[0-9]+, d[0-9]+, #0x0|cmp x0, #0}}
   8092   return (int64_t)vceqzd_s64(a);
   8093 }
   8094 
   8095 int64_t test_vceqzd_u64(int64_t a) {
   8096 // CHECK-LABEL: test_vceqzd_u64
   8097 // CHECK: {{cmeq d[0-9]+, d[0-9]+, #0x0|cmp x0, #0}}
   8098   return (int64_t)vceqzd_u64(a);
   8099 }
   8100 
   8101 int64_t test_vcged_s64(int64_t a, int64_t b) {
   8102 // CHECK-LABEL: test_vcged_s64
   8103 // CHECK: {{cmge d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
   8104   return (int64_t)vcged_s64(a, b);
   8105 }
   8106 
   8107 uint64_t test_vcged_u64(uint64_t a, uint64_t b) {
   8108 // CHECK-LABEL: test_vcged_u64
   8109 // CHECK: {{cmhs d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
   8110     return (uint64_t)vcged_u64(a, b);
   8111 }
   8112 
   8113 int64_t test_vcgezd_s64(int64_t a) {
   8114 // CHECK-LABEL: test_vcgezd_s64
   8115 // CHECK: {{cmge d[0-9]+, d[0-9]+, #0x0|eor x0, x[0-9]+, x0, asr #63}}
   8116   return (int64_t)vcgezd_s64(a);
   8117 }
   8118 
   8119 int64_t test_vcgtd_s64(int64_t a, int64_t b) {
   8120 // CHECK-LABEL: test_vcgtd_s64
   8121 // CHECK: {{cmgt d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
   8122   return (int64_t)vcgtd_s64(a, b);
   8123 }
   8124 
   8125 uint64_t test_vcgtd_u64(uint64_t a, uint64_t b) {
   8126 // CHECK-LABEL: test_vcgtd_u64
   8127 // CHECK: {{cmhi d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
   8128   return (uint64_t)vcgtd_u64(a, b);
   8129 }
   8130 
   8131 int64_t test_vcgtzd_s64(int64_t a) {
   8132 // CHECK-LABEL: test_vcgtzd_s64
   8133 // CHECK: {{cmgt d[0-9]+, d[0-9]+, #0x0|cmp x0, #0}}
   8134   return (int64_t)vcgtzd_s64(a);
   8135 }
   8136 
   8137 int64_t test_vcled_s64(int64_t a, int64_t b) {
   8138 // CHECK-LABEL: test_vcled_s64
   8139 // CHECK: {{cmge d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
   8140   return (int64_t)vcled_s64(a, b);
   8141 }
   8142 
   8143 uint64_t test_vcled_u64(uint64_t a, uint64_t b) {
   8144 // CHECK-LABEL: test_vcled_u64
   8145 // CHECK: {{cmhs d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
   8146   return (uint64_t)vcled_u64(a, b);
   8147 }
   8148 
   8149 int64_t test_vclezd_s64(int64_t a) {
   8150 // CHECK-LABEL: test_vclezd_s64
   8151 // CHECK: {{cmle d[0-9]+, d[0-9]+, #0x0|cmp x0, #1}}
   8152   return (int64_t)vclezd_s64(a);
   8153 }
   8154 
   8155 int64_t test_vcltd_s64(int64_t a, int64_t b) {
   8156 // CHECK-LABEL: test_vcltd_s64
   8157 // CHECK: {{cmgt d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
   8158   return (int64_t)vcltd_s64(a, b);
   8159 }
   8160 
   8161 uint64_t test_vcltd_u64(uint64_t a, uint64_t b) {
   8162 // CHECK-LABEL: test_vcltd_u64
   8163 // CHECK: {{cmhi d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
   8164   return (uint64_t)vcltd_u64(a, b);
   8165 }
   8166 
   8167 int64_t test_vcltzd_s64(int64_t a) {
   8168 // CHECK-LABEL: test_vcltzd_s64
   8169 // CHECK: {{cmlt d[0-9]+, d[0-9]+, #0x0|asr x0, x0, #63}}
   8170   return (int64_t)vcltzd_s64(a);
   8171 }
   8172 
   8173 int64_t test_vtstd_s64(int64_t a, int64_t b) {
   8174 // CHECK-LABEL: test_vtstd_s64
   8175 // CHECK: {{cmtst d[0-9]+, d[0-9]+, d[0-9]+|tst x1, x0}}
   8176   return (int64_t)vtstd_s64(a, b);
   8177 }
   8178 
   8179 uint64_t test_vtstd_u64(uint64_t a, uint64_t b) {
   8180 // CHECK-LABEL: test_vtstd_u64
   8181 // CHECK: {{cmtst d[0-9]+, d[0-9]+, d[0-9]+|tst x1, x0}}
   8182   return (uint64_t)vtstd_u64(a, b);
   8183 }
   8184 
   8185 int64_t test_vabsd_s64(int64_t a) {
   8186 // CHECK-LABEL: test_vabsd_s64
   8187 // CHECK: abs {{d[0-9]+}}, {{d[0-9]+}}
   8188   return (int64_t)vabsd_s64(a);
   8189 }
   8190 
   8191 int8_t test_vqabsb_s8(int8_t a) {
   8192 // CHECK-LABEL: test_vqabsb_s8
   8193 // CHECK: sqabs {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   8194   return (int8_t)vqabsb_s8(a);
   8195 }
   8196 
   8197 int16_t test_vqabsh_s16(int16_t a) {
   8198 // CHECK-LABEL: test_vqabsh_s16
   8199 // CHECK: sqabs {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   8200   return (int16_t)vqabsh_s16(a);
   8201 }
   8202 
   8203 int32_t test_vqabss_s32(int32_t a) {
   8204 // CHECK-LABEL: test_vqabss_s32
   8205 // CHECK: sqabs {{s[0-9]+}}, {{s[0-9]+}}
   8206   return (int32_t)vqabss_s32(a);
   8207 }
   8208 
   8209 int64_t test_vqabsd_s64(int64_t a) {
   8210 // CHECK-LABEL: test_vqabsd_s64
   8211 // CHECK: sqabs {{d[0-9]+}}, {{d[0-9]+}}
   8212   return (int64_t)vqabsd_s64(a);
   8213 }
   8214 
   8215 int64_t test_vnegd_s64(int64_t a) {
   8216 // CHECK-LABEL: test_vnegd_s64
   8217 // CHECK: neg {{[xd][0-9]+}}, {{[xd][0-9]+}}
   8218   return (int64_t)vnegd_s64(a);
   8219 }
   8220 
   8221 int8_t test_vqnegb_s8(int8_t a) {
   8222 // CHECK-LABEL: test_vqnegb_s8
   8223 // CHECK: sqneg {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   8224   return (int8_t)vqnegb_s8(a);
   8225 }
   8226 
   8227 int16_t test_vqnegh_s16(int16_t a) {
   8228 // CHECK-LABEL: test_vqnegh_s16
   8229 // CHECK: sqneg {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   8230   return (int16_t)vqnegh_s16(a);
   8231 }
   8232 
   8233 int32_t test_vqnegs_s32(int32_t a) {
   8234 // CHECK-LABEL: test_vqnegs_s32
   8235 // CHECK: sqneg {{s[0-9]+}}, {{s[0-9]+}}
   8236   return (int32_t)vqnegs_s32(a);
   8237 }
   8238 
   8239 int64_t test_vqnegd_s64(int64_t a) {
   8240 // CHECK-LABEL: test_vqnegd_s64
   8241 // CHECK: sqneg {{d[0-9]+}}, {{d[0-9]+}}
   8242   return (int64_t)vqnegd_s64(a);
   8243 }
   8244 
   8245 int8_t test_vuqaddb_s8(int8_t a, int8_t b) {
   8246 // CHECK-LABEL: test_vuqaddb_s8
   8247 // CHECK: suqadd {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   8248   return (int8_t)vuqaddb_s8(a, b);
   8249 }
   8250 
   8251 int16_t test_vuqaddh_s16(int16_t a, int16_t b) {
   8252 // CHECK-LABEL: test_vuqaddh_s16
   8253 // CHECK: suqadd {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   8254   return (int16_t)vuqaddh_s16(a, b);
   8255 }
   8256 
   8257 int32_t test_vuqadds_s32(int32_t a, int32_t b) {
   8258 // CHECK-LABEL: test_vuqadds_s32
   8259 // CHECK: suqadd {{s[0-9]+}}, {{s[0-9]+}}
   8260   return (int32_t)vuqadds_s32(a, b);
   8261 }
   8262 
   8263 int64_t test_vuqaddd_s64(int64_t a, int64_t b) {
   8264 // CHECK-LABEL: test_vuqaddd_s64
   8265 // CHECK: suqadd {{d[0-9]+}}, {{d[0-9]+}}
   8266   return (int64_t)vuqaddd_s64(a, b);
   8267 }
   8268 
   8269 uint8_t test_vsqaddb_u8(uint8_t a, uint8_t b) {
   8270 // CHECK-LABEL: test_vsqaddb_u8
   8271 // CHECK: usqadd {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
   8272   return (uint8_t)vsqaddb_u8(a, b);
   8273 }
   8274 
   8275 uint16_t test_vsqaddh_u16(uint16_t a, uint16_t b) {
   8276 // CHECK-LABEL: test_vsqaddh_u16
   8277 // CHECK: usqadd {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   8278   return (uint16_t)vsqaddh_u16(a, b);
   8279 }
   8280 
   8281 uint32_t test_vsqadds_u32(uint32_t a, uint32_t b) {
   8282 // CHECK-LABEL: test_vsqadds_u32
   8283 // CHECK: usqadd {{s[0-9]+}}, {{s[0-9]+}}
   8284   return (uint32_t)vsqadds_u32(a, b);
   8285 }
   8286 
   8287 uint64_t test_vsqaddd_u64(uint64_t a, uint64_t b) {
   8288 // CHECK-LABEL: test_vsqaddd_u64
   8289 // CHECK: usqadd {{d[0-9]+}}, {{d[0-9]+}}
   8290   return (uint64_t)vsqaddd_u64(a, b);
   8291 }
   8292 
   8293 int32_t test_vqdmlalh_s16(int32_t a, int16_t b, int16_t c) {
   8294 
   8295 // CHECK-ARM64-LABEL: test_vqdmlalh_s16
   8296 // CHECK-ARM64: sqdmull v[[PROD:[0-9]+]].4s, {{v[0-9]+.4h}}, {{v[0-9]+.4h}}
   8297 // CHECK-ARM64: sqadd {{s[0-9]+}}, {{s[0-9]+}}, s[[PROD]]
   8298   return (int32_t)vqdmlalh_s16(a, b, c);
   8299 }
   8300 
   8301 int64_t test_vqdmlals_s32(int64_t a, int32_t b, int32_t c) {
   8302 // CHECK-LABEL: test_vqdmlals_s32
   8303 // CHECK: sqdmlal {{d[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   8304   return (int64_t)vqdmlals_s32(a, b, c);
   8305 }
   8306 
   8307 int32_t test_vqdmlslh_s16(int32_t a, int16_t b, int16_t c) {
   8308 
   8309 // CHECK-ARM64-LABEL: test_vqdmlslh_s16
   8310 // CHECK-ARM64: sqdmull v[[PROD:[0-9]+]].4s, {{v[0-9]+.4h}}, {{v[0-9]+.4h}}
   8311 // CHECK-ARM64: sqsub {{s[0-9]+}}, {{s[0-9]+}}, s[[PROD]]
   8312   return (int32_t)vqdmlslh_s16(a, b, c);
   8313 }
   8314 
   8315 int64_t test_vqdmlsls_s32(int64_t a, int32_t b, int32_t c) {
   8316 // CHECK-LABEL: test_vqdmlsls_s32
   8317 // CHECK: sqdmlsl {{d[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   8318   return (int64_t)vqdmlsls_s32(a, b, c);
   8319 }
   8320 
   8321 int32_t test_vqdmullh_s16(int16_t a, int16_t b) {
   8322 // CHECK-LABEL: test_vqdmullh_s16
   8323 // CHECK: sqdmull {{s[0-9]+|v[0-9]+.4s}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
   8324   return (int32_t)vqdmullh_s16(a, b);
   8325 }
   8326 
   8327 int64_t test_vqdmulls_s32(int32_t a, int32_t b) {
   8328 // CHECK-LABEL: test_vqdmulls_s32
   8329 // CHECK: sqdmull {{d[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   8330   return (int64_t)vqdmulls_s32(a, b);
   8331 }
   8332 
   8333 int8_t test_vqmovunh_s16(int16_t a) {
   8334 // CHECK-LABEL: test_vqmovunh_s16
   8335 // CHECK: sqxtun {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}
   8336   return (int8_t)vqmovunh_s16(a);
   8337 }
   8338 
   8339 int16_t test_vqmovuns_s32(int32_t a) {
   8340 // CHECK-LABEL: test_vqmovuns_s32
   8341 // CHECK: sqxtun {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}
   8342   return (int16_t)vqmovuns_s32(a);
   8343 }
   8344 
   8345 int32_t test_vqmovund_s64(int64_t a) {
   8346 // CHECK-LABEL: test_vqmovund_s64
   8347 // CHECK: sqxtun {{s[0-9]+}}, {{d[0-9]+}}
   8348   return (int32_t)vqmovund_s64(a);
   8349 }
   8350 
   8351 int8_t test_vqmovnh_s16(int16_t a) {
   8352 // CHECK-LABEL: test_vqmovnh_s16
   8353 // CHECK: sqxtn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}
   8354   return (int8_t)vqmovnh_s16(a);
   8355 }
   8356 
   8357 int16_t test_vqmovns_s32(int32_t a) {
   8358 // CHECK-LABEL: test_vqmovns_s32
   8359 // CHECK: sqxtn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}
   8360   return (int16_t)vqmovns_s32(a);
   8361 }
   8362 
   8363 int32_t test_vqmovnd_s64(int64_t a) {
   8364 // CHECK-LABEL: test_vqmovnd_s64
   8365 // CHECK: sqxtn {{s[0-9]+}}, {{d[0-9]+}}
   8366   return (int32_t)vqmovnd_s64(a);
   8367 }
   8368 
   8369 int8_t test_vqmovnh_u16(int16_t a) {
   8370 // CHECK-LABEL: test_vqmovnh_u16
   8371 // CHECK: uqxtn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}
   8372   return (int8_t)vqmovnh_u16(a);
   8373 }
   8374 
   8375 int16_t test_vqmovns_u32(int32_t a) {
   8376 // CHECK-LABEL: test_vqmovns_u32
   8377 // CHECK: uqxtn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}
   8378   return (int16_t)vqmovns_u32(a);
   8379 }
   8380 
   8381 int32_t test_vqmovnd_u64(int64_t a) {
   8382 // CHECK-LABEL: test_vqmovnd_u64
   8383 // CHECK: uqxtn {{s[0-9]+}}, {{d[0-9]+}}
   8384   return (int32_t)vqmovnd_u64(a);
   8385 }
   8386 
   8387 uint32_t test_vceqs_f32(float32_t a, float32_t b) {
   8388 // CHECK-LABEL: test_vceqs_f32
   8389 // CHECK: {{fcmeq s0, s0, s1|fcmp s0, s1}}
   8390   return (uint32_t)vceqs_f32(a, b);
   8391 }
   8392 
   8393 uint64_t test_vceqd_f64(float64_t a, float64_t b) {
   8394 // CHECK-LABEL: test_vceqd_f64
   8395 // CHECK: {{fcmeq d0, d0, d1|fcmp d0, d1}}
   8396   return (uint64_t)vceqd_f64(a, b);
   8397 }
   8398 
   8399 uint32_t test_vceqzs_f32(float32_t a) {
   8400 // CHECK-LABEL: test_vceqzs_f32
   8401 // CHECK: {{fcmeq s0, s0, #0.0|fcmp s0, #0.0}}
   8402   return (uint32_t)vceqzs_f32(a);
   8403 }
   8404 
   8405 uint64_t test_vceqzd_f64(float64_t a) {
   8406 // CHECK-LABEL: test_vceqzd_f64
   8407 // CHECK: {{fcmeq d0, d0, #0.0|fcmp d0, #0.0}}
   8408   return (uint64_t)vceqzd_f64(a);
   8409 }
   8410 
   8411 uint32_t test_vcges_f32(float32_t a, float32_t b) {
   8412 // CHECK-LABEL: test_vcges_f32
   8413 // CHECK: {{fcmge s0, s0, s1|fcmp s0, s1}}
   8414   return (uint32_t)vcges_f32(a, b);
   8415 }
   8416 
   8417 uint64_t test_vcged_f64(float64_t a, float64_t b) {
   8418 // CHECK-LABEL: test_vcged_f64
   8419 // CHECK: {{fcmge d0, d0, d1|fcmp d0, d1}}
   8420   return (uint64_t)vcged_f64(a, b);
   8421 }
   8422 
   8423 uint32_t test_vcgezs_f32(float32_t a) {
   8424 // CHECK-LABEL: test_vcgezs_f32
   8425 // CHECK: {{fcmge s0, s0, #0.0|fcmp s0, #0.0}}
   8426   return (uint32_t)vcgezs_f32(a);
   8427 }
   8428 
   8429 uint64_t test_vcgezd_f64(float64_t a) {
   8430 // CHECK-LABEL: test_vcgezd_f64
   8431 // CHECK: {{fcmge d0, d0, #0.0|fcmp d0, #0.0}}
   8432   return (uint64_t)vcgezd_f64(a);
   8433 }
   8434 
   8435 uint32_t test_vcgts_f32(float32_t a, float32_t b) {
   8436 // CHECK-LABEL: test_vcgts_f32
   8437 // CHECK: {{fcmgt s0, s0, s1|fcmp s0, s1}}
   8438   return (uint32_t)vcgts_f32(a, b);
   8439 }
   8440 
   8441 uint64_t test_vcgtd_f64(float64_t a, float64_t b) {
   8442 // CHECK-LABEL: test_vcgtd_f64
   8443 // CHECK: {{fcmgt d0, d0, d1|fcmp d0, d1}}
   8444   return (uint64_t)vcgtd_f64(a, b);
   8445 }
   8446 
   8447 uint32_t test_vcgtzs_f32(float32_t a) {
   8448 // CHECK-LABEL: test_vcgtzs_f32
   8449 // CHECK: {{fcmgt s0, s0, #0.0|fcmp s0, #0.0}}
   8450   return (uint32_t)vcgtzs_f32(a);
   8451 }
   8452 
   8453 uint64_t test_vcgtzd_f64(float64_t a) {
   8454 // CHECK-LABEL: test_vcgtzd_f64
   8455 // CHECK: {{fcmgt d0, d0, #0.0|fcmp d0, #0.0}}
   8456   return (uint64_t)vcgtzd_f64(a);
   8457 }
   8458 
   8459 uint32_t test_vcles_f32(float32_t a, float32_t b) {
   8460 // CHECK-LABEL: test_vcles_f32
   8461 // CHECK: {{fcmge s0, s1, s0|fcmp s0, s1}}
   8462   return (uint32_t)vcles_f32(a, b);
   8463 }
   8464 
   8465 uint64_t test_vcled_f64(float64_t a, float64_t b) {
   8466 // CHECK-LABEL: test_vcled_f64
   8467 // CHECK: {{fcmge d0, d1, d0|fcmp d0, d1}}
   8468   return (uint64_t)vcled_f64(a, b);
   8469 }
   8470 
   8471 uint32_t test_vclezs_f32(float32_t a) {
   8472 // CHECK-LABEL: test_vclezs_f32
   8473 // CHECK: {{fcmle s0, s0, #0.0|fcmp s0, #0.0}}
   8474   return (uint32_t)vclezs_f32(a);
   8475 }
   8476 
   8477 uint64_t test_vclezd_f64(float64_t a) {
   8478 // CHECK-LABEL: test_vclezd_f64
   8479 // CHECK: {{fcmle d0, d0, #0.0|fcmp d0, #0.0}}
   8480   return (uint64_t)vclezd_f64(a);
   8481 }
   8482 
   8483 uint32_t test_vclts_f32(float32_t a, float32_t b) {
   8484 // CHECK-LABEL: test_vclts_f32
   8485 // CHECK: {{fcmgt s0, s1, s0|fcmp s0, s1}}
   8486   return (uint32_t)vclts_f32(a, b);
   8487 }
   8488 
   8489 uint64_t test_vcltd_f64(float64_t a, float64_t b) {
   8490 // CHECK-LABEL: test_vcltd_f64
   8491 // CHECK: {{fcmgt d0, d1, d0|fcmp d0, d1}}
   8492   return (uint64_t)vcltd_f64(a, b);
   8493 }
   8494 
   8495 uint32_t test_vcltzs_f32(float32_t a) {
   8496 // CHECK-LABEL: test_vcltzs_f32
   8497 // CHECK: {{fcmlt s0, s0, #0.0|fcmp s0, #0.0}}
   8498   return (uint32_t)vcltzs_f32(a);
   8499 }
   8500 
   8501 uint64_t test_vcltzd_f64(float64_t a) {
   8502 // CHECK-LABEL: test_vcltzd_f64
   8503 // CHECK: {{fcmlt d0, d0, #0.0|fcmp d0, #0.0}}
   8504   return (uint64_t)vcltzd_f64(a);
   8505 }
   8506 
   8507 uint32_t test_vcages_f32(float32_t a, float32_t b) {
   8508 // CHECK-LABEL: test_vcages_f32
   8509 // CHECK: facge s0, s0, s1
   8510   return (uint32_t)vcages_f32(a, b);
   8511 }
   8512 
   8513 uint64_t test_vcaged_f64(float64_t a, float64_t b) {
   8514 // CHECK-LABEL: test_vcaged_f64
   8515 // CHECK: facge d0, d0, d1
   8516   return (uint64_t)vcaged_f64(a, b);
   8517 }
   8518 
   8519 uint32_t test_vcagts_f32(float32_t a, float32_t b) {
   8520 // CHECK-LABEL: test_vcagts_f32
   8521 // CHECK: facgt s0, s0, s1
   8522   return (uint32_t)vcagts_f32(a, b);
   8523 }
   8524 
   8525 uint64_t test_vcagtd_f64(float64_t a, float64_t b) {
   8526 // CHECK-LABEL: test_vcagtd_f64
   8527 // CHECK: facgt d0, d0, d1
   8528   return (uint64_t)vcagtd_f64(a, b);
   8529 }
   8530 
   8531 uint32_t test_vcales_f32(float32_t a, float32_t b) {
   8532 // CHECK-LABEL: test_vcales_f32
   8533 // CHECK: facge s0, s1, s0
   8534   return (uint32_t)vcales_f32(a, b);
   8535 }
   8536 
   8537 uint64_t test_vcaled_f64(float64_t a, float64_t b) {
   8538 // CHECK-LABEL: test_vcaled_f64
   8539 // CHECK: facge d0, d1, d0
   8540   return (uint64_t)vcaled_f64(a, b);
   8541 }
   8542 
   8543 uint32_t test_vcalts_f32(float32_t a, float32_t b) {
   8544 // CHECK-LABEL: test_vcalts_f32
   8545 // CHECK: facgt s0, s1, s0
   8546   return (uint32_t)vcalts_f32(a, b);
   8547 }
   8548 
   8549 uint64_t test_vcaltd_f64(float64_t a, float64_t b) {
   8550 // CHECK-LABEL: test_vcaltd_f64
   8551 // CHECK: facgt d0, d1, d0
   8552   return (uint64_t)vcaltd_f64(a, b);
   8553 }
   8554 
   8555 int64_t test_vshrd_n_s64(int64_t a) {
   8556 // CHECK-LABEL: test_vshrd_n_s64
   8557 // CHECK: {{sshr d[0-9]+, d[0-9]+, #1|asr x0, x0, #1}}
   8558   return (int64_t)vshrd_n_s64(a, 1);
   8559 }
   8560 
   8561 int64x1_t test_vshr_n_s64(int64x1_t a) {
   8562 // CHECK-LABEL: test_vshr_n_s64
   8563 // CHECK: sshr {{d[0-9]+}}, {{d[0-9]+}}, #1
   8564   return vshr_n_s64(a, 1);
   8565 }
   8566 
   8567 uint64_t test_vshrd_n_u64(uint64_t a) {
   8568 
   8569 // CHECK-ARM64-LABEL: test_vshrd_n_u64
   8570 // CHECK-ARM64: mov x0, xzr
   8571   return (uint64_t)vshrd_n_u64(a, 64);
   8572 }
   8573 
   8574 uint64_t test_vshrd_n_u64_2() {
   8575 
   8576 // CHECK-ARM64-LABEL: test_vshrd_n_u64_2
   8577 // CHECK-ARM64: mov x0, xzr
   8578   uint64_t a = UINT64_C(0xf000000000000000);
   8579   return vshrd_n_u64(a, 64);
   8580 }
   8581 
   8582 uint64x1_t test_vshr_n_u64(uint64x1_t a) {
   8583 // CHECK-LABEL: test_vshr_n_u64
   8584 // CHECK: ushr {{d[0-9]+}}, {{d[0-9]+}}, #1
   8585   return vshr_n_u64(a, 1);
   8586 }
   8587 
   8588 int64_t test_vrshrd_n_s64(int64_t a) {
   8589 // CHECK-LABEL: test_vrshrd_n_s64
   8590 // CHECK: srshr {{d[0-9]+}}, {{d[0-9]+}}, #63
   8591   return (int64_t)vrshrd_n_s64(a, 63);
   8592 }
   8593 
   8594 int64x1_t test_vrshr_n_s64(int64x1_t a) {
   8595 // CHECK-LABEL: test_vrshr_n_s64
   8596 // CHECK: srshr d{{[0-9]+}}, d{{[0-9]+}}, #1
   8597   return vrshr_n_s64(a, 1);
   8598 }
   8599 
   8600 uint64_t test_vrshrd_n_u64(uint64_t a) {
   8601 // CHECK-LABEL: test_vrshrd_n_u64
   8602 // CHECK: urshr {{d[0-9]+}}, {{d[0-9]+}}, #63
   8603   return (uint64_t)vrshrd_n_u64(a, 63);
   8604 }
   8605 
   8606 uint64x1_t test_vrshr_n_u64(uint64x1_t a) {
   8607 // CHECK-LABEL: test_vrshr_n_u64
   8608 // CHECK: urshr d{{[0-9]+}}, d{{[0-9]+}}, #1
   8609   return vrshr_n_u64(a, 1);
   8610 }
   8611 
   8612 int64_t test_vsrad_n_s64(int64_t a, int64_t b) {
   8613 // CHECK-LABEL: test_vsrad_n_s64
   8614 // CHECK: {{ssra d[0-9]+, d[0-9]+, #63|add x0, x0, x1, asr #63}}
   8615   return (int64_t)vsrad_n_s64(a, b, 63);
   8616 }
   8617 
   8618 int64x1_t test_vsra_n_s64(int64x1_t a, int64x1_t b) {
   8619 // CHECK-LABEL: test_vsra_n_s64
   8620 // CHECK: ssra d{{[0-9]+}}, d{{[0-9]+}}, #1
   8621   return vsra_n_s64(a, b, 1);
   8622 }
   8623 
   8624 uint64_t test_vsrad_n_u64(uint64_t a, uint64_t b) {
   8625 // CHECK-LABEL: test_vsrad_n_u64
   8626 // CHECK: {{usra d[0-9]+, d[0-9]+, #63|add x0, x0, x1, lsr #63}}
   8627   return (uint64_t)vsrad_n_u64(a, b, 63);
   8628 }
   8629 
   8630 uint64_t test_vsrad_n_u64_2(uint64_t a, uint64_t b) {
   8631 
   8632 // CHECK-ARM64-LABEL: test_vsrad_n_u64_2
   8633 // CHECK-ARM64-NOT: add
   8634   return (uint64_t)vsrad_n_u64(a, b, 64);
   8635 }
   8636 
   8637 uint64x1_t test_vsra_n_u64(uint64x1_t a, uint64x1_t b) {
   8638 // CHECK-LABEL: test_vsra_n_u64
   8639 // CHECK: usra d{{[0-9]+}}, d{{[0-9]+}}, #1
   8640   return vsra_n_u64(a, b, 1);
   8641 }
   8642 
   8643 int64_t test_vrsrad_n_s64(int64_t a, int64_t b) {
   8644 // CHECK-LABEL: test_vrsrad_n_s64
   8645 // CHECK: {{srsra d[0-9]+, d[0-9]+, #63}}
   8646   return (int64_t)vrsrad_n_s64(a, b, 63);
   8647 }
   8648 
   8649 int64x1_t test_vrsra_n_s64(int64x1_t a, int64x1_t b) {
   8650 // CHECK-LABEL: test_vrsra_n_s64
   8651 // CHECK: srsra d{{[0-9]+}}, d{{[0-9]+}}, #1
   8652   return vrsra_n_s64(a, b, 1);
   8653 }
   8654 
   8655 uint64_t test_vrsrad_n_u64(uint64_t a, uint64_t b) {
   8656 // CHECK-LABEL: test_vrsrad_n_u64
   8657 // CHECK: ursra {{d[0-9]+}}, {{d[0-9]+}}, #63
   8658   return (uint64_t)vrsrad_n_u64(a, b, 63);
   8659 }
   8660 
   8661 uint64x1_t test_vrsra_n_u64(uint64x1_t a, uint64x1_t b) {
   8662 // CHECK-LABEL: test_vrsra_n_u64
   8663 // CHECK: ursra d{{[0-9]+}}, d{{[0-9]+}}, #1
   8664   return vrsra_n_u64(a, b, 1);
   8665 }
   8666 
   8667 int64_t test_vshld_n_s64(int64_t a) {
   8668 // CHECK-LABEL: test_vshld_n_s64
   8669 // CHECK: {{shl d[0-9]+, d[0-9]+, #1|lsl x0, x0, #1}}
   8670   return (int64_t)vshld_n_s64(a, 1);
   8671 }
   8672 int64x1_t test_vshl_n_s64(int64x1_t a) {
   8673 // CHECK-LABEL: test_vshl_n_s64
   8674 // CHECK: shl d{{[0-9]+}}, d{{[0-9]+}}, #1
   8675   return vshl_n_s64(a, 1);
   8676 }
   8677 
   8678 uint64_t test_vshld_n_u64(uint64_t a) {
   8679 // CHECK-LABEL: test_vshld_n_u64
   8680 // CHECK: {{shl d[0-9]+, d[0-9]+, #63|lsl x0, x0, #63}}
   8681   return (uint64_t)vshld_n_u64(a, 63);
   8682 }
   8683 
   8684 uint64x1_t test_vshl_n_u64(uint64x1_t a) {
   8685 // CHECK-LABEL: test_vshl_n_u64
   8686 // CHECK: shl d{{[0-9]+}}, d{{[0-9]+}}, #1
   8687   return vshl_n_u64(a, 1);
   8688 }
   8689 
   8690 int8_t test_vqshlb_n_s8(int8_t a) {
   8691 // CHECK-LABEL: test_vqshlb_n_s8
   8692 // CHECK: sqshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, #7
   8693   return (int8_t)vqshlb_n_s8(a, 7);
   8694 }
   8695 
   8696 int16_t test_vqshlh_n_s16(int16_t a) {
   8697 // CHECK-LABEL: test_vqshlh_n_s16
   8698 // CHECK: sqshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, #15
   8699   return (int16_t)vqshlh_n_s16(a, 15);
   8700 }
   8701 
   8702 int32_t test_vqshls_n_s32(int32_t a) {
   8703 // CHECK-LABEL: test_vqshls_n_s32
   8704 // CHECK: sqshl {{s[0-9]+}}, {{s[0-9]+}}, #31
   8705   return (int32_t)vqshls_n_s32(a, 31);
   8706 }
   8707 
   8708 int64_t test_vqshld_n_s64(int64_t a) {
   8709 // CHECK-LABEL: test_vqshld_n_s64
   8710 // CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, #63
   8711   return (int64_t)vqshld_n_s64(a, 63);
   8712 }
   8713 
   8714 int8x8_t test_vqshl_n_s8(int8x8_t a) {
   8715   // CHECK-LABEL: test_vqshl_n_s8
   8716   return vqshl_n_s8(a, 0);
   8717   // CHECK: sqshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
   8718 }
   8719 
   8720 int8x16_t test_vqshlq_n_s8(int8x16_t a) {
   8721   // CHECK-LABEL: test_vqshlq_n_s8
   8722   return vqshlq_n_s8(a, 0);
   8723   // CHECK: sqshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #0
   8724 }
   8725 
   8726 int16x4_t test_vqshl_n_s16(int16x4_t a) {
   8727   // CHECK-LABEL: test_vqshl_n_s16
   8728   return vqshl_n_s16(a, 0);
   8729   // CHECK: sqshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0
   8730 }
   8731 
   8732 int16x8_t test_vqshlq_n_s16(int16x8_t a) {
   8733   // CHECK-LABEL: test_vqshlq_n_s16
   8734   return vqshlq_n_s16(a, 0);
   8735   // CHECK: sqshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0
   8736 }
   8737 
   8738 int32x2_t test_vqshl_n_s32(int32x2_t a) {
   8739   // CHECK-LABEL: test_vqshl_n_s32
   8740   return vqshl_n_s32(a, 0);
   8741   // CHECK: sqshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
   8742 }
   8743 
   8744 int32x4_t test_vqshlq_n_s32(int32x4_t a) {
   8745   // CHECK-LABEL: test_vqshlq_n_s32
   8746   return vqshlq_n_s32(a, 0);
   8747   // CHECK: sqshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
   8748 }
   8749 
   8750 int64x2_t test_vqshlq_n_s64(int64x2_t a) {
   8751   // CHECK-LABEL: test_vqshlq_n_s64
   8752   return vqshlq_n_s64(a, 0);
   8753   // CHECK: sqshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
   8754 }
   8755 
   8756 uint8x8_t test_vqshl_n_u8(uint8x8_t a) {
   8757   // CHECK-LABEL: test_vqshl_n_u8
   8758   return vqshl_n_u8(a, 0);
   8759   // CHECK: uqshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
   8760 }
   8761 
   8762 uint8x16_t test_vqshlq_n_u8(uint8x16_t a) {
   8763   // CHECK-LABEL: test_vqshlq_n_u8
   8764   return vqshlq_n_u8(a, 0);
   8765   // CHECK: uqshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #0
   8766 }
   8767 
   8768 uint16x4_t test_vqshl_n_u16(uint16x4_t a) {
   8769   // CHECK-LABEL: test_vqshl_n_u16
   8770   return vqshl_n_u16(a, 0);
   8771   // CHECK: uqshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0
   8772 }
   8773 
   8774 uint16x8_t test_vqshlq_n_u16(uint16x8_t a) {
   8775   // CHECK-LABEL: test_vqshlq_n_u16
   8776   return vqshlq_n_u16(a, 0);
   8777   // CHECK: uqshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0
   8778 }
   8779 
   8780 uint32x2_t test_vqshl_n_u32(uint32x2_t a) {
   8781   // CHECK-LABEL: test_vqshl_n_u32
   8782   return vqshl_n_u32(a, 0);
   8783   // CHECK: uqshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
   8784 }
   8785 
   8786 uint32x4_t test_vqshlq_n_u32(uint32x4_t a) {
   8787   // CHECK-LABEL: test_vqshlq_n_u32
   8788   return vqshlq_n_u32(a, 0);
   8789   // CHECK: uqshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
   8790 }
   8791 
   8792 uint64x2_t test_vqshlq_n_u64(uint64x2_t a) {
   8793   // CHECK-LABEL: test_vqshlq_n_u64
   8794   return vqshlq_n_u64(a, 0);
   8795   // CHECK: uqshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
   8796 }
   8797 
   8798 int64x1_t test_vqshl_n_s64(int64x1_t a) {
   8799 // CHECK-LABEL: test_vqshl_n_s64
   8800 // CHECK: sqshl d{{[0-9]+}}, d{{[0-9]+}}, #1
   8801   return vqshl_n_s64(a, 1);
   8802 }
   8803 
   8804 uint8_t test_vqshlb_n_u8(uint8_t a) {
   8805 // CHECK-LABEL: test_vqshlb_n_u8
   8806 // CHECK: uqshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, #7
   8807   return (uint8_t)vqshlb_n_u8(a, 7);
   8808 }
   8809 
   8810 uint16_t test_vqshlh_n_u16(uint16_t a) {
   8811 // CHECK-LABEL: test_vqshlh_n_u16
   8812 // CHECK: uqshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, #15
   8813   return (uint16_t)vqshlh_n_u16(a, 15);
   8814 }
   8815 
   8816 uint32_t test_vqshls_n_u32(uint32_t a) {
   8817 // CHECK-LABEL: test_vqshls_n_u32
   8818 // CHECK: uqshl {{s[0-9]+}}, {{s[0-9]+}}, #31
   8819   return (uint32_t)vqshls_n_u32(a, 31);
   8820 }
   8821 
   8822 uint64_t test_vqshld_n_u64(uint64_t a) {
   8823 // CHECK-LABEL: test_vqshld_n_u64
   8824 // CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, #63
   8825   return (uint64_t)vqshld_n_u64(a, 63);
   8826 }
   8827 
   8828 uint64x1_t test_vqshl_n_u64(uint64x1_t a) {
   8829 // CHECK-LABEL: test_vqshl_n_u64
   8830 // CHECK: uqshl d{{[0-9]+}}, d{{[0-9]+}}, #1
   8831   return vqshl_n_u64(a, 1);
   8832 }
   8833 
   8834 int8_t test_vqshlub_n_s8(int8_t a) {
   8835 // CHECK-LABEL: test_vqshlub_n_s8
   8836 // CHECK: sqshlu {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, #7
   8837   return (int8_t)vqshlub_n_s8(a, 7);
   8838 }
   8839 
   8840 int16_t test_vqshluh_n_s16(int16_t a) {
   8841 // CHECK-LABEL: test_vqshluh_n_s16
   8842 // CHECK: sqshlu {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, #15
   8843   return (int16_t)vqshluh_n_s16(a, 15);
   8844 }
   8845 
   8846 int32_t test_vqshlus_n_s32(int32_t a) {
   8847 // CHECK-LABEL: test_vqshlus_n_s32
   8848 // CHECK: sqshlu {{s[0-9]+}}, {{s[0-9]+}}, #31
   8849   return (int32_t)vqshlus_n_s32(a, 31);
   8850 }
   8851 
   8852 int64_t test_vqshlud_n_s64(int64_t a) {
   8853 // CHECK-LABEL: test_vqshlud_n_s64
   8854 // CHECK: sqshlu {{d[0-9]+}}, {{d[0-9]+}}, #63
   8855   return (int64_t)vqshlud_n_s64(a, 63);
   8856 }
   8857 
   8858 uint64x1_t test_vqshlu_n_s64(int64x1_t a) {
   8859 // CHECK-LABEL: test_vqshlu_n_s64
   8860 // CHECK: sqshlu d{{[0-9]+}}, d{{[0-9]+}}, #1
   8861   return vqshlu_n_s64(a, 1);
   8862 }
   8863 
   8864 int64_t test_vsrid_n_s64(int64_t a, int64_t b) {
   8865 // CHECK-LABEL: test_vsrid_n_s64
   8866 // CHECK: sri {{d[0-9]+}}, {{d[0-9]+}}, #63
   8867   return (int64_t)vsrid_n_s64(a, b, 63);
   8868 }
   8869 
   8870 int64x1_t test_vsri_n_s64(int64x1_t a, int64x1_t b) {
   8871 // CHECK-LABEL: test_vsri_n_s64
   8872 // CHECK: sri d{{[0-9]+}}, d{{[0-9]+}}, #1
   8873   return vsri_n_s64(a, b, 1);
   8874 }
   8875 
   8876 uint64_t test_vsrid_n_u64(uint64_t a, uint64_t b) {
   8877 // CHECK-LABEL: test_vsrid_n_u64
   8878 // CHECK: sri {{d[0-9]+}}, {{d[0-9]+}}, #63
   8879   return (uint64_t)vsrid_n_u64(a, b, 63);
   8880 }
   8881 
   8882 uint64x1_t test_vsri_n_u64(uint64x1_t a, uint64x1_t b) {
   8883 // CHECK-LABEL: test_vsri_n_u64
   8884 // CHECK: sri d{{[0-9]+}}, d{{[0-9]+}}, #1
   8885   return vsri_n_u64(a, b, 1);
   8886 }
   8887 
   8888 int64_t test_vslid_n_s64(int64_t a, int64_t b) {
   8889 // CHECK-LABEL: test_vslid_n_s64
   8890 // CHECK: sli {{d[0-9]+}}, {{d[0-9]+}}, #63
   8891   return (int64_t)vslid_n_s64(a, b, 63);
   8892 }
   8893 
   8894 int64x1_t test_vsli_n_s64(int64x1_t a, int64x1_t b) {
   8895 // CHECK-LABEL: test_vsli_n_s64
   8896 // CHECK: sli d{{[0-9]+}}, d{{[0-9]+}}, #1
   8897   return vsli_n_s64(a, b, 1);
   8898 }
   8899 
   8900 uint64_t test_vslid_n_u64(uint64_t a, uint64_t b) {
   8901 // CHECK-LABEL: test_vslid_n_u64
   8902 // CHECK: sli {{d[0-9]+}}, {{d[0-9]+}}, #63
   8903   return (uint64_t)vslid_n_u64(a, b, 63);
   8904 }
   8905 
   8906 uint64x1_t test_vsli_n_u64(uint64x1_t a, uint64x1_t b) {
   8907 // CHECK-LABEL: test_vsli_n_u64
   8908 // CHECK: sli d{{[0-9]+}}, d{{[0-9]+}}, #1
   8909   return vsli_n_u64(a, b, 1);
   8910 }
   8911 
   8912 int8_t test_vqshrnh_n_s16(int16_t a) {
   8913 // CHECK-LABEL: test_vqshrnh_n_s16
   8914 // CHECK: sqshrn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
   8915   return (int8_t)vqshrnh_n_s16(a, 8);
   8916 }
   8917 
   8918 int16_t test_vqshrns_n_s32(int32_t a) {
   8919 // CHECK-LABEL: test_vqshrns_n_s32
   8920 // CHECK: sqshrn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
   8921   return (int16_t)vqshrns_n_s32(a, 16);
   8922 }
   8923 
   8924 int32_t test_vqshrnd_n_s64(int64_t a) {
   8925 // CHECK-LABEL: test_vqshrnd_n_s64
   8926 // CHECK: sqshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
   8927   return (int32_t)vqshrnd_n_s64(a, 32);
   8928 }
   8929 
   8930 uint8_t test_vqshrnh_n_u16(uint16_t a) {
   8931 // CHECK-LABEL: test_vqshrnh_n_u16
   8932 // CHECK: uqshrn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
   8933   return (uint8_t)vqshrnh_n_u16(a, 8);
   8934 }
   8935 
   8936 uint16_t test_vqshrns_n_u32(uint32_t a) {
   8937 // CHECK-LABEL: test_vqshrns_n_u32
   8938 // CHECK: uqshrn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
   8939   return (uint16_t)vqshrns_n_u32(a, 16);
   8940 }
   8941 
   8942 uint32_t test_vqshrnd_n_u64(uint64_t a) {
   8943 // CHECK-LABEL: test_vqshrnd_n_u64
   8944 // CHECK: uqshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
   8945   return (uint32_t)vqshrnd_n_u64(a, 32);
   8946 }
   8947 
   8948 int8_t test_vqrshrnh_n_s16(int16_t a) {
   8949 // CHECK-LABEL: test_vqrshrnh_n_s16
   8950 // CHECK: sqrshrn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
   8951   return (int8_t)vqrshrnh_n_s16(a, 8);
   8952 }
   8953 
   8954 int16_t test_vqrshrns_n_s32(int32_t a) {
   8955 // CHECK-LABEL: test_vqrshrns_n_s32
   8956 // CHECK: sqrshrn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
   8957   return (int16_t)vqrshrns_n_s32(a, 16);
   8958 }
   8959 
   8960 int32_t test_vqrshrnd_n_s64(int64_t a) {
   8961 // CHECK-LABEL: test_vqrshrnd_n_s64
   8962 // CHECK: sqrshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
   8963   return (int32_t)vqrshrnd_n_s64(a, 32);
   8964 }
   8965 
   8966 uint8_t test_vqrshrnh_n_u16(uint16_t a) {
   8967 // CHECK-LABEL: test_vqrshrnh_n_u16
   8968 // CHECK: uqrshrn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
   8969   return (uint8_t)vqrshrnh_n_u16(a, 8);
   8970 }
   8971 
   8972 uint16_t test_vqrshrns_n_u32(uint32_t a) {
   8973 // CHECK-LABEL: test_vqrshrns_n_u32
   8974 // CHECK: uqrshrn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
   8975   return (uint16_t)vqrshrns_n_u32(a, 16);
   8976 }
   8977 
   8978 uint32_t test_vqrshrnd_n_u64(uint64_t a) {
   8979 // CHECK-LABEL: test_vqrshrnd_n_u64
   8980 // CHECK: uqrshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
   8981   return (uint32_t)vqrshrnd_n_u64(a, 32);
   8982 }
   8983 
   8984 int8_t test_vqshrunh_n_s16(int16_t a) {
   8985 // CHECK-LABEL: test_vqshrunh_n_s16
   8986 // CHECK: sqshrun {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
   8987   return (int8_t)vqshrunh_n_s16(a, 8);
   8988 }
   8989 
   8990 int16_t test_vqshruns_n_s32(int32_t a) {
   8991 // CHECK-LABEL: test_vqshruns_n_s32
   8992 // CHECK: sqshrun {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
   8993   return (int16_t)vqshruns_n_s32(a, 16);
   8994 }
   8995 
   8996 int32_t test_vqshrund_n_s64(int64_t a) {
   8997 // CHECK-LABEL: test_vqshrund_n_s64
   8998 // CHECK: sqshrun {{s[0-9]+}}, {{d[0-9]+}}, #32
   8999   return (int32_t)vqshrund_n_s64(a, 32);
   9000 }
   9001 
   9002 int8_t test_vqrshrunh_n_s16(int16_t a) {
   9003 // CHECK-LABEL: test_vqrshrunh_n_s16
   9004 // CHECK: sqrshrun {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
   9005   return (int8_t)vqrshrunh_n_s16(a, 8);
   9006 }
   9007 
   9008 int16_t test_vqrshruns_n_s32(int32_t a) {
   9009 // CHECK-LABEL: test_vqrshruns_n_s32
   9010 // CHECK: sqrshrun {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
   9011   return (int16_t)vqrshruns_n_s32(a, 16);
   9012 }
   9013 
   9014 int32_t test_vqrshrund_n_s64(int64_t a) {
   9015 // CHECK-LABEL: test_vqrshrund_n_s64
   9016 // CHECK: sqrshrun {{s[0-9]+}}, {{d[0-9]+}}, #32
   9017   return (int32_t)vqrshrund_n_s64(a, 32);
   9018 }
   9019 
   9020 float32_t test_vcvts_n_f32_s32(int32_t a) {
   9021 // CHECK-LABEL: test_vcvts_n_f32_s32
   9022 // CHECK: scvtf {{s[0-9]+}}, {{s[0-9]+}}, #1
   9023   return vcvts_n_f32_s32(a, 1);
   9024 }
   9025 
   9026 float64_t test_vcvtd_n_f64_s64(int64_t a) {
   9027 // CHECK-LABEL: test_vcvtd_n_f64_s64
   9028 // CHECK: scvtf {{d[0-9]+}}, {{d[0-9]+}}, #1
   9029   return vcvtd_n_f64_s64(a, 1);
   9030 }
   9031 
   9032 float32_t test_vcvts_n_f32_u32(uint32_t a) {
   9033 // CHECK-LABEL: test_vcvts_n_f32_u32
   9034 // CHECK: ucvtf {{s[0-9]+}}, {{s[0-9]+}}, #32
   9035   return vcvts_n_f32_u32(a, 32);
   9036 }
   9037 
   9038 float64_t test_vcvtd_n_f64_u64(uint64_t a) {
   9039 // CHECK-LABEL: test_vcvtd_n_f64_u64
   9040 // CHECK: ucvtf {{d[0-9]+}}, {{d[0-9]+}}, #64
   9041   return vcvtd_n_f64_u64(a, 64);
   9042 }
   9043 
   9044 int32_t test_vcvts_n_s32_f32(float32_t a) {
   9045 // CHECK-LABEL: test_vcvts_n_s32_f32
   9046 // CHECK: fcvtzs {{s[0-9]+}}, {{s[0-9]+}}, #1
   9047   return (int32_t)vcvts_n_s32_f32(a, 1);
   9048 }
   9049 
   9050 int64_t test_vcvtd_n_s64_f64(float64_t a) {
   9051 // CHECK-LABEL: test_vcvtd_n_s64_f64
   9052 // CHECK: fcvtzs {{d[0-9]+}}, {{d[0-9]+}}, #1
   9053   return (int64_t)vcvtd_n_s64_f64(a, 1);
   9054 }
   9055 
   9056 uint32_t test_vcvts_n_u32_f32(float32_t a) {
   9057 // CHECK-LABEL: test_vcvts_n_u32_f32
   9058 // CHECK: fcvtzu {{s[0-9]+}}, {{s[0-9]+}}, #32
   9059   return (uint32_t)vcvts_n_u32_f32(a, 32);
   9060 }
   9061 
   9062 uint64_t test_vcvtd_n_u64_f64(float64_t a) {
   9063 // CHECK-LABEL: test_vcvtd_n_u64_f64
   9064 // CHECK: fcvtzu {{d[0-9]+}}, {{d[0-9]+}}, #64
   9065   return (uint64_t)vcvtd_n_u64_f64(a, 64);
   9066 }
   9067 
   9068 // CHECK-LABEL: test_vreinterpret_s8_s16:
   9069 // CHECK-NEXT: ret
   9070 int8x8_t test_vreinterpret_s8_s16(int16x4_t a) {
   9071   return vreinterpret_s8_s16(a);
   9072 }
   9073 
   9074 // CHECK-LABEL: test_vreinterpret_s8_s32:
   9075 // CHECK-NEXT: ret
   9076 int8x8_t test_vreinterpret_s8_s32(int32x2_t a) {
   9077   return vreinterpret_s8_s32(a);
   9078 }
   9079 
   9080 // CHECK-LABEL: test_vreinterpret_s8_s64:
   9081 // CHECK-NEXT: ret
   9082 int8x8_t test_vreinterpret_s8_s64(int64x1_t a) {
   9083   return vreinterpret_s8_s64(a);
   9084 }
   9085 
   9086 // CHECK-LABEL: test_vreinterpret_s8_u8:
   9087 // CHECK-NEXT: ret
   9088 int8x8_t test_vreinterpret_s8_u8(uint8x8_t a) {
   9089   return vreinterpret_s8_u8(a);
   9090 }
   9091 
   9092 // CHECK-LABEL: test_vreinterpret_s8_u16:
   9093 // CHECK-NEXT: ret
   9094 int8x8_t test_vreinterpret_s8_u16(uint16x4_t a) {
   9095   return vreinterpret_s8_u16(a);
   9096 }
   9097 
   9098 // CHECK-LABEL: test_vreinterpret_s8_u32:
   9099 // CHECK-NEXT: ret
   9100 int8x8_t test_vreinterpret_s8_u32(uint32x2_t a) {
   9101   return vreinterpret_s8_u32(a);
   9102 }
   9103 
   9104 // CHECK-LABEL: test_vreinterpret_s8_u64:
   9105 // CHECK-NEXT: ret
   9106 int8x8_t test_vreinterpret_s8_u64(uint64x1_t a) {
   9107   return vreinterpret_s8_u64(a);
   9108 }
   9109 
   9110 // CHECK-LABEL: test_vreinterpret_s8_f16:
   9111 // CHECK-NEXT: ret
   9112 int8x8_t test_vreinterpret_s8_f16(float16x4_t a) {
   9113   return vreinterpret_s8_f16(a);
   9114 }
   9115 
   9116 // CHECK-LABEL: test_vreinterpret_s8_f32:
   9117 // CHECK-NEXT: ret
   9118 int8x8_t test_vreinterpret_s8_f32(float32x2_t a) {
   9119   return vreinterpret_s8_f32(a);
   9120 }
   9121 
   9122 // CHECK-LABEL: test_vreinterpret_s8_f64:
   9123 // CHECK-NEXT: ret
   9124 int8x8_t test_vreinterpret_s8_f64(float64x1_t a) {
   9125   return vreinterpret_s8_f64(a);
   9126 }
   9127 
   9128 // CHECK-LABEL: test_vreinterpret_s8_p8:
   9129 // CHECK-NEXT: ret
   9130 int8x8_t test_vreinterpret_s8_p8(poly8x8_t a) {
   9131   return vreinterpret_s8_p8(a);
   9132 }
   9133 
   9134 // CHECK-LABEL: test_vreinterpret_s8_p16:
   9135 // CHECK-NEXT: ret
   9136 int8x8_t test_vreinterpret_s8_p16(poly16x4_t a) {
   9137   return vreinterpret_s8_p16(a);
   9138 }
   9139 
   9140 // CHECK-LABEL: test_vreinterpret_s8_p64:
   9141 // CHECK-NEXT: ret
   9142 int8x8_t test_vreinterpret_s8_p64(poly64x1_t a) {
   9143   return vreinterpret_s8_p64(a);
   9144 }
   9145 
   9146 // CHECK-LABEL: test_vreinterpret_s16_s8:
   9147 // CHECK-NEXT: ret
   9148 int16x4_t test_vreinterpret_s16_s8(int8x8_t a) {
   9149   return vreinterpret_s16_s8(a);
   9150 }
   9151 
   9152 // CHECK-LABEL: test_vreinterpret_s16_s32:
   9153 // CHECK-NEXT: ret
   9154 int16x4_t test_vreinterpret_s16_s32(int32x2_t a) {
   9155   return vreinterpret_s16_s32(a);
   9156 }
   9157 
   9158 // CHECK-LABEL: test_vreinterpret_s16_s64:
   9159 // CHECK-NEXT: ret
   9160 int16x4_t test_vreinterpret_s16_s64(int64x1_t a) {
   9161   return vreinterpret_s16_s64(a);
   9162 }
   9163 
   9164 // CHECK-LABEL: test_vreinterpret_s16_u8:
   9165 // CHECK-NEXT: ret
   9166 int16x4_t test_vreinterpret_s16_u8(uint8x8_t a) {
   9167   return vreinterpret_s16_u8(a);
   9168 }
   9169 
   9170 // CHECK-LABEL: test_vreinterpret_s16_u16:
   9171 // CHECK-NEXT: ret
   9172 int16x4_t test_vreinterpret_s16_u16(uint16x4_t a) {
   9173   return vreinterpret_s16_u16(a);
   9174 }
   9175 
   9176 // CHECK-LABEL: test_vreinterpret_s16_u32:
   9177 // CHECK-NEXT: ret
   9178 int16x4_t test_vreinterpret_s16_u32(uint32x2_t a) {
   9179   return vreinterpret_s16_u32(a);
   9180 }
   9181 
   9182 // CHECK-LABEL: test_vreinterpret_s16_u64:
   9183 // CHECK-NEXT: ret
   9184 int16x4_t test_vreinterpret_s16_u64(uint64x1_t a) {
   9185   return vreinterpret_s16_u64(a);
   9186 }
   9187 
   9188 // CHECK-LABEL: test_vreinterpret_s16_f16:
   9189 // CHECK-NEXT: ret
   9190 int16x4_t test_vreinterpret_s16_f16(float16x4_t a) {
   9191   return vreinterpret_s16_f16(a);
   9192 }
   9193 
   9194 // CHECK-LABEL: test_vreinterpret_s16_f32:
   9195 // CHECK-NEXT: ret
   9196 int16x4_t test_vreinterpret_s16_f32(float32x2_t a) {
   9197   return vreinterpret_s16_f32(a);
   9198 }
   9199 
   9200 // CHECK-LABEL: test_vreinterpret_s16_f64:
   9201 // CHECK-NEXT: ret
   9202 int16x4_t test_vreinterpret_s16_f64(float64x1_t a) {
   9203   return vreinterpret_s16_f64(a);
   9204 }
   9205 
   9206 // CHECK-LABEL: test_vreinterpret_s16_p8:
   9207 // CHECK-NEXT: ret
   9208 int16x4_t test_vreinterpret_s16_p8(poly8x8_t a) {
   9209   return vreinterpret_s16_p8(a);
   9210 }
   9211 
   9212 // CHECK-LABEL: test_vreinterpret_s16_p16:
   9213 // CHECK-NEXT: ret
   9214 int16x4_t test_vreinterpret_s16_p16(poly16x4_t a) {
   9215   return vreinterpret_s16_p16(a);
   9216 }
   9217 
   9218 // CHECK-LABEL: test_vreinterpret_s16_p64:
   9219 // CHECK-NEXT: ret
   9220 int16x4_t test_vreinterpret_s16_p64(poly64x1_t a) {
   9221   return vreinterpret_s16_p64(a);
   9222 }
   9223 
   9224 // CHECK-LABEL: test_vreinterpret_s32_s8:
   9225 // CHECK-NEXT: ret
   9226 int32x2_t test_vreinterpret_s32_s8(int8x8_t a) {
   9227   return vreinterpret_s32_s8(a);
   9228 }
   9229 
   9230 // CHECK-LABEL: test_vreinterpret_s32_s16:
   9231 // CHECK-NEXT: ret
   9232 int32x2_t test_vreinterpret_s32_s16(int16x4_t a) {
   9233   return vreinterpret_s32_s16(a);
   9234 }
   9235 
   9236 // CHECK-LABEL: test_vreinterpret_s32_s64:
   9237 // CHECK-NEXT: ret
   9238 int32x2_t test_vreinterpret_s32_s64(int64x1_t a) {
   9239   return vreinterpret_s32_s64(a);
   9240 }
   9241 
   9242 // CHECK-LABEL: test_vreinterpret_s32_u8:
   9243 // CHECK-NEXT: ret
   9244 int32x2_t test_vreinterpret_s32_u8(uint8x8_t a) {
   9245   return vreinterpret_s32_u8(a);
   9246 }
   9247 
   9248 // CHECK-LABEL: test_vreinterpret_s32_u16:
   9249 // CHECK-NEXT: ret
   9250 int32x2_t test_vreinterpret_s32_u16(uint16x4_t a) {
   9251   return vreinterpret_s32_u16(a);
   9252 }
   9253 
   9254 // CHECK-LABEL: test_vreinterpret_s32_u32:
   9255 // CHECK-NEXT: ret
   9256 int32x2_t test_vreinterpret_s32_u32(uint32x2_t a) {
   9257   return vreinterpret_s32_u32(a);
   9258 }
   9259 
   9260 // CHECK-LABEL: test_vreinterpret_s32_u64:
   9261 // CHECK-NEXT: ret
   9262 int32x2_t test_vreinterpret_s32_u64(uint64x1_t a) {
   9263   return vreinterpret_s32_u64(a);
   9264 }
   9265 
   9266 // CHECK-LABEL: test_vreinterpret_s32_f16:
   9267 // CHECK-NEXT: ret
   9268 int32x2_t test_vreinterpret_s32_f16(float16x4_t a) {
   9269   return vreinterpret_s32_f16(a);
   9270 }
   9271 
   9272 // CHECK-LABEL: test_vreinterpret_s32_f32:
   9273 // CHECK-NEXT: ret
   9274 int32x2_t test_vreinterpret_s32_f32(float32x2_t a) {
   9275   return vreinterpret_s32_f32(a);
   9276 }
   9277 
   9278 // CHECK-LABEL: test_vreinterpret_s32_f64:
   9279 // CHECK-NEXT: ret
   9280 int32x2_t test_vreinterpret_s32_f64(float64x1_t a) {
   9281   return vreinterpret_s32_f64(a);
   9282 }
   9283 
   9284 // CHECK-LABEL: test_vreinterpret_s32_p8:
   9285 // CHECK-NEXT: ret
   9286 int32x2_t test_vreinterpret_s32_p8(poly8x8_t a) {
   9287   return vreinterpret_s32_p8(a);
   9288 }
   9289 
   9290 // CHECK-LABEL: test_vreinterpret_s32_p16:
   9291 // CHECK-NEXT: ret
   9292 int32x2_t test_vreinterpret_s32_p16(poly16x4_t a) {
   9293   return vreinterpret_s32_p16(a);
   9294 }
   9295 
   9296 // CHECK-LABEL: test_vreinterpret_s32_p64:
   9297 // CHECK-NEXT: ret
   9298 int32x2_t test_vreinterpret_s32_p64(poly64x1_t a) {
   9299   return vreinterpret_s32_p64(a);
   9300 }
   9301 
   9302 // CHECK-LABEL: test_vreinterpret_s64_s8:
   9303 // CHECK-NEXT: ret
   9304 int64x1_t test_vreinterpret_s64_s8(int8x8_t a) {
   9305   return vreinterpret_s64_s8(a);
   9306 }
   9307 
   9308 // CHECK-LABEL: test_vreinterpret_s64_s16:
   9309 // CHECK-NEXT: ret
   9310 int64x1_t test_vreinterpret_s64_s16(int16x4_t a) {
   9311   return vreinterpret_s64_s16(a);
   9312 }
   9313 
   9314 // CHECK-LABEL: test_vreinterpret_s64_s32:
   9315 // CHECK-NEXT: ret
   9316 int64x1_t test_vreinterpret_s64_s32(int32x2_t a) {
   9317   return vreinterpret_s64_s32(a);
   9318 }
   9319 
   9320 // CHECK-LABEL: test_vreinterpret_s64_u8:
   9321 // CHECK-NEXT: ret
   9322 int64x1_t test_vreinterpret_s64_u8(uint8x8_t a) {
   9323   return vreinterpret_s64_u8(a);
   9324 }
   9325 
   9326 // CHECK-LABEL: test_vreinterpret_s64_u16:
   9327 // CHECK-NEXT: ret
   9328 int64x1_t test_vreinterpret_s64_u16(uint16x4_t a) {
   9329   return vreinterpret_s64_u16(a);
   9330 }
   9331 
   9332 // CHECK-LABEL: test_vreinterpret_s64_u32:
   9333 // CHECK-NEXT: ret
   9334 int64x1_t test_vreinterpret_s64_u32(uint32x2_t a) {
   9335   return vreinterpret_s64_u32(a);
   9336 }
   9337 
   9338 // CHECK-LABEL: test_vreinterpret_s64_u64:
   9339 // CHECK-NEXT: ret
   9340 int64x1_t test_vreinterpret_s64_u64(uint64x1_t a) {
   9341   return vreinterpret_s64_u64(a);
   9342 }
   9343 
   9344 // CHECK-LABEL: test_vreinterpret_s64_f16:
   9345 // CHECK-NEXT: ret
   9346 int64x1_t test_vreinterpret_s64_f16(float16x4_t a) {
   9347   return vreinterpret_s64_f16(a);
   9348 }
   9349 
   9350 // CHECK-LABEL: test_vreinterpret_s64_f32:
   9351 // CHECK-NEXT: ret
   9352 int64x1_t test_vreinterpret_s64_f32(float32x2_t a) {
   9353   return vreinterpret_s64_f32(a);
   9354 }
   9355 
   9356 // CHECK-LABEL: test_vreinterpret_s64_f64:
   9357 // CHECK-NEXT: ret
   9358 int64x1_t test_vreinterpret_s64_f64(float64x1_t a) {
   9359   return vreinterpret_s64_f64(a);
   9360 }
   9361 
   9362 // CHECK-LABEL: test_vreinterpret_s64_p8:
   9363 // CHECK-NEXT: ret
   9364 int64x1_t test_vreinterpret_s64_p8(poly8x8_t a) {
   9365   return vreinterpret_s64_p8(a);
   9366 }
   9367 
   9368 // CHECK-LABEL: test_vreinterpret_s64_p16:
   9369 // CHECK-NEXT: ret
   9370 int64x1_t test_vreinterpret_s64_p16(poly16x4_t a) {
   9371   return vreinterpret_s64_p16(a);
   9372 }
   9373 
   9374 // CHECK-LABEL: test_vreinterpret_s64_p64:
   9375 // CHECK-NEXT: ret
   9376 int64x1_t test_vreinterpret_s64_p64(poly64x1_t a) {
   9377   return vreinterpret_s64_p64(a);
   9378 }
   9379 
   9380 // CHECK-LABEL: test_vreinterpret_u8_s8:
   9381 // CHECK-NEXT: ret
   9382 uint8x8_t test_vreinterpret_u8_s8(int8x8_t a) {
   9383   return vreinterpret_u8_s8(a);
   9384 }
   9385 
   9386 // CHECK-LABEL: test_vreinterpret_u8_s16:
   9387 // CHECK-NEXT: ret
   9388 uint8x8_t test_vreinterpret_u8_s16(int16x4_t a) {
   9389   return vreinterpret_u8_s16(a);
   9390 }
   9391 
   9392 // CHECK-LABEL: test_vreinterpret_u8_s32:
   9393 // CHECK-NEXT: ret
   9394 uint8x8_t test_vreinterpret_u8_s32(int32x2_t a) {
   9395   return vreinterpret_u8_s32(a);
   9396 }
   9397 
   9398 // CHECK-LABEL: test_vreinterpret_u8_s64:
   9399 // CHECK-NEXT: ret
   9400 uint8x8_t test_vreinterpret_u8_s64(int64x1_t a) {
   9401   return vreinterpret_u8_s64(a);
   9402 }
   9403 
   9404 // CHECK-LABEL: test_vreinterpret_u8_u16:
   9405 // CHECK-NEXT: ret
   9406 uint8x8_t test_vreinterpret_u8_u16(uint16x4_t a) {
   9407   return vreinterpret_u8_u16(a);
   9408 }
   9409 
   9410 // CHECK-LABEL: test_vreinterpret_u8_u32:
   9411 // CHECK-NEXT: ret
   9412 uint8x8_t test_vreinterpret_u8_u32(uint32x2_t a) {
   9413   return vreinterpret_u8_u32(a);
   9414 }
   9415 
   9416 // CHECK-LABEL: test_vreinterpret_u8_u64:
   9417 // CHECK-NEXT: ret
   9418 uint8x8_t test_vreinterpret_u8_u64(uint64x1_t a) {
   9419   return vreinterpret_u8_u64(a);
   9420 }
   9421 
   9422 // CHECK-LABEL: test_vreinterpret_u8_f16:
   9423 // CHECK-NEXT: ret
   9424 uint8x8_t test_vreinterpret_u8_f16(float16x4_t a) {
   9425   return vreinterpret_u8_f16(a);
   9426 }
   9427 
   9428 // CHECK-LABEL: test_vreinterpret_u8_f32:
   9429 // CHECK-NEXT: ret
   9430 uint8x8_t test_vreinterpret_u8_f32(float32x2_t a) {
   9431   return vreinterpret_u8_f32(a);
   9432 }
   9433 
   9434 // CHECK-LABEL: test_vreinterpret_u8_f64:
   9435 // CHECK-NEXT: ret
   9436 uint8x8_t test_vreinterpret_u8_f64(float64x1_t a) {
   9437   return vreinterpret_u8_f64(a);
   9438 }
   9439 
   9440 // CHECK-LABEL: test_vreinterpret_u8_p8:
   9441 // CHECK-NEXT: ret
   9442 uint8x8_t test_vreinterpret_u8_p8(poly8x8_t a) {
   9443   return vreinterpret_u8_p8(a);
   9444 }
   9445 
   9446 // CHECK-LABEL: test_vreinterpret_u8_p16:
   9447 // CHECK-NEXT: ret
   9448 uint8x8_t test_vreinterpret_u8_p16(poly16x4_t a) {
   9449   return vreinterpret_u8_p16(a);
   9450 }
   9451 
   9452 // CHECK-LABEL: test_vreinterpret_u8_p64:
   9453 // CHECK-NEXT: ret
   9454 uint8x8_t test_vreinterpret_u8_p64(poly64x1_t a) {
   9455   return vreinterpret_u8_p64(a);
   9456 }
   9457 
   9458 // CHECK-LABEL: test_vreinterpret_u16_s8:
   9459 // CHECK-NEXT: ret
   9460 uint16x4_t test_vreinterpret_u16_s8(int8x8_t a) {
   9461   return vreinterpret_u16_s8(a);
   9462 }
   9463 
   9464 // CHECK-LABEL: test_vreinterpret_u16_s16:
   9465 // CHECK-NEXT: ret
   9466 uint16x4_t test_vreinterpret_u16_s16(int16x4_t a) {
   9467   return vreinterpret_u16_s16(a);
   9468 }
   9469 
   9470 // CHECK-LABEL: test_vreinterpret_u16_s32:
   9471 // CHECK-NEXT: ret
   9472 uint16x4_t test_vreinterpret_u16_s32(int32x2_t a) {
   9473   return vreinterpret_u16_s32(a);
   9474 }
   9475 
   9476 // CHECK-LABEL: test_vreinterpret_u16_s64:
   9477 // CHECK-NEXT: ret
   9478 uint16x4_t test_vreinterpret_u16_s64(int64x1_t a) {
   9479   return vreinterpret_u16_s64(a);
   9480 }
   9481 
   9482 // CHECK-LABEL: test_vreinterpret_u16_u8:
   9483 // CHECK-NEXT: ret
   9484 uint16x4_t test_vreinterpret_u16_u8(uint8x8_t a) {
   9485   return vreinterpret_u16_u8(a);
   9486 }
   9487 
   9488 // CHECK-LABEL: test_vreinterpret_u16_u32:
   9489 // CHECK-NEXT: ret
   9490 uint16x4_t test_vreinterpret_u16_u32(uint32x2_t a) {
   9491   return vreinterpret_u16_u32(a);
   9492 }
   9493 
   9494 // CHECK-LABEL: test_vreinterpret_u16_u64:
   9495 // CHECK-NEXT: ret
   9496 uint16x4_t test_vreinterpret_u16_u64(uint64x1_t a) {
   9497   return vreinterpret_u16_u64(a);
   9498 }
   9499 
   9500 // CHECK-LABEL: test_vreinterpret_u16_f16:
   9501 // CHECK-NEXT: ret
   9502 uint16x4_t test_vreinterpret_u16_f16(float16x4_t a) {
   9503   return vreinterpret_u16_f16(a);
   9504 }
   9505 
   9506 // CHECK-LABEL: test_vreinterpret_u16_f32:
   9507 // CHECK-NEXT: ret
   9508 uint16x4_t test_vreinterpret_u16_f32(float32x2_t a) {
   9509   return vreinterpret_u16_f32(a);
   9510 }
   9511 
   9512 // CHECK-LABEL: test_vreinterpret_u16_f64:
   9513 // CHECK-NEXT: ret
   9514 uint16x4_t test_vreinterpret_u16_f64(float64x1_t a) {
   9515   return vreinterpret_u16_f64(a);
   9516 }
   9517 
   9518 // CHECK-LABEL: test_vreinterpret_u16_p8:
   9519 // CHECK-NEXT: ret
   9520 uint16x4_t test_vreinterpret_u16_p8(poly8x8_t a) {
   9521   return vreinterpret_u16_p8(a);
   9522 }
   9523 
   9524 // CHECK-LABEL: test_vreinterpret_u16_p16:
   9525 // CHECK-NEXT: ret
   9526 uint16x4_t test_vreinterpret_u16_p16(poly16x4_t a) {
   9527   return vreinterpret_u16_p16(a);
   9528 }
   9529 
   9530 // CHECK-LABEL: test_vreinterpret_u16_p64:
   9531 // CHECK-NEXT: ret
   9532 uint16x4_t test_vreinterpret_u16_p64(poly64x1_t a) {
   9533   return vreinterpret_u16_p64(a);
   9534 }
   9535 
   9536 // CHECK-LABEL: test_vreinterpret_u32_s8:
   9537 // CHECK-NEXT: ret
   9538 uint32x2_t test_vreinterpret_u32_s8(int8x8_t a) {
   9539   return vreinterpret_u32_s8(a);
   9540 }
   9541 
   9542 // CHECK-LABEL: test_vreinterpret_u32_s16:
   9543 // CHECK-NEXT: ret
   9544 uint32x2_t test_vreinterpret_u32_s16(int16x4_t a) {
   9545   return vreinterpret_u32_s16(a);
   9546 }
   9547 
   9548 // CHECK-LABEL: test_vreinterpret_u32_s32:
   9549 // CHECK-NEXT: ret
   9550 uint32x2_t test_vreinterpret_u32_s32(int32x2_t a) {
   9551   return vreinterpret_u32_s32(a);
   9552 }
   9553 
   9554 // CHECK-LABEL: test_vreinterpret_u32_s64:
   9555 // CHECK-NEXT: ret
   9556 uint32x2_t test_vreinterpret_u32_s64(int64x1_t a) {
   9557   return vreinterpret_u32_s64(a);
   9558 }
   9559 
   9560 // CHECK-LABEL: test_vreinterpret_u32_u8:
   9561 // CHECK-NEXT: ret
   9562 uint32x2_t test_vreinterpret_u32_u8(uint8x8_t a) {
   9563   return vreinterpret_u32_u8(a);
   9564 }
   9565 
   9566 // CHECK-LABEL: test_vreinterpret_u32_u16:
   9567 // CHECK-NEXT: ret
   9568 uint32x2_t test_vreinterpret_u32_u16(uint16x4_t a) {
   9569   return vreinterpret_u32_u16(a);
   9570 }
   9571 
   9572 // CHECK-LABEL: test_vreinterpret_u32_u64:
   9573 // CHECK-NEXT: ret
   9574 uint32x2_t test_vreinterpret_u32_u64(uint64x1_t a) {
   9575   return vreinterpret_u32_u64(a);
   9576 }
   9577 
   9578 // CHECK-LABEL: test_vreinterpret_u32_f16:
   9579 // CHECK-NEXT: ret
   9580 uint32x2_t test_vreinterpret_u32_f16(float16x4_t a) {
   9581   return vreinterpret_u32_f16(a);
   9582 }
   9583 
   9584 // CHECK-LABEL: test_vreinterpret_u32_f32:
   9585 // CHECK-NEXT: ret
   9586 uint32x2_t test_vreinterpret_u32_f32(float32x2_t a) {
   9587   return vreinterpret_u32_f32(a);
   9588 }
   9589 
   9590 // CHECK-LABEL: test_vreinterpret_u32_f64:
   9591 // CHECK-NEXT: ret
   9592 uint32x2_t test_vreinterpret_u32_f64(float64x1_t a) {
   9593   return vreinterpret_u32_f64(a);
   9594 }
   9595 
   9596 // CHECK-LABEL: test_vreinterpret_u32_p8:
   9597 // CHECK-NEXT: ret
   9598 uint32x2_t test_vreinterpret_u32_p8(poly8x8_t a) {
   9599   return vreinterpret_u32_p8(a);
   9600 }
   9601 
   9602 // CHECK-LABEL: test_vreinterpret_u32_p16:
   9603 // CHECK-NEXT: ret
   9604 uint32x2_t test_vreinterpret_u32_p16(poly16x4_t a) {
   9605   return vreinterpret_u32_p16(a);
   9606 }
   9607 
   9608 // CHECK-LABEL: test_vreinterpret_u32_p64:
   9609 // CHECK-NEXT: ret
   9610 uint32x2_t test_vreinterpret_u32_p64(poly64x1_t a) {
   9611   return vreinterpret_u32_p64(a);
   9612 }
   9613 
   9614 // CHECK-LABEL: test_vreinterpret_u64_s8:
   9615 // CHECK-NEXT: ret
   9616 uint64x1_t test_vreinterpret_u64_s8(int8x8_t a) {
   9617   return vreinterpret_u64_s8(a);
   9618 }
   9619 
   9620 // CHECK-LABEL: test_vreinterpret_u64_s16:
   9621 // CHECK-NEXT: ret
   9622 uint64x1_t test_vreinterpret_u64_s16(int16x4_t a) {
   9623   return vreinterpret_u64_s16(a);
   9624 }
   9625 
   9626 // CHECK-LABEL: test_vreinterpret_u64_s32:
   9627 // CHECK-NEXT: ret
   9628 uint64x1_t test_vreinterpret_u64_s32(int32x2_t a) {
   9629   return vreinterpret_u64_s32(a);
   9630 }
   9631 
   9632 // CHECK-LABEL: test_vreinterpret_u64_s64:
   9633 // CHECK-NEXT: ret
   9634 uint64x1_t test_vreinterpret_u64_s64(int64x1_t a) {
   9635   return vreinterpret_u64_s64(a);
   9636 }
   9637 
   9638 // CHECK-LABEL: test_vreinterpret_u64_u8:
   9639 // CHECK-NEXT: ret
   9640 uint64x1_t test_vreinterpret_u64_u8(uint8x8_t a) {
   9641   return vreinterpret_u64_u8(a);
   9642 }
   9643 
   9644 // CHECK-LABEL: test_vreinterpret_u64_u16:
   9645 // CHECK-NEXT: ret
   9646 uint64x1_t test_vreinterpret_u64_u16(uint16x4_t a) {
   9647   return vreinterpret_u64_u16(a);
   9648 }
   9649 
   9650 // CHECK-LABEL: test_vreinterpret_u64_u32:
   9651 // CHECK-NEXT: ret
   9652 uint64x1_t test_vreinterpret_u64_u32(uint32x2_t a) {
   9653   return vreinterpret_u64_u32(a);
   9654 }
   9655 
   9656 // CHECK-LABEL: test_vreinterpret_u64_f16:
   9657 // CHECK-NEXT: ret
   9658 uint64x1_t test_vreinterpret_u64_f16(float16x4_t a) {
   9659   return vreinterpret_u64_f16(a);
   9660 }
   9661 
   9662 // CHECK-LABEL: test_vreinterpret_u64_f32:
   9663 // CHECK-NEXT: ret
   9664 uint64x1_t test_vreinterpret_u64_f32(float32x2_t a) {
   9665   return vreinterpret_u64_f32(a);
   9666 }
   9667 
   9668 // CHECK-LABEL: test_vreinterpret_u64_f64:
   9669 // CHECK-NEXT: ret
   9670 uint64x1_t test_vreinterpret_u64_f64(float64x1_t a) {
   9671   return vreinterpret_u64_f64(a);
   9672 }
   9673 
   9674 // CHECK-LABEL: test_vreinterpret_u64_p8:
   9675 // CHECK-NEXT: ret
   9676 uint64x1_t test_vreinterpret_u64_p8(poly8x8_t a) {
   9677   return vreinterpret_u64_p8(a);
   9678 }
   9679 
   9680 // CHECK-LABEL: test_vreinterpret_u64_p16:
   9681 // CHECK-NEXT: ret
   9682 uint64x1_t test_vreinterpret_u64_p16(poly16x4_t a) {
   9683   return vreinterpret_u64_p16(a);
   9684 }
   9685 
   9686 // CHECK-LABEL: test_vreinterpret_u64_p64:
   9687 // CHECK-NEXT: ret
   9688 uint64x1_t test_vreinterpret_u64_p64(poly64x1_t a) {
   9689   return vreinterpret_u64_p64(a);
   9690 }
   9691 
   9692 // CHECK-LABEL: test_vreinterpret_f16_s8:
   9693 // CHECK-NEXT: ret
   9694 float16x4_t test_vreinterpret_f16_s8(int8x8_t a) {
   9695   return vreinterpret_f16_s8(a);
   9696 }
   9697 
   9698 // CHECK-LABEL: test_vreinterpret_f16_s16:
   9699 // CHECK-NEXT: ret
   9700 float16x4_t test_vreinterpret_f16_s16(int16x4_t a) {
   9701   return vreinterpret_f16_s16(a);
   9702 }
   9703 
   9704 // CHECK-LABEL: test_vreinterpret_f16_s32:
   9705 // CHECK-NEXT: ret
   9706 float16x4_t test_vreinterpret_f16_s32(int32x2_t a) {
   9707   return vreinterpret_f16_s32(a);
   9708 }
   9709 
   9710 // CHECK-LABEL: test_vreinterpret_f16_s64:
   9711 // CHECK-NEXT: ret
   9712 float16x4_t test_vreinterpret_f16_s64(int64x1_t a) {
   9713   return vreinterpret_f16_s64(a);
   9714 }
   9715 
   9716 // CHECK-LABEL: test_vreinterpret_f16_u8:
   9717 // CHECK-NEXT: ret
   9718 float16x4_t test_vreinterpret_f16_u8(uint8x8_t a) {
   9719   return vreinterpret_f16_u8(a);
   9720 }
   9721 
   9722 // CHECK-LABEL: test_vreinterpret_f16_u16:
   9723 // CHECK-NEXT: ret
   9724 float16x4_t test_vreinterpret_f16_u16(uint16x4_t a) {
   9725   return vreinterpret_f16_u16(a);
   9726 }
   9727 
   9728 // CHECK-LABEL: test_vreinterpret_f16_u32:
   9729 // CHECK-NEXT: ret
   9730 float16x4_t test_vreinterpret_f16_u32(uint32x2_t a) {
   9731   return vreinterpret_f16_u32(a);
   9732 }
   9733 
   9734 // CHECK-LABEL: test_vreinterpret_f16_u64:
   9735 // CHECK-NEXT: ret
   9736 float16x4_t test_vreinterpret_f16_u64(uint64x1_t a) {
   9737   return vreinterpret_f16_u64(a);
   9738 }
   9739 
   9740 // CHECK-LABEL: test_vreinterpret_f16_f32:
   9741 // CHECK-NEXT: ret
   9742 float16x4_t test_vreinterpret_f16_f32(float32x2_t a) {
   9743   return vreinterpret_f16_f32(a);
   9744 }
   9745 
   9746 // CHECK-LABEL: test_vreinterpret_f16_f64:
   9747 // CHECK-NEXT: ret
   9748 float16x4_t test_vreinterpret_f16_f64(float64x1_t a) {
   9749   return vreinterpret_f16_f64(a);
   9750 }
   9751 
   9752 // CHECK-LABEL: test_vreinterpret_f16_p8:
   9753 // CHECK-NEXT: ret
   9754 float16x4_t test_vreinterpret_f16_p8(poly8x8_t a) {
   9755   return vreinterpret_f16_p8(a);
   9756 }
   9757 
   9758 // CHECK-LABEL: test_vreinterpret_f16_p16:
   9759 // CHECK-NEXT: ret
   9760 float16x4_t test_vreinterpret_f16_p16(poly16x4_t a) {
   9761   return vreinterpret_f16_p16(a);
   9762 }
   9763 
   9764 // CHECK-LABEL: test_vreinterpret_f16_p64:
   9765 // CHECK-NEXT: ret
   9766 float16x4_t test_vreinterpret_f16_p64(poly64x1_t a) {
   9767   return vreinterpret_f16_p64(a);
   9768 }
   9769 
   9770 // CHECK-LABEL: test_vreinterpret_f32_s8:
   9771 // CHECK-NEXT: ret
   9772 float32x2_t test_vreinterpret_f32_s8(int8x8_t a) {
   9773   return vreinterpret_f32_s8(a);
   9774 }
   9775 
   9776 // CHECK-LABEL: test_vreinterpret_f32_s16:
   9777 // CHECK-NEXT: ret
   9778 float32x2_t test_vreinterpret_f32_s16(int16x4_t a) {
   9779   return vreinterpret_f32_s16(a);
   9780 }
   9781 
   9782 // CHECK-LABEL: test_vreinterpret_f32_s32:
   9783 // CHECK-NEXT: ret
   9784 float32x2_t test_vreinterpret_f32_s32(int32x2_t a) {
   9785   return vreinterpret_f32_s32(a);
   9786 }
   9787 
   9788 // CHECK-LABEL: test_vreinterpret_f32_s64:
   9789 // CHECK-NEXT: ret
   9790 float32x2_t test_vreinterpret_f32_s64(int64x1_t a) {
   9791   return vreinterpret_f32_s64(a);
   9792 }
   9793 
   9794 // CHECK-LABEL: test_vreinterpret_f32_u8:
   9795 // CHECK-NEXT: ret
   9796 float32x2_t test_vreinterpret_f32_u8(uint8x8_t a) {
   9797   return vreinterpret_f32_u8(a);
   9798 }
   9799 
   9800 // CHECK-LABEL: test_vreinterpret_f32_u16:
   9801 // CHECK-NEXT: ret
   9802 float32x2_t test_vreinterpret_f32_u16(uint16x4_t a) {
   9803   return vreinterpret_f32_u16(a);
   9804 }
   9805 
   9806 // CHECK-LABEL: test_vreinterpret_f32_u32:
   9807 // CHECK-NEXT: ret
   9808 float32x2_t test_vreinterpret_f32_u32(uint32x2_t a) {
   9809   return vreinterpret_f32_u32(a);
   9810 }
   9811 
   9812 // CHECK-LABEL: test_vreinterpret_f32_u64:
   9813 // CHECK-NEXT: ret
   9814 float32x2_t test_vreinterpret_f32_u64(uint64x1_t a) {
   9815   return vreinterpret_f32_u64(a);
   9816 }
   9817 
   9818 // CHECK-LABEL: test_vreinterpret_f32_f16:
   9819 // CHECK-NEXT: ret
   9820 float32x2_t test_vreinterpret_f32_f16(float16x4_t a) {
   9821   return vreinterpret_f32_f16(a);
   9822 }
   9823 
   9824 // CHECK-LABEL: test_vreinterpret_f32_f64:
   9825 // CHECK-NEXT: ret
   9826 float32x2_t test_vreinterpret_f32_f64(float64x1_t a) {
   9827   return vreinterpret_f32_f64(a);
   9828 }
   9829 
   9830 // CHECK-LABEL: test_vreinterpret_f32_p8:
   9831 // CHECK-NEXT: ret
   9832 float32x2_t test_vreinterpret_f32_p8(poly8x8_t a) {
   9833   return vreinterpret_f32_p8(a);
   9834 }
   9835 
   9836 // CHECK-LABEL: test_vreinterpret_f32_p16:
   9837 // CHECK-NEXT: ret
   9838 float32x2_t test_vreinterpret_f32_p16(poly16x4_t a) {
   9839   return vreinterpret_f32_p16(a);
   9840 }
   9841 
   9842 // CHECK-LABEL: test_vreinterpret_f32_p64:
   9843 // CHECK-NEXT: ret
   9844 float32x2_t test_vreinterpret_f32_p64(poly64x1_t a) {
   9845   return vreinterpret_f32_p64(a);
   9846 }
   9847 
   9848 // CHECK-LABEL: test_vreinterpret_f64_s8:
   9849 // CHECK-NEXT: ret
   9850 float64x1_t test_vreinterpret_f64_s8(int8x8_t a) {
   9851   return vreinterpret_f64_s8(a);
   9852 }
   9853 
   9854 // CHECK-LABEL: test_vreinterpret_f64_s16:
   9855 // CHECK-NEXT: ret
   9856 float64x1_t test_vreinterpret_f64_s16(int16x4_t a) {
   9857   return vreinterpret_f64_s16(a);
   9858 }
   9859 
   9860 // CHECK-LABEL: test_vreinterpret_f64_s32:
   9861 // CHECK-NEXT: ret
   9862 float64x1_t test_vreinterpret_f64_s32(int32x2_t a) {
   9863   return vreinterpret_f64_s32(a);
   9864 }
   9865 
   9866 // CHECK-LABEL: test_vreinterpret_f64_s64:
   9867 // CHECK-NEXT: ret
   9868 float64x1_t test_vreinterpret_f64_s64(int64x1_t a) {
   9869   return vreinterpret_f64_s64(a);
   9870 }
   9871 
   9872 // CHECK-LABEL: test_vreinterpret_f64_u8:
   9873 // CHECK-NEXT: ret
   9874 float64x1_t test_vreinterpret_f64_u8(uint8x8_t a) {
   9875   return vreinterpret_f64_u8(a);
   9876 }
   9877 
   9878 // CHECK-LABEL: test_vreinterpret_f64_u16:
   9879 // CHECK-NEXT: ret
   9880 float64x1_t test_vreinterpret_f64_u16(uint16x4_t a) {
   9881   return vreinterpret_f64_u16(a);
   9882 }
   9883 
   9884 // CHECK-LABEL: test_vreinterpret_f64_u32:
   9885 // CHECK-NEXT: ret
   9886 float64x1_t test_vreinterpret_f64_u32(uint32x2_t a) {
   9887   return vreinterpret_f64_u32(a);
   9888 }
   9889 
   9890 // CHECK-LABEL: test_vreinterpret_f64_u64:
   9891 // CHECK-NEXT: ret
   9892 float64x1_t test_vreinterpret_f64_u64(uint64x1_t a) {
   9893   return vreinterpret_f64_u64(a);
   9894 }
   9895 
   9896 // CHECK-LABEL: test_vreinterpret_f64_f16:
   9897 // CHECK-NEXT: ret
   9898 float64x1_t test_vreinterpret_f64_f16(float16x4_t a) {
   9899   return vreinterpret_f64_f16(a);
   9900 }
   9901 
   9902 // CHECK-LABEL: test_vreinterpret_f64_f32:
   9903 // CHECK-NEXT: ret
   9904 float64x1_t test_vreinterpret_f64_f32(float32x2_t a) {
   9905   return vreinterpret_f64_f32(a);
   9906 }
   9907 
   9908 // CHECK-LABEL: test_vreinterpret_f64_p8:
   9909 // CHECK-NEXT: ret
   9910 float64x1_t test_vreinterpret_f64_p8(poly8x8_t a) {
   9911   return vreinterpret_f64_p8(a);
   9912 }
   9913 
   9914 // CHECK-LABEL: test_vreinterpret_f64_p16:
   9915 // CHECK-NEXT: ret
   9916 float64x1_t test_vreinterpret_f64_p16(poly16x4_t a) {
   9917   return vreinterpret_f64_p16(a);
   9918 }
   9919 
   9920 // CHECK-LABEL: test_vreinterpret_f64_p64:
   9921 // CHECK-NEXT: ret
   9922 float64x1_t test_vreinterpret_f64_p64(poly64x1_t a) {
   9923   return vreinterpret_f64_p64(a);
   9924 }
   9925 
   9926 // CHECK-LABEL: test_vreinterpret_p8_s8:
   9927 // CHECK-NEXT: ret
   9928 poly8x8_t test_vreinterpret_p8_s8(int8x8_t a) {
   9929   return vreinterpret_p8_s8(a);
   9930 }
   9931 
   9932 // CHECK-LABEL: test_vreinterpret_p8_s16:
   9933 // CHECK-NEXT: ret
   9934 poly8x8_t test_vreinterpret_p8_s16(int16x4_t a) {
   9935   return vreinterpret_p8_s16(a);
   9936 }
   9937 
   9938 // CHECK-LABEL: test_vreinterpret_p8_s32:
   9939 // CHECK-NEXT: ret
   9940 poly8x8_t test_vreinterpret_p8_s32(int32x2_t a) {
   9941   return vreinterpret_p8_s32(a);
   9942 }
   9943 
   9944 // CHECK-LABEL: test_vreinterpret_p8_s64:
   9945 // CHECK-NEXT: ret
   9946 poly8x8_t test_vreinterpret_p8_s64(int64x1_t a) {
   9947   return vreinterpret_p8_s64(a);
   9948 }
   9949 
   9950 // CHECK-LABEL: test_vreinterpret_p8_u8:
   9951 // CHECK-NEXT: ret
   9952 poly8x8_t test_vreinterpret_p8_u8(uint8x8_t a) {
   9953   return vreinterpret_p8_u8(a);
   9954 }
   9955 
   9956 // CHECK-LABEL: test_vreinterpret_p8_u16:
   9957 // CHECK-NEXT: ret
   9958 poly8x8_t test_vreinterpret_p8_u16(uint16x4_t a) {
   9959   return vreinterpret_p8_u16(a);
   9960 }
   9961 
   9962 // CHECK-LABEL: test_vreinterpret_p8_u32:
   9963 // CHECK-NEXT: ret
   9964 poly8x8_t test_vreinterpret_p8_u32(uint32x2_t a) {
   9965   return vreinterpret_p8_u32(a);
   9966 }
   9967 
   9968 // CHECK-LABEL: test_vreinterpret_p8_u64:
   9969 // CHECK-NEXT: ret
   9970 poly8x8_t test_vreinterpret_p8_u64(uint64x1_t a) {
   9971   return vreinterpret_p8_u64(a);
   9972 }
   9973 
   9974 // CHECK-LABEL: test_vreinterpret_p8_f16:
   9975 // CHECK-NEXT: ret
   9976 poly8x8_t test_vreinterpret_p8_f16(float16x4_t a) {
   9977   return vreinterpret_p8_f16(a);
   9978 }
   9979 
   9980 // CHECK-LABEL: test_vreinterpret_p8_f32:
   9981 // CHECK-NEXT: ret
   9982 poly8x8_t test_vreinterpret_p8_f32(float32x2_t a) {
   9983   return vreinterpret_p8_f32(a);
   9984 }
   9985 
   9986 // CHECK-LABEL: test_vreinterpret_p8_f64:
   9987 // CHECK-NEXT: ret
   9988 poly8x8_t test_vreinterpret_p8_f64(float64x1_t a) {
   9989   return vreinterpret_p8_f64(a);
   9990 }
   9991 
   9992 // CHECK-LABEL: test_vreinterpret_p8_p16:
   9993 // CHECK-NEXT: ret
   9994 poly8x8_t test_vreinterpret_p8_p16(poly16x4_t a) {
   9995   return vreinterpret_p8_p16(a);
   9996 }
   9997 
   9998 // CHECK-LABEL: test_vreinterpret_p8_p64:
   9999 // CHECK-NEXT: ret
   10000 poly8x8_t test_vreinterpret_p8_p64(poly64x1_t a) {
   10001   return vreinterpret_p8_p64(a);
   10002 }
   10003 
   10004 // CHECK-LABEL: test_vreinterpret_p16_s8:
   10005 // CHECK-NEXT: ret
   10006 poly16x4_t test_vreinterpret_p16_s8(int8x8_t a) {
   10007   return vreinterpret_p16_s8(a);
   10008 }
   10009 
   10010 // CHECK-LABEL: test_vreinterpret_p16_s16:
   10011 // CHECK-NEXT: ret
   10012 poly16x4_t test_vreinterpret_p16_s16(int16x4_t a) {
   10013   return vreinterpret_p16_s16(a);
   10014 }
   10015 
   10016 // CHECK-LABEL: test_vreinterpret_p16_s32:
   10017 // CHECK-NEXT: ret
   10018 poly16x4_t test_vreinterpret_p16_s32(int32x2_t a) {
   10019   return vreinterpret_p16_s32(a);
   10020 }
   10021 
   10022 // CHECK-LABEL: test_vreinterpret_p16_s64:
   10023 // CHECK-NEXT: ret
   10024 poly16x4_t test_vreinterpret_p16_s64(int64x1_t a) {
   10025   return vreinterpret_p16_s64(a);
   10026 }
   10027 
   10028 // CHECK-LABEL: test_vreinterpret_p16_u8:
   10029 // CHECK-NEXT: ret
   10030 poly16x4_t test_vreinterpret_p16_u8(uint8x8_t a) {
   10031   return vreinterpret_p16_u8(a);
   10032 }
   10033 
   10034 // CHECK-LABEL: test_vreinterpret_p16_u16:
   10035 // CHECK-NEXT: ret
   10036 poly16x4_t test_vreinterpret_p16_u16(uint16x4_t a) {
   10037   return vreinterpret_p16_u16(a);
   10038 }
   10039 
   10040 // CHECK-LABEL: test_vreinterpret_p16_u32:
   10041 // CHECK-NEXT: ret
   10042 poly16x4_t test_vreinterpret_p16_u32(uint32x2_t a) {
   10043   return vreinterpret_p16_u32(a);
   10044 }
   10045 
   10046 // CHECK-LABEL: test_vreinterpret_p16_u64:
   10047 // CHECK-NEXT: ret
   10048 poly16x4_t test_vreinterpret_p16_u64(uint64x1_t a) {
   10049   return vreinterpret_p16_u64(a);
   10050 }
   10051 
   10052 // CHECK-LABEL: test_vreinterpret_p16_f16:
   10053 // CHECK-NEXT: ret
   10054 poly16x4_t test_vreinterpret_p16_f16(float16x4_t a) {
   10055   return vreinterpret_p16_f16(a);
   10056 }
   10057 
   10058 // CHECK-LABEL: test_vreinterpret_p16_f32:
   10059 // CHECK-NEXT: ret
   10060 poly16x4_t test_vreinterpret_p16_f32(float32x2_t a) {
   10061   return vreinterpret_p16_f32(a);
   10062 }
   10063 
   10064 // CHECK-LABEL: test_vreinterpret_p16_f64:
   10065 // CHECK-NEXT: ret
   10066 poly16x4_t test_vreinterpret_p16_f64(float64x1_t a) {
   10067   return vreinterpret_p16_f64(a);
   10068 }
   10069 
   10070 // CHECK-LABEL: test_vreinterpret_p16_p8:
   10071 // CHECK-NEXT: ret
   10072 poly16x4_t test_vreinterpret_p16_p8(poly8x8_t a) {
   10073   return vreinterpret_p16_p8(a);
   10074 }
   10075 
   10076 // CHECK-LABEL: test_vreinterpret_p16_p64:
   10077 // CHECK-NEXT: ret
   10078 poly16x4_t test_vreinterpret_p16_p64(poly64x1_t a) {
   10079   return vreinterpret_p16_p64(a);
   10080 }
   10081 
   10082 // CHECK-LABEL: test_vreinterpret_p64_s8:
   10083 // CHECK-NEXT: ret
   10084 poly64x1_t test_vreinterpret_p64_s8(int8x8_t a) {
   10085   return vreinterpret_p64_s8(a);
   10086 }
   10087 
   10088 // CHECK-LABEL: test_vreinterpret_p64_s16:
   10089 // CHECK-NEXT: ret
   10090 poly64x1_t test_vreinterpret_p64_s16(int16x4_t a) {
   10091   return vreinterpret_p64_s16(a);
   10092 }
   10093 
   10094 // CHECK-LABEL: test_vreinterpret_p64_s32:
   10095 // CHECK-NEXT: ret
   10096 poly64x1_t test_vreinterpret_p64_s32(int32x2_t a) {
   10097   return vreinterpret_p64_s32(a);
   10098 }
   10099 
   10100 // CHECK-LABEL: test_vreinterpret_p64_s64:
   10101 // CHECK-NEXT: ret
   10102 poly64x1_t test_vreinterpret_p64_s64(int64x1_t a) {
   10103   return vreinterpret_p64_s64(a);
   10104 }
   10105 
   10106 // CHECK-LABEL: test_vreinterpret_p64_u8:
   10107 // CHECK-NEXT: ret
   10108 poly64x1_t test_vreinterpret_p64_u8(uint8x8_t a) {
   10109   return vreinterpret_p64_u8(a);
   10110 }
   10111 
   10112 // CHECK-LABEL: test_vreinterpret_p64_u16:
   10113 // CHECK-NEXT: ret
   10114 poly64x1_t test_vreinterpret_p64_u16(uint16x4_t a) {
   10115   return vreinterpret_p64_u16(a);
   10116 }
   10117 
   10118 // CHECK-LABEL: test_vreinterpret_p64_u32:
   10119 // CHECK-NEXT: ret
   10120 poly64x1_t test_vreinterpret_p64_u32(uint32x2_t a) {
   10121   return vreinterpret_p64_u32(a);
   10122 }
   10123 
   10124 // CHECK-LABEL: test_vreinterpret_p64_u64:
   10125 // CHECK-NEXT: ret
   10126 poly64x1_t test_vreinterpret_p64_u64(uint64x1_t a) {
   10127   return vreinterpret_p64_u64(a);
   10128 }
   10129 
   10130 // CHECK-LABEL: test_vreinterpret_p64_f16:
   10131 // CHECK-NEXT: ret
   10132 poly64x1_t test_vreinterpret_p64_f16(float16x4_t a) {
   10133   return vreinterpret_p64_f16(a);
   10134 }
   10135 
   10136 // CHECK-LABEL: test_vreinterpret_p64_f32:
   10137 // CHECK-NEXT: ret
   10138 poly64x1_t test_vreinterpret_p64_f32(float32x2_t a) {
   10139   return vreinterpret_p64_f32(a);
   10140 }
   10141 
   10142 // CHECK-LABEL: test_vreinterpret_p64_f64:
   10143 // CHECK-NEXT: ret
   10144 poly64x1_t test_vreinterpret_p64_f64(float64x1_t a) {
   10145   return vreinterpret_p64_f64(a);
   10146 }
   10147 
   10148 // CHECK-LABEL: test_vreinterpret_p64_p8:
   10149 // CHECK-NEXT: ret
   10150 poly64x1_t test_vreinterpret_p64_p8(poly8x8_t a) {
   10151   return vreinterpret_p64_p8(a);
   10152 }
   10153 
   10154 // CHECK-LABEL: test_vreinterpret_p64_p16:
   10155 // CHECK-NEXT: ret
   10156 poly64x1_t test_vreinterpret_p64_p16(poly16x4_t a) {
   10157   return vreinterpret_p64_p16(a);
   10158 }
   10159 
   10160 // CHECK-LABEL: test_vreinterpretq_s8_s16:
   10161 // CHECK-NEXT: ret
   10162 int8x16_t test_vreinterpretq_s8_s16(int16x8_t a) {
   10163   return vreinterpretq_s8_s16(a);
   10164 }
   10165 
   10166 // CHECK-LABEL: test_vreinterpretq_s8_s32:
   10167 // CHECK-NEXT: ret
   10168 int8x16_t test_vreinterpretq_s8_s32(int32x4_t a) {
   10169   return vreinterpretq_s8_s32(a);
   10170 }
   10171 
   10172 // CHECK-LABEL: test_vreinterpretq_s8_s64:
   10173 // CHECK-NEXT: ret
   10174 int8x16_t test_vreinterpretq_s8_s64(int64x2_t a) {
   10175   return vreinterpretq_s8_s64(a);
   10176 }
   10177 
   10178 // CHECK-LABEL: test_vreinterpretq_s8_u8:
   10179 // CHECK-NEXT: ret
   10180 int8x16_t test_vreinterpretq_s8_u8(uint8x16_t a) {
   10181   return vreinterpretq_s8_u8(a);
   10182 }
   10183 
   10184 // CHECK-LABEL: test_vreinterpretq_s8_u16:
   10185 // CHECK-NEXT: ret
   10186 int8x16_t test_vreinterpretq_s8_u16(uint16x8_t a) {
   10187   return vreinterpretq_s8_u16(a);
   10188 }
   10189 
   10190 // CHECK-LABEL: test_vreinterpretq_s8_u32:
   10191 // CHECK-NEXT: ret
   10192 int8x16_t test_vreinterpretq_s8_u32(uint32x4_t a) {
   10193   return vreinterpretq_s8_u32(a);
   10194 }
   10195 
   10196 // CHECK-LABEL: test_vreinterpretq_s8_u64:
   10197 // CHECK-NEXT: ret
   10198 int8x16_t test_vreinterpretq_s8_u64(uint64x2_t a) {
   10199   return vreinterpretq_s8_u64(a);
   10200 }
   10201 
   10202 // CHECK-LABEL: test_vreinterpretq_s8_f16:
   10203 // CHECK-NEXT: ret
   10204 int8x16_t test_vreinterpretq_s8_f16(float16x8_t a) {
   10205   return vreinterpretq_s8_f16(a);
   10206 }
   10207 
   10208 // CHECK-LABEL: test_vreinterpretq_s8_f32:
   10209 // CHECK-NEXT: ret
   10210 int8x16_t test_vreinterpretq_s8_f32(float32x4_t a) {
   10211   return vreinterpretq_s8_f32(a);
   10212 }
   10213 
   10214 // CHECK-LABEL: test_vreinterpretq_s8_f64:
   10215 // CHECK-NEXT: ret
   10216 int8x16_t test_vreinterpretq_s8_f64(float64x2_t a) {
   10217   return vreinterpretq_s8_f64(a);
   10218 }
   10219 
   10220 // CHECK-LABEL: test_vreinterpretq_s8_p8:
   10221 // CHECK-NEXT: ret
   10222 int8x16_t test_vreinterpretq_s8_p8(poly8x16_t a) {
   10223   return vreinterpretq_s8_p8(a);
   10224 }
   10225 
   10226 // CHECK-LABEL: test_vreinterpretq_s8_p16:
   10227 // CHECK-NEXT: ret
   10228 int8x16_t test_vreinterpretq_s8_p16(poly16x8_t a) {
   10229   return vreinterpretq_s8_p16(a);
   10230 }
   10231 
   10232 // CHECK-LABEL: test_vreinterpretq_s8_p64:
   10233 // CHECK-NEXT: ret
   10234 int8x16_t test_vreinterpretq_s8_p64(poly64x2_t a) {
   10235   return vreinterpretq_s8_p64(a);
   10236 }
   10237 
   10238 // CHECK-LABEL: test_vreinterpretq_s16_s8:
   10239 // CHECK-NEXT: ret
   10240 int16x8_t test_vreinterpretq_s16_s8(int8x16_t a) {
   10241   return vreinterpretq_s16_s8(a);
   10242 }
   10243 
   10244 // CHECK-LABEL: test_vreinterpretq_s16_s32:
   10245 // CHECK-NEXT: ret
   10246 int16x8_t test_vreinterpretq_s16_s32(int32x4_t a) {
   10247   return vreinterpretq_s16_s32(a);
   10248 }
   10249 
   10250 // CHECK-LABEL: test_vreinterpretq_s16_s64:
   10251 // CHECK-NEXT: ret
   10252 int16x8_t test_vreinterpretq_s16_s64(int64x2_t a) {
   10253   return vreinterpretq_s16_s64(a);
   10254 }
   10255 
   10256 // CHECK-LABEL: test_vreinterpretq_s16_u8:
   10257 // CHECK-NEXT: ret
   10258 int16x8_t test_vreinterpretq_s16_u8(uint8x16_t a) {
   10259   return vreinterpretq_s16_u8(a);
   10260 }
   10261 
   10262 // CHECK-LABEL: test_vreinterpretq_s16_u16:
   10263 // CHECK-NEXT: ret
   10264 int16x8_t test_vreinterpretq_s16_u16(uint16x8_t a) {
   10265   return vreinterpretq_s16_u16(a);
   10266 }
   10267 
   10268 // CHECK-LABEL: test_vreinterpretq_s16_u32:
   10269 // CHECK-NEXT: ret
   10270 int16x8_t test_vreinterpretq_s16_u32(uint32x4_t a) {
   10271   return vreinterpretq_s16_u32(a);
   10272 }
   10273 
   10274 // CHECK-LABEL: test_vreinterpretq_s16_u64:
   10275 // CHECK-NEXT: ret
   10276 int16x8_t test_vreinterpretq_s16_u64(uint64x2_t a) {
   10277   return vreinterpretq_s16_u64(a);
   10278 }
   10279 
   10280 // CHECK-LABEL: test_vreinterpretq_s16_f16:
   10281 // CHECK-NEXT: ret
   10282 int16x8_t test_vreinterpretq_s16_f16(float16x8_t a) {
   10283   return vreinterpretq_s16_f16(a);
   10284 }
   10285 
   10286 // CHECK-LABEL: test_vreinterpretq_s16_f32:
   10287 // CHECK-NEXT: ret
   10288 int16x8_t test_vreinterpretq_s16_f32(float32x4_t a) {
   10289   return vreinterpretq_s16_f32(a);
   10290 }
   10291 
   10292 // CHECK-LABEL: test_vreinterpretq_s16_f64:
   10293 // CHECK-NEXT: ret
   10294 int16x8_t test_vreinterpretq_s16_f64(float64x2_t a) {
   10295   return vreinterpretq_s16_f64(a);
   10296 }
   10297 
   10298 // CHECK-LABEL: test_vreinterpretq_s16_p8:
   10299 // CHECK-NEXT: ret
   10300 int16x8_t test_vreinterpretq_s16_p8(poly8x16_t a) {
   10301   return vreinterpretq_s16_p8(a);
   10302 }
   10303 
   10304 // CHECK-LABEL: test_vreinterpretq_s16_p16:
   10305 // CHECK-NEXT: ret
   10306 int16x8_t test_vreinterpretq_s16_p16(poly16x8_t a) {
   10307   return vreinterpretq_s16_p16(a);
   10308 }
   10309 
   10310 // CHECK-LABEL: test_vreinterpretq_s16_p64:
   10311 // CHECK-NEXT: ret
   10312 int16x8_t test_vreinterpretq_s16_p64(poly64x2_t a) {
   10313   return vreinterpretq_s16_p64(a);
   10314 }
   10315 
   10316 // CHECK-LABEL: test_vreinterpretq_s32_s8:
   10317 // CHECK-NEXT: ret
   10318 int32x4_t test_vreinterpretq_s32_s8(int8x16_t a) {
   10319   return vreinterpretq_s32_s8(a);
   10320 }
   10321 
   10322 // CHECK-LABEL: test_vreinterpretq_s32_s16:
   10323 // CHECK-NEXT: ret
   10324 int32x4_t test_vreinterpretq_s32_s16(int16x8_t a) {
   10325   return vreinterpretq_s32_s16(a);
   10326 }
   10327 
   10328 // CHECK-LABEL: test_vreinterpretq_s32_s64:
   10329 // CHECK-NEXT: ret
   10330 int32x4_t test_vreinterpretq_s32_s64(int64x2_t a) {
   10331   return vreinterpretq_s32_s64(a);
   10332 }
   10333 
   10334 // CHECK-LABEL: test_vreinterpretq_s32_u8:
   10335 // CHECK-NEXT: ret
   10336 int32x4_t test_vreinterpretq_s32_u8(uint8x16_t a) {
   10337   return vreinterpretq_s32_u8(a);
   10338 }
   10339 
   10340 // CHECK-LABEL: test_vreinterpretq_s32_u16:
   10341 // CHECK-NEXT: ret
   10342 int32x4_t test_vreinterpretq_s32_u16(uint16x8_t a) {
   10343   return vreinterpretq_s32_u16(a);
   10344 }
   10345 
   10346 // CHECK-LABEL: test_vreinterpretq_s32_u32:
   10347 // CHECK-NEXT: ret
   10348 int32x4_t test_vreinterpretq_s32_u32(uint32x4_t a) {
   10349   return vreinterpretq_s32_u32(a);
   10350 }
   10351 
   10352 // CHECK-LABEL: test_vreinterpretq_s32_u64:
   10353 // CHECK-NEXT: ret
   10354 int32x4_t test_vreinterpretq_s32_u64(uint64x2_t a) {
   10355   return vreinterpretq_s32_u64(a);
   10356 }
   10357 
   10358 // CHECK-LABEL: test_vreinterpretq_s32_f16:
   10359 // CHECK-NEXT: ret
   10360 int32x4_t test_vreinterpretq_s32_f16(float16x8_t a) {
   10361   return vreinterpretq_s32_f16(a);
   10362 }
   10363 
   10364 // CHECK-LABEL: test_vreinterpretq_s32_f32:
   10365 // CHECK-NEXT: ret
   10366 int32x4_t test_vreinterpretq_s32_f32(float32x4_t a) {
   10367   return vreinterpretq_s32_f32(a);
   10368 }
   10369 
   10370 // CHECK-LABEL: test_vreinterpretq_s32_f64:
   10371 // CHECK-NEXT: ret
   10372 int32x4_t test_vreinterpretq_s32_f64(float64x2_t a) {
   10373   return vreinterpretq_s32_f64(a);
   10374 }
   10375 
   10376 // CHECK-LABEL: test_vreinterpretq_s32_p8:
   10377 // CHECK-NEXT: ret
   10378 int32x4_t test_vreinterpretq_s32_p8(poly8x16_t a) {
   10379   return vreinterpretq_s32_p8(a);
   10380 }
   10381 
   10382 // CHECK-LABEL: test_vreinterpretq_s32_p16:
   10383 // CHECK-NEXT: ret
   10384 int32x4_t test_vreinterpretq_s32_p16(poly16x8_t a) {
   10385   return vreinterpretq_s32_p16(a);
   10386 }
   10387 
   10388 // CHECK-LABEL: test_vreinterpretq_s32_p64:
   10389 // CHECK-NEXT: ret
   10390 int32x4_t test_vreinterpretq_s32_p64(poly64x2_t a) {
   10391   return vreinterpretq_s32_p64(a);
   10392 }
   10393 
   10394 // CHECK-LABEL: test_vreinterpretq_s64_s8:
   10395 // CHECK-NEXT: ret
   10396 int64x2_t test_vreinterpretq_s64_s8(int8x16_t a) {
   10397   return vreinterpretq_s64_s8(a);
   10398 }
   10399 
   10400 // CHECK-LABEL: test_vreinterpretq_s64_s16:
   10401 // CHECK-NEXT: ret
   10402 int64x2_t test_vreinterpretq_s64_s16(int16x8_t a) {
   10403   return vreinterpretq_s64_s16(a);
   10404 }
   10405 
   10406 // CHECK-LABEL: test_vreinterpretq_s64_s32:
   10407 // CHECK-NEXT: ret
   10408 int64x2_t test_vreinterpretq_s64_s32(int32x4_t a) {
   10409   return vreinterpretq_s64_s32(a);
   10410 }
   10411 
   10412 // CHECK-LABEL: test_vreinterpretq_s64_u8:
   10413 // CHECK-NEXT: ret
   10414 int64x2_t test_vreinterpretq_s64_u8(uint8x16_t a) {
   10415   return vreinterpretq_s64_u8(a);
   10416 }
   10417 
   10418 // CHECK-LABEL: test_vreinterpretq_s64_u16:
   10419 // CHECK-NEXT: ret
   10420 int64x2_t test_vreinterpretq_s64_u16(uint16x8_t a) {
   10421   return vreinterpretq_s64_u16(a);
   10422 }
   10423 
   10424 // CHECK-LABEL: test_vreinterpretq_s64_u32:
   10425 // CHECK-NEXT: ret
   10426 int64x2_t test_vreinterpretq_s64_u32(uint32x4_t a) {
   10427   return vreinterpretq_s64_u32(a);
   10428 }
   10429 
   10430 // CHECK-LABEL: test_vreinterpretq_s64_u64:
   10431 // CHECK-NEXT: ret
   10432 int64x2_t test_vreinterpretq_s64_u64(uint64x2_t a) {
   10433   return vreinterpretq_s64_u64(a);
   10434 }
   10435 
   10436 // CHECK-LABEL: test_vreinterpretq_s64_f16:
   10437 // CHECK-NEXT: ret
   10438 int64x2_t test_vreinterpretq_s64_f16(float16x8_t a) {
   10439   return vreinterpretq_s64_f16(a);
   10440 }
   10441 
   10442 // CHECK-LABEL: test_vreinterpretq_s64_f32:
   10443 // CHECK-NEXT: ret
   10444 int64x2_t test_vreinterpretq_s64_f32(float32x4_t a) {
   10445   return vreinterpretq_s64_f32(a);
   10446 }
   10447 
   10448 // CHECK-LABEL: test_vreinterpretq_s64_f64:
   10449 // CHECK-NEXT: ret
   10450 int64x2_t test_vreinterpretq_s64_f64(float64x2_t a) {
   10451   return vreinterpretq_s64_f64(a);
   10452 }
   10453 
   10454 // CHECK-LABEL: test_vreinterpretq_s64_p8:
   10455 // CHECK-NEXT: ret
   10456 int64x2_t test_vreinterpretq_s64_p8(poly8x16_t a) {
   10457   return vreinterpretq_s64_p8(a);
   10458 }
   10459 
   10460 // CHECK-LABEL: test_vreinterpretq_s64_p16:
   10461 // CHECK-NEXT: ret
   10462 int64x2_t test_vreinterpretq_s64_p16(poly16x8_t a) {
   10463   return vreinterpretq_s64_p16(a);
   10464 }
   10465 
   10466 // CHECK-LABEL: test_vreinterpretq_s64_p64:
   10467 // CHECK-NEXT: ret
   10468 int64x2_t test_vreinterpretq_s64_p64(poly64x2_t a) {
   10469   return vreinterpretq_s64_p64(a);
   10470 }
   10471 
   10472 // CHECK-LABEL: test_vreinterpretq_u8_s8:
   10473 // CHECK-NEXT: ret
   10474 uint8x16_t test_vreinterpretq_u8_s8(int8x16_t a) {
   10475   return vreinterpretq_u8_s8(a);
   10476 }
   10477 
   10478 // CHECK-LABEL: test_vreinterpretq_u8_s16:
   10479 // CHECK-NEXT: ret
   10480 uint8x16_t test_vreinterpretq_u8_s16(int16x8_t a) {
   10481   return vreinterpretq_u8_s16(a);
   10482 }
   10483 
   10484 // CHECK-LABEL: test_vreinterpretq_u8_s32:
   10485 // CHECK-NEXT: ret
   10486 uint8x16_t test_vreinterpretq_u8_s32(int32x4_t a) {
   10487   return vreinterpretq_u8_s32(a);
   10488 }
   10489 
   10490 // CHECK-LABEL: test_vreinterpretq_u8_s64:
   10491 // CHECK-NEXT: ret
   10492 uint8x16_t test_vreinterpretq_u8_s64(int64x2_t a) {
   10493   return vreinterpretq_u8_s64(a);
   10494 }
   10495 
   10496 // CHECK-LABEL: test_vreinterpretq_u8_u16:
   10497 // CHECK-NEXT: ret
   10498 uint8x16_t test_vreinterpretq_u8_u16(uint16x8_t a) {
   10499   return vreinterpretq_u8_u16(a);
   10500 }
   10501 
   10502 // CHECK-LABEL: test_vreinterpretq_u8_u32:
   10503 // CHECK-NEXT: ret
   10504 uint8x16_t test_vreinterpretq_u8_u32(uint32x4_t a) {
   10505   return vreinterpretq_u8_u32(a);
   10506 }
   10507 
   10508 // CHECK-LABEL: test_vreinterpretq_u8_u64:
   10509 // CHECK-NEXT: ret
   10510 uint8x16_t test_vreinterpretq_u8_u64(uint64x2_t a) {
   10511   return vreinterpretq_u8_u64(a);
   10512 }
   10513 
   10514 // CHECK-LABEL: test_vreinterpretq_u8_f16:
   10515 // CHECK-NEXT: ret
   10516 uint8x16_t test_vreinterpretq_u8_f16(float16x8_t a) {
   10517   return vreinterpretq_u8_f16(a);
   10518 }
   10519 
   10520 // CHECK-LABEL: test_vreinterpretq_u8_f32:
   10521 // CHECK-NEXT: ret
   10522 uint8x16_t test_vreinterpretq_u8_f32(float32x4_t a) {
   10523   return vreinterpretq_u8_f32(a);
   10524 }
   10525 
   10526 // CHECK-LABEL: test_vreinterpretq_u8_f64:
   10527 // CHECK-NEXT: ret
   10528 uint8x16_t test_vreinterpretq_u8_f64(float64x2_t a) {
   10529   return vreinterpretq_u8_f64(a);
   10530 }
   10531 
   10532 // CHECK-LABEL: test_vreinterpretq_u8_p8:
   10533 // CHECK-NEXT: ret
   10534 uint8x16_t test_vreinterpretq_u8_p8(poly8x16_t a) {
   10535   return vreinterpretq_u8_p8(a);
   10536 }
   10537 
   10538 // CHECK-LABEL: test_vreinterpretq_u8_p16:
   10539 // CHECK-NEXT: ret
   10540 uint8x16_t test_vreinterpretq_u8_p16(poly16x8_t a) {
   10541   return vreinterpretq_u8_p16(a);
   10542 }
   10543 
   10544 // CHECK-LABEL: test_vreinterpretq_u8_p64:
   10545 // CHECK-NEXT: ret
   10546 uint8x16_t test_vreinterpretq_u8_p64(poly64x2_t a) {
   10547   return vreinterpretq_u8_p64(a);
   10548 }
   10549 
   10550 // CHECK-LABEL: test_vreinterpretq_u16_s8:
   10551 // CHECK-NEXT: ret
   10552 uint16x8_t test_vreinterpretq_u16_s8(int8x16_t a) {
   10553   return vreinterpretq_u16_s8(a);
   10554 }
   10555 
   10556 // CHECK-LABEL: test_vreinterpretq_u16_s16:
   10557 // CHECK-NEXT: ret
   10558 uint16x8_t test_vreinterpretq_u16_s16(int16x8_t a) {
   10559   return vreinterpretq_u16_s16(a);
   10560 }
   10561 
   10562 // CHECK-LABEL: test_vreinterpretq_u16_s32:
   10563 // CHECK-NEXT: ret
   10564 uint16x8_t test_vreinterpretq_u16_s32(int32x4_t a) {
   10565   return vreinterpretq_u16_s32(a);
   10566 }
   10567 
   10568 // CHECK-LABEL: test_vreinterpretq_u16_s64:
   10569 // CHECK-NEXT: ret
   10570 uint16x8_t test_vreinterpretq_u16_s64(int64x2_t a) {
   10571   return vreinterpretq_u16_s64(a);
   10572 }
   10573 
   10574 // CHECK-LABEL: test_vreinterpretq_u16_u8:
   10575 // CHECK-NEXT: ret
   10576 uint16x8_t test_vreinterpretq_u16_u8(uint8x16_t a) {
   10577   return vreinterpretq_u16_u8(a);
   10578 }
   10579 
   10580 // CHECK-LABEL: test_vreinterpretq_u16_u32:
   10581 // CHECK-NEXT: ret
   10582 uint16x8_t test_vreinterpretq_u16_u32(uint32x4_t a) {
   10583   return vreinterpretq_u16_u32(a);
   10584 }
   10585 
   10586 // CHECK-LABEL: test_vreinterpretq_u16_u64:
   10587 // CHECK-NEXT: ret
   10588 uint16x8_t test_vreinterpretq_u16_u64(uint64x2_t a) {
   10589   return vreinterpretq_u16_u64(a);
   10590 }
   10591 
   10592 // CHECK-LABEL: test_vreinterpretq_u16_f16:
   10593 // CHECK-NEXT: ret
   10594 uint16x8_t test_vreinterpretq_u16_f16(float16x8_t a) {
   10595   return vreinterpretq_u16_f16(a);
   10596 }
   10597 
   10598 // CHECK-LABEL: test_vreinterpretq_u16_f32:
   10599 // CHECK-NEXT: ret
   10600 uint16x8_t test_vreinterpretq_u16_f32(float32x4_t a) {
   10601   return vreinterpretq_u16_f32(a);
   10602 }
   10603 
   10604 // CHECK-LABEL: test_vreinterpretq_u16_f64:
   10605 // CHECK-NEXT: ret
   10606 uint16x8_t test_vreinterpretq_u16_f64(float64x2_t a) {
   10607   return vreinterpretq_u16_f64(a);
   10608 }
   10609 
   10610 // CHECK-LABEL: test_vreinterpretq_u16_p8:
   10611 // CHECK-NEXT: ret
   10612 uint16x8_t test_vreinterpretq_u16_p8(poly8x16_t a) {
   10613   return vreinterpretq_u16_p8(a);
   10614 }
   10615 
   10616 // CHECK-LABEL: test_vreinterpretq_u16_p16:
   10617 // CHECK-NEXT: ret
   10618 uint16x8_t test_vreinterpretq_u16_p16(poly16x8_t a) {
   10619   return vreinterpretq_u16_p16(a);
   10620 }
   10621 
   10622 // CHECK-LABEL: test_vreinterpretq_u16_p64:
   10623 // CHECK-NEXT: ret
   10624 uint16x8_t test_vreinterpretq_u16_p64(poly64x2_t a) {
   10625   return vreinterpretq_u16_p64(a);
   10626 }
   10627 
   10628 // CHECK-LABEL: test_vreinterpretq_u32_s8:
   10629 // CHECK-NEXT: ret
   10630 uint32x4_t test_vreinterpretq_u32_s8(int8x16_t a) {
   10631   return vreinterpretq_u32_s8(a);
   10632 }
   10633 
   10634 // CHECK-LABEL: test_vreinterpretq_u32_s16:
   10635 // CHECK-NEXT: ret
   10636 uint32x4_t test_vreinterpretq_u32_s16(int16x8_t a) {
   10637   return vreinterpretq_u32_s16(a);
   10638 }
   10639 
   10640 // CHECK-LABEL: test_vreinterpretq_u32_s32:
   10641 // CHECK-NEXT: ret
   10642 uint32x4_t test_vreinterpretq_u32_s32(int32x4_t a) {
   10643   return vreinterpretq_u32_s32(a);
   10644 }
   10645 
   10646 // CHECK-LABEL: test_vreinterpretq_u32_s64:
   10647 // CHECK-NEXT: ret
   10648 uint32x4_t test_vreinterpretq_u32_s64(int64x2_t a) {
   10649   return vreinterpretq_u32_s64(a);
   10650 }
   10651 
   10652 // CHECK-LABEL: test_vreinterpretq_u32_u8:
   10653 // CHECK-NEXT: ret
   10654 uint32x4_t test_vreinterpretq_u32_u8(uint8x16_t a) {
   10655   return vreinterpretq_u32_u8(a);
   10656 }
   10657 
   10658 // CHECK-LABEL: test_vreinterpretq_u32_u16:
   10659 // CHECK-NEXT: ret
   10660 uint32x4_t test_vreinterpretq_u32_u16(uint16x8_t a) {
   10661   return vreinterpretq_u32_u16(a);
   10662 }
   10663 
   10664 // CHECK-LABEL: test_vreinterpretq_u32_u64:
   10665 // CHECK-NEXT: ret
   10666 uint32x4_t test_vreinterpretq_u32_u64(uint64x2_t a) {
   10667   return vreinterpretq_u32_u64(a);
   10668 }
   10669 
   10670 // CHECK-LABEL: test_vreinterpretq_u32_f16:
   10671 // CHECK-NEXT: ret
   10672 uint32x4_t test_vreinterpretq_u32_f16(float16x8_t a) {
   10673   return vreinterpretq_u32_f16(a);
   10674 }
   10675 
   10676 // CHECK-LABEL: test_vreinterpretq_u32_f32:
   10677 // CHECK-NEXT: ret
   10678 uint32x4_t test_vreinterpretq_u32_f32(float32x4_t a) {
   10679   return vreinterpretq_u32_f32(a);
   10680 }
   10681 
   10682 // CHECK-LABEL: test_vreinterpretq_u32_f64:
   10683 // CHECK-NEXT: ret
   10684 uint32x4_t test_vreinterpretq_u32_f64(float64x2_t a) {
   10685   return vreinterpretq_u32_f64(a);
   10686 }
   10687 
   10688 // CHECK-LABEL: test_vreinterpretq_u32_p8:
   10689 // CHECK-NEXT: ret
   10690 uint32x4_t test_vreinterpretq_u32_p8(poly8x16_t a) {
   10691   return vreinterpretq_u32_p8(a);
   10692 }
   10693 
   10694 // CHECK-LABEL: test_vreinterpretq_u32_p16:
   10695 // CHECK-NEXT: ret
   10696 uint32x4_t test_vreinterpretq_u32_p16(poly16x8_t a) {
   10697   return vreinterpretq_u32_p16(a);
   10698 }
   10699 
   10700 // CHECK-LABEL: test_vreinterpretq_u32_p64:
   10701 // CHECK-NEXT: ret
   10702 uint32x4_t test_vreinterpretq_u32_p64(poly64x2_t a) {
   10703   return vreinterpretq_u32_p64(a);
   10704 }
   10705 
   10706 // CHECK-LABEL: test_vreinterpretq_u64_s8:
   10707 // CHECK-NEXT: ret
   10708 uint64x2_t test_vreinterpretq_u64_s8(int8x16_t a) {
   10709   return vreinterpretq_u64_s8(a);
   10710 }
   10711 
   10712 // CHECK-LABEL: test_vreinterpretq_u64_s16:
   10713 // CHECK-NEXT: ret
   10714 uint64x2_t test_vreinterpretq_u64_s16(int16x8_t a) {
   10715   return vreinterpretq_u64_s16(a);
   10716 }
   10717 
   10718 // CHECK-LABEL: test_vreinterpretq_u64_s32:
   10719 // CHECK-NEXT: ret
   10720 uint64x2_t test_vreinterpretq_u64_s32(int32x4_t a) {
   10721   return vreinterpretq_u64_s32(a);
   10722 }
   10723 
   10724 // CHECK-LABEL: test_vreinterpretq_u64_s64:
   10725 // CHECK-NEXT: ret
   10726 uint64x2_t test_vreinterpretq_u64_s64(int64x2_t a) {
   10727   return vreinterpretq_u64_s64(a);
   10728 }
   10729 
   10730 // CHECK-LABEL: test_vreinterpretq_u64_u8:
   10731 // CHECK-NEXT: ret
   10732 uint64x2_t test_vreinterpretq_u64_u8(uint8x16_t a) {
   10733   return vreinterpretq_u64_u8(a);
   10734 }
   10735 
   10736 // CHECK-LABEL: test_vreinterpretq_u64_u16:
   10737 // CHECK-NEXT: ret
   10738 uint64x2_t test_vreinterpretq_u64_u16(uint16x8_t a) {
   10739   return vreinterpretq_u64_u16(a);
   10740 }
   10741 
   10742 // CHECK-LABEL: test_vreinterpretq_u64_u32:
   10743 // CHECK-NEXT: ret
   10744 uint64x2_t test_vreinterpretq_u64_u32(uint32x4_t a) {
   10745   return vreinterpretq_u64_u32(a);
   10746 }
   10747 
   10748 // CHECK-LABEL: test_vreinterpretq_u64_f16:
   10749 // CHECK-NEXT: ret
   10750 uint64x2_t test_vreinterpretq_u64_f16(float16x8_t a) {
   10751   return vreinterpretq_u64_f16(a);
   10752 }
   10753 
   10754 // CHECK-LABEL: test_vreinterpretq_u64_f32:
   10755 // CHECK-NEXT: ret
   10756 uint64x2_t test_vreinterpretq_u64_f32(float32x4_t a) {
   10757   return vreinterpretq_u64_f32(a);
   10758 }
   10759 
   10760 // CHECK-LABEL: test_vreinterpretq_u64_f64:
   10761 // CHECK-NEXT: ret
   10762 uint64x2_t test_vreinterpretq_u64_f64(float64x2_t a) {
   10763   return vreinterpretq_u64_f64(a);
   10764 }
   10765 
   10766 // CHECK-LABEL: test_vreinterpretq_u64_p8:
   10767 // CHECK-NEXT: ret
   10768 uint64x2_t test_vreinterpretq_u64_p8(poly8x16_t a) {
   10769   return vreinterpretq_u64_p8(a);
   10770 }
   10771 
   10772 // CHECK-LABEL: test_vreinterpretq_u64_p16:
   10773 // CHECK-NEXT: ret
   10774 uint64x2_t test_vreinterpretq_u64_p16(poly16x8_t a) {
   10775   return vreinterpretq_u64_p16(a);
   10776 }
   10777 
   10778 // CHECK-LABEL: test_vreinterpretq_u64_p64:
   10779 // CHECK-NEXT: ret
   10780 uint64x2_t test_vreinterpretq_u64_p64(poly64x2_t a) {
   10781   return vreinterpretq_u64_p64(a);
   10782 }
   10783 
   10784 // CHECK-LABEL: test_vreinterpretq_f16_s8:
   10785 // CHECK-NEXT: ret
   10786 float16x8_t test_vreinterpretq_f16_s8(int8x16_t a) {
   10787   return vreinterpretq_f16_s8(a);
   10788 }
   10789 
   10790 // CHECK-LABEL: test_vreinterpretq_f16_s16:
   10791 // CHECK-NEXT: ret
   10792 float16x8_t test_vreinterpretq_f16_s16(int16x8_t a) {
   10793   return vreinterpretq_f16_s16(a);
   10794 }
   10795 
   10796 // CHECK-LABEL: test_vreinterpretq_f16_s32:
   10797 // CHECK-NEXT: ret
   10798 float16x8_t test_vreinterpretq_f16_s32(int32x4_t a) {
   10799   return vreinterpretq_f16_s32(a);
   10800 }
   10801 
   10802 // CHECK-LABEL: test_vreinterpretq_f16_s64:
   10803 // CHECK-NEXT: ret
   10804 float16x8_t test_vreinterpretq_f16_s64(int64x2_t a) {
   10805   return vreinterpretq_f16_s64(a);
   10806 }
   10807 
   10808 // CHECK-LABEL: test_vreinterpretq_f16_u8:
   10809 // CHECK-NEXT: ret
   10810 float16x8_t test_vreinterpretq_f16_u8(uint8x16_t a) {
   10811   return vreinterpretq_f16_u8(a);
   10812 }
   10813 
   10814 // CHECK-LABEL: test_vreinterpretq_f16_u16:
   10815 // CHECK-NEXT: ret
   10816 float16x8_t test_vreinterpretq_f16_u16(uint16x8_t a) {
   10817   return vreinterpretq_f16_u16(a);
   10818 }
   10819 
   10820 // CHECK-LABEL: test_vreinterpretq_f16_u32:
   10821 // CHECK-NEXT: ret
   10822 float16x8_t test_vreinterpretq_f16_u32(uint32x4_t a) {
   10823   return vreinterpretq_f16_u32(a);
   10824 }
   10825 
   10826 // CHECK-LABEL: test_vreinterpretq_f16_u64:
   10827 // CHECK-NEXT: ret
   10828 float16x8_t test_vreinterpretq_f16_u64(uint64x2_t a) {
   10829   return vreinterpretq_f16_u64(a);
   10830 }
   10831 
   10832 // CHECK-LABEL: test_vreinterpretq_f16_f32:
   10833 // CHECK-NEXT: ret
   10834 float16x8_t test_vreinterpretq_f16_f32(float32x4_t a) {
   10835   return vreinterpretq_f16_f32(a);
   10836 }
   10837 
   10838 // CHECK-LABEL: test_vreinterpretq_f16_f64:
   10839 // CHECK-NEXT: ret
   10840 float16x8_t test_vreinterpretq_f16_f64(float64x2_t a) {
   10841   return vreinterpretq_f16_f64(a);
   10842 }
   10843 
   10844 // CHECK-LABEL: test_vreinterpretq_f16_p8:
   10845 // CHECK-NEXT: ret
   10846 float16x8_t test_vreinterpretq_f16_p8(poly8x16_t a) {
   10847   return vreinterpretq_f16_p8(a);
   10848 }
   10849 
   10850 // CHECK-LABEL: test_vreinterpretq_f16_p16:
   10851 // CHECK-NEXT: ret
   10852 float16x8_t test_vreinterpretq_f16_p16(poly16x8_t a) {
   10853   return vreinterpretq_f16_p16(a);
   10854 }
   10855 
   10856 // CHECK-LABEL: test_vreinterpretq_f16_p64:
   10857 // CHECK-NEXT: ret
   10858 float16x8_t test_vreinterpretq_f16_p64(poly64x2_t a) {
   10859   return vreinterpretq_f16_p64(a);
   10860 }
   10861 
   10862 // CHECK-LABEL: test_vreinterpretq_f32_s8:
   10863 // CHECK-NEXT: ret
   10864 float32x4_t test_vreinterpretq_f32_s8(int8x16_t a) {
   10865   return vreinterpretq_f32_s8(a);
   10866 }
   10867 
   10868 // CHECK-LABEL: test_vreinterpretq_f32_s16:
   10869 // CHECK-NEXT: ret
   10870 float32x4_t test_vreinterpretq_f32_s16(int16x8_t a) {
   10871   return vreinterpretq_f32_s16(a);
   10872 }
   10873 
   10874 // CHECK-LABEL: test_vreinterpretq_f32_s32:
   10875 // CHECK-NEXT: ret
   10876 float32x4_t test_vreinterpretq_f32_s32(int32x4_t a) {
   10877   return vreinterpretq_f32_s32(a);
   10878 }
   10879 
   10880 // CHECK-LABEL: test_vreinterpretq_f32_s64:
   10881 // CHECK-NEXT: ret
   10882 float32x4_t test_vreinterpretq_f32_s64(int64x2_t a) {
   10883   return vreinterpretq_f32_s64(a);
   10884 }
   10885 
   10886 // CHECK-LABEL: test_vreinterpretq_f32_u8:
   10887 // CHECK-NEXT: ret
   10888 float32x4_t test_vreinterpretq_f32_u8(uint8x16_t a) {
   10889   return vreinterpretq_f32_u8(a);
   10890 }
   10891 
   10892 // CHECK-LABEL: test_vreinterpretq_f32_u16:
   10893 // CHECK-NEXT: ret
   10894 float32x4_t test_vreinterpretq_f32_u16(uint16x8_t a) {
   10895   return vreinterpretq_f32_u16(a);
   10896 }
   10897 
   10898 // CHECK-LABEL: test_vreinterpretq_f32_u32:
   10899 // CHECK-NEXT: ret
   10900 float32x4_t test_vreinterpretq_f32_u32(uint32x4_t a) {
   10901   return vreinterpretq_f32_u32(a);
   10902 }
   10903 
   10904 // CHECK-LABEL: test_vreinterpretq_f32_u64:
   10905 // CHECK-NEXT: ret
   10906 float32x4_t test_vreinterpretq_f32_u64(uint64x2_t a) {
   10907   return vreinterpretq_f32_u64(a);
   10908 }
   10909 
   10910 // CHECK-LABEL: test_vreinterpretq_f32_f16:
   10911 // CHECK-NEXT: ret
   10912 float32x4_t test_vreinterpretq_f32_f16(float16x8_t a) {
   10913   return vreinterpretq_f32_f16(a);
   10914 }
   10915 
   10916 // CHECK-LABEL: test_vreinterpretq_f32_f64:
   10917 // CHECK-NEXT: ret
   10918 float32x4_t test_vreinterpretq_f32_f64(float64x2_t a) {
   10919   return vreinterpretq_f32_f64(a);
   10920 }
   10921 
   10922 // CHECK-LABEL: test_vreinterpretq_f32_p8:
   10923 // CHECK-NEXT: ret
   10924 float32x4_t test_vreinterpretq_f32_p8(poly8x16_t a) {
   10925   return vreinterpretq_f32_p8(a);
   10926 }
   10927 
   10928 // CHECK-LABEL: test_vreinterpretq_f32_p16:
   10929 // CHECK-NEXT: ret
   10930 float32x4_t test_vreinterpretq_f32_p16(poly16x8_t a) {
   10931   return vreinterpretq_f32_p16(a);
   10932 }
   10933 
   10934 // CHECK-LABEL: test_vreinterpretq_f32_p64:
   10935 // CHECK-NEXT: ret
   10936 float32x4_t test_vreinterpretq_f32_p64(poly64x2_t a) {
   10937   return vreinterpretq_f32_p64(a);
   10938 }
   10939 
   10940 // CHECK-LABEL: test_vreinterpretq_f64_s8:
   10941 // CHECK-NEXT: ret
   10942 float64x2_t test_vreinterpretq_f64_s8(int8x16_t a) {
   10943   return vreinterpretq_f64_s8(a);
   10944 }
   10945 
   10946 // CHECK-LABEL: test_vreinterpretq_f64_s16:
   10947 // CHECK-NEXT: ret
   10948 float64x2_t test_vreinterpretq_f64_s16(int16x8_t a) {
   10949   return vreinterpretq_f64_s16(a);
   10950 }
   10951 
   10952 // CHECK-LABEL: test_vreinterpretq_f64_s32:
   10953 // CHECK-NEXT: ret
   10954 float64x2_t test_vreinterpretq_f64_s32(int32x4_t a) {
   10955   return vreinterpretq_f64_s32(a);
   10956 }
   10957 
   10958 // CHECK-LABEL: test_vreinterpretq_f64_s64:
   10959 // CHECK-NEXT: ret
   10960 float64x2_t test_vreinterpretq_f64_s64(int64x2_t a) {
   10961   return vreinterpretq_f64_s64(a);
   10962 }
   10963 
   10964 // CHECK-LABEL: test_vreinterpretq_f64_u8:
   10965 // CHECK-NEXT: ret
   10966 float64x2_t test_vreinterpretq_f64_u8(uint8x16_t a) {
   10967   return vreinterpretq_f64_u8(a);
   10968 }
   10969 
   10970 // CHECK-LABEL: test_vreinterpretq_f64_u16:
   10971 // CHECK-NEXT: ret
   10972 float64x2_t test_vreinterpretq_f64_u16(uint16x8_t a) {
   10973   return vreinterpretq_f64_u16(a);
   10974 }
   10975 
   10976 // CHECK-LABEL: test_vreinterpretq_f64_u32:
   10977 // CHECK-NEXT: ret
   10978 float64x2_t test_vreinterpretq_f64_u32(uint32x4_t a) {
   10979   return vreinterpretq_f64_u32(a);
   10980 }
   10981 
   10982 // CHECK-LABEL: test_vreinterpretq_f64_u64:
   10983 // CHECK-NEXT: ret
   10984 float64x2_t test_vreinterpretq_f64_u64(uint64x2_t a) {
   10985   return vreinterpretq_f64_u64(a);
   10986 }
   10987 
   10988 // CHECK-LABEL: test_vreinterpretq_f64_f16:
   10989 // CHECK-NEXT: ret
   10990 float64x2_t test_vreinterpretq_f64_f16(float16x8_t a) {
   10991   return vreinterpretq_f64_f16(a);
   10992 }
   10993 
   10994 // CHECK-LABEL: test_vreinterpretq_f64_f32:
   10995 // CHECK-NEXT: ret
   10996 float64x2_t test_vreinterpretq_f64_f32(float32x4_t a) {
   10997   return vreinterpretq_f64_f32(a);
   10998 }
   10999 
   11000 // CHECK-LABEL: test_vreinterpretq_f64_p8:
   11001 // CHECK-NEXT: ret
   11002 float64x2_t test_vreinterpretq_f64_p8(poly8x16_t a) {
   11003   return vreinterpretq_f64_p8(a);
   11004 }
   11005 
   11006 // CHECK-LABEL: test_vreinterpretq_f64_p16:
   11007 // CHECK-NEXT: ret
   11008 float64x2_t test_vreinterpretq_f64_p16(poly16x8_t a) {
   11009   return vreinterpretq_f64_p16(a);
   11010 }
   11011 
   11012 // CHECK-LABEL: test_vreinterpretq_f64_p64:
   11013 // CHECK-NEXT: ret
   11014 float64x2_t test_vreinterpretq_f64_p64(poly64x2_t a) {
   11015   return vreinterpretq_f64_p64(a);
   11016 }
   11017 
   11018 // CHECK-LABEL: test_vreinterpretq_p8_s8:
   11019 // CHECK-NEXT: ret
   11020 poly8x16_t test_vreinterpretq_p8_s8(int8x16_t a) {
   11021   return vreinterpretq_p8_s8(a);
   11022 }
   11023 
   11024 // CHECK-LABEL: test_vreinterpretq_p8_s16:
   11025 // CHECK-NEXT: ret
   11026 poly8x16_t test_vreinterpretq_p8_s16(int16x8_t a) {
   11027   return vreinterpretq_p8_s16(a);
   11028 }
   11029 
   11030 // CHECK-LABEL: test_vreinterpretq_p8_s32:
   11031 // CHECK-NEXT: ret
   11032 poly8x16_t test_vreinterpretq_p8_s32(int32x4_t a) {
   11033   return vreinterpretq_p8_s32(a);
   11034 }
   11035 
   11036 // CHECK-LABEL: test_vreinterpretq_p8_s64:
   11037 // CHECK-NEXT: ret
   11038 poly8x16_t test_vreinterpretq_p8_s64(int64x2_t a) {
   11039   return vreinterpretq_p8_s64(a);
   11040 }
   11041 
   11042 // CHECK-LABEL: test_vreinterpretq_p8_u8:
   11043 // CHECK-NEXT: ret
   11044 poly8x16_t test_vreinterpretq_p8_u8(uint8x16_t a) {
   11045   return vreinterpretq_p8_u8(a);
   11046 }
   11047 
   11048 // CHECK-LABEL: test_vreinterpretq_p8_u16:
   11049 // CHECK-NEXT: ret
   11050 poly8x16_t test_vreinterpretq_p8_u16(uint16x8_t a) {
   11051   return vreinterpretq_p8_u16(a);
   11052 }
   11053 
   11054 // CHECK-LABEL: test_vreinterpretq_p8_u32:
   11055 // CHECK-NEXT: ret
   11056 poly8x16_t test_vreinterpretq_p8_u32(uint32x4_t a) {
   11057   return vreinterpretq_p8_u32(a);
   11058 }
   11059 
   11060 // CHECK-LABEL: test_vreinterpretq_p8_u64:
   11061 // CHECK-NEXT: ret
   11062 poly8x16_t test_vreinterpretq_p8_u64(uint64x2_t a) {
   11063   return vreinterpretq_p8_u64(a);
   11064 }
   11065 
   11066 // CHECK-LABEL: test_vreinterpretq_p8_f16:
   11067 // CHECK-NEXT: ret
   11068 poly8x16_t test_vreinterpretq_p8_f16(float16x8_t a) {
   11069   return vreinterpretq_p8_f16(a);
   11070 }
   11071 
   11072 // CHECK-LABEL: test_vreinterpretq_p8_f32:
   11073 // CHECK-NEXT: ret
   11074 poly8x16_t test_vreinterpretq_p8_f32(float32x4_t a) {
   11075   return vreinterpretq_p8_f32(a);
   11076 }
   11077 
   11078 // CHECK-LABEL: test_vreinterpretq_p8_f64:
   11079 // CHECK-NEXT: ret
   11080 poly8x16_t test_vreinterpretq_p8_f64(float64x2_t a) {
   11081   return vreinterpretq_p8_f64(a);
   11082 }
   11083 
   11084 // CHECK-LABEL: test_vreinterpretq_p8_p16:
   11085 // CHECK-NEXT: ret
   11086 poly8x16_t test_vreinterpretq_p8_p16(poly16x8_t a) {
   11087   return vreinterpretq_p8_p16(a);
   11088 }
   11089 
   11090 // CHECK-LABEL: test_vreinterpretq_p8_p64:
   11091 // CHECK-NEXT: ret
   11092 poly8x16_t test_vreinterpretq_p8_p64(poly64x2_t a) {
   11093   return vreinterpretq_p8_p64(a);
   11094 }
   11095 
   11096 // CHECK-LABEL: test_vreinterpretq_p16_s8:
   11097 // CHECK-NEXT: ret
   11098 poly16x8_t test_vreinterpretq_p16_s8(int8x16_t a) {
   11099   return vreinterpretq_p16_s8(a);
   11100 }
   11101 
   11102 // CHECK-LABEL: test_vreinterpretq_p16_s16:
   11103 // CHECK-NEXT: ret
   11104 poly16x8_t test_vreinterpretq_p16_s16(int16x8_t a) {
   11105   return vreinterpretq_p16_s16(a);
   11106 }
   11107 
   11108 // CHECK-LABEL: test_vreinterpretq_p16_s32:
   11109 // CHECK-NEXT: ret
   11110 poly16x8_t test_vreinterpretq_p16_s32(int32x4_t a) {
   11111   return vreinterpretq_p16_s32(a);
   11112 }
   11113 
   11114 // CHECK-LABEL: test_vreinterpretq_p16_s64:
   11115 // CHECK-NEXT: ret
   11116 poly16x8_t test_vreinterpretq_p16_s64(int64x2_t a) {
   11117   return vreinterpretq_p16_s64(a);
   11118 }
   11119 
   11120 // CHECK-LABEL: test_vreinterpretq_p16_u8:
   11121 // CHECK-NEXT: ret
   11122 poly16x8_t test_vreinterpretq_p16_u8(uint8x16_t a) {
   11123   return vreinterpretq_p16_u8(a);
   11124 }
   11125 
   11126 // CHECK-LABEL: test_vreinterpretq_p16_u16:
   11127 // CHECK-NEXT: ret
   11128 poly16x8_t test_vreinterpretq_p16_u16(uint16x8_t a) {
   11129   return vreinterpretq_p16_u16(a);
   11130 }
   11131 
   11132 // CHECK-LABEL: test_vreinterpretq_p16_u32:
   11133 // CHECK-NEXT: ret
   11134 poly16x8_t test_vreinterpretq_p16_u32(uint32x4_t a) {
   11135   return vreinterpretq_p16_u32(a);
   11136 }
   11137 
   11138 // CHECK-LABEL: test_vreinterpretq_p16_u64:
   11139 // CHECK-NEXT: ret
   11140 poly16x8_t test_vreinterpretq_p16_u64(uint64x2_t a) {
   11141   return vreinterpretq_p16_u64(a);
   11142 }
   11143 
   11144 // CHECK-LABEL: test_vreinterpretq_p16_f16:
   11145 // CHECK-NEXT: ret
   11146 poly16x8_t test_vreinterpretq_p16_f16(float16x8_t a) {
   11147   return vreinterpretq_p16_f16(a);
   11148 }
   11149 
   11150 // CHECK-LABEL: test_vreinterpretq_p16_f32:
   11151 // CHECK-NEXT: ret
   11152 poly16x8_t test_vreinterpretq_p16_f32(float32x4_t a) {
   11153   return vreinterpretq_p16_f32(a);
   11154 }
   11155 
   11156 // CHECK-LABEL: test_vreinterpretq_p16_f64:
   11157 // CHECK-NEXT: ret
   11158 poly16x8_t test_vreinterpretq_p16_f64(float64x2_t a) {
   11159   return vreinterpretq_p16_f64(a);
   11160 }
   11161 
   11162 // CHECK-LABEL: test_vreinterpretq_p16_p8:
   11163 // CHECK-NEXT: ret
   11164 poly16x8_t test_vreinterpretq_p16_p8(poly8x16_t a) {
   11165   return vreinterpretq_p16_p8(a);
   11166 }
   11167 
   11168 // CHECK-LABEL: test_vreinterpretq_p16_p64:
   11169 // CHECK-NEXT: ret
   11170 poly16x8_t test_vreinterpretq_p16_p64(poly64x2_t a) {
   11171   return vreinterpretq_p16_p64(a);
   11172 }
   11173 
   11174 // CHECK-LABEL: test_vreinterpretq_p64_s8:
   11175 // CHECK-NEXT: ret
   11176 poly64x2_t test_vreinterpretq_p64_s8(int8x16_t a) {
   11177   return vreinterpretq_p64_s8(a);
   11178 }
   11179 
   11180 // CHECK-LABEL: test_vreinterpretq_p64_s16:
   11181 // CHECK-NEXT: ret
   11182 poly64x2_t test_vreinterpretq_p64_s16(int16x8_t a) {
   11183   return vreinterpretq_p64_s16(a);
   11184 }
   11185 
   11186 // CHECK-LABEL: test_vreinterpretq_p64_s32:
   11187 // CHECK-NEXT: ret
   11188 poly64x2_t test_vreinterpretq_p64_s32(int32x4_t a) {
   11189   return vreinterpretq_p64_s32(a);
   11190 }
   11191 
   11192 // CHECK-LABEL: test_vreinterpretq_p64_s64:
   11193 // CHECK-NEXT: ret
   11194 poly64x2_t test_vreinterpretq_p64_s64(int64x2_t a) {
   11195   return vreinterpretq_p64_s64(a);
   11196 }
   11197 
   11198 // CHECK-LABEL: test_vreinterpretq_p64_u8:
   11199 // CHECK-NEXT: ret
   11200 poly64x2_t test_vreinterpretq_p64_u8(uint8x16_t a) {
   11201   return vreinterpretq_p64_u8(a);
   11202 }
   11203 
   11204 // CHECK-LABEL: test_vreinterpretq_p64_u16:
   11205 // CHECK-NEXT: ret
   11206 poly64x2_t test_vreinterpretq_p64_u16(uint16x8_t a) {
   11207   return vreinterpretq_p64_u16(a);
   11208 }
   11209 
   11210 // CHECK-LABEL: test_vreinterpretq_p64_u32:
   11211 // CHECK-NEXT: ret
   11212 poly64x2_t test_vreinterpretq_p64_u32(uint32x4_t a) {
   11213   return vreinterpretq_p64_u32(a);
   11214 }
   11215 
   11216 // CHECK-LABEL: test_vreinterpretq_p64_u64:
   11217 // CHECK-NEXT: ret
   11218 poly64x2_t test_vreinterpretq_p64_u64(uint64x2_t a) {
   11219   return vreinterpretq_p64_u64(a);
   11220 }
   11221 
   11222 // CHECK-LABEL: test_vreinterpretq_p64_f16:
   11223 // CHECK-NEXT: ret
   11224 poly64x2_t test_vreinterpretq_p64_f16(float16x8_t a) {
   11225   return vreinterpretq_p64_f16(a);
   11226 }
   11227 
   11228 // CHECK-LABEL: test_vreinterpretq_p64_f32:
   11229 // CHECK-NEXT: ret
   11230 poly64x2_t test_vreinterpretq_p64_f32(float32x4_t a) {
   11231   return vreinterpretq_p64_f32(a);
   11232 }
   11233 
   11234 // CHECK-LABEL: test_vreinterpretq_p64_f64:
   11235 // CHECK-NEXT: ret
   11236 poly64x2_t test_vreinterpretq_p64_f64(float64x2_t a) {
   11237   return vreinterpretq_p64_f64(a);
   11238 }
   11239 
   11240 // CHECK-LABEL: test_vreinterpretq_p64_p8:
   11241 // CHECK-NEXT: ret
   11242 poly64x2_t test_vreinterpretq_p64_p8(poly8x16_t a) {
   11243   return vreinterpretq_p64_p8(a);
   11244 }
   11245 
   11246 // CHECK-LABEL: test_vreinterpretq_p64_p16:
   11247 // CHECK-NEXT: ret
   11248 poly64x2_t test_vreinterpretq_p64_p16(poly16x8_t a) {
   11249   return vreinterpretq_p64_p16(a);
   11250 }
   11251 
   11252 float32_t test_vabds_f32(float32_t a, float32_t b) {
   11253 // CHECK-LABEL: test_vabds_f32
   11254 // CHECK: fabd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
   11255   return vabds_f32(a, b);
   11256 }
   11257 
   11258 float64_t test_vabdd_f64(float64_t a, float64_t b) {
   11259 // CHECK-LABEL: test_vabdd_f64
   11260 // CHECK: fabd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
   11261   return vabdd_f64(a, b);
   11262 }
   11263 
   11264 int64x1_t test_vuqadd_s64(int64x1_t a, uint64x1_t b) {
   11265   // CHECK-LABEL: test_vuqadd_s64
   11266   return vuqadd_s64(a, b);
   11267   // CHECK: suqadd d{{[0-9]+}}, d{{[0-9]+}}
   11268 }
   11269 
   11270 uint64x1_t test_vsqadd_u64(uint64x1_t a, int64x1_t b) {
   11271   // CHECK-LABEL: test_vsqadd_u64
   11272   return vsqadd_u64(a, b);
   11273   // CHECK: usqadd d{{[0-9]+}}, d{{[0-9]+}}
   11274 }
   11275 
   11276 uint8x8_t test_vsqadd_u8(uint8x8_t a, int8x8_t b) {
   11277   // CHECK-LABEL: test_vsqadd_u8
   11278   return vsqadd_u8(a, b);
   11279   // CHECK: usqadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
   11280 }
   11281 
   11282 uint8x16_t test_vsqaddq_u8(uint8x16_t a, int8x16_t b) {
   11283   // CHECK-LABEL: test_vsqaddq_u8
   11284   return vsqaddq_u8(a, b);
   11285   // CHECK: usqadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
   11286 }
   11287 
   11288 uint16x4_t test_vsqadd_u16(uint16x4_t a, int16x4_t b) {
   11289   // CHECK-LABEL: test_vsqadd_u16
   11290   return vsqadd_u16(a, b);
   11291   // CHECK: usqadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
   11292 }
   11293 
   11294 uint16x8_t test_vsqaddq_u16(uint16x8_t a, int16x8_t b) {
   11295   // CHECK-LABEL: test_vsqaddq_u16
   11296   return vsqaddq_u16(a, b);
   11297   // CHECK: usqadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
   11298 }
   11299 
   11300 uint32x2_t test_vsqadd_u32(uint32x2_t a, int32x2_t b) {
   11301   // CHECK-LABEL: test_vsqadd_u32
   11302   return vsqadd_u32(a, b);
   11303   // CHECK: usqadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   11304 }
   11305 
   11306 uint32x4_t test_vsqaddq_u32(uint32x4_t a, int32x4_t b) {
   11307   // CHECK-LABEL: test_vsqaddq_u32
   11308   return vsqaddq_u32(a, b);
   11309   // CHECK: usqadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   11310 }
   11311 
   11312 uint64x2_t test_vsqaddq_u64(uint64x2_t a, int64x2_t b) {
   11313   // CHECK-LABEL: test_vsqaddq_u64
   11314   return vsqaddq_u64(a, b);
   11315   // CHECK: usqadd {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   11316 }
   11317 
   11318 int64x1_t test_vabs_s64(int64x1_t a) {
   11319   // CHECK-LABEL: test_vabs_s64
   11320   return vabs_s64(a);
   11321   // CHECK: abs d{{[0-9]+}}, d{{[0-9]+}}
   11322 }
   11323 
   11324 int64x1_t test_vqabs_s64(int64x1_t a) {
   11325   // CHECK-LABEL: test_vqabs_s64
   11326   return vqabs_s64(a);
   11327   // CHECK: sqabs d{{[0-9]+}}, d{{[0-9]+}}
   11328 }
   11329 
   11330 int64x1_t test_vqneg_s64(int64x1_t a) {
   11331   // CHECK-LABEL: test_vqneg_s64
   11332   return vqneg_s64(a);
   11333   // CHECK: sqneg d{{[0-9]+}}, d{{[0-9]+}}
   11334 }
   11335 
   11336 int64x1_t test_vneg_s64(int64x1_t a) {
   11337   // CHECK-LABEL: test_vneg_s64
   11338   return vneg_s64(a);
   11339   // CHECK: neg d{{[0-9]+}}, d{{[0-9]+}}
   11340 }
   11341 
   11342 float32_t test_vaddv_f32(float32x2_t a) {
   11343   // CHECK-LABEL: test_vaddv_f32
   11344   return vaddv_f32(a);
   11345   // CHECK: faddp {{s[0-9]+}}, {{v[0-9]+}}.2s
   11346 }
   11347 
   11348 float32_t test_vaddvq_f32(float32x4_t a) {
   11349   // CHECK-LABEL: test_vaddvq_f32
   11350   return vaddvq_f32(a);
   11351   // CHECK: faddp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
   11352   // CHECK: faddp {{s[0-9]+}}, {{v[0-9]+}}.2s
   11353 }
   11354 
   11355 float64_t test_vaddvq_f64(float64x2_t a) {
   11356   // CHECK-LABEL: test_vaddvq_f64
   11357   return vaddvq_f64(a);
   11358   // CHECK: faddp {{d[0-9]+}}, {{v[0-9]+}}.2d
   11359 }
   11360 
   11361 float32_t test_vmaxv_f32(float32x2_t a) {
   11362   // CHECK-LABEL: test_vmaxv_f32
   11363   return vmaxv_f32(a);
   11364   // CHECK: fmaxp {{s[0-9]+}}, {{v[0-9]+}}.2s
   11365 }
   11366 
   11367 float64_t test_vmaxvq_f64(float64x2_t a) {
   11368   // CHECK-LABEL: test_vmaxvq_f64
   11369   return vmaxvq_f64(a);
   11370   // CHECK: fmaxp {{d[0-9]+}}, {{v[0-9]+}}.2d
   11371 }
   11372 
   11373 float32_t test_vminv_f32(float32x2_t a) {
   11374   // CHECK-LABEL: test_vminv_f32
   11375   return vminv_f32(a);
   11376   // CHECK: fminp {{s[0-9]+}}, {{v[0-9]+}}.2s
   11377 }
   11378 
   11379 float64_t test_vminvq_f64(float64x2_t a) {
   11380   // CHECK-LABEL: test_vminvq_f64
   11381   return vminvq_f64(a);
   11382   // CHECK: fminp {{d[0-9]+}}, {{v[0-9]+}}.2d
   11383 }
   11384 
   11385 float64_t test_vmaxnmvq_f64(float64x2_t a) {
   11386   // CHECK-LABEL: test_vmaxnmvq_f64
   11387   return vmaxnmvq_f64(a);
   11388   // CHECK: fmaxnmp {{d[0-9]+}}, {{v[0-9]+}}.2d
   11389 }
   11390 
   11391 float32_t test_vmaxnmv_f32(float32x2_t a) {
   11392   // CHECK-LABEL: test_vmaxnmv_f32
   11393   return vmaxnmv_f32(a);
   11394   // CHECK: fmaxnmp {{s[0-9]+}}, {{v[0-9]+}}.2s
   11395 }
   11396 
   11397 float64_t test_vminnmvq_f64(float64x2_t a) {
   11398   // CHECK-LABEL: test_vminnmvq_f64
   11399   return vminnmvq_f64(a);
   11400   // CHECK: fminnmp {{d[0-9]+}}, {{v[0-9]+}}.2d
   11401 }
   11402 
   11403 float32_t test_vminnmv_f32(float32x2_t a) {
   11404   // CHECK-LABEL: test_vminnmv_f32
   11405   return vminnmv_f32(a);
   11406   // CHECK: fminnmp {{s[0-9]+}}, {{v[0-9]+}}.2s
   11407 }
   11408 
   11409 int64x2_t test_vpaddq_s64(int64x2_t a, int64x2_t b) {
   11410   // CHECK-LABEL: test_vpaddq_s64
   11411   return vpaddq_s64(a, b);
   11412   // CHECK: addp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   11413 }
   11414 
   11415 uint64x2_t test_vpaddq_u64(uint64x2_t a, uint64x2_t b) {
   11416   // CHECK-LABEL: test_vpaddq_u64
   11417   return vpaddq_u64(a, b);
   11418   // CHECK: addp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
   11419 }
   11420 
   11421 uint64_t test_vpaddd_u64(uint64x2_t a) {
   11422   // CHECK-LABEL: test_vpaddd_u64
   11423   return vpaddd_u64(a);
   11424   // CHECK: addp {{d[0-9]+}}, {{v[0-9]+}}.2d
   11425 }
   11426 
   11427 int64_t test_vaddvq_s64(int64x2_t a) {
   11428   // CHECK-LABEL: test_vaddvq_s64
   11429   return vaddvq_s64(a);
   11430   // CHECK: addp {{d[0-9]+}}, {{v[0-9]+}}.2d
   11431 }
   11432 
   11433 uint64_t test_vaddvq_u64(uint64x2_t a) {
   11434   // CHECK-LABEL: test_vaddvq_u64
   11435   return vaddvq_u64(a);
   11436   // CHECK: addp {{d[0-9]+}}, {{v[0-9]+}}.2d
   11437 }
   11438 
   11439 float64x1_t test_vadd_f64(float64x1_t a, float64x1_t b) {
   11440   // CHECK-LABEL: test_vadd_f64
   11441   return vadd_f64(a, b);
   11442   // CHECK: fadd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11443 }
   11444 
   11445 float64x1_t test_vmul_f64(float64x1_t a, float64x1_t b) {
   11446   // CHECK-LABEL: test_vmul_f64
   11447   return vmul_f64(a, b);
   11448   // CHECK: fmul d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11449 }
   11450 
   11451 float64x1_t test_vdiv_f64(float64x1_t a, float64x1_t b) {
   11452   // CHECK-LABEL: test_vdiv_f64
   11453   return vdiv_f64(a, b);
   11454   // CHECK: fdiv d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11455 }
   11456 
   11457 float64x1_t test_vmla_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
   11458   // CHECK-LABEL: test_vmla_f64
   11459   return vmla_f64(a, b, c);
   11460   // CHECK: fmadd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11461 }
   11462 
   11463 float64x1_t test_vmls_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
   11464   // CHECK-LABEL: test_vmls_f64
   11465   return vmls_f64(a, b, c);
   11466   // CHECK: fmsub d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11467 }
   11468 
   11469 float64x1_t test_vfma_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
   11470   // CHECK-LABEL: test_vfma_f64
   11471   return vfma_f64(a, b, c);
   11472   // CHECK: fmadd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11473 }
   11474 
   11475 float64x1_t test_vfms_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
   11476   // CHECK-LABEL: test_vfms_f64
   11477   return vfms_f64(a, b, c);
   11478   // CHECK: fmsub d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11479 }
   11480 
   11481 float64x1_t test_vsub_f64(float64x1_t a, float64x1_t b) {
   11482   // CHECK-LABEL: test_vsub_f64
   11483   return vsub_f64(a, b);
   11484   // CHECK: fsub d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11485 }
   11486 
   11487 float64x1_t test_vabd_f64(float64x1_t a, float64x1_t b) {
   11488   // CHECK-LABEL: test_vabd_f64
   11489   return vabd_f64(a, b);
   11490   // CHECK: fabd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11491 }
   11492 
   11493 float64x1_t test_vmax_f64(float64x1_t a, float64x1_t b) {
   11494 // CHECK-LABEL: test_vmax_f64
   11495   return vmax_f64(a, b);
   11496 // CHECK: fmax d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11497 }
   11498 
   11499 float64x1_t test_vmin_f64(float64x1_t a, float64x1_t b) {
   11500 // CHECK-LABEL: test_vmin_f64
   11501   return vmin_f64(a, b);
   11502 // CHECK: fmin d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11503 }
   11504 
   11505 float64x1_t test_vmaxnm_f64(float64x1_t a, float64x1_t b) {
   11506 // CHECK-LABEL: test_vmaxnm_f64
   11507   return vmaxnm_f64(a, b);
   11508 // CHECK: fmaxnm d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11509 }
   11510 
   11511 float64x1_t test_vminnm_f64(float64x1_t a, float64x1_t b) {
   11512 // CHECK-LABEL: test_vminnm_f64
   11513   return vminnm_f64(a, b);
   11514 // CHECK: fminnm d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11515 }
   11516 
   11517 float64x1_t test_vabs_f64(float64x1_t a) {
   11518   // CHECK-LABEL: test_vabs_f64
   11519   return vabs_f64(a);
   11520   // CHECK: fabs d{{[0-9]+}}, d{{[0-9]+}}
   11521 }
   11522 
   11523 float64x1_t test_vneg_f64(float64x1_t a) {
   11524   // CHECK-LABEL: test_vneg_f64
   11525   return vneg_f64(a);
   11526   // CHECK: fneg d{{[0-9]+}}, d{{[0-9]+}}
   11527 }
   11528 
   11529 int64x1_t test_vcvt_s64_f64(float64x1_t a) {
   11530   // CHECK-LABEL: test_vcvt_s64_f64
   11531   return vcvt_s64_f64(a);
   11532   // CHECK: fcvtzs {{[xd][0-9]+}}, d{{[0-9]+}}
   11533 }
   11534 
   11535 uint64x1_t test_vcvt_u64_f64(float64x1_t a) {
   11536   // CHECK-LABEL: test_vcvt_u64_f64
   11537   return vcvt_u64_f64(a);
   11538   // CHECK: fcvtzu {{[xd][0-9]+}}, d{{[0-9]+}}
   11539 }
   11540 
   11541 int64x1_t test_vcvtn_s64_f64(float64x1_t a) {
   11542   // CHECK-LABEL: test_vcvtn_s64_f64
   11543   return vcvtn_s64_f64(a);
   11544   // CHECK: fcvtns d{{[0-9]+}}, d{{[0-9]+}}
   11545 }
   11546 
   11547 uint64x1_t test_vcvtn_u64_f64(float64x1_t a) {
   11548   // CHECK-LABEL: test_vcvtn_u64_f64
   11549   return vcvtn_u64_f64(a);
   11550   // CHECK: fcvtnu d{{[0-9]+}}, d{{[0-9]+}}
   11551 }
   11552 
   11553 int64x1_t test_vcvtp_s64_f64(float64x1_t a) {
   11554   // CHECK-LABEL: test_vcvtp_s64_f64
   11555   return vcvtp_s64_f64(a);
   11556   // CHECK: fcvtps d{{[0-9]+}}, d{{[0-9]+}}
   11557 }
   11558 
   11559 uint64x1_t test_vcvtp_u64_f64(float64x1_t a) {
   11560   // CHECK-LABEL: test_vcvtp_u64_f64
   11561   return vcvtp_u64_f64(a);
   11562   // CHECK: fcvtpu d{{[0-9]+}}, d{{[0-9]+}}
   11563 }
   11564 
   11565 int64x1_t test_vcvtm_s64_f64(float64x1_t a) {
   11566   // CHECK-LABEL: test_vcvtm_s64_f64
   11567   return vcvtm_s64_f64(a);
   11568   // CHECK: fcvtms d{{[0-9]+}}, d{{[0-9]+}}
   11569 }
   11570 
   11571 uint64x1_t test_vcvtm_u64_f64(float64x1_t a) {
   11572   // CHECK-LABEL: test_vcvtm_u64_f64
   11573   return vcvtm_u64_f64(a);
   11574   // CHECK: fcvtmu d{{[0-9]+}}, d{{[0-9]+}}
   11575 }
   11576 
   11577 int64x1_t test_vcvta_s64_f64(float64x1_t a) {
   11578   // CHECK-LABEL: test_vcvta_s64_f64
   11579   return vcvta_s64_f64(a);
   11580   // CHECK: fcvtas d{{[0-9]+}}, d{{[0-9]+}}
   11581 }
   11582 
   11583 uint64x1_t test_vcvta_u64_f64(float64x1_t a) {
   11584   // CHECK-LABEL: test_vcvta_u64_f64
   11585   return vcvta_u64_f64(a);
   11586   // CHECK: fcvtau d{{[0-9]+}}, d{{[0-9]+}}
   11587 }
   11588 
   11589 float64x1_t test_vcvt_f64_s64(int64x1_t a) {
   11590   // CHECK-LABEL: test_vcvt_f64_s64
   11591   return vcvt_f64_s64(a);
   11592   // CHECK: scvtf d{{[0-9]+}}, {{[xd][0-9]+}}
   11593 }
   11594 
   11595 float64x1_t test_vcvt_f64_u64(uint64x1_t a) {
   11596   // CHECK-LABEL: test_vcvt_f64_u64
   11597   return vcvt_f64_u64(a);
   11598   // CHECK: ucvtf d{{[0-9]+}}, {{[xd][0-9]+}}
   11599 }
   11600 
   11601 int64x1_t test_vcvt_n_s64_f64(float64x1_t a) {
   11602   // CHECK-LABEL: test_vcvt_n_s64_f64
   11603   return vcvt_n_s64_f64(a, 64);
   11604   // CHECK: fcvtzs d{{[0-9]+}}, d{{[0-9]+}}, #64
   11605 }
   11606 
   11607 uint64x1_t test_vcvt_n_u64_f64(float64x1_t a) {
   11608   // CHECK-LABEL: test_vcvt_n_u64_f64
   11609   return vcvt_n_u64_f64(a, 64);
   11610   // CHECK: fcvtzu d{{[0-9]+}}, d{{[0-9]+}}, #64
   11611 }
   11612 
   11613 float64x1_t test_vcvt_n_f64_s64(int64x1_t a) {
   11614   // CHECK-LABEL: test_vcvt_n_f64_s64
   11615   return vcvt_n_f64_s64(a, 64);
   11616   // CHECK: scvtf d{{[0-9]+}}, d{{[0-9]+}}, #64
   11617 }
   11618 
   11619 float64x1_t test_vcvt_n_f64_u64(uint64x1_t a) {
   11620   // CHECK-LABEL: test_vcvt_n_f64_u64
   11621   return vcvt_n_f64_u64(a, 64);
   11622   // CHECK: ucvtf d{{[0-9]+}}, d{{[0-9]+}}, #64
   11623 }
   11624 
   11625 float64x1_t test_vrndn_f64(float64x1_t a) {
   11626   // CHECK-LABEL: test_vrndn_f64
   11627   return vrndn_f64(a);
   11628   // CHECK: frintn d{{[0-9]+}}, d{{[0-9]+}}
   11629 }
   11630 
   11631 float64x1_t test_vrnda_f64(float64x1_t a) {
   11632   // CHECK-LABEL: test_vrnda_f64
   11633   return vrnda_f64(a);
   11634   // CHECK: frinta d{{[0-9]+}}, d{{[0-9]+}}
   11635 }
   11636 
   11637 float64x1_t test_vrndp_f64(float64x1_t a) {
   11638   // CHECK-LABEL: test_vrndp_f64
   11639   return vrndp_f64(a);
   11640   // CHECK: frintp d{{[0-9]+}}, d{{[0-9]+}}
   11641 }
   11642 
   11643 float64x1_t test_vrndm_f64(float64x1_t a) {
   11644   // CHECK-LABEL: test_vrndm_f64
   11645   return vrndm_f64(a);
   11646   // CHECK: frintm d{{[0-9]+}}, d{{[0-9]+}}
   11647 }
   11648 
   11649 float64x1_t test_vrndx_f64(float64x1_t a) {
   11650   // CHECK-LABEL: test_vrndx_f64
   11651   return vrndx_f64(a);
   11652   // CHECK: frintx d{{[0-9]+}}, d{{[0-9]+}}
   11653 }
   11654 
   11655 float64x1_t test_vrnd_f64(float64x1_t a) {
   11656   // CHECK-LABEL: test_vrnd_f64
   11657   return vrnd_f64(a);
   11658   // CHECK: frintz d{{[0-9]+}}, d{{[0-9]+}}
   11659 }
   11660 
   11661 float64x1_t test_vrndi_f64(float64x1_t a) {
   11662   // CHECK-LABEL: test_vrndi_f64
   11663   return vrndi_f64(a);
   11664   // CHECK: frinti d{{[0-9]+}}, d{{[0-9]+}}
   11665 }
   11666 
   11667 float64x1_t test_vrsqrte_f64(float64x1_t a) {
   11668   // CHECK-LABEL: test_vrsqrte_f64
   11669   return vrsqrte_f64(a);
   11670   // CHECK: frsqrte d{{[0-9]+}}, d{{[0-9]+}}
   11671 }
   11672 
   11673 float64x1_t test_vrecpe_f64(float64x1_t a) {
   11674   // CHECK-LABEL: test_vrecpe_f64
   11675   return vrecpe_f64(a);
   11676   // CHECK: frecpe d{{[0-9]+}}, d{{[0-9]+}}
   11677 }
   11678 
   11679 float64x1_t test_vsqrt_f64(float64x1_t a) {
   11680   // CHECK-LABEL: test_vsqrt_f64
   11681   return vsqrt_f64(a);
   11682   // CHECK: fsqrt d{{[0-9]+}}, d{{[0-9]+}}
   11683 }
   11684 
   11685 float64x1_t test_vrecps_f64(float64x1_t a, float64x1_t b) {
   11686   // CHECK-LABEL: test_vrecps_f64
   11687   return vrecps_f64(a, b);
   11688   // CHECK: frecps d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11689 }
   11690 
   11691 float64x1_t test_vrsqrts_f64(float64x1_t a, float64x1_t b) {
   11692   // CHECK-LABEL: test_vrsqrts_f64
   11693   return vrsqrts_f64(a, b);
   11694   // CHECK: frsqrts d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
   11695 }
   11696 
   11697 int32_t test_vminv_s32(int32x2_t a) {
   11698   // CHECK-LABEL: test_vminv_s32
   11699   return vminv_s32(a);
   11700   // CHECK: sminp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   11701 }
   11702 
   11703 uint32_t test_vminv_u32(uint32x2_t a) {
   11704   // CHECK-LABEL: test_vminv_u32
   11705   return vminv_u32(a);
   11706   // CHECK: uminp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   11707 }
   11708 
   11709 int32_t test_vmaxv_s32(int32x2_t a) {
   11710   // CHECK-LABEL: test_vmaxv_s32
   11711   return vmaxv_s32(a);
   11712   // CHECK: smaxp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   11713 }
   11714 
   11715 uint32_t test_vmaxv_u32(uint32x2_t a) {
   11716   // CHECK-LABEL: test_vmaxv_u32
   11717   return vmaxv_u32(a);
   11718   // CHECK: umaxp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   11719 }
   11720 
   11721 int32_t test_vaddv_s32(int32x2_t a) {
   11722   // CHECK-LABEL: test_vaddv_s32
   11723   return vaddv_s32(a);
   11724   // CHECK: addp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   11725 }
   11726 
   11727 uint32_t test_vaddv_u32(uint32x2_t a) {
   11728   // CHECK-LABEL: test_vaddv_u32
   11729   return vaddv_u32(a);
   11730   // CHECK: addp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
   11731 }
   11732 
   11733 int64_t test_vaddlv_s32(int32x2_t a) {
   11734   // CHECK-LABEL: test_vaddlv_s32
   11735   return vaddlv_s32(a);
   11736   // CHECK: saddlp {{v[0-9]+}}.1d, {{v[0-9]+}}.2s
   11737 }
   11738 
   11739 uint64_t test_vaddlv_u32(uint32x2_t a) {
   11740   // CHECK-LABEL: test_vaddlv_u32
   11741   return vaddlv_u32(a);
   11742   // CHECK: uaddlp {{v[0-9]+}}.1d, {{v[0-9]+}}.2s
   11743 }
   11744