Home | History | Annotate | Download | only in AArch64
      1 // RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+crypto -mattr=+neon -show-encoding < %s | FileCheck %s
      2 
      3 // Check that the assembler can handle the documented syntax for AArch64
      4 
      5 //------------------------------------------------------------------------------
      6 // Instructions with 3 different vector data types
      7 //------------------------------------------------------------------------------
      8 
      9 //------------------------------------------------------------------------------
     10 // Long
     11 //------------------------------------------------------------------------------
     12 
     13 //------------------------------------------------------------------------------
     14 // Long - Variant 1
     15 //------------------------------------------------------------------------------
     16 
     17         saddl v0.8h, v1.8b, v2.8b
     18         saddl v0.4s, v1.4h, v2.4h
     19         saddl v0.2d, v1.2s, v2.2s
     20 
     21 // CHECK: saddl	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x00,0x22,0x0e]
     22 // CHECK: saddl	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x00,0x62,0x0e]
     23 // CHECK: saddl	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x00,0xa2,0x0e]
     24 
     25         saddl2 v0.4s, v1.8h, v2.8h
     26         saddl2 v0.8h, v1.16b, v2.16b
     27         saddl2 v0.2d, v1.4s, v2.4s
     28 
     29 // CHECK: saddl2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x00,0x62,0x4e]
     30 // CHECK: saddl2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x00,0x22,0x4e]
     31 // CHECK: saddl2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x00,0xa2,0x4e]
     32 
     33         uaddl v0.8h, v1.8b, v2.8b
     34         uaddl v0.4s, v1.4h, v2.4h
     35         uaddl v0.2d, v1.2s, v2.2s
     36 
     37 // CHECK: uaddl	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x00,0x22,0x2e]
     38 // CHECK: uaddl	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x00,0x62,0x2e]
     39 // CHECK: uaddl	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x00,0xa2,0x2e]
     40 
     41         uaddl2 v0.8h, v1.16b, v2.16b
     42         uaddl2 v0.4s, v1.8h, v2.8h
     43         uaddl2 v0.2d, v1.4s, v2.4s
     44 
     45 // CHECK: uaddl2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x00,0x22,0x6e]
     46 // CHECK: uaddl2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x00,0x62,0x6e]
     47 // CHECK: uaddl2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x00,0xa2,0x6e]
     48 
     49         ssubl v0.8h, v1.8b, v2.8b
     50         ssubl v0.4s, v1.4h, v2.4h
     51         ssubl v0.2d, v1.2s, v2.2s
     52 
     53 // CHECK: ssubl	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x20,0x22,0x0e]
     54 // CHECK: ssubl	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x20,0x62,0x0e]
     55 // CHECK: ssubl	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x20,0xa2,0x0e]
     56 
     57         ssubl2 v0.8h, v1.16b, v2.16b
     58         ssubl2 v0.4s, v1.8h, v2.8h
     59         ssubl2 v0.2d, v1.4s, v2.4s
     60 
     61 // CHECK: ssubl2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x20,0x22,0x4e]
     62 // CHECK: ssubl2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x20,0x62,0x4e]
     63 // CHECK: ssubl2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x20,0xa2,0x4e]
     64 
     65         usubl v0.8h, v1.8b, v2.8b
     66         usubl v0.4s, v1.4h, v2.4h
     67         usubl v0.2d, v1.2s, v2.2s
     68 
     69 // CHECK: usubl	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x20,0x22,0x2e]
     70 // CHECK: usubl	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x20,0x62,0x2e]
     71 // CHECK: usubl	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x20,0xa2,0x2e]
     72 
     73         usubl2 v0.8h, v1.16b, v2.16b
     74         usubl2 v0.4s, v1.8h, v2.8h
     75         usubl2 v0.2d, v1.4s, v2.4s
     76 
     77 // CHECK: usubl2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x20,0x22,0x6e]
     78 // CHECK: usubl2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x20,0x62,0x6e]
     79 // CHECK: usubl2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x20,0xa2,0x6e]
     80 
     81         sabal v0.8h, v1.8b, v2.8b
     82         sabal v0.4s, v1.4h, v2.4h
     83         sabal v0.2d, v1.2s, v2.2s
     84 
     85 // CHECK: sabal	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x50,0x22,0x0e]
     86 // CHECK: sabal	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x50,0x62,0x0e]
     87 // CHECK: sabal	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x50,0xa2,0x0e]
     88 
     89         sabal2 v0.8h, v1.16b, v2.16b
     90         sabal2 v0.4s, v1.8h, v2.8h
     91         sabal2 v0.2d, v1.4s, v2.4s
     92 
     93 // CHECK: sabal2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x50,0x22,0x4e]
     94 // CHECK: sabal2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x50,0x62,0x4e]
     95 // CHECK: sabal2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x50,0xa2,0x4e]
     96 
     97         uabal v0.8h, v1.8b, v2.8b
     98         uabal v0.4s, v1.4h, v2.4h
     99         uabal v0.2d, v1.2s, v2.2s
    100 
    101 // CHECK: uabal	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x50,0x22,0x2e]
    102 // CHECK: uabal	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x50,0x62,0x2e]
    103 // CHECK: uabal	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x50,0xa2,0x2e]
    104 
    105         uabal2 v0.8h, v1.16b, v2.16b
    106         uabal2 v0.4s, v1.8h, v2.8h
    107         uabal2 v0.2d, v1.4s, v2.4s
    108 
    109 // CHECK: uabal2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x50,0x22,0x6e]
    110 // CHECK: uabal2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x50,0x62,0x6e]
    111 // CHECK: uabal2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x50,0xa2,0x6e]
    112 
    113         sabdl v0.8h, v1.8b, v2.8b
    114         sabdl v0.4s, v1.4h, v2.4h
    115         sabdl v0.2d, v1.2s, v2.2s
    116 
    117 // CHECK: sabdl	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x70,0x22,0x0e]
    118 // CHECK: sabdl	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x70,0x62,0x0e]
    119 // CHECK: sabdl	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x70,0xa2,0x0e]
    120 
    121         sabdl2 v0.8h, v1.16b, v2.16b
    122         sabdl2 v0.4s, v1.8h, v2.8h
    123         sabdl2 v0.2d, v1.4s, v2.4s
    124 
    125 // CHECK: sabdl2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x70,0x22,0x4e]
    126 // CHECK: sabdl2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x70,0x62,0x4e]
    127 // CHECK: sabdl2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x70,0xa2,0x4e]
    128 
    129         uabdl v0.8h, v1.8b, v2.8b
    130         uabdl v0.4s, v1.4h, v2.4h
    131         uabdl v0.2d, v1.2s, v2.2s
    132 
    133 // CHECK: uabdl	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x70,0x22,0x2e]
    134 // CHECK: uabdl	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x70,0x62,0x2e]
    135 // CHECK: uabdl	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x70,0xa2,0x2e]
    136 
    137         uabdl2 v0.8h, v1.16b, v2.16b
    138         uabdl2 v0.4s, v1.8h, v2.8h
    139         uabdl2 v0.2d, v1.4s, v2.4s
    140 
    141 // CHECK: uabdl2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x70,0x22,0x6e]
    142 // CHECK: uabdl2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x70,0x62,0x6e]
    143 // CHECK: uabdl2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x70,0xa2,0x6e]
    144 
    145         smlal v0.8h, v1.8b, v2.8b
    146         smlal v0.4s, v1.4h, v2.4h
    147         smlal v0.2d, v1.2s, v2.2s
    148 
    149 // CHECK: smlal	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x80,0x22,0x0e]
    150 // CHECK: smlal	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x80,0x62,0x0e]
    151 // CHECK: smlal	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x80,0xa2,0x0e]
    152 
    153         smlal2 v0.8h, v1.16b, v2.16b
    154         smlal2 v0.4s, v1.8h, v2.8h
    155         smlal2 v0.2d, v1.4s, v2.4s
    156 
    157 // CHECK: smlal2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x80,0x22,0x4e]
    158 // CHECK: smlal2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x80,0x62,0x4e]
    159 // CHECK: smlal2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x80,0xa2,0x4e]
    160 
    161         umlal v0.8h, v1.8b, v2.8b
    162         umlal v0.4s, v1.4h, v2.4h
    163         umlal v0.2d, v1.2s, v2.2s
    164 
    165 // CHECK: umlal	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0x80,0x22,0x2e]
    166 // CHECK: umlal	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x80,0x62,0x2e]
    167 // CHECK: umlal	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x80,0xa2,0x2e]
    168 
    169         umlal2 v0.8h, v1.16b, v2.16b
    170         umlal2 v0.4s, v1.8h, v2.8h
    171         umlal2 v0.2d, v1.4s, v2.4s
    172 
    173 // CHECK: umlal2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0x80,0x22,0x6e]
    174 // CHECK: umlal2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0x80,0x62,0x6e]
    175 // CHECK: umlal2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0x80,0xa2,0x6e]
    176 
    177         smlsl v0.8h, v1.8b, v2.8b
    178         smlsl v0.4s, v1.4h, v2.4h
    179         smlsl v0.2d, v1.2s, v2.2s
    180 
    181 // CHECK: smlsl	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xa0,0x22,0x0e]
    182 // CHECK: smlsl	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xa0,0x62,0x0e]
    183 // CHECK: smlsl	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xa0,0xa2,0x0e]
    184 
    185         smlsl2 v0.8h, v1.16b, v2.16b
    186         smlsl2 v0.4s, v1.8h, v2.8h
    187         smlsl2 v0.2d, v1.4s, v2.4s
    188 
    189 // CHECK: smlsl2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xa0,0x22,0x4e]
    190 // CHECK: smlsl2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0xa0,0x62,0x4e]
    191 // CHECK: smlsl2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0xa0,0xa2,0x4e]
    192 
    193         umlsl v0.8h, v1.8b, v2.8b
    194         umlsl v0.4s, v1.4h, v2.4h
    195         umlsl v0.2d, v1.2s, v2.2s
    196 
    197 // CHECK: umlsl	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xa0,0x22,0x2e]
    198 // CHECK: umlsl	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xa0,0x62,0x2e]
    199 // CHECK: umlsl	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xa0,0xa2,0x2e]
    200 
    201         umlsl2 v0.8h, v1.16b, v2.16b
    202         umlsl2 v0.4s, v1.8h, v2.8h
    203         umlsl2 v0.2d, v1.4s, v2.4s
    204 
    205 // CHECK: umlsl2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xa0,0x22,0x6e]
    206 // CHECK: umlsl2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0xa0,0x62,0x6e]
    207 // CHECK: umlsl2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0xa0,0xa2,0x6e]
    208 
    209         smull v0.8h, v1.8b, v2.8b
    210         smull v0.4s, v1.4h, v2.4h
    211         smull v0.2d, v1.2s, v2.2s
    212 
    213 // CHECK: smull	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xc0,0x22,0x0e]
    214 // CHECK: smull	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xc0,0x62,0x0e]
    215 // CHECK: smull	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xc0,0xa2,0x0e]
    216 
    217         smull2 v0.8h, v1.16b, v2.16b
    218         smull2 v0.4s, v1.8h, v2.8h
    219         smull2 v0.2d, v1.4s, v2.4s
    220 
    221 // CHECK: smull2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xc0,0x22,0x4e]
    222 // CHECK: smull2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0xc0,0x62,0x4e]
    223 // CHECK: smull2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0xc0,0xa2,0x4e]
    224 
    225         umull v0.8h, v1.8b, v2.8b
    226         umull v0.4s, v1.4h, v2.4h
    227         umull v0.2d, v1.2s, v2.2s
    228 
    229 // CHECK: umull	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xc0,0x22,0x2e]
    230 // CHECK: umull	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xc0,0x62,0x2e]
    231 // CHECK: umull	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xc0,0xa2,0x2e]
    232 
    233         umull2 v0.8h, v1.16b, v2.16b
    234         umull2 v0.4s, v1.8h, v2.8h
    235         umull2 v0.2d, v1.4s, v2.4s
    236 
    237 // CHECK: umull2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xc0,0x22,0x6e]
    238 // CHECK: umull2	v0.4s, v1.8h, v2.8h     // encoding: [0x20,0xc0,0x62,0x6e]
    239 // CHECK: umull2	v0.2d, v1.4s, v2.4s     // encoding: [0x20,0xc0,0xa2,0x6e]
    240 
    241 //------------------------------------------------------------------------------
    242 // Long - Variant 2
    243 //------------------------------------------------------------------------------
    244 
    245         sqdmlal v0.4s, v1.4h, v2.4h
    246         sqdmlal v0.2d, v1.2s, v2.2s
    247 
    248 // CHECK: sqdmlal	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0x90,0x62,0x0e]
    249 // CHECK: sqdmlal	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0x90,0xa2,0x0e]
    250 
    251         sqdmlal2 v0.4s, v1.8h, v2.8h
    252         sqdmlal2 v0.2d, v1.4s, v2.4s
    253 
    254 // CHECK: sqdmlal2	v0.4s, v1.8h, v2.8h // encoding: [0x20,0x90,0x62,0x4e]
    255 // CHECK: sqdmlal2	v0.2d, v1.4s, v2.4s // encoding: [0x20,0x90,0xa2,0x4e]
    256 
    257         sqdmlsl v0.4s, v1.4h, v2.4h
    258         sqdmlsl v0.2d, v1.2s, v2.2s
    259 
    260 // CHECK: sqdmlsl	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xb0,0x62,0x0e]
    261 // CHECK: sqdmlsl	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xb0,0xa2,0x0e]
    262 
    263         sqdmlsl2 v0.4s, v1.8h, v2.8h
    264         sqdmlsl2 v0.2d, v1.4s, v2.4s
    265 
    266 // CHECK: sqdmlsl2	v0.4s, v1.8h, v2.8h // encoding: [0x20,0xb0,0x62,0x4e]
    267 // CHECK: sqdmlsl2	v0.2d, v1.4s, v2.4s // encoding: [0x20,0xb0,0xa2,0x4e]
    268 
    269         sqdmull v0.4s, v1.4h, v2.4h
    270         sqdmull v0.2d, v1.2s, v2.2s
    271 
    272 // CHECK: sqdmull	v0.4s, v1.4h, v2.4h     // encoding: [0x20,0xd0,0x62,0x0e]
    273 // CHECK: sqdmull	v0.2d, v1.2s, v2.2s     // encoding: [0x20,0xd0,0xa2,0x0e]
    274 
    275         sqdmull2 v0.4s, v1.8h, v2.8h
    276         sqdmull2 v0.2d, v1.4s, v2.4s
    277 
    278 // CHECK: sqdmull2	v0.4s, v1.8h, v2.8h // encoding: [0x20,0xd0,0x62,0x4e]
    279 // CHECK: sqdmull2	v0.2d, v1.4s, v2.4s // encoding: [0x20,0xd0,0xa2,0x4e]
    280 
    281 //------------------------------------------------------------------------------
    282 // Long - Variant 3
    283 //------------------------------------------------------------------------------
    284 
    285         pmull v0.8h, v1.8b, v2.8b
    286         pmull v0.1q, v1.1d, v2.1d
    287 
    288 // CHECK: pmull	v0.8h, v1.8b, v2.8b     // encoding: [0x20,0xe0,0x22,0x0e]
    289 // CHECK: pmull	v0.1q, v1.1d, v2.1d     // encoding: [0x20,0xe0,0xe2,0x0e]
    290 
    291         pmull2 v0.8h, v1.16b, v2.16b
    292         pmull2 v0.1q, v1.2d, v2.2d
    293 
    294 // CHECK: pmull2	v0.8h, v1.16b, v2.16b   // encoding: [0x20,0xe0,0x22,0x4e]
    295 // CHECK: pmull2	v0.1q, v1.2d, v2.2d     // encoding: [0x20,0xe0,0xe2,0x4e]
    296 
    297 //------------------------------------------------------------------------------
    298 // Widen
    299 //------------------------------------------------------------------------------
    300 
    301         saddw v0.8h, v1.8h, v2.8b
    302         saddw v0.4s, v1.4s, v2.4h
    303         saddw v0.2d, v1.2d, v2.2s
    304 
    305 // CHECK: saddw	v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x10,0x22,0x0e]
    306 // CHECK: saddw	v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x10,0x62,0x0e]
    307 // CHECK: saddw	v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x10,0xa2,0x0e]
    308 
    309         saddw2 v0.8h, v1.8h, v2.16b
    310         saddw2 v0.4s, v1.4s, v2.8h
    311         saddw2 v0.2d, v1.2d, v2.4s
    312 
    313 // CHECK: saddw2	v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x10,0x22,0x4e]
    314 // CHECK: saddw2	v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x10,0x62,0x4e]
    315 // CHECK: saddw2	v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x10,0xa2,0x4e]
    316 
    317         uaddw v0.8h, v1.8h, v2.8b
    318         uaddw v0.4s, v1.4s, v2.4h
    319         uaddw v0.2d, v1.2d, v2.2s
    320 
    321 // CHECK: uaddw	v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x10,0x22,0x2e]
    322 // CHECK: uaddw	v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x10,0x62,0x2e]
    323 // CHECK: uaddw	v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x10,0xa2,0x2e]
    324 
    325         uaddw2 v0.8h, v1.8h, v2.16b
    326         uaddw2 v0.4s, v1.4s, v2.8h
    327         uaddw2 v0.2d, v1.2d, v2.4s
    328 
    329 // CHECK: uaddw2	v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x10,0x22,0x6e]
    330 // CHECK: uaddw2	v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x10,0x62,0x6e]
    331 // CHECK: uaddw2	v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x10,0xa2,0x6e]
    332 
    333         ssubw v0.8h, v1.8h, v2.8b
    334         ssubw v0.4s, v1.4s, v2.4h
    335         ssubw v0.2d, v1.2d, v2.2s
    336 
    337 // CHECK: ssubw	v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x30,0x22,0x0e]
    338 // CHECK: ssubw	v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x30,0x62,0x0e]
    339 // CHECK: ssubw	v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x30,0xa2,0x0e]
    340 
    341         ssubw2 v0.8h, v1.8h, v2.16b
    342         ssubw2 v0.4s, v1.4s, v2.8h
    343         ssubw2 v0.2d, v1.2d, v2.4s
    344 
    345 // CHECK: ssubw2	v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x30,0x22,0x4e]
    346 // CHECK: ssubw2	v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x30,0x62,0x4e]
    347 // CHECK: ssubw2	v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x30,0xa2,0x4e]
    348 
    349         usubw v0.8h, v1.8h, v2.8b
    350         usubw v0.4s, v1.4s, v2.4h
    351         usubw v0.2d, v1.2d, v2.2s
    352 
    353 // CHECK: usubw	v0.8h, v1.8h, v2.8b     // encoding: [0x20,0x30,0x22,0x2e]
    354 // CHECK: usubw	v0.4s, v1.4s, v2.4h     // encoding: [0x20,0x30,0x62,0x2e]
    355 // CHECK: usubw	v0.2d, v1.2d, v2.2s     // encoding: [0x20,0x30,0xa2,0x2e]
    356 
    357         usubw2 v0.8h, v1.8h, v2.16b
    358         usubw2 v0.4s, v1.4s, v2.8h
    359         usubw2 v0.2d, v1.2d, v2.4s
    360 
    361 // CHECK: usubw2	v0.8h, v1.8h, v2.16b    // encoding: [0x20,0x30,0x22,0x6e]
    362 // CHECK: usubw2	v0.4s, v1.4s, v2.8h     // encoding: [0x20,0x30,0x62,0x6e]
    363 // CHECK: usubw2	v0.2d, v1.2d, v2.4s     // encoding: [0x20,0x30,0xa2,0x6e]
    364 
    365 //------------------------------------------------------------------------------
    366 // Narrow
    367 //------------------------------------------------------------------------------
    368 
    369         addhn v0.8b, v1.8h, v2.8h
    370         addhn v0.4h, v1.4s, v2.4s
    371         addhn v0.2s, v1.2d, v2.2d
    372 
    373 // CHECK: addhn	v0.8b, v1.8h, v2.8h     // encoding: [0x20,0x40,0x22,0x0e]
    374 // CHECK: addhn	v0.4h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x0e]
    375 // CHECK: addhn	v0.2s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x0e]
    376 
    377         addhn2 v0.16b, v1.8h, v2.8h
    378         addhn2 v0.8h, v1.4s, v2.4s
    379         addhn2 v0.4s, v1.2d, v2.2d
    380 
    381 // CHECK: addhn2	v0.16b, v1.8h, v2.8h    // encoding: [0x20,0x40,0x22,0x4e]
    382 // CHECK: addhn2	v0.8h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x4e]
    383 // CHECK: addhn2	v0.4s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x4e]
    384 
    385         raddhn v0.8b, v1.8h, v2.8h
    386         raddhn v0.4h, v1.4s, v2.4s
    387         raddhn v0.2s, v1.2d, v2.2d
    388 
    389 // CHECK: raddhn	v0.8b, v1.8h, v2.8h     // encoding: [0x20,0x40,0x22,0x2e]
    390 // CHECK: raddhn	v0.4h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x2e]
    391 // CHECK: raddhn	v0.2s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x2e]
    392 
    393         raddhn2 v0.16b, v1.8h, v2.8h
    394         raddhn2 v0.8h, v1.4s, v2.4s
    395         raddhn2 v0.4s, v1.2d, v2.2d
    396 
    397 // CHECK: raddhn2	v0.16b, v1.8h, v2.8h    // encoding: [0x20,0x40,0x22,0x6e]
    398 // CHECK: raddhn2	v0.8h, v1.4s, v2.4s     // encoding: [0x20,0x40,0x62,0x6e]
    399 // CHECK: raddhn2	v0.4s, v1.2d, v2.2d     // encoding: [0x20,0x40,0xa2,0x6e]
    400 
    401         rsubhn v0.8b, v1.8h, v2.8h
    402         rsubhn v0.4h, v1.4s, v2.4s
    403         rsubhn v0.2s, v1.2d, v2.2d
    404 
    405 // CHECK: rsubhn	v0.8b, v1.8h, v2.8h     // encoding: [0x20,0x60,0x22,0x2e]
    406 // CHECK: rsubhn	v0.4h, v1.4s, v2.4s     // encoding: [0x20,0x60,0x62,0x2e]
    407 // CHECK: rsubhn	v0.2s, v1.2d, v2.2d     // encoding: [0x20,0x60,0xa2,0x2e]
    408 
    409         rsubhn2 v0.16b, v1.8h, v2.8h
    410         rsubhn2 v0.8h, v1.4s, v2.4s
    411         rsubhn2 v0.4s, v1.2d, v2.2d
    412 
    413 // CHECK: rsubhn2	v0.16b, v1.8h, v2.8h    // encoding: [0x20,0x60,0x22,0x6e]
    414 // CHECK: rsubhn2	v0.8h, v1.4s, v2.4s     // encoding: [0x20,0x60,0x62,0x6e]
    415 // CHECK: rsubhn2	v0.4s, v1.2d, v2.2d     // encoding: [0x20,0x60,0xa2,0x6e]
    416