Home | History | Annotate | Download | only in CodeGen
      1 // REQUIRES: aarch64-registered-target
      2 // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
      3 // RUN:   -ffp-contract=fast -S -O3 -o - %s | FileCheck %s
      4 
      5 // Test new aarch64 intrinsics and types
      6 
      7 #include <arm_neon.h>
      8 
      9 // CHECK-LABEL: test_vceqz_s8
     10 // CHECK: cmeq  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
     11 uint8x8_t test_vceqz_s8(int8x8_t a) {
     12   return vceqz_s8(a);
     13 }
     14 
     15 // CHECK-LABEL: test_vceqz_s16
     16 // CHECK: cmeq  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
     17 uint16x4_t test_vceqz_s16(int16x4_t a) {
     18   return vceqz_s16(a);
     19 }
     20 
     21 // CHECK-LABEL: test_vceqz_s32
     22 // CHECK: cmeq  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
     23 uint32x2_t test_vceqz_s32(int32x2_t a) {
     24   return vceqz_s32(a);
     25 }
     26 
     27 // CHECK-LABEL: test_vceqz_s64
     28 // CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
     29 uint64x1_t test_vceqz_s64(int64x1_t a) {
     30   return vceqz_s64(a);
     31 }
     32 
     33 // CHECK-LABEL: test_vceqz_u64
     34 // CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
     35 uint64x1_t test_vceqz_u64(uint64x1_t a) {
     36   return vceqz_u64(a);
     37 }
     38 
     39 // CHECK-LABEL: test_vceqz_p64
     40 // CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
     41 uint64x1_t test_vceqz_p64(poly64x1_t a) {
     42   return vceqz_p64(a);
     43 }
     44 
     45 // CHECK-LABEL: test_vceqzq_s8
     46 // CHECK: cmeq  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
     47 uint8x16_t test_vceqzq_s8(int8x16_t a) {
     48   return vceqzq_s8(a);
     49 }
     50 
     51 // CHECK-LABEL: test_vceqzq_s16
     52 // CHECK: cmeq  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
     53 uint16x8_t test_vceqzq_s16(int16x8_t a) {
     54   return vceqzq_s16(a);
     55 }
     56 
     57 // CHECK-LABEL: test_vceqzq_s32
     58 // CHECK: cmeq  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
     59 uint32x4_t test_vceqzq_s32(int32x4_t a) {
     60   return vceqzq_s32(a);
     61 }
     62 
     63 // CHECK-LABEL: test_vceqzq_s64
     64 // CHECK: cmeq  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
     65 uint64x2_t test_vceqzq_s64(int64x2_t a) {
     66   return vceqzq_s64(a);
     67 }
     68 
     69 // CHECK-LABEL: test_vceqz_u8
     70 // CHECK: cmeq  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
     71 uint8x8_t test_vceqz_u8(uint8x8_t a) {
     72   return vceqz_u8(a);
     73 }
     74 
     75 // CHECK-LABEL: test_vceqz_u16
     76 // CHECK: cmeq  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
     77 uint16x4_t test_vceqz_u16(uint16x4_t a) {
     78   return vceqz_u16(a);
     79 }
     80 
     81 // CHECK-LABEL: test_vceqz_u32
     82 // CHECK: cmeq  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
     83 uint32x2_t test_vceqz_u32(uint32x2_t a) {
     84   return vceqz_u32(a);
     85 }
     86 
     87 // CHECK-LABEL: test_vceqzq_u8
     88 // CHECK: cmeq  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
     89 uint8x16_t test_vceqzq_u8(uint8x16_t a) {
     90   return vceqzq_u8(a);
     91 }
     92 
     93 // CHECK-LABEL: test_vceqzq_u16
     94 // CHECK: cmeq  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
     95 uint16x8_t test_vceqzq_u16(uint16x8_t a) {
     96   return vceqzq_u16(a);
     97 }
     98 
     99 // CHECK-LABEL: test_vceqzq_u32
    100 // CHECK: cmeq  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
    101 uint32x4_t test_vceqzq_u32(uint32x4_t a) {
    102   return vceqzq_u32(a);
    103 }
    104 
    105 // CHECK-LABEL: test_vceqzq_u64
    106 // CHECK: cmeq  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
    107 uint64x2_t test_vceqzq_u64(uint64x2_t a) {
    108   return vceqzq_u64(a);
    109 }
    110 
    111 // CHECK-LABEL: test_vceqz_f32
    112 // CHECK: fcmeq  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
    113 uint32x2_t test_vceqz_f32(float32x2_t a) {
    114   return vceqz_f32(a);
    115 }
    116 
    117 // CHECK-LABEL: test_vceqz_f64
    118 // CHECK: fcmeq  {{d[0-9]+}}, {{d[0-9]+}}, #0
    119 uint64x1_t test_vceqz_f64(float64x1_t a) {
    120   return vceqz_f64(a);
    121 }
    122 
    123 // CHECK-LABEL: test_vceqzq_f32
    124 // CHECK: fcmeq  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
    125 uint32x4_t test_vceqzq_f32(float32x4_t a) {
    126   return vceqzq_f32(a);
    127 }
    128 
    129 // CHECK-LABEL: test_vceqz_p8
    130 // CHECK: cmeq  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
    131 uint8x8_t test_vceqz_p8(poly8x8_t a) {
    132   return vceqz_p8(a);
    133 }
    134 
    135 // CHECK-LABEL: test_vceqzq_p8
    136 // CHECK: cmeq  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
    137 uint8x16_t test_vceqzq_p8(poly8x16_t a) {
    138   return vceqzq_p8(a);
    139 }
    140 
    141 // CHECK-LABEL: test_vceqz_p16
    142 // CHECK: cmeq  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
    143 uint16x4_t test_vceqz_p16(poly16x4_t a) {
    144   return vceqz_p16(a);
    145 }
    146 
    147 // CHECK-LABEL: test_vceqzq_p16
    148 // CHECK: cmeq  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
    149 uint16x8_t test_vceqzq_p16(poly16x8_t a) {
    150   return vceqzq_p16(a);
    151 }
    152 
    153 // CHECK-LABEL: test_vceqzq_f64
    154 // CHECK: fcmeq  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
    155 uint64x2_t test_vceqzq_f64(float64x2_t a) {
    156   return vceqzq_f64(a);
    157 }
    158 
    159 // CHECK-LABEL: test_vceqzq_p64
    160 // CHECK: cmeq  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
    161 uint64x2_t test_vceqzq_p64(poly64x2_t a) {
    162   return vceqzq_p64(a);
    163 }
    164 
    165 // CHECK-LABEL: test_vcgez_s8
    166 // CHECK: cmge  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
    167 uint8x8_t test_vcgez_s8(int8x8_t a) {
    168   return vcgez_s8(a);
    169 }
    170 
    171 // CHECK-LABEL: test_vcgez_s16
    172 // CHECK: cmge  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
    173 uint16x4_t test_vcgez_s16(int16x4_t a) {
    174   return vcgez_s16(a);
    175 }
    176 
    177 // CHECK-LABEL: test_vcgez_s32
    178 // CHECK: cmge  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
    179 uint32x2_t test_vcgez_s32(int32x2_t a) {
    180   return vcgez_s32(a);
    181 }
    182 
    183 // CHECK-LABEL: test_vcgez_s64
    184 // CHECK: cmge {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
    185 uint64x1_t test_vcgez_s64(int64x1_t a) {
    186   return vcgez_s64(a);
    187 }
    188 
    189 // CHECK-LABEL: test_vcgezq_s8
    190 // CHECK: cmge  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
    191 uint8x16_t test_vcgezq_s8(int8x16_t a) {
    192   return vcgezq_s8(a);
    193 }
    194 
    195 // CHECK-LABEL: test_vcgezq_s16
    196 // CHECK: cmge  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
    197 uint16x8_t test_vcgezq_s16(int16x8_t a) {
    198   return vcgezq_s16(a);
    199 }
    200 
    201 // CHECK-LABEL: test_vcgezq_s32
    202 // CHECK: cmge  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
    203 uint32x4_t test_vcgezq_s32(int32x4_t a) {
    204   return vcgezq_s32(a);
    205 }
    206 
    207 // CHECK-LABEL: test_vcgezq_s64
    208 // CHECK: cmge  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
    209 uint64x2_t test_vcgezq_s64(int64x2_t a) {
    210   return vcgezq_s64(a);
    211 }
    212 
    213 // CHECK-LABEL: test_vcgez_f32
    214 // CHECK: fcmge  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
    215 uint32x2_t test_vcgez_f32(float32x2_t a) {
    216   return vcgez_f32(a);
    217 }
    218 
    219 // CHECK-LABEL: test_vcgez_f64
    220 // CHECK: fcmge  {{d[0-9]+}}, {{d[0-9]+}}, #0
    221 uint64x1_t test_vcgez_f64(float64x1_t a) {
    222   return vcgez_f64(a);
    223 }
    224 
    225 // CHECK-LABEL: test_vcgezq_f32
    226 // CHECK: fcmge  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
    227 uint32x4_t test_vcgezq_f32(float32x4_t a) {
    228   return vcgezq_f32(a);
    229 }
    230 
    231 // CHECK-LABEL: test_vcgezq_f64
    232 // CHECK: fcmge  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
    233 uint64x2_t test_vcgezq_f64(float64x2_t a) {
    234   return vcgezq_f64(a);
    235 }
    236 
    237 // CHECK-LABEL: test_vclez_s8
    238 // CHECK: cmle  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
    239 uint8x8_t test_vclez_s8(int8x8_t a) {
    240   return vclez_s8(a);
    241 }
    242 
    243 // CHECK-LABEL: test_vclez_s16
    244 // CHECK: cmle  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
    245 uint16x4_t test_vclez_s16(int16x4_t a) {
    246   return vclez_s16(a);
    247 }
    248 
    249 // CHECK-LABEL: test_vclez_s32
    250 // CHECK: cmle  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
    251 uint32x2_t test_vclez_s32(int32x2_t a) {
    252   return vclez_s32(a);
    253 }
    254 
    255 // CHECK-LABEL: test_vclez_s64
    256 // CHECK: cmle {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
    257 uint64x1_t test_vclez_s64(int64x1_t a) {
    258   return vclez_s64(a);
    259 }
    260 
    261 // CHECK-LABEL: test_vclezq_s8
    262 // CHECK: cmle  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
    263 uint8x16_t test_vclezq_s8(int8x16_t a) {
    264   return vclezq_s8(a);
    265 }
    266 
    267 // CHECK-LABEL: test_vclezq_s16
    268 // CHECK: cmle  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
    269 uint16x8_t test_vclezq_s16(int16x8_t a) {
    270   return vclezq_s16(a);
    271 }
    272 
    273 // CHECK-LABEL: test_vclezq_s32
    274 // CHECK: cmle  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
    275 uint32x4_t test_vclezq_s32(int32x4_t a) {
    276   return vclezq_s32(a);
    277 }
    278 
    279 // CHECK-LABEL: test_vclezq_s64
    280 // CHECK: cmle  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
    281 uint64x2_t test_vclezq_s64(int64x2_t a) {
    282   return vclezq_s64(a);
    283 }
    284 
    285 // CHECK-LABEL: test_vclez_f32
    286 // CHECK: fcmle  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
    287 uint32x2_t test_vclez_f32(float32x2_t a) {
    288   return vclez_f32(a);
    289 }
    290 
    291 // CHECK-LABEL: test_vclez_f64
    292 // CHECK: fcmle  {{d[0-9]+}}, {{d[0-9]+}}, #0
    293 uint64x1_t test_vclez_f64(float64x1_t a) {
    294   return vclez_f64(a);
    295 }
    296 
    297 // CHECK-LABEL: test_vclezq_f32
    298 // CHECK: fcmle  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
    299 uint32x4_t test_vclezq_f32(float32x4_t a) {
    300   return vclezq_f32(a);
    301 }
    302 
    303 // CHECK-LABEL: test_vclezq_f64
    304 // CHECK: fcmle  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
    305 uint64x2_t test_vclezq_f64(float64x2_t a) {
    306   return vclezq_f64(a);
    307 }
    308 
    309 // CHECK-LABEL: test_vcgtz_s8
    310 // CHECK: cmgt  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #{{0x0|0}}
    311 uint8x8_t test_vcgtz_s8(int8x8_t a) {
    312   return vcgtz_s8(a);
    313 }
    314 
    315 // CHECK-LABEL: test_vcgtz_s16
    316 // CHECK: cmgt  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #{{0x0|0}}
    317 uint16x4_t test_vcgtz_s16(int16x4_t a) {
    318   return vcgtz_s16(a);
    319 }
    320 
    321 // CHECK-LABEL: test_vcgtz_s32
    322 // CHECK: cmgt  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #{{0x0|0}}
    323 uint32x2_t test_vcgtz_s32(int32x2_t a) {
    324   return vcgtz_s32(a);
    325 }
    326 
    327 // CHECK-LABEL: test_vcgtz_s64
    328 // CHECK: cmgt {{d[0-9]+}}, {{d[0-9]+}}, #{{0x0|0}}
    329 uint64x1_t test_vcgtz_s64(int64x1_t a) {
    330   return vcgtz_s64(a);
    331 }
    332 
    333 // CHECK-LABEL: test_vcgtzq_s8
    334 // CHECK: cmgt  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #{{0x0|0}}
    335 uint8x16_t test_vcgtzq_s8(int8x16_t a) {
    336   return vcgtzq_s8(a);
    337 }
    338 
    339 // CHECK-LABEL: test_vcgtzq_s16
    340 // CHECK: cmgt  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #{{0x0|0}}
    341 uint16x8_t test_vcgtzq_s16(int16x8_t a) {
    342   return vcgtzq_s16(a);
    343 }
    344 
    345 // CHECK-LABEL: test_vcgtzq_s32
    346 // CHECK: cmgt  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #{{0x0|0}}
    347 uint32x4_t test_vcgtzq_s32(int32x4_t a) {
    348   return vcgtzq_s32(a);
    349 }
    350 
    351 // CHECK-LABEL: test_vcgtzq_s64
    352 // CHECK: cmgt  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #{{0x0|0}}
    353 uint64x2_t test_vcgtzq_s64(int64x2_t a) {
    354   return vcgtzq_s64(a);
    355 }
    356 
    357 // CHECK-LABEL: test_vcgtz_f32
    358 // CHECK: fcmgt  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
    359 uint32x2_t test_vcgtz_f32(float32x2_t a) {
    360   return vcgtz_f32(a);
    361 }
    362 
    363 // CHECK-LABEL: test_vcgtz_f64
    364 // CHECK: fcmgt  {{d[0-9]+}}, {{d[0-9]+}}, #0
    365 uint64x1_t test_vcgtz_f64(float64x1_t a) {
    366   return vcgtz_f64(a);
    367 }
    368 
    369 // CHECK-LABEL: test_vcgtzq_f32
    370 // CHECK: fcmgt  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
    371 uint32x4_t test_vcgtzq_f32(float32x4_t a) {
    372   return vcgtzq_f32(a);
    373 }
    374 
    375 // CHECK-LABEL: test_vcgtzq_f64
    376 // CHECK: fcmgt  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
    377 uint64x2_t test_vcgtzq_f64(float64x2_t a) {
    378   return vcgtzq_f64(a);
    379 }
    380 
    381 // CHECK-LABEL: test_vcltz_s8
    382 // CHECK: sshr  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #7
    383 uint8x8_t test_vcltz_s8(int8x8_t a) {
    384   return vcltz_s8(a);
    385 }
    386 
    387 // CHECK-LABEL: test_vcltz_s16
    388 // CHECK: sshr  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #15
    389 uint16x4_t test_vcltz_s16(int16x4_t a) {
    390   return vcltz_s16(a);
    391 }
    392 
    393 // CHECK-LABEL: test_vcltz_s32
    394 // CHECK: sshr  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #31
    395 uint32x2_t test_vcltz_s32(int32x2_t a) {
    396   return vcltz_s32(a);
    397 }
    398 
    399 // CHECK-LABEL: test_vcltz_s64
    400 // CHECK: sshr {{d[0-9]+}}, {{d[0-9]+}}, #63
    401 uint64x1_t test_vcltz_s64(int64x1_t a) {
    402   return vcltz_s64(a);
    403 }
    404 
    405 // CHECK-LABEL: test_vcltzq_s8
    406 // CHECK: sshr  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #7
    407 uint8x16_t test_vcltzq_s8(int8x16_t a) {
    408   return vcltzq_s8(a);
    409 }
    410 
    411 // CHECK-LABEL: test_vcltzq_s16
    412 // CHECK: sshr  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #15
    413 uint16x8_t test_vcltzq_s16(int16x8_t a) {
    414   return vcltzq_s16(a);
    415 }
    416 
    417 // CHECK-LABEL: test_vcltzq_s32
    418 // CHECK: sshr  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #31
    419 uint32x4_t test_vcltzq_s32(int32x4_t a) {
    420   return vcltzq_s32(a);
    421 }
    422 
    423 // CHECK-LABEL: test_vcltzq_s64
    424 // CHECK: sshr  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #63
    425 uint64x2_t test_vcltzq_s64(int64x2_t a) {
    426   return vcltzq_s64(a);
    427 }
    428 
    429 // CHECK-LABEL: test_vcltz_f32
    430 // CHECK: fcmlt  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
    431 uint32x2_t test_vcltz_f32(float32x2_t a) {
    432   return vcltz_f32(a);
    433 }
    434 
    435 // CHECK-LABEL: test_vcltz_f64
    436 // CHECK: fcmlt  {{d[0-9]+}}, {{d[0-9]+}}, #0
    437 uint64x1_t test_vcltz_f64(float64x1_t a) {
    438   return vcltz_f64(a);
    439 }
    440 
    441 // CHECK-LABEL: test_vcltzq_f32
    442 // CHECK: fcmlt  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
    443 uint32x4_t test_vcltzq_f32(float32x4_t a) {
    444   return vcltzq_f32(a);
    445 }
    446 
    447 // CHECK-LABEL: test_vcltzq_f64
    448 // CHECK: fcmlt  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
    449 uint64x2_t test_vcltzq_f64(float64x2_t a) {
    450   return vcltzq_f64(a);
    451 }
    452 
    453 // CHECK-LABEL: test_vrev16_s8
    454 // CHECK: rev16 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    455 int8x8_t test_vrev16_s8(int8x8_t a) {
    456   return vrev16_s8(a);
    457 }
    458 
    459 // CHECK-LABEL: test_vrev16_u8
    460 // CHECK: rev16 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    461 uint8x8_t test_vrev16_u8(uint8x8_t a) {
    462   return vrev16_u8(a);
    463 }
    464 
    465 // CHECK-LABEL: test_vrev16_p8
    466 // CHECK: rev16 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    467 poly8x8_t test_vrev16_p8(poly8x8_t a) {
    468   return vrev16_p8(a);
    469 }
    470 
    471 // CHECK-LABEL: test_vrev16q_s8
    472 // CHECK: rev16 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    473 int8x16_t test_vrev16q_s8(int8x16_t a) {
    474   return vrev16q_s8(a);
    475 }
    476 
    477 // CHECK-LABEL: test_vrev16q_u8
    478 // CHECK: rev16 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    479 uint8x16_t test_vrev16q_u8(uint8x16_t a) {
    480   return vrev16q_u8(a);
    481 }
    482 
    483 // CHECK-LABEL: test_vrev16q_p8
    484 // CHECK: rev16 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    485 poly8x16_t test_vrev16q_p8(poly8x16_t a) {
    486   return vrev16q_p8(a);
    487 }
    488 
    489 // CHECK-LABEL: test_vrev32_s8
    490 // CHECK: rev32 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    491 int8x8_t test_vrev32_s8(int8x8_t a) {
    492   return vrev32_s8(a);
    493 }
    494 
    495 // CHECK-LABEL: test_vrev32_s16
    496 // CHECK: rev32 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
    497 int16x4_t test_vrev32_s16(int16x4_t a) {
    498   return vrev32_s16(a);
    499 }
    500 
    501 // CHECK-LABEL: test_vrev32_u8
    502 // CHECK: rev32 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    503 uint8x8_t test_vrev32_u8(uint8x8_t a) {
    504   return vrev32_u8(a);
    505 }
    506 
    507 // CHECK-LABEL: test_vrev32_u16
    508 // CHECK: rev32 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
    509 uint16x4_t test_vrev32_u16(uint16x4_t a) {
    510   return vrev32_u16(a);
    511 }
    512 
    513 // CHECK-LABEL: test_vrev32_p8
    514 // CHECK: rev32 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    515 poly8x8_t test_vrev32_p8(poly8x8_t a) {
    516   return vrev32_p8(a);
    517 }
    518 
    519 // CHECK-LABEL: test_vrev32_p16
    520 // CHECK: rev32 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
    521 poly16x4_t test_vrev32_p16(poly16x4_t a) {
    522   return vrev32_p16(a);
    523 }
    524 
    525 // CHECK-LABEL: test_vrev32q_s8
    526 // CHECK: rev32 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    527 int8x16_t test_vrev32q_s8(int8x16_t a) {
    528   return vrev32q_s8(a);
    529 }
    530 
    531 // CHECK-LABEL: test_vrev32q_s16
    532 // CHECK: rev32 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
    533 int16x8_t test_vrev32q_s16(int16x8_t a) {
    534   return vrev32q_s16(a);
    535 }
    536 
    537 // CHECK-LABEL: test_vrev32q_u8
    538 // CHECK: rev32 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    539 uint8x16_t test_vrev32q_u8(uint8x16_t a) {
    540   return vrev32q_u8(a);
    541 }
    542 
    543 // CHECK-LABEL: test_vrev32q_u16
    544 // CHECK: rev32 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
    545 uint16x8_t test_vrev32q_u16(uint16x8_t a) {
    546   return vrev32q_u16(a);
    547 }
    548 
    549 // CHECK-LABEL: test_vrev32q_p8
    550 // CHECK: rev32 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    551 poly8x16_t test_vrev32q_p8(poly8x16_t a) {
    552   return vrev32q_p8(a);
    553 }
    554 
    555 // CHECK-LABEL: test_vrev32q_p16
    556 // CHECK: rev32 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
    557 poly16x8_t test_vrev32q_p16(poly16x8_t a) {
    558   return vrev32q_p16(a);
    559 }
    560 
    561 // CHECK-LABEL: test_vrev64_s8
    562 // CHECK: rev64 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    563 int8x8_t test_vrev64_s8(int8x8_t a) {
    564   return vrev64_s8(a);
    565 }
    566 
    567 // CHECK-LABEL: test_vrev64_s16
    568 // CHECK: rev64 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
    569 int16x4_t test_vrev64_s16(int16x4_t a) {
    570   return vrev64_s16(a);
    571 }
    572 
    573 // CHECK-LABEL: test_vrev64_s32
    574 // CHECK: rev64 v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
    575 int32x2_t test_vrev64_s32(int32x2_t a) {
    576   return vrev64_s32(a);
    577 }
    578 
    579 // CHECK-LABEL: test_vrev64_u8
    580 // CHECK: rev64 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    581 uint8x8_t test_vrev64_u8(uint8x8_t a) {
    582   return vrev64_u8(a);
    583 }
    584 
    585 // CHECK-LABEL: test_vrev64_u16
    586 // CHECK: rev64 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
    587 uint16x4_t test_vrev64_u16(uint16x4_t a) {
    588   return vrev64_u16(a);
    589 }
    590 
    591 // CHECK-LABEL: test_vrev64_u32
    592 // CHECK: rev64 v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
    593 uint32x2_t test_vrev64_u32(uint32x2_t a) {
    594   return vrev64_u32(a);
    595 }
    596 
    597 // CHECK-LABEL: test_vrev64_p8
    598 // CHECK: rev64 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    599 poly8x8_t test_vrev64_p8(poly8x8_t a) {
    600   return vrev64_p8(a);
    601 }
    602 
    603 // CHECK-LABEL: test_vrev64_p16
    604 // CHECK: rev64 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
    605 poly16x4_t test_vrev64_p16(poly16x4_t a) {
    606   return vrev64_p16(a);
    607 }
    608 
    609 // CHECK-LABEL: test_vrev64_f32
    610 // CHECK: rev64 v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
    611 float32x2_t test_vrev64_f32(float32x2_t a) {
    612   return vrev64_f32(a);
    613 }
    614 
    615 // CHECK-LABEL: test_vrev64q_s8
    616 // CHECK: rev64 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    617 int8x16_t test_vrev64q_s8(int8x16_t a) {
    618   return vrev64q_s8(a);
    619 }
    620 
    621 // CHECK-LABEL: test_vrev64q_s16
    622 // CHECK: rev64 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
    623 int16x8_t test_vrev64q_s16(int16x8_t a) {
    624   return vrev64q_s16(a);
    625 }
    626 
    627 // CHECK-LABEL: test_vrev64q_s32
    628 // CHECK: rev64 v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
    629 int32x4_t test_vrev64q_s32(int32x4_t a) {
    630   return vrev64q_s32(a);
    631 }
    632 
    633 // CHECK-LABEL: test_vrev64q_u8
    634 // CHECK: rev64 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    635 uint8x16_t test_vrev64q_u8(uint8x16_t a) {
    636   return vrev64q_u8(a);
    637 }
    638 
    639 // CHECK-LABEL: test_vrev64q_u16
    640 // CHECK: rev64 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
    641 uint16x8_t test_vrev64q_u16(uint16x8_t a) {
    642   return vrev64q_u16(a);
    643 }
    644 
    645 // CHECK-LABEL: test_vrev64q_u32
    646 // CHECK: rev64 v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
    647 uint32x4_t test_vrev64q_u32(uint32x4_t a) {
    648   return vrev64q_u32(a);
    649 }
    650 
    651 // CHECK-LABEL: test_vrev64q_p8
    652 // CHECK: rev64 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    653 poly8x16_t test_vrev64q_p8(poly8x16_t a) {
    654   return vrev64q_p8(a);
    655 }
    656 
    657 // CHECK-LABEL: test_vrev64q_p16
    658 // CHECK: rev64 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
    659 poly16x8_t test_vrev64q_p16(poly16x8_t a) {
    660   return vrev64q_p16(a);
    661 }
    662 
    663 // CHECK-LABEL: test_vrev64q_f32
    664 // CHECK: rev64 v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
    665 float32x4_t test_vrev64q_f32(float32x4_t a) {
    666   return vrev64q_f32(a);
    667 }
    668 
    669 int16x4_t test_vpaddl_s8(int8x8_t a) {
    670   // CHECK-LABEL: test_vpaddl_s8
    671   return vpaddl_s8(a);
    672   // CHECK: saddlp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
    673 }
    674 
    675 int32x2_t test_vpaddl_s16(int16x4_t a) {
    676   // CHECK-LABEL: test_vpaddl_s16
    677   return vpaddl_s16(a);
    678   // CHECK: saddlp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
    679 }
    680 
    681 int64x1_t test_vpaddl_s32(int32x2_t a) {
    682   // CHECK-LABEL: test_vpaddl_s32
    683   return vpaddl_s32(a);
    684   // CHECK: saddlp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
    685 }
    686 
    687 uint16x4_t test_vpaddl_u8(uint8x8_t a) {
    688   // CHECK-LABEL: test_vpaddl_u8
    689   return vpaddl_u8(a);
    690   // CHECK: uaddlp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
    691 }
    692 
    693 uint32x2_t test_vpaddl_u16(uint16x4_t a) {
    694   // CHECK-LABEL: test_vpaddl_u16
    695   return vpaddl_u16(a);
    696   // CHECK: uaddlp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
    697 }
    698 
    699 uint64x1_t test_vpaddl_u32(uint32x2_t a) {
    700   // CHECK-LABEL: test_vpaddl_u32
    701   return vpaddl_u32(a);
    702   // CHECK: uaddlp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
    703 }
    704 
    705 int16x8_t test_vpaddlq_s8(int8x16_t a) {
    706   // CHECK-LABEL: test_vpaddlq_s8
    707   return vpaddlq_s8(a);
    708   // CHECK: saddlp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
    709 }
    710 
    711 int32x4_t test_vpaddlq_s16(int16x8_t a) {
    712   // CHECK-LABEL: test_vpaddlq_s16
    713   return vpaddlq_s16(a);
    714   // CHECK: saddlp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
    715 }
    716 
    717 int64x2_t test_vpaddlq_s32(int32x4_t a) {
    718   // CHECK-LABEL: test_vpaddlq_s32
    719   return vpaddlq_s32(a);
    720   // CHECK: saddlp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
    721 }
    722 
    723 uint16x8_t test_vpaddlq_u8(uint8x16_t a) {
    724   // CHECK-LABEL: test_vpaddlq_u8
    725   return vpaddlq_u8(a);
    726   // CHECK: uaddlp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
    727 }
    728 
    729 uint32x4_t test_vpaddlq_u16(uint16x8_t a) {
    730   // CHECK-LABEL: test_vpaddlq_u16
    731   return vpaddlq_u16(a);
    732   // CHECK: uaddlp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
    733 }
    734 
    735 uint64x2_t test_vpaddlq_u32(uint32x4_t a) {
    736   // CHECK-LABEL: test_vpaddlq_u32
    737   return vpaddlq_u32(a);
    738   // CHECK: uaddlp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
    739 }
    740 
    741 int16x4_t test_vpadal_s8(int16x4_t a, int8x8_t b) {
    742   // CHECK-LABEL: test_vpadal_s8
    743   return vpadal_s8(a, b);
    744   // CHECK: sadalp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
    745 }
    746 
    747 int32x2_t test_vpadal_s16(int32x2_t a, int16x4_t b) {
    748   // CHECK-LABEL: test_vpadal_s16
    749   return vpadal_s16(a, b);
    750   // CHECK: sadalp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
    751 }
    752 
    753 int64x1_t test_vpadal_s32(int64x1_t a, int32x2_t b) {
    754   // CHECK-LABEL: test_vpadal_s32
    755   return vpadal_s32(a, b);
    756   // CHECK: sadalp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
    757 }
    758 
    759 uint16x4_t test_vpadal_u8(uint16x4_t a, uint8x8_t b) {
    760   // CHECK-LABEL: test_vpadal_u8
    761   return vpadal_u8(a, b);
    762   // CHECK: uadalp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
    763 }
    764 
    765 uint32x2_t test_vpadal_u16(uint32x2_t a, uint16x4_t b) {
    766   // CHECK-LABEL: test_vpadal_u16
    767   return vpadal_u16(a, b);
    768   // CHECK: uadalp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
    769 }
    770 
    771 uint64x1_t test_vpadal_u32(uint64x1_t a, uint32x2_t b) {
    772   // CHECK-LABEL: test_vpadal_u32
    773   return vpadal_u32(a, b);
    774   // CHECK: uadalp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
    775 }
    776 
    777 int16x8_t test_vpadalq_s8(int16x8_t a, int8x16_t b) {
    778   // CHECK-LABEL: test_vpadalq_s8
    779   return vpadalq_s8(a, b);
    780   // CHECK: sadalp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
    781 }
    782 
    783 int32x4_t test_vpadalq_s16(int32x4_t a, int16x8_t b) {
    784   // CHECK-LABEL: test_vpadalq_s16
    785   return vpadalq_s16(a, b);
    786   // CHECK: sadalp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
    787 }
    788 
    789 int64x2_t test_vpadalq_s32(int64x2_t a, int32x4_t b) {
    790   // CHECK-LABEL: test_vpadalq_s32
    791   return vpadalq_s32(a, b);
    792   // CHECK: sadalp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
    793 }
    794 
    795 uint16x8_t test_vpadalq_u8(uint16x8_t a, uint8x16_t b) {
    796   // CHECK-LABEL: test_vpadalq_u8
    797   return vpadalq_u8(a, b);
    798   // CHECK: uadalp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
    799 }
    800 
    801 uint32x4_t test_vpadalq_u16(uint32x4_t a, uint16x8_t b) {
    802   // CHECK-LABEL: test_vpadalq_u16
    803   return vpadalq_u16(a, b);
    804   // CHECK: uadalp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
    805 }
    806 
    807 uint64x2_t test_vpadalq_u32(uint64x2_t a, uint32x4_t b) {
    808   // CHECK-LABEL: test_vpadalq_u32
    809   return vpadalq_u32(a, b);
    810   // CHECK: uadalp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
    811 }
    812 
    813 int8x8_t test_vqabs_s8(int8x8_t a) {
    814   // CHECK-LABEL: test_vqabs_s8
    815   return vqabs_s8(a);
    816   // CHECK: sqabs v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    817 }
    818 
    819 int8x16_t test_vqabsq_s8(int8x16_t a) {
    820   // CHECK-LABEL: test_vqabsq_s8
    821   return vqabsq_s8(a);
    822   // CHECK: sqabs v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    823 }
    824 
    825 int16x4_t test_vqabs_s16(int16x4_t a) {
    826   // CHECK-LABEL: test_vqabs_s16
    827   return vqabs_s16(a);
    828   // CHECK: sqabs v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
    829 }
    830 
    831 int16x8_t test_vqabsq_s16(int16x8_t a) {
    832   // CHECK-LABEL: test_vqabsq_s16
    833   return vqabsq_s16(a);
    834   // CHECK: sqabs v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
    835 }
    836 
    837 int32x2_t test_vqabs_s32(int32x2_t a) {
    838   // CHECK-LABEL: test_vqabs_s32
    839   return vqabs_s32(a);
    840   // CHECK: sqabs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
    841 }
    842 
    843 int32x4_t test_vqabsq_s32(int32x4_t a) {
    844   // CHECK-LABEL: test_vqabsq_s32
    845   return vqabsq_s32(a);
    846   // CHECK: sqabs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
    847 }
    848 
    849 int64x2_t test_vqabsq_s64(int64x2_t a) {
    850   // CHECK-LABEL: test_vqabsq_s64
    851   return vqabsq_s64(a);
    852   // CHECK: sqabs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
    853 }
    854 
    855 int8x8_t test_vqneg_s8(int8x8_t a) {
    856   // CHECK-LABEL: test_vqneg_s8
    857   return vqneg_s8(a);
    858   // CHECK: sqneg v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    859 }
    860 
    861 int8x16_t test_vqnegq_s8(int8x16_t a) {
    862   // CHECK-LABEL: test_vqnegq_s8
    863   return vqnegq_s8(a);
    864   // CHECK: sqneg v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    865 }
    866 
    867 int16x4_t test_vqneg_s16(int16x4_t a) {
    868   // CHECK-LABEL: test_vqneg_s16
    869   return vqneg_s16(a);
    870   // CHECK: sqneg v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
    871 }
    872 
    873 int16x8_t test_vqnegq_s16(int16x8_t a) {
    874   // CHECK-LABEL: test_vqnegq_s16
    875   return vqnegq_s16(a);
    876   // CHECK: sqneg v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
    877 }
    878 
    879 int32x2_t test_vqneg_s32(int32x2_t a) {
    880   // CHECK-LABEL: test_vqneg_s32
    881   return vqneg_s32(a);
    882   // CHECK: sqneg v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
    883 }
    884 
    885 int32x4_t test_vqnegq_s32(int32x4_t a) {
    886   // CHECK-LABEL: test_vqnegq_s32
    887   return vqnegq_s32(a);
    888   // CHECK: sqneg v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
    889 }
    890 
    891 int64x2_t test_vqnegq_s64(int64x2_t a) {
    892   // CHECK-LABEL: test_vqnegq_s64
    893   return vqnegq_s64(a);
    894   // CHECK: sqneg v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
    895 }
    896 
    897 int8x8_t test_vneg_s8(int8x8_t a) {
    898   // CHECK-LABEL: test_vneg_s8
    899   return vneg_s8(a);
    900   // CHECK: neg v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    901 }
    902 
    903 int8x16_t test_vnegq_s8(int8x16_t a) {
    904   // CHECK-LABEL: test_vnegq_s8
    905   return vnegq_s8(a);
    906   // CHECK: neg v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    907 }
    908 
    909 int16x4_t test_vneg_s16(int16x4_t a) {
    910   // CHECK-LABEL: test_vneg_s16
    911   return vneg_s16(a);
    912   // CHECK: neg v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
    913 }
    914 
    915 int16x8_t test_vnegq_s16(int16x8_t a) {
    916   // CHECK-LABEL: test_vnegq_s16
    917   return vnegq_s16(a);
    918   // CHECK: neg v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
    919 }
    920 
    921 int32x2_t test_vneg_s32(int32x2_t a) {
    922   // CHECK-LABEL: test_vneg_s32
    923   return vneg_s32(a);
    924   // CHECK: neg v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
    925 }
    926 
    927 int32x4_t test_vnegq_s32(int32x4_t a) {
    928   // CHECK-LABEL: test_vnegq_s32
    929   return vnegq_s32(a);
    930   // CHECK: neg v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
    931 }
    932 
    933 int64x2_t test_vnegq_s64(int64x2_t a) {
    934   // CHECK-LABEL: test_vnegq_s64
    935   return vnegq_s64(a);
    936   // CHECK: neg v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
    937 }
    938 
    939 float32x2_t test_vneg_f32(float32x2_t a) {
    940   // CHECK-LABEL: test_vneg_f32
    941   return vneg_f32(a);
    942   // CHECK: fneg v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
    943 }
    944 
    945 float32x4_t test_vnegq_f32(float32x4_t a) {
    946   // CHECK-LABEL: test_vnegq_f32
    947   return vnegq_f32(a);
    948   // CHECK: fneg v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
    949 }
    950 
    951 float64x2_t test_vnegq_f64(float64x2_t a) {
    952   // CHECK-LABEL: test_vnegq_f64
    953   return vnegq_f64(a);
    954   // CHECK: fneg v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
    955 }
    956 
    957 int8x8_t test_vabs_s8(int8x8_t a) {
    958   // CHECK-LABEL: test_vabs_s8
    959   return vabs_s8(a);
    960   // CHECK: abs v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
    961 }
    962 
    963 int8x16_t test_vabsq_s8(int8x16_t a) {
    964   // CHECK-LABEL: test_vabsq_s8
    965   return vabsq_s8(a);
    966   // CHECK: abs v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
    967 }
    968 
    969 int16x4_t test_vabs_s16(int16x4_t a) {
    970   // CHECK-LABEL: test_vabs_s16
    971   return vabs_s16(a);
    972   // CHECK: abs v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
    973 }
    974 
    975 int16x8_t test_vabsq_s16(int16x8_t a) {
    976   // CHECK-LABEL: test_vabsq_s16
    977   return vabsq_s16(a);
    978   // CHECK: abs v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
    979 }
    980 
    981 int32x2_t test_vabs_s32(int32x2_t a) {
    982   // CHECK-LABEL: test_vabs_s32
    983   return vabs_s32(a);
    984   // CHECK: abs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
    985 }
    986 
    987 int32x4_t test_vabsq_s32(int32x4_t a) {
    988   // CHECK-LABEL: test_vabsq_s32
    989   return vabsq_s32(a);
    990   // CHECK: abs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
    991 }
    992 
    993 int64x2_t test_vabsq_s64(int64x2_t a) {
    994   // CHECK-LABEL: test_vabsq_s64
    995   return vabsq_s64(a);
    996   // CHECK: abs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
    997 }
    998 
    999 float32x2_t test_vabs_f32(float32x2_t a) {
   1000   // CHECK-LABEL: test_vabs_f32
   1001   return vabs_f32(a);
   1002   // CHECK: fabs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1003 }
   1004 
   1005 float32x4_t test_vabsq_f32(float32x4_t a) {
   1006   // CHECK-LABEL: test_vabsq_f32
   1007   return vabsq_f32(a);
   1008   // CHECK: fabs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1009 }
   1010 
   1011 float64x2_t test_vabsq_f64(float64x2_t a) {
   1012   // CHECK-LABEL: test_vabsq_f64
   1013   return vabsq_f64(a);
   1014   // CHECK: fabs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1015 }
   1016 
   1017 int8x8_t test_vuqadd_s8(int8x8_t a, int8x8_t b) {
   1018   // CHECK-LABEL: test_vuqadd_s8
   1019   return vuqadd_s8(a, b);
   1020   // CHECK: suqadd v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1021 }
   1022 
   1023 int8x16_t test_vuqaddq_s8(int8x16_t a, int8x16_t b) {
   1024   // CHECK-LABEL: test_vuqaddq_s8
   1025   return vuqaddq_s8(a, b);
   1026   // CHECK: suqadd v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1027 }
   1028 
   1029 int16x4_t test_vuqadd_s16(int16x4_t a, int16x4_t b) {
   1030   // CHECK-LABEL: test_vuqadd_s16
   1031   return vuqadd_s16(a, b);
   1032   // CHECK: suqadd v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
   1033 }
   1034 
   1035 int16x8_t test_vuqaddq_s16(int16x8_t a, int16x8_t b) {
   1036   // CHECK-LABEL: test_vuqaddq_s16
   1037   return vuqaddq_s16(a, b);
   1038   // CHECK: suqadd v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
   1039 }
   1040 
   1041 int32x2_t test_vuqadd_s32(int32x2_t a, int32x2_t b) {
   1042   // CHECK-LABEL: test_vuqadd_s32
   1043   return vuqadd_s32(a, b);
   1044   // CHECK: suqadd v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1045 }
   1046 
   1047 int32x4_t test_vuqaddq_s32(int32x4_t a, int32x4_t b) {
   1048   // CHECK-LABEL: test_vuqaddq_s32
   1049   return vuqaddq_s32(a, b);
   1050   // CHECK: suqadd v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1051 }
   1052 
   1053 int64x2_t test_vuqaddq_s64(int64x2_t a, int64x2_t b) {
   1054   // CHECK-LABEL: test_vuqaddq_s64
   1055   return vuqaddq_s64(a, b);
   1056   // CHECK: suqadd v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1057 }
   1058 
   1059 int8x8_t test_vcls_s8(int8x8_t a) {
   1060   // CHECK-LABEL: test_vcls_s8
   1061   return vcls_s8(a);
   1062   // CHECK: cls v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1063 }
   1064 
   1065 int8x16_t test_vclsq_s8(int8x16_t a) {
   1066   // CHECK-LABEL: test_vclsq_s8
   1067   return vclsq_s8(a);
   1068   // CHECK: cls v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1069 }
   1070 
   1071 int16x4_t test_vcls_s16(int16x4_t a) {
   1072   // CHECK-LABEL: test_vcls_s16
   1073   return vcls_s16(a);
   1074   // CHECK: cls v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
   1075 }
   1076 
   1077 int16x8_t test_vclsq_s16(int16x8_t a) {
   1078   // CHECK-LABEL: test_vclsq_s16
   1079   return vclsq_s16(a);
   1080   // CHECK: cls v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
   1081 }
   1082 
   1083 int32x2_t test_vcls_s32(int32x2_t a) {
   1084   // CHECK-LABEL: test_vcls_s32
   1085   return vcls_s32(a);
   1086   // CHECK: cls v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1087 }
   1088 
   1089 int32x4_t test_vclsq_s32(int32x4_t a) {
   1090   // CHECK-LABEL: test_vclsq_s32
   1091   return vclsq_s32(a);
   1092   // CHECK: cls v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1093 }
   1094 
   1095 int8x8_t test_vclz_s8(int8x8_t a) {
   1096   // CHECK-LABEL: test_vclz_s8
   1097   return vclz_s8(a);
   1098   // CHECK: clz v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1099 }
   1100 
   1101 int8x16_t test_vclzq_s8(int8x16_t a) {
   1102   // CHECK-LABEL: test_vclzq_s8
   1103   return vclzq_s8(a);
   1104   // CHECK: clz v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1105 }
   1106 
   1107 int16x4_t test_vclz_s16(int16x4_t a) {
   1108   // CHECK-LABEL: test_vclz_s16
   1109   return vclz_s16(a);
   1110   // CHECK: clz v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
   1111 }
   1112 
   1113 int16x8_t test_vclzq_s16(int16x8_t a) {
   1114   // CHECK-LABEL: test_vclzq_s16
   1115   return vclzq_s16(a);
   1116   // CHECK: clz v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
   1117 }
   1118 
   1119 int32x2_t test_vclz_s32(int32x2_t a) {
   1120   // CHECK-LABEL: test_vclz_s32
   1121   return vclz_s32(a);
   1122   // CHECK: clz v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1123 }
   1124 
   1125 int32x4_t test_vclzq_s32(int32x4_t a) {
   1126   // CHECK-LABEL: test_vclzq_s32
   1127   return vclzq_s32(a);
   1128   // CHECK: clz v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1129 }
   1130 
   1131 uint8x8_t test_vclz_u8(uint8x8_t a) {
   1132   // CHECK-LABEL: test_vclz_u8
   1133   return vclz_u8(a);
   1134   // CHECK: clz v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1135 }
   1136 
   1137 uint8x16_t test_vclzq_u8(uint8x16_t a) {
   1138   // CHECK-LABEL: test_vclzq_u8
   1139   return vclzq_u8(a);
   1140   // CHECK: clz v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1141 }
   1142 
   1143 uint16x4_t test_vclz_u16(uint16x4_t a) {
   1144   // CHECK-LABEL: test_vclz_u16
   1145   return vclz_u16(a);
   1146   // CHECK: clz v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
   1147 }
   1148 
   1149 uint16x8_t test_vclzq_u16(uint16x8_t a) {
   1150   // CHECK-LABEL: test_vclzq_u16
   1151   return vclzq_u16(a);
   1152   // CHECK: clz v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
   1153 }
   1154 
   1155 uint32x2_t test_vclz_u32(uint32x2_t a) {
   1156   // CHECK-LABEL: test_vclz_u32
   1157   return vclz_u32(a);
   1158   // CHECK: clz v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1159 }
   1160 
   1161 uint32x4_t test_vclzq_u32(uint32x4_t a) {
   1162   // CHECK-LABEL: test_vclzq_u32
   1163   return vclzq_u32(a);
   1164   // CHECK: clz v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1165 }
   1166 
   1167 int8x8_t test_vcnt_s8(int8x8_t a) {
   1168   // CHECK-LABEL: test_vcnt_s8
   1169   return vcnt_s8(a);
   1170   // CHECK: cnt v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1171 }
   1172 
   1173 int8x16_t test_vcntq_s8(int8x16_t a) {
   1174   // CHECK-LABEL: test_vcntq_s8
   1175   return vcntq_s8(a);
   1176   // CHECK: cnt v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1177 }
   1178 
   1179 uint8x8_t test_vcnt_u8(uint8x8_t a) {
   1180   // CHECK-LABEL: test_vcnt_u8
   1181   return vcnt_u8(a);
   1182   // CHECK: cnt v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1183 }
   1184 
   1185 uint8x16_t test_vcntq_u8(uint8x16_t a) {
   1186   // CHECK-LABEL: test_vcntq_u8
   1187   return vcntq_u8(a);
   1188   // CHECK: cnt v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1189 }
   1190 
   1191 poly8x8_t test_vcnt_p8(poly8x8_t a) {
   1192   // CHECK-LABEL: test_vcnt_p8
   1193   return vcnt_p8(a);
   1194   // CHECK: cnt v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1195 }
   1196 
   1197 poly8x16_t test_vcntq_p8(poly8x16_t a) {
   1198   // CHECK-LABEL: test_vcntq_p8
   1199   return vcntq_p8(a);
   1200   // CHECK: cnt v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1201 }
   1202 
   1203 int8x8_t test_vmvn_s8(int8x8_t a) {
   1204   // CHECK-LABEL: test_vmvn_s8
   1205   return vmvn_s8(a);
   1206   // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1207 }
   1208 
   1209 int8x16_t test_vmvnq_s8(int8x16_t a) {
   1210   // CHECK-LABEL: test_vmvnq_s8
   1211   return vmvnq_s8(a);
   1212   // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1213 }
   1214 
   1215 int16x4_t test_vmvn_s16(int16x4_t a) {
   1216   // CHECK-LABEL: test_vmvn_s16
   1217   return vmvn_s16(a);
   1218   // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1219 }
   1220 
   1221 int16x8_t test_vmvnq_s16(int16x8_t a) {
   1222   // CHECK-LABEL: test_vmvnq_s16
   1223   return vmvnq_s16(a);
   1224   // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1225 }
   1226 
   1227 int32x2_t test_vmvn_s32(int32x2_t a) {
   1228   // CHECK-LABEL: test_vmvn_s32
   1229   return vmvn_s32(a);
   1230   // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1231 }
   1232 
   1233 int32x4_t test_vmvnq_s32(int32x4_t a) {
   1234   // CHECK-LABEL: test_vmvnq_s32
   1235   return vmvnq_s32(a);
   1236   // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1237 }
   1238 
   1239 uint8x8_t test_vmvn_u8(uint8x8_t a) {
   1240   // CHECK-LABEL: test_vmvn_u8
   1241   return vmvn_u8(a);
   1242   // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1243 }
   1244 
   1245 uint8x16_t test_vmvnq_u8(uint8x16_t a) {
   1246   // CHECK-LABEL: test_vmvnq_u8
   1247   return vmvnq_u8(a);
   1248   // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1249 }
   1250 
   1251 uint16x4_t test_vmvn_u16(uint16x4_t a) {
   1252   // CHECK-LABEL: test_vmvn_u16
   1253   return vmvn_u16(a);
   1254   // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1255 }
   1256 
   1257 uint16x8_t test_vmvnq_u16(uint16x8_t a) {
   1258   // CHECK-LABEL: test_vmvnq_u16
   1259   return vmvnq_u16(a);
   1260   // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1261 }
   1262 
   1263 uint32x2_t test_vmvn_u32(uint32x2_t a) {
   1264   // CHECK-LABEL: test_vmvn_u32
   1265   return vmvn_u32(a);
   1266   // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1267 }
   1268 
   1269 uint32x4_t test_vmvnq_u32(uint32x4_t a) {
   1270   // CHECK-LABEL: test_vmvnq_u32
   1271   return vmvnq_u32(a);
   1272   // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1273 }
   1274 
   1275 poly8x8_t test_vmvn_p8(poly8x8_t a) {
   1276   // CHECK-LABEL: test_vmvn_p8
   1277   return vmvn_p8(a);
   1278   // CHECK: {{mvn|not}} v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1279 }
   1280 
   1281 poly8x16_t test_vmvnq_p8(poly8x16_t a) {
   1282   // CHECK-LABEL: test_vmvnq_p8
   1283   return vmvnq_p8(a);
   1284   // CHECK: {{mvn|not}} v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1285 }
   1286 
   1287 int8x8_t test_vrbit_s8(int8x8_t a) {
   1288   // CHECK-LABEL: test_vrbit_s8
   1289   return vrbit_s8(a);
   1290   // CHECK: rbit v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1291 }
   1292 
   1293 int8x16_t test_vrbitq_s8(int8x16_t a) {
   1294   // CHECK-LABEL: test_vrbitq_s8
   1295   return vrbitq_s8(a);
   1296   // CHECK: rbit v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1297 }
   1298 
   1299 uint8x8_t test_vrbit_u8(uint8x8_t a) {
   1300   // CHECK-LABEL: test_vrbit_u8
   1301   return vrbit_u8(a);
   1302   // CHECK: rbit v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1303 }
   1304 
   1305 uint8x16_t test_vrbitq_u8(uint8x16_t a) {
   1306   // CHECK-LABEL: test_vrbitq_u8
   1307   return vrbitq_u8(a);
   1308   // CHECK: rbit v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1309 }
   1310 
   1311 poly8x8_t test_vrbit_p8(poly8x8_t a) {
   1312   // CHECK-LABEL: test_vrbit_p8
   1313   return vrbit_p8(a);
   1314   // CHECK: rbit v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
   1315 }
   1316 
   1317 poly8x16_t test_vrbitq_p8(poly8x16_t a) {
   1318   // CHECK-LABEL: test_vrbitq_p8
   1319   return vrbitq_p8(a);
   1320   // CHECK: rbit v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
   1321 }
   1322 
   1323 int8x8_t test_vmovn_s16(int16x8_t a) {
   1324   // CHECK-LABEL: test_vmovn_s16
   1325   return vmovn_s16(a);
   1326   // CHECK: xtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
   1327 }
   1328 
   1329 int16x4_t test_vmovn_s32(int32x4_t a) {
   1330   // CHECK-LABEL: test_vmovn_s32
   1331   return vmovn_s32(a);
   1332   // CHECK: xtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
   1333 }
   1334 
   1335 int32x2_t test_vmovn_s64(int64x2_t a) {
   1336   // CHECK-LABEL: test_vmovn_s64
   1337   return vmovn_s64(a);
   1338   // CHECK: xtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
   1339 }
   1340 
   1341 uint8x8_t test_vmovn_u16(uint16x8_t a) {
   1342   // CHECK-LABEL: test_vmovn_u16
   1343   return vmovn_u16(a);
   1344   // CHECK: xtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
   1345 }
   1346 
   1347 uint16x4_t test_vmovn_u32(uint32x4_t a) {
   1348   // CHECK-LABEL: test_vmovn_u32
   1349   return vmovn_u32(a);
   1350   // CHECK: xtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
   1351 }
   1352 
   1353 uint32x2_t test_vmovn_u64(uint64x2_t a) {
   1354   // CHECK-LABEL: test_vmovn_u64
   1355   return vmovn_u64(a);
   1356   // CHECK: xtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
   1357 }
   1358 
   1359 int8x16_t test_vmovn_high_s16(int8x8_t a, int16x8_t b) {
   1360   // CHECK-LABEL: test_vmovn_high_s16
   1361   return vmovn_high_s16(a, b);
   1362   // CHECK: xtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
   1363 }
   1364 
   1365 int16x8_t test_vmovn_high_s32(int16x4_t a, int32x4_t b) {
   1366   // CHECK-LABEL: test_vmovn_high_s32
   1367   return vmovn_high_s32(a, b);
   1368   // CHECK: xtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
   1369 }
   1370 
   1371 int32x4_t test_vmovn_high_s64(int32x2_t a, int64x2_t b) {
   1372   // CHECK-LABEL: test_vmovn_high_s64
   1373   return vmovn_high_s64(a, b);
   1374   // CHECK: xtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
   1375 }
   1376 
   1377 int8x16_t test_vmovn_high_u16(int8x8_t a, int16x8_t b) {
   1378   // CHECK-LABEL: test_vmovn_high_u16
   1379   return vmovn_high_u16(a, b);
   1380   // CHECK: xtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
   1381 }
   1382 
   1383 int16x8_t test_vmovn_high_u32(int16x4_t a, int32x4_t b) {
   1384   // CHECK-LABEL: test_vmovn_high_u32
   1385   return vmovn_high_u32(a, b);
   1386   // CHECK: xtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
   1387 }
   1388 
   1389 int32x4_t test_vmovn_high_u64(int32x2_t a, int64x2_t b) {
   1390   // CHECK-LABEL: test_vmovn_high_u64
   1391   return vmovn_high_u64(a, b);
   1392   // CHECK: xtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
   1393 }
   1394 
   1395 int8x8_t test_vqmovun_s16(int16x8_t a) {
   1396   // CHECK-LABEL: test_vqmovun_s16
   1397   return vqmovun_s16(a);
   1398   // CHECK: sqxtun v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
   1399 }
   1400 
   1401 int16x4_t test_vqmovun_s32(int32x4_t a) {
   1402   // CHECK-LABEL: test_vqmovun_s32
   1403   return vqmovun_s32(a);
   1404   // CHECK: sqxtun v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
   1405 }
   1406 
   1407 int32x2_t test_vqmovun_s64(int64x2_t a) {
   1408   // CHECK-LABEL: test_vqmovun_s64
   1409   return vqmovun_s64(a);
   1410   // CHECK: sqxtun v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
   1411 }
   1412 
   1413 int8x16_t test_vqmovun_high_s16(int8x8_t a, int16x8_t b) {
   1414   // CHECK-LABEL: test_vqmovun_high_s16
   1415   return vqmovun_high_s16(a, b);
   1416   // CHECK: sqxtun2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
   1417 }
   1418 
   1419 int16x8_t test_vqmovun_high_s32(int16x4_t a, int32x4_t b) {
   1420   // CHECK-LABEL: test_vqmovun_high_s32
   1421   return vqmovun_high_s32(a, b);
   1422   // CHECK: sqxtun2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
   1423 }
   1424 
   1425 int32x4_t test_vqmovun_high_s64(int32x2_t a, int64x2_t b) {
   1426   // CHECK-LABEL: test_vqmovun_high_s64
   1427   return vqmovun_high_s64(a, b);
   1428   // CHECK: sqxtun2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
   1429 }
   1430 
   1431 int8x8_t test_vqmovn_s16(int16x8_t a) {
   1432   // CHECK-LABEL: test_vqmovn_s16
   1433   return vqmovn_s16(a);
   1434   // CHECK: sqxtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
   1435 }
   1436 
   1437 int16x4_t test_vqmovn_s32(int32x4_t a) {
   1438   // CHECK-LABEL: test_vqmovn_s32
   1439   return vqmovn_s32(a);
   1440   // CHECK: sqxtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
   1441 }
   1442 
   1443 int32x2_t test_vqmovn_s64(int64x2_t a) {
   1444   // CHECK-LABEL: test_vqmovn_s64
   1445   return vqmovn_s64(a);
   1446   // CHECK: sqxtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
   1447 }
   1448 
   1449 int8x16_t test_vqmovn_high_s16(int8x8_t a, int16x8_t b) {
   1450   // CHECK-LABEL: test_vqmovn_high_s16
   1451   return vqmovn_high_s16(a, b);
   1452   // CHECK: sqxtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
   1453 }
   1454 
   1455 int16x8_t test_vqmovn_high_s32(int16x4_t a, int32x4_t b) {
   1456   // CHECK-LABEL: test_vqmovn_high_s32
   1457   return vqmovn_high_s32(a, b);
   1458   // CHECK: sqxtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
   1459 }
   1460 
   1461 int32x4_t test_vqmovn_high_s64(int32x2_t a, int64x2_t b) {
   1462   // CHECK-LABEL: test_vqmovn_high_s64
   1463   return vqmovn_high_s64(a, b);
   1464   // CHECK: sqxtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
   1465 }
   1466 
   1467 uint8x8_t test_vqmovn_u16(uint16x8_t a) {
   1468   // CHECK-LABEL: test_vqmovn_u16
   1469   return vqmovn_u16(a);
   1470   // CHECK: uqxtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
   1471 }
   1472 
   1473 uint16x4_t test_vqmovn_u32(uint32x4_t a) {
   1474   // CHECK-LABEL: test_vqmovn_u32
   1475   return vqmovn_u32(a);
   1476   // CHECK: uqxtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
   1477 }
   1478 
   1479 uint32x2_t test_vqmovn_u64(uint64x2_t a) {
   1480   // CHECK-LABEL: test_vqmovn_u64
   1481   return vqmovn_u64(a);
   1482   // CHECK: uqxtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
   1483 }
   1484 
   1485 uint8x16_t test_vqmovn_high_u16(uint8x8_t a, uint16x8_t b) {
   1486   // CHECK-LABEL: test_vqmovn_high_u16
   1487   return vqmovn_high_u16(a, b);
   1488   // CHECK: uqxtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
   1489 }
   1490 
   1491 uint16x8_t test_vqmovn_high_u32(uint16x4_t a, uint32x4_t b) {
   1492   // CHECK-LABEL: test_vqmovn_high_u32
   1493   return vqmovn_high_u32(a, b);
   1494   // CHECK: uqxtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
   1495 }
   1496 
   1497 uint32x4_t test_vqmovn_high_u64(uint32x2_t a, uint64x2_t b) {
   1498   // CHECK-LABEL: test_vqmovn_high_u64
   1499   return vqmovn_high_u64(a, b);
   1500   // CHECK: uqxtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
   1501 }
   1502 
   1503 int16x8_t test_vshll_n_s8(int8x8_t a) {
   1504   // CHECK-LABEL: test_vshll_n_s8
   1505   return vshll_n_s8(a, 8);
   1506   // CHECK: shll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #8
   1507 }
   1508 
   1509 int32x4_t test_vshll_n_s16(int16x4_t a) {
   1510   // CHECK-LABEL: test_vshll_n_s16
   1511   return vshll_n_s16(a, 16);
   1512   // CHECK: shll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #16
   1513 }
   1514 
   1515 int64x2_t test_vshll_n_s32(int32x2_t a) {
   1516   // CHECK-LABEL: test_vshll_n_s32
   1517   return vshll_n_s32(a, 32);
   1518   // CHECK: shll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #32
   1519 }
   1520 
   1521 uint16x8_t test_vshll_n_u8(uint8x8_t a) {
   1522   // CHECK-LABEL: test_vshll_n_u8
   1523   return vshll_n_u8(a, 8);
   1524   // CHECK: shll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #8
   1525 }
   1526 
   1527 uint32x4_t test_vshll_n_u16(uint16x4_t a) {
   1528   // CHECK-LABEL: test_vshll_n_u16
   1529   return vshll_n_u16(a, 16);
   1530   // CHECK: shll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #16
   1531 }
   1532 
   1533 uint64x2_t test_vshll_n_u32(uint32x2_t a) {
   1534   // CHECK-LABEL: test_vshll_n_u32
   1535   return vshll_n_u32(a, 32);
   1536   // CHECK: shll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #32
   1537 }
   1538 
   1539 int16x8_t test_vshll_high_n_s8(int8x16_t a) {
   1540   // CHECK-LABEL: test_vshll_high_n_s8
   1541   return vshll_high_n_s8(a, 8);
   1542   // CHECK: shll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #8
   1543 }
   1544 
   1545 int32x4_t test_vshll_high_n_s16(int16x8_t a) {
   1546   // CHECK-LABEL: test_vshll_high_n_s16
   1547   return vshll_high_n_s16(a, 16);
   1548   // CHECK: shll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #16
   1549 }
   1550 
   1551 int64x2_t test_vshll_high_n_s32(int32x4_t a) {
   1552   // CHECK-LABEL: test_vshll_high_n_s32
   1553   return vshll_high_n_s32(a, 32);
   1554   // CHECK: shll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #32
   1555 }
   1556 
   1557 uint16x8_t test_vshll_high_n_u8(uint8x16_t a) {
   1558   // CHECK-LABEL: test_vshll_high_n_u8
   1559   return vshll_high_n_u8(a, 8);
   1560   // CHECK: shll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #8
   1561 }
   1562 
   1563 uint32x4_t test_vshll_high_n_u16(uint16x8_t a) {
   1564   // CHECK-LABEL: test_vshll_high_n_u16
   1565   return vshll_high_n_u16(a, 16);
   1566   // CHECK: shll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #16
   1567 }
   1568 
   1569 uint64x2_t test_vshll_high_n_u32(uint32x4_t a) {
   1570   // CHECK-LABEL: test_vshll_high_n_u32
   1571   return vshll_high_n_u32(a, 32);
   1572   // CHECK: shll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #32
   1573 }
   1574 
   1575 float16x4_t test_vcvt_f16_f32(float32x4_t a) {
   1576   //CHECK-LABEL: test_vcvt_f16_f32
   1577   return vcvt_f16_f32(a);
   1578   // CHECK: fcvtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
   1579 }
   1580 
   1581 float16x8_t test_vcvt_high_f16_f32(float16x4_t a, float32x4_t b) {
   1582   //CHECK-LABEL: test_vcvt_high_f16_f32
   1583   return vcvt_high_f16_f32(a, b);
   1584   // CHECK: fcvtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
   1585 }
   1586 
   1587 float32x2_t test_vcvt_f32_f64(float64x2_t a) {
   1588   //CHECK-LABEL: test_vcvt_f32_f64
   1589   return vcvt_f32_f64(a);
   1590   // CHECK: fcvtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
   1591 }
   1592 
   1593 float32x4_t test_vcvt_high_f32_f64(float32x2_t a, float64x2_t b) {
   1594   //CHECK-LABEL: test_vcvt_high_f32_f64
   1595   return vcvt_high_f32_f64(a, b);
   1596   // CHECK: fcvtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
   1597 }
   1598 
   1599 float32x2_t test_vcvtx_f32_f64(float64x2_t a) {
   1600   //CHECK-LABEL: test_vcvtx_f32_f64
   1601   return vcvtx_f32_f64(a);
   1602   // CHECK: fcvtxn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
   1603 }
   1604 
   1605 float32x4_t test_vcvtx_high_f32_f64(float32x2_t a, float64x2_t b) {
   1606   //CHECK-LABEL: test_vcvtx_high_f32_f64
   1607   return vcvtx_high_f32_f64(a, b);
   1608   // CHECK: fcvtxn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
   1609 }
   1610 
   1611 float32x4_t test_vcvt_f32_f16(float16x4_t a) {
   1612   //CHECK-LABEL: test_vcvt_f32_f16
   1613   return vcvt_f32_f16(a);
   1614   // CHECK: fcvtl v{{[0-9]+}}.4s, v{{[0-9]+}}.4h
   1615 }
   1616 
   1617 float32x4_t test_vcvt_high_f32_f16(float16x8_t a) {
   1618   //CHECK-LABEL: test_vcvt_high_f32_f16
   1619   return vcvt_high_f32_f16(a);
   1620   // CHECK: fcvtl2 v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
   1621 }
   1622 
   1623 float64x2_t test_vcvt_f64_f32(float32x2_t a) {
   1624   //CHECK-LABEL: test_vcvt_f64_f32
   1625   return vcvt_f64_f32(a);
   1626   // CHECK: fcvtl v{{[0-9]+}}.2d, v{{[0-9]+}}.2s
   1627 }
   1628 
   1629 float64x2_t test_vcvt_high_f64_f32(float32x4_t a) {
   1630   //CHECK-LABEL: test_vcvt_high_f64_f32
   1631   return vcvt_high_f64_f32(a);
   1632   // CHECK: fcvtl2 v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
   1633 }
   1634 
   1635 float32x2_t test_vrndn_f32(float32x2_t a) {
   1636   //CHECK-LABEL: test_vrndn_f32
   1637   return vrndn_f32(a);
   1638   // CHECK: frintn v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1639 }
   1640 
   1641 float32x4_t test_vrndnq_f32(float32x4_t a) {
   1642   //CHECK-LABEL: test_vrndnq_f32
   1643   return vrndnq_f32(a);
   1644   // CHECK: frintn v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1645 }
   1646 
   1647 float64x2_t test_vrndnq_f64(float64x2_t a) {
   1648   //CHECK-LABEL: test_vrndnq_f64
   1649   return vrndnq_f64(a);
   1650   // CHECK: frintn v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1651 }
   1652 
   1653 float32x2_t test_vrnda_f32(float32x2_t a) {
   1654   //CHECK-LABEL: test_vrnda_f32
   1655   return vrnda_f32(a);
   1656   // CHECK: frinta v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1657 }
   1658 
   1659 float32x4_t test_vrndaq_f32(float32x4_t a) {
   1660   //CHECK-LABEL: test_vrndaq_f32
   1661   return vrndaq_f32(a);
   1662   // CHECK: frinta v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1663 }
   1664 
   1665 float64x2_t test_vrndaq_f64(float64x2_t a) {
   1666   //CHECK-LABEL: test_vrndaq_f64
   1667   return vrndaq_f64(a);
   1668   // CHECK: frinta v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1669 }
   1670 
   1671 float32x2_t test_vrndp_f32(float32x2_t a) {
   1672   //CHECK-LABEL: test_vrndp_f32
   1673   return vrndp_f32(a);
   1674   // CHECK: frintp v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1675 }
   1676 
   1677 float32x4_t test_vrndpq_f32(float32x4_t a) {
   1678   //CHECK-LABEL: test_vrndpq_f32
   1679   return vrndpq_f32(a);
   1680   // CHECK: frintp v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1681 }
   1682 
   1683 float64x2_t test_vrndpq_f64(float64x2_t a) {
   1684   //CHECK-LABEL: test_vrndpq_f64
   1685   return vrndpq_f64(a);
   1686   // CHECK: frintp v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1687 }
   1688 
   1689 float32x2_t test_vrndm_f32(float32x2_t a) {
   1690   //CHECK-LABEL: test_vrndm_f32
   1691   return vrndm_f32(a);
   1692   // CHECK: frintm v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1693 }
   1694 
   1695 float32x4_t test_vrndmq_f32(float32x4_t a) {
   1696   //CHECK-LABEL: test_vrndmq_f32
   1697   return vrndmq_f32(a);
   1698   // CHECK: frintm v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1699 }
   1700 
   1701 float64x2_t test_vrndmq_f64(float64x2_t a) {
   1702   //CHECK-LABEL: test_vrndmq_f64
   1703   return vrndmq_f64(a);
   1704   // CHECK: frintm v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1705 }
   1706 
   1707 float32x2_t test_vrndx_f32(float32x2_t a) {
   1708   //CHECK-LABEL: test_vrndx_f32
   1709   return vrndx_f32(a);
   1710   // CHECK: frintx v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1711 }
   1712 
   1713 float32x4_t test_vrndxq_f32(float32x4_t a) {
   1714   //CHECK-LABEL: test_vrndxq_f32
   1715   return vrndxq_f32(a);
   1716   // CHECK: frintx v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1717 }
   1718 
   1719 float64x2_t test_vrndxq_f64(float64x2_t a) {
   1720   //CHECK-LABEL: test_vrndxq_f64
   1721   return vrndxq_f64(a);
   1722   // CHECK: frintx v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1723 }
   1724 
   1725 float32x2_t test_vrnd_f32(float32x2_t a) {
   1726   //CHECK-LABEL: test_vrnd_f32
   1727   return vrnd_f32(a);
   1728   // CHECK: frintz v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1729 }
   1730 
   1731 float32x4_t test_vrndq_f32(float32x4_t a) {
   1732   //CHECK-LABEL: test_vrndq_f32
   1733   return vrndq_f32(a);
   1734   // CHECK: frintz v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1735 }
   1736 
   1737 float64x2_t test_vrndq_f64(float64x2_t a) {
   1738   //CHECK-LABEL: test_vrndq_f64
   1739   return vrndq_f64(a);
   1740   // CHECK: frintz v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1741 }
   1742 
   1743 float32x2_t test_vrndi_f32(float32x2_t a) {
   1744   //CHECK-LABEL: test_vrndi_f32
   1745   return vrndi_f32(a);
   1746   // CHECK: frinti v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1747 }
   1748 
   1749 float32x4_t test_vrndiq_f32(float32x4_t a) {
   1750   //CHECK-LABEL: test_vrndiq_f32
   1751   return vrndiq_f32(a);
   1752   // CHECK: frinti v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1753 }
   1754 
   1755 float64x2_t test_vrndiq_f64(float64x2_t a) {
   1756   //CHECK-LABEL: test_vrndiq_f64
   1757   return vrndiq_f64(a);
   1758   // CHECK: frinti v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1759 }
   1760 
   1761 int32x2_t test_vcvt_s32_f32(float32x2_t a) {
   1762   //CHECK-LABEL: test_vcvt_s32_f32
   1763   return vcvt_s32_f32(a);
   1764   // CHECK: fcvtzs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1765 }
   1766 
   1767 int32x4_t test_vcvtq_s32_f32(float32x4_t a) {
   1768   //CHECK-LABEL: test_vcvtq_s32_f32
   1769   return vcvtq_s32_f32(a);
   1770   // CHECK: fcvtzs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1771 }
   1772 
   1773 int64x2_t test_vcvtq_s64_f64(float64x2_t a) {
   1774   //CHECK-LABEL: test_vcvtq_s64_f64
   1775   return vcvtq_s64_f64(a);
   1776   // CHECK: fcvtzs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1777 }
   1778 
   1779 uint32x2_t test_vcvt_u32_f32(float32x2_t a) {
   1780   //CHECK-LABEL: test_vcvt_u32_f32
   1781   return vcvt_u32_f32(a);
   1782   // CHECK: fcvtzu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1783 }
   1784 
   1785 uint32x4_t test_vcvtq_u32_f32(float32x4_t a) {
   1786   //CHECK-LABEL: test_vcvtq_u32_f32
   1787   return vcvtq_u32_f32(a);
   1788   // CHECK: fcvtzu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1789 }
   1790 
   1791 uint64x2_t test_vcvtq_u64_f64(float64x2_t a) {
   1792   //CHECK-LABEL: test_vcvtq_u64_f64
   1793   return vcvtq_u64_f64(a);
   1794   // CHECK: fcvtzu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1795 }
   1796 
   1797 int32x2_t test_vcvtn_s32_f32(float32x2_t a) {
   1798   //CHECK-LABEL: test_vcvtn_s32_f32
   1799   return vcvtn_s32_f32(a);
   1800   // CHECK: fcvtns v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1801 }
   1802 
   1803 int32x4_t test_vcvtnq_s32_f32(float32x4_t a) {
   1804   //CHECK-LABEL: test_vcvtnq_s32_f32
   1805   return vcvtnq_s32_f32(a);
   1806   // CHECK: fcvtns v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1807 }
   1808 
   1809 int64x2_t test_vcvtnq_s64_f64(float64x2_t a) {
   1810   //CHECK-LABEL: test_vcvtnq_s64_f64
   1811   return vcvtnq_s64_f64(a);
   1812   // CHECK: fcvtns v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1813 }
   1814 
   1815 uint32x2_t test_vcvtn_u32_f32(float32x2_t a) {
   1816   //CHECK-LABEL: test_vcvtn_u32_f32
   1817   return vcvtn_u32_f32(a);
   1818   // CHECK: fcvtnu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1819 }
   1820 
   1821 uint32x4_t test_vcvtnq_u32_f32(float32x4_t a) {
   1822   //CHECK-LABEL: test_vcvtnq_u32_f32
   1823   return vcvtnq_u32_f32(a);
   1824   // CHECK: fcvtnu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1825 }
   1826 
   1827 uint64x2_t test_vcvtnq_u64_f64(float64x2_t a) {
   1828   //CHECK-LABEL: test_vcvtnq_u64_f64
   1829   return vcvtnq_u64_f64(a);
   1830   // CHECK: fcvtnu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1831 }
   1832 
   1833 int32x2_t test_vcvtp_s32_f32(float32x2_t a) {
   1834   //CHECK-LABEL: test_vcvtp_s32_f32
   1835   return vcvtp_s32_f32(a);
   1836   // CHECK: fcvtps v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1837 }
   1838 
   1839 int32x4_t test_vcvtpq_s32_f32(float32x4_t a) {
   1840   //CHECK-LABEL: test_vcvtpq_s32_f32
   1841   return vcvtpq_s32_f32(a);
   1842   // CHECK: fcvtps v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1843 }
   1844 
   1845 int64x2_t test_vcvtpq_s64_f64(float64x2_t a) {
   1846   //CHECK-LABEL: test_vcvtpq_s64_f64
   1847   return vcvtpq_s64_f64(a);
   1848   // CHECK: fcvtps v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1849 }
   1850 
   1851 uint32x2_t test_vcvtp_u32_f32(float32x2_t a) {
   1852   //CHECK-LABEL: test_vcvtp_u32_f32
   1853   return vcvtp_u32_f32(a);
   1854   // CHECK: fcvtpu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1855 }
   1856 
   1857 uint32x4_t test_vcvtpq_u32_f32(float32x4_t a) {
   1858   //CHECK-LABEL: test_vcvtpq_u32_f32
   1859   return vcvtpq_u32_f32(a);
   1860   // CHECK: fcvtpu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1861 }
   1862 
   1863 uint64x2_t test_vcvtpq_u64_f64(float64x2_t a) {
   1864   //CHECK-LABEL: test_vcvtpq_u64_f64
   1865   return vcvtpq_u64_f64(a);
   1866   // CHECK: fcvtpu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1867 }
   1868 
   1869 int32x2_t test_vcvtm_s32_f32(float32x2_t a) {
   1870   //CHECK-LABEL: test_vcvtm_s32_f32
   1871   return vcvtm_s32_f32(a);
   1872   // CHECK: fcvtms v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1873 }
   1874 
   1875 int32x4_t test_vcvtmq_s32_f32(float32x4_t a) {
   1876   //CHECK-LABEL: test_vcvtmq_s32_f32
   1877   return vcvtmq_s32_f32(a);
   1878   // CHECK: fcvtms v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1879 }
   1880 
   1881 int64x2_t test_vcvtmq_s64_f64(float64x2_t a) {
   1882   //CHECK-LABEL: test_vcvtmq_s64_f64
   1883   return vcvtmq_s64_f64(a);
   1884   // CHECK: fcvtms v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1885 }
   1886 
   1887 uint32x2_t test_vcvtm_u32_f32(float32x2_t a) {
   1888   //CHECK-LABEL: test_vcvtm_u32_f32
   1889   return vcvtm_u32_f32(a);
   1890   // CHECK: fcvtmu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1891 }
   1892 
   1893 uint32x4_t test_vcvtmq_u32_f32(float32x4_t a) {
   1894   //CHECK-LABEL: test_vcvtmq_u32_f32
   1895   return vcvtmq_u32_f32(a);
   1896   // CHECK: fcvtmu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1897 }
   1898 
   1899 uint64x2_t test_vcvtmq_u64_f64(float64x2_t a) {
   1900   //CHECK-LABEL: test_vcvtmq_u64_f64
   1901   return vcvtmq_u64_f64(a);
   1902   // CHECK: fcvtmu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1903 }
   1904 
   1905 int32x2_t test_vcvta_s32_f32(float32x2_t a) {
   1906   //CHECK-LABEL: test_vcvta_s32_f32
   1907   return vcvta_s32_f32(a);
   1908   // CHECK: fcvtas v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1909 }
   1910 
   1911 int32x4_t test_vcvtaq_s32_f32(float32x4_t a) {
   1912   //CHECK-LABEL: test_vcvtaq_s32_f32
   1913   return vcvtaq_s32_f32(a);
   1914   // CHECK: fcvtas v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1915 }
   1916 
   1917 int64x2_t test_vcvtaq_s64_f64(float64x2_t a) {
   1918   //CHECK-LABEL: test_vcvtaq_s64_f64
   1919   return vcvtaq_s64_f64(a);
   1920   // CHECK: fcvtas v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1921 }
   1922 
   1923 uint32x2_t test_vcvta_u32_f32(float32x2_t a) {
   1924   //CHECK-LABEL: test_vcvta_u32_f32
   1925   return vcvta_u32_f32(a);
   1926   // CHECK: fcvtau v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1927 }
   1928 
   1929 uint32x4_t test_vcvtaq_u32_f32(float32x4_t a) {
   1930   //CHECK-LABEL: test_vcvtaq_u32_f32
   1931   return vcvtaq_u32_f32(a);
   1932   // CHECK: fcvtau v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1933 }
   1934 
   1935 uint64x2_t test_vcvtaq_u64_f64(float64x2_t a) {
   1936   //CHECK-LABEL: test_vcvtaq_u64_f64
   1937   return vcvtaq_u64_f64(a);
   1938   // CHECK: fcvtau v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1939 }
   1940 
   1941 float32x2_t test_vrsqrte_f32(float32x2_t a) {
   1942   //CHECK-LABEL: test_vrsqrte_f32
   1943   return vrsqrte_f32(a);
   1944   // CHECK: frsqrte v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1945 }
   1946 
   1947 float32x4_t test_vrsqrteq_f32(float32x4_t a) {
   1948   //CHECK-LABEL: test_vrsqrteq_f32
   1949   return vrsqrteq_f32(a);
   1950   // CHECK: frsqrte v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1951 }
   1952 
   1953 float64x2_t test_vrsqrteq_f64(float64x2_t a) {
   1954   //CHECK-LABEL: test_vrsqrteq_f64
   1955   return vrsqrteq_f64(a);
   1956   // CHECK: frsqrte v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1957 }
   1958 
   1959 float32x2_t test_vrecpe_f32(float32x2_t a) {
   1960   //CHECK-LABEL: test_vrecpe_f32
   1961   return vrecpe_f32(a);
   1962   // CHECK: frecpe v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1963 }
   1964 
   1965 float32x4_t test_vrecpeq_f32(float32x4_t a) {
   1966   //CHECK-LABEL: test_vrecpeq_f32
   1967   return vrecpeq_f32(a);
   1968   // CHECK: frecpe v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1969 }
   1970 
   1971 float64x2_t test_vrecpeq_f64(float64x2_t a) {
   1972   //CHECK-LABEL: test_vrecpeq_f64
   1973   return vrecpeq_f64(a);
   1974   // CHECK: frecpe v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   1975 }
   1976 
   1977 uint32x2_t test_vrecpe_u32(uint32x2_t a) {
   1978   //CHECK-LABEL: test_vrecpe_u32
   1979   return vrecpe_u32(a);
   1980   // CHECK: urecpe v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1981 }
   1982 
   1983 uint32x4_t test_vrecpeq_u32(uint32x4_t a) {
   1984   //CHECK-LABEL: test_vrecpeq_u32
   1985   return vrecpeq_u32(a);
   1986   // CHECK: urecpe v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1987 }
   1988 
   1989 float32x2_t test_vsqrt_f32(float32x2_t a) {
   1990   //CHECK-LABEL: test_vsqrt_f32
   1991   return vsqrt_f32(a);
   1992   // CHECK: fsqrt v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   1993 }
   1994 
   1995 float32x4_t test_vsqrtq_f32(float32x4_t a) {
   1996   //CHECK-LABEL: test_vsqrtq_f32
   1997   return vsqrtq_f32(a);
   1998   // CHECK: fsqrt v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   1999 }
   2000 
   2001 float64x2_t test_vsqrtq_f64(float64x2_t a) {
   2002   //CHECK-LABEL: test_vsqrtq_f64
   2003   return vsqrtq_f64(a);
   2004   // CHECK: fsqrt v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   2005 }
   2006 
   2007 float32x2_t test_vcvt_f32_s32(int32x2_t a) {
   2008   //CHECK-LABEL: test_vcvt_f32_s32
   2009   return vcvt_f32_s32(a);
   2010   //CHECK: scvtf v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   2011 }
   2012 
   2013 float32x2_t test_vcvt_f32_u32(uint32x2_t a) {
   2014   //CHECK-LABEL: test_vcvt_f32_u32
   2015   return vcvt_f32_u32(a);
   2016   //CHECK: ucvtf v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
   2017 }
   2018 
   2019 float32x4_t test_vcvtq_f32_s32(int32x4_t a) {
   2020   //CHECK-LABEL: test_vcvtq_f32_s32
   2021   return vcvtq_f32_s32(a);
   2022   //CHECK: scvtf v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   2023 }
   2024 
   2025 float32x4_t test_vcvtq_f32_u32(uint32x4_t a) {
   2026   //CHECK-LABEL: test_vcvtq_f32_u32
   2027   return vcvtq_f32_u32(a);
   2028   //CHECK: ucvtf v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
   2029 }
   2030 
   2031 float64x2_t test_vcvtq_f64_s64(int64x2_t a) {
   2032   //CHECK-LABEL: test_vcvtq_f64_s64
   2033   return vcvtq_f64_s64(a);
   2034   //CHECK: scvtf v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   2035 }
   2036 
   2037 float64x2_t test_vcvtq_f64_u64(uint64x2_t a) {
   2038   //CHECK-LABEL: test_vcvtq_f64_u64
   2039   return vcvtq_f64_u64(a);
   2040   //CHECK: ucvtf v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
   2041 }
   2042