Home | History | Annotate | Download | only in AArch64
      1 // RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s
      2 
      3 // Check that the assembler can handle the documented syntax for AArch64
      4 
      5 
      6 //------------------------------------------------------------------------------
      7 // Element reverse
      8 //------------------------------------------------------------------------------
      9          rev64 v0.16b, v31.16b
     10          rev64 v2.8h, v4.8h
     11          rev64 v6.4s, v8.4s
     12          rev64 v1.8b, v9.8b
     13          rev64 v13.4h, v21.4h
     14          rev64 v4.2s, v0.2s
     15 
     16 // CHECK:	rev64	v0.16b, v31.16b         // encoding: [0xe0,0x0b,0x20,0x4e]
     17 // CHECK:	rev64	v2.8h, v4.8h            // encoding: [0x82,0x08,0x60,0x4e]
     18 // CHECK:	rev64	v6.4s, v8.4s            // encoding: [0x06,0x09,0xa0,0x4e]
     19 // CHECK:	rev64	v1.8b, v9.8b            // encoding: [0x21,0x09,0x20,0x0e]
     20 // CHECK:	rev64	v13.4h, v21.4h          // encoding: [0xad,0x0a,0x60,0x0e]
     21 // CHECK:	rev64	v4.2s, v0.2s            // encoding: [0x04,0x08,0xa0,0x0e]
     22 
     23          rev32 v30.16b, v31.16b
     24          rev32 v4.8h, v7.8h
     25          rev32 v21.8b, v1.8b
     26          rev32 v0.4h, v9.4h
     27 
     28 // CHECK:	rev32	v30.16b, v31.16b        // encoding: [0xfe,0x0b,0x20,0x6e]
     29 // CHECK:	rev32	v4.8h, v7.8h            // encoding: [0xe4,0x08,0x60,0x6e]
     30 // CHECK:	rev32	v21.8b, v1.8b           // encoding: [0x35,0x08,0x20,0x2e]
     31 // CHECK:	rev32	v0.4h, v9.4h            // encoding: [0x20,0x09,0x60,0x2e]
     32 
     33          rev16 v30.16b, v31.16b
     34          rev16 v21.8b, v1.8b
     35 
     36 // CHECK:	rev16	v30.16b, v31.16b        // encoding: [0xfe,0x1b,0x20,0x4e]
     37 // CHECK:	rev16	v21.8b, v1.8b           // encoding: [0x35,0x18,0x20,0x0e]
     38 
     39 //------------------------------------------------------------------------------
     40 // Signed integer pairwise add long
     41 //------------------------------------------------------------------------------
     42 
     43          saddlp v3.8h, v21.16b
     44          saddlp v8.4h, v5.8b
     45          saddlp v9.4s, v1.8h
     46          saddlp v0.2s, v1.4h
     47          saddlp v12.2d, v4.4s
     48          saddlp v17.1d, v28.2s
     49 
     50 // CHECK:	saddlp	v3.8h, v21.16b          // encoding: [0xa3,0x2a,0x20,0x4e]
     51 // CHECK:	saddlp	v8.4h, v5.8b            // encoding: [0xa8,0x28,0x20,0x0e]
     52 // CHECK:	saddlp	v9.4s, v1.8h            // encoding: [0x29,0x28,0x60,0x4e]
     53 // CHECK:	saddlp	v0.2s, v1.4h            // encoding: [0x20,0x28,0x60,0x0e]
     54 // CHECK:	saddlp	v12.2d, v4.4s           // encoding: [0x8c,0x28,0xa0,0x4e]
     55 // CHECK:	saddlp	v17.1d, v28.2s          // encoding: [0x91,0x2b,0xa0,0x0e]
     56 
     57 //------------------------------------------------------------------------------
     58 // Unsigned integer pairwise add long
     59 //------------------------------------------------------------------------------
     60 
     61          uaddlp v3.8h, v21.16b
     62          uaddlp v8.4h, v5.8b
     63          uaddlp v9.4s, v1.8h
     64          uaddlp v0.2s, v1.4h
     65          uaddlp v12.2d, v4.4s
     66          uaddlp v17.1d, v28.2s
     67 
     68 // CHECK:	uaddlp	v3.8h, v21.16b          // encoding: [0xa3,0x2a,0x20,0x6e]
     69 // CHECK:	uaddlp	v8.4h, v5.8b            // encoding: [0xa8,0x28,0x20,0x2e]
     70 // CHECK:	uaddlp	v9.4s, v1.8h            // encoding: [0x29,0x28,0x60,0x6e]
     71 // CHECK:	uaddlp	v0.2s, v1.4h            // encoding: [0x20,0x28,0x60,0x2e]
     72 // CHECK:	uaddlp	v12.2d, v4.4s           // encoding: [0x8c,0x28,0xa0,0x6e]
     73 // CHECK:	uaddlp	v17.1d, v28.2s          // encoding: [0x91,0x2b,0xa0,0x2e]
     74 
     75 //------------------------------------------------------------------------------
     76 // Signed integer pairwise add and accumulate long
     77 //------------------------------------------------------------------------------
     78 
     79          sadalp v3.8h, v21.16b
     80          sadalp v8.4h, v5.8b
     81          sadalp v9.4s, v1.8h
     82          sadalp v0.2s, v1.4h
     83          sadalp v12.2d, v4.4s
     84          sadalp v17.1d, v28.2s
     85 
     86 // CHECK:	sadalp	v3.8h, v21.16b          // encoding: [0xa3,0x6a,0x20,0x4e]
     87 // CHECK:	sadalp	v8.4h, v5.8b            // encoding: [0xa8,0x68,0x20,0x0e]
     88 // CHECK:	sadalp	v9.4s, v1.8h            // encoding: [0x29,0x68,0x60,0x4e]
     89 // CHECK:	sadalp	v0.2s, v1.4h            // encoding: [0x20,0x68,0x60,0x0e]
     90 // CHECK:	sadalp	v12.2d, v4.4s           // encoding: [0x8c,0x68,0xa0,0x4e]
     91 // CHECK:	sadalp	v17.1d, v28.2s          // encoding: [0x91,0x6b,0xa0,0x0e]
     92 
     93 //------------------------------------------------------------------------------
     94 // Unsigned integer pairwise add and accumulate long
     95 //------------------------------------------------------------------------------
     96 
     97          uadalp v3.8h, v21.16b
     98          uadalp v8.4h, v5.8b
     99          uadalp v9.4s, v1.8h
    100          uadalp v0.2s, v1.4h
    101          uadalp v12.2d, v4.4s
    102          uadalp v17.1d, v28.2s
    103 
    104 // CHECK:	uadalp	v3.8h, v21.16b          // encoding: [0xa3,0x6a,0x20,0x6e]
    105 // CHECK:	uadalp	v8.4h, v5.8b            // encoding: [0xa8,0x68,0x20,0x2e]
    106 // CHECK:	uadalp	v9.4s, v1.8h            // encoding: [0x29,0x68,0x60,0x6e]
    107 // CHECK:	uadalp	v0.2s, v1.4h            // encoding: [0x20,0x68,0x60,0x2e]
    108 // CHECK:	uadalp	v12.2d, v4.4s           // encoding: [0x8c,0x68,0xa0,0x6e]
    109 // CHECK:	uadalp	v17.1d, v28.2s          // encoding: [0x91,0x6b,0xa0,0x2e]
    110 
    111 //------------------------------------------------------------------------------
    112 // Signed integer saturating accumulate of unsigned value
    113 //------------------------------------------------------------------------------
    114 
    115          suqadd v0.16b, v31.16b
    116          suqadd v2.8h, v4.8h
    117          suqadd v6.4s, v8.4s
    118          suqadd v6.2d, v8.2d
    119          suqadd v1.8b, v9.8b
    120          suqadd v13.4h, v21.4h
    121          suqadd v4.2s, v0.2s
    122 
    123 // CHECK:	suqadd	v0.16b, v31.16b         // encoding: [0xe0,0x3b,0x20,0x4e]
    124 // CHECK:	suqadd	v2.8h, v4.8h            // encoding: [0x82,0x38,0x60,0x4e]
    125 // CHECK:	suqadd	v6.4s, v8.4s            // encoding: [0x06,0x39,0xa0,0x4e]
    126 // CHECK:	suqadd	v6.2d, v8.2d            // encoding: [0x06,0x39,0xe0,0x4e]
    127 // CHECK:	suqadd	v1.8b, v9.8b            // encoding: [0x21,0x39,0x20,0x0e]
    128 // CHECK:	suqadd	v13.4h, v21.4h          // encoding: [0xad,0x3a,0x60,0x0e]
    129 // CHECK:	suqadd	v4.2s, v0.2s            // encoding: [0x04,0x38,0xa0,0x0e]
    130 
    131 //------------------------------------------------------------------------------
    132 // Unsigned integer saturating accumulate of signed value
    133 //------------------------------------------------------------------------------
    134 
    135          usqadd v0.16b, v31.16b
    136          usqadd v2.8h, v4.8h
    137          usqadd v6.4s, v8.4s
    138          usqadd v6.2d, v8.2d
    139          usqadd v1.8b, v9.8b
    140          usqadd v13.4h, v21.4h
    141          usqadd v4.2s, v0.2s
    142 
    143 // CHECK:	usqadd	v0.16b, v31.16b         // encoding: [0xe0,0x3b,0x20,0x6e]
    144 // CHECK:	usqadd	v2.8h, v4.8h            // encoding: [0x82,0x38,0x60,0x6e]
    145 // CHECK:	usqadd	v6.4s, v8.4s            // encoding: [0x06,0x39,0xa0,0x6e]
    146 // CHECK:	usqadd	v6.2d, v8.2d            // encoding: [0x06,0x39,0xe0,0x6e]
    147 // CHECK:	usqadd	v1.8b, v9.8b            // encoding: [0x21,0x39,0x20,0x2e]
    148 // CHECK:	usqadd	v13.4h, v21.4h          // encoding: [0xad,0x3a,0x60,0x2e]
    149 // CHECK:	usqadd	v4.2s, v0.2s            // encoding: [0x04,0x38,0xa0,0x2e]
    150 
    151 //------------------------------------------------------------------------------
    152 // Integer saturating absolute
    153 //------------------------------------------------------------------------------
    154 
    155          sqabs v0.16b, v31.16b
    156          sqabs v2.8h, v4.8h
    157          sqabs v6.4s, v8.4s
    158          sqabs v6.2d, v8.2d
    159          sqabs v1.8b, v9.8b
    160          sqabs v13.4h, v21.4h
    161          sqabs v4.2s, v0.2s
    162 
    163 // CHECK:	sqabs	v0.16b, v31.16b         // encoding: [0xe0,0x7b,0x20,0x4e]
    164 // CHECK:	sqabs	v2.8h, v4.8h            // encoding: [0x82,0x78,0x60,0x4e]
    165 // CHECK:	sqabs	v6.4s, v8.4s            // encoding: [0x06,0x79,0xa0,0x4e]
    166 // CHECK:	sqabs	v6.2d, v8.2d            // encoding: [0x06,0x79,0xe0,0x4e]
    167 // CHECK:	sqabs	v1.8b, v9.8b            // encoding: [0x21,0x79,0x20,0x0e]
    168 // CHECK:	sqabs	v13.4h, v21.4h          // encoding: [0xad,0x7a,0x60,0x0e]
    169 // CHECK:	sqabs	v4.2s, v0.2s            // encoding: [0x04,0x78,0xa0,0x0e]
    170 
    171 //------------------------------------------------------------------------------
    172 // Signed integer saturating negate
    173 //------------------------------------------------------------------------------
    174 
    175          sqneg v0.16b, v31.16b
    176          sqneg v2.8h, v4.8h
    177          sqneg v6.4s, v8.4s
    178          sqneg v6.2d, v8.2d
    179          sqneg v1.8b, v9.8b
    180          sqneg v13.4h, v21.4h
    181          sqneg v4.2s, v0.2s
    182 
    183 // CHECK:	sqneg	v0.16b, v31.16b         // encoding: [0xe0,0x7b,0x20,0x6e]
    184 // CHECK:	sqneg	v2.8h, v4.8h            // encoding: [0x82,0x78,0x60,0x6e]
    185 // CHECK:	sqneg	v6.4s, v8.4s            // encoding: [0x06,0x79,0xa0,0x6e]
    186 // CHECK:	sqneg	v6.2d, v8.2d            // encoding: [0x06,0x79,0xe0,0x6e]
    187 // CHECK:	sqneg	v1.8b, v9.8b            // encoding: [0x21,0x79,0x20,0x2e]
    188 // CHECK:	sqneg	v13.4h, v21.4h          // encoding: [0xad,0x7a,0x60,0x2e]
    189 // CHECK:	sqneg	v4.2s, v0.2s            // encoding: [0x04,0x78,0xa0,0x2e]
    190 
    191 //------------------------------------------------------------------------------
    192 // Integer absolute
    193 //------------------------------------------------------------------------------
    194 
    195          abs v0.16b, v31.16b
    196          abs v2.8h, v4.8h
    197          abs v6.4s, v8.4s
    198          abs v6.2d, v8.2d
    199          abs v1.8b, v9.8b
    200          abs v13.4h, v21.4h
    201          abs v4.2s, v0.2s
    202 
    203 // CHECK:	abs	v0.16b, v31.16b         // encoding: [0xe0,0xbb,0x20,0x4e]
    204 // CHECK:	abs	v2.8h, v4.8h            // encoding: [0x82,0xb8,0x60,0x4e]
    205 // CHECK:	abs	v6.4s, v8.4s            // encoding: [0x06,0xb9,0xa0,0x4e]
    206 // CHECK:	abs	v6.2d, v8.2d            // encoding: [0x06,0xb9,0xe0,0x4e]
    207 // CHECK:	abs	v1.8b, v9.8b            // encoding: [0x21,0xb9,0x20,0x0e]
    208 // CHECK:	abs	v13.4h, v21.4h          // encoding: [0xad,0xba,0x60,0x0e]
    209 // CHECK:	abs	v4.2s, v0.2s            // encoding: [0x04,0xb8,0xa0,0x0e]
    210 
    211 //------------------------------------------------------------------------------
    212 // Integer negate
    213 //------------------------------------------------------------------------------
    214 
    215          neg v0.16b, v31.16b
    216          neg v2.8h, v4.8h
    217          neg v6.4s, v8.4s
    218          neg v6.2d, v8.2d
    219          neg v1.8b, v9.8b
    220          neg v13.4h, v21.4h
    221          neg v4.2s, v0.2s
    222 
    223 // CHECK:	neg	v0.16b, v31.16b         // encoding: [0xe0,0xbb,0x20,0x6e]
    224 // CHECK:	neg	v2.8h, v4.8h            // encoding: [0x82,0xb8,0x60,0x6e]
    225 // CHECK:	neg	v6.4s, v8.4s            // encoding: [0x06,0xb9,0xa0,0x6e]
    226 // CHECK:	neg	v6.2d, v8.2d            // encoding: [0x06,0xb9,0xe0,0x6e]
    227 // CHECK:	neg	v1.8b, v9.8b            // encoding: [0x21,0xb9,0x20,0x2e]
    228 // CHECK:	neg	v13.4h, v21.4h          // encoding: [0xad,0xba,0x60,0x2e]
    229 // CHECK:	neg	v4.2s, v0.2s            // encoding: [0x04,0xb8,0xa0,0x2e]
    230 
    231 //------------------------------------------------------------------------------
    232 // Integer count leading sign bits
    233 //------------------------------------------------------------------------------
    234 
    235          cls v0.16b, v31.16b
    236          cls v2.8h, v4.8h
    237          cls v6.4s, v8.4s
    238          cls v1.8b, v9.8b
    239          cls v13.4h, v21.4h
    240          cls v4.2s, v0.2s
    241 
    242 // CHECK:	cls	v0.16b, v31.16b         // encoding: [0xe0,0x4b,0x20,0x4e]
    243 // CHECK:	cls	v2.8h, v4.8h            // encoding: [0x82,0x48,0x60,0x4e]
    244 // CHECK:	cls	v6.4s, v8.4s            // encoding: [0x06,0x49,0xa0,0x4e]
    245 // CHECK:	cls	v1.8b, v9.8b            // encoding: [0x21,0x49,0x20,0x0e]
    246 // CHECK:	cls	v13.4h, v21.4h          // encoding: [0xad,0x4a,0x60,0x0e]
    247 // CHECK:	cls	v4.2s, v0.2s            // encoding: [0x04,0x48,0xa0,0x0e]
    248 
    249 //------------------------------------------------------------------------------
    250 // Integer count leading zeros
    251 //------------------------------------------------------------------------------
    252 
    253          clz v0.16b, v31.16b
    254          clz v2.8h, v4.8h
    255          clz v6.4s, v8.4s
    256          clz v1.8b, v9.8b
    257          clz v13.4h, v21.4h
    258          clz v4.2s, v0.2s
    259 
    260 // CHECK:	clz	v0.16b, v31.16b         // encoding: [0xe0,0x4b,0x20,0x6e]
    261 // CHECK:	clz	v2.8h, v4.8h            // encoding: [0x82,0x48,0x60,0x6e]
    262 // CHECK:	clz	v6.4s, v8.4s            // encoding: [0x06,0x49,0xa0,0x6e]
    263 // CHECK:	clz	v1.8b, v9.8b            // encoding: [0x21,0x49,0x20,0x2e]
    264 // CHECK:	clz	v13.4h, v21.4h          // encoding: [0xad,0x4a,0x60,0x2e]
    265 // CHECK:	clz	v4.2s, v0.2s            // encoding: [0x04,0x48,0xa0,0x2e]
    266 
    267 //------------------------------------------------------------------------------
    268 // Population count
    269 //------------------------------------------------------------------------------
    270 
    271          cnt v0.16b, v31.16b
    272          cnt v1.8b, v9.8b
    273 
    274 // CHECK:	cnt	v0.16b, v31.16b         // encoding: [0xe0,0x5b,0x20,0x4e]
    275 // CHECK:	cnt	v1.8b, v9.8b            // encoding: [0x21,0x59,0x20,0x0e]
    276 
    277 //------------------------------------------------------------------------------
    278 // Bitwise NOT
    279 //------------------------------------------------------------------------------
    280 
    281          not v0.16b, v31.16b
    282          not v1.8b, v9.8b
    283 
    284 // CHECK: {{mvn|not}} v0.16b, v31.16b         // encoding: [0xe0,0x5b,0x20,0x6e]
    285 // CHECK: {{mvn|not}} v1.8b, v9.8b            // encoding: [0x21,0x59,0x20,0x2e]
    286 
    287 //------------------------------------------------------------------------------
    288 // Bitwise reverse
    289 //------------------------------------------------------------------------------
    290 
    291          rbit v0.16b, v31.16b
    292          rbit v1.8b, v9.8b
    293 
    294 // CHECK:	rbit	v0.16b, v31.16b         // encoding: [0xe0,0x5b,0x60,0x6e]
    295 // CHECK:	rbit	v1.8b, v9.8b            // encoding: [0x21,0x59,0x60,0x2e]
    296 
    297 //------------------------------------------------------------------------------
    298 // Floating-point absolute
    299 //------------------------------------------------------------------------------
    300 
    301          fabs v6.4s, v8.4s
    302          fabs v6.2d, v8.2d
    303          fabs v4.2s, v0.2s
    304 
    305 // CHECK:	fabs	v6.4s, v8.4s            // encoding: [0x06,0xf9,0xa0,0x4e]
    306 // CHECK:	fabs	v6.2d, v8.2d            // encoding: [0x06,0xf9,0xe0,0x4e]
    307 // CHECK:	fabs	v4.2s, v0.2s            // encoding: [0x04,0xf8,0xa0,0x0e]
    308 
    309 //------------------------------------------------------------------------------
    310 // Floating-point negate
    311 //------------------------------------------------------------------------------
    312 
    313          fneg v6.4s, v8.4s
    314          fneg v6.2d, v8.2d
    315          fneg v4.2s, v0.2s
    316 
    317 // CHECK:	fneg	v6.4s, v8.4s            // encoding: [0x06,0xf9,0xa0,0x6e]
    318 // CHECK:	fneg	v6.2d, v8.2d            // encoding: [0x06,0xf9,0xe0,0x6e]
    319 // CHECK:	fneg	v4.2s, v0.2s            // encoding: [0x04,0xf8,0xa0,0x2e]
    320 
    321 //------------------------------------------------------------------------------
    322 // Integer extract and narrow
    323 //------------------------------------------------------------------------------
    324 
    325          xtn2 v0.16b, v31.8h
    326          xtn2 v2.8h, v4.4s
    327          xtn2 v6.4s, v8.2d
    328          xtn v1.8b, v9.8h
    329          xtn v13.4h, v21.4s
    330          xtn v4.2s, v0.2d
    331 
    332 // CHECK:	xtn2	v0.16b, v31.8h          // encoding: [0xe0,0x2b,0x21,0x4e]
    333 // CHECK:	xtn2	v2.8h, v4.4s            // encoding: [0x82,0x28,0x61,0x4e]
    334 // CHECK:	xtn2	v6.4s, v8.2d            // encoding: [0x06,0x29,0xa1,0x4e]
    335 // CHECK:	xtn	v1.8b, v9.8h            // encoding: [0x21,0x29,0x21,0x0e]
    336 // CHECK:	xtn	v13.4h, v21.4s          // encoding: [0xad,0x2a,0x61,0x0e]
    337 // CHECK:	xtn	v4.2s, v0.2d            // encoding: [0x04,0x28,0xa1,0x0e]
    338 
    339 //------------------------------------------------------------------------------
    340 // Signed integer saturating extract and unsigned narrow
    341 //------------------------------------------------------------------------------
    342 
    343          sqxtun2 v0.16b, v31.8h
    344          sqxtun2 v2.8h, v4.4s
    345          sqxtun2 v6.4s, v8.2d
    346          sqxtun v1.8b, v9.8h
    347          sqxtun v13.4h, v21.4s
    348          sqxtun v4.2s, v0.2d
    349 
    350 // CHECK:	sqxtun2	v0.16b, v31.8h          // encoding: [0xe0,0x2b,0x21,0x6e]
    351 // CHECK:	sqxtun2	v2.8h, v4.4s            // encoding: [0x82,0x28,0x61,0x6e]
    352 // CHECK:	sqxtun2	v6.4s, v8.2d            // encoding: [0x06,0x29,0xa1,0x6e]
    353 // CHECK:	sqxtun	v1.8b, v9.8h            // encoding: [0x21,0x29,0x21,0x2e]
    354 // CHECK:	sqxtun	v13.4h, v21.4s          // encoding: [0xad,0x2a,0x61,0x2e]
    355 // CHECK:	sqxtun	v4.2s, v0.2d            // encoding: [0x04,0x28,0xa1,0x2e]
    356 
    357 //------------------------------------------------------------------------------
    358 // Signed integer saturating extract and narrow
    359 //------------------------------------------------------------------------------
    360 
    361          sqxtn2 v0.16b, v31.8h
    362          sqxtn2 v2.8h, v4.4s
    363          sqxtn2 v6.4s, v8.2d
    364          sqxtn v1.8b, v9.8h
    365          sqxtn v13.4h, v21.4s
    366          sqxtn v4.2s, v0.2d
    367 
    368 // CHECK:	sqxtn2	v0.16b, v31.8h          // encoding: [0xe0,0x4b,0x21,0x4e]
    369 // CHECK:	sqxtn2	v2.8h, v4.4s            // encoding: [0x82,0x48,0x61,0x4e]
    370 // CHECK:	sqxtn2	v6.4s, v8.2d            // encoding: [0x06,0x49,0xa1,0x4e]
    371 // CHECK:	sqxtn	v1.8b, v9.8h            // encoding: [0x21,0x49,0x21,0x0e]
    372 // CHECK:	sqxtn	v13.4h, v21.4s          // encoding: [0xad,0x4a,0x61,0x0e]
    373 // CHECK:	sqxtn	v4.2s, v0.2d            // encoding: [0x04,0x48,0xa1,0x0e]
    374 
    375 //------------------------------------------------------------------------------
    376 // Unsigned integer saturating extract and narrow
    377 //------------------------------------------------------------------------------
    378 
    379          uqxtn2 v0.16b, v31.8h
    380          uqxtn2 v2.8h, v4.4s
    381          uqxtn2 v6.4s, v8.2d
    382          uqxtn v1.8b, v9.8h
    383          uqxtn v13.4h, v21.4s
    384          uqxtn v4.2s, v0.2d
    385 
    386 // CHECK:	uqxtn2	v0.16b, v31.8h          // encoding: [0xe0,0x4b,0x21,0x6e]
    387 // CHECK:	uqxtn2	v2.8h, v4.4s            // encoding: [0x82,0x48,0x61,0x6e]
    388 // CHECK:	uqxtn2	v6.4s, v8.2d            // encoding: [0x06,0x49,0xa1,0x6e]
    389 // CHECK:	uqxtn	v1.8b, v9.8h            // encoding: [0x21,0x49,0x21,0x2e]
    390 // CHECK:	uqxtn	v13.4h, v21.4s          // encoding: [0xad,0x4a,0x61,0x2e]
    391 // CHECK:	uqxtn	v4.2s, v0.2d            // encoding: [0x04,0x48,0xa1,0x2e]
    392 
    393 //------------------------------------------------------------------------------
    394 // Integer shift left long
    395 //------------------------------------------------------------------------------
    396 
    397          shll2 v2.8h, v4.16b, #8
    398          shll2 v6.4s, v8.8h, #16
    399          shll2 v6.2d, v8.4s, #32
    400          shll v2.8h, v4.8b, #8
    401          shll v6.4s, v8.4h, #16
    402          shll v6.2d, v8.2s, #32
    403 
    404 // CHECK:	shll2	v2.8h, v4.16b, #8      // encoding: [0x82,0x38,0x21,0x6e]
    405 // CHECK:	shll2	v6.4s, v8.8h, #16      // encoding: [0x06,0x39,0x61,0x6e]
    406 // CHECK:	shll2	v6.2d, v8.4s, #32      // encoding: [0x06,0x39,0xa1,0x6e]
    407 // CHECK:	shll	v2.8h, v4.8b, #8       // encoding: [0x82,0x38,0x21,0x2e]
    408 // CHECK:	shll	v6.4s, v8.4h, #16      // encoding: [0x06,0x39,0x61,0x2e]
    409 // CHECK:	shll	v6.2d, v8.2s, #32      // encoding: [0x06,0x39,0xa1,0x2e]
    410 
    411 //------------------------------------------------------------------------------
    412 // Floating-point convert downsize
    413 //------------------------------------------------------------------------------
    414 
    415          fcvtn2 v2.8h, v4.4s
    416          fcvtn2 v6.4s, v8.2d
    417          fcvtn v13.4h, v21.4s
    418          fcvtn v4.2s, v0.2d
    419 
    420 // CHECK:	fcvtn2	v2.8h, v4.4s            // encoding: [0x82,0x68,0x21,0x4e]
    421 // CHECK:	fcvtn2	v6.4s, v8.2d            // encoding: [0x06,0x69,0x61,0x4e]
    422 // CHECK:	fcvtn	v13.4h, v21.4s          // encoding: [0xad,0x6a,0x21,0x0e]
    423 // CHECK:	fcvtn	v4.2s, v0.2d            // encoding: [0x04,0x68,0x61,0x0e]
    424 
    425 //------------------------------------------------------------------------------
    426 // Floating-point convert downsize with inexact
    427 //------------------------------------------------------------------------------
    428 
    429          fcvtxn2 v6.4s, v8.2d
    430          fcvtxn v4.2s, v0.2d
    431 
    432 // CHECK:	fcvtxn2	v6.4s, v8.2d            // encoding: [0x06,0x69,0x61,0x6e]
    433 // CHECK:	fcvtxn	v4.2s, v0.2d            // encoding: [0x04,0x68,0x61,0x2e]
    434 
    435 //------------------------------------------------------------------------------
    436 // Floating-point convert upsize
    437 //------------------------------------------------------------------------------
    438 
    439          fcvtl v9.4s, v1.4h
    440          fcvtl v0.2d, v1.2s
    441          fcvtl2 v12.4s, v4.8h
    442          fcvtl2 v17.2d, v28.4s
    443 
    444 // CHECK:	fcvtl	v9.4s, v1.4h            // encoding: [0x29,0x78,0x21,0x0e]
    445 // CHECK:	fcvtl	v0.2d, v1.2s            // encoding: [0x20,0x78,0x61,0x0e]
    446 // CHECK:	fcvtl2	v12.4s, v4.8h           // encoding: [0x8c,0x78,0x21,0x4e]
    447 // CHECK:	fcvtl2	v17.2d, v28.4s          // encoding: [0x91,0x7b,0x61,0x4e]
    448 
    449 //------------------------------------------------------------------------------
    450 // Floating-point round to integral
    451 //------------------------------------------------------------------------------
    452 
    453          frintn v6.4s, v8.4s
    454          frintn v6.2d, v8.2d
    455          frintn v4.2s, v0.2s
    456 
    457 // CHECK:	frintn	v6.4s, v8.4s            // encoding: [0x06,0x89,0x21,0x4e]
    458 // CHECK:	frintn	v6.2d, v8.2d            // encoding: [0x06,0x89,0x61,0x4e]
    459 // CHECK:	frintn	v4.2s, v0.2s            // encoding: [0x04,0x88,0x21,0x0e]
    460 
    461          frinta v6.4s, v8.4s
    462          frinta v6.2d, v8.2d
    463          frinta v4.2s, v0.2s
    464 
    465 // CHECK:	frinta	v6.4s, v8.4s            // encoding: [0x06,0x89,0x21,0x6e]
    466 // CHECK:	frinta	v6.2d, v8.2d            // encoding: [0x06,0x89,0x61,0x6e]
    467 // CHECK:	frinta	v4.2s, v0.2s            // encoding: [0x04,0x88,0x21,0x2e]
    468 
    469          frintp v6.4s, v8.4s
    470          frintp v6.2d, v8.2d
    471          frintp v4.2s, v0.2s
    472 
    473 // CHECK:	frintp	v6.4s, v8.4s            // encoding: [0x06,0x89,0xa1,0x4e]
    474 // CHECK:	frintp	v6.2d, v8.2d            // encoding: [0x06,0x89,0xe1,0x4e]
    475 // CHECK:	frintp	v4.2s, v0.2s            // encoding: [0x04,0x88,0xa1,0x0e]
    476 
    477          frintm v6.4s, v8.4s
    478          frintm v6.2d, v8.2d
    479          frintm v4.2s, v0.2s
    480 
    481 // CHECK:	frintm	v6.4s, v8.4s            // encoding: [0x06,0x99,0x21,0x4e]
    482 // CHECK:	frintm	v6.2d, v8.2d            // encoding: [0x06,0x99,0x61,0x4e]
    483 // CHECK:	frintm	v4.2s, v0.2s            // encoding: [0x04,0x98,0x21,0x0e]
    484 
    485          frintx v6.4s, v8.4s
    486          frintx v6.2d, v8.2d
    487          frintx v4.2s, v0.2s
    488 
    489 // CHECK:	frintx	v6.4s, v8.4s            // encoding: [0x06,0x99,0x21,0x6e]
    490 // CHECK:	frintx	v6.2d, v8.2d            // encoding: [0x06,0x99,0x61,0x6e]
    491 // CHECK:	frintx	v4.2s, v0.2s            // encoding: [0x04,0x98,0x21,0x2e]
    492 
    493          frintz v6.4s, v8.4s
    494          frintz v6.2d, v8.2d
    495          frintz v4.2s, v0.2s
    496 
    497 // CHECK:	frintz	v6.4s, v8.4s            // encoding: [0x06,0x99,0xa1,0x4e]
    498 // CHECK:	frintz	v6.2d, v8.2d            // encoding: [0x06,0x99,0xe1,0x4e]
    499 // CHECK:	frintz	v4.2s, v0.2s            // encoding: [0x04,0x98,0xa1,0x0e]
    500 
    501          frinti v6.4s, v8.4s
    502          frinti v6.2d, v8.2d
    503          frinti v4.2s, v0.2s
    504 
    505 // CHECK:	frinti	v6.4s, v8.4s            // encoding: [0x06,0x99,0xa1,0x6e]
    506 // CHECK:	frinti	v6.2d, v8.2d            // encoding: [0x06,0x99,0xe1,0x6e]
    507 // CHECK:	frinti	v4.2s, v0.2s            // encoding: [0x04,0x98,0xa1,0x2e]
    508 
    509 //------------------------------------------------------------------------------
    510 // Floating-point convert to integer
    511 //------------------------------------------------------------------------------
    512 
    513          fcvtns v6.4s, v8.4s
    514          fcvtns v6.2d, v8.2d
    515          fcvtns v4.2s, v0.2s
    516 
    517 // CHECK:	fcvtns	v6.4s, v8.4s            // encoding: [0x06,0xa9,0x21,0x4e]
    518 // CHECK:	fcvtns	v6.2d, v8.2d            // encoding: [0x06,0xa9,0x61,0x4e]
    519 // CHECK:	fcvtns	v4.2s, v0.2s            // encoding: [0x04,0xa8,0x21,0x0e]
    520 
    521          fcvtnu v6.4s, v8.4s
    522          fcvtnu v6.2d, v8.2d
    523          fcvtnu v4.2s, v0.2s
    524 
    525 // CHECK:	fcvtnu	v6.4s, v8.4s            // encoding: [0x06,0xa9,0x21,0x6e]
    526 // CHECK:	fcvtnu	v6.2d, v8.2d            // encoding: [0x06,0xa9,0x61,0x6e]
    527 // CHECK:	fcvtnu	v4.2s, v0.2s            // encoding: [0x04,0xa8,0x21,0x2e]
    528 
    529          fcvtps v6.4s, v8.4s
    530          fcvtps v6.2d, v8.2d
    531          fcvtps v4.2s, v0.2s
    532 
    533 // CHECK:	fcvtps	v6.4s, v8.4s            // encoding: [0x06,0xa9,0xa1,0x4e]
    534 // CHECK:	fcvtps	v6.2d, v8.2d            // encoding: [0x06,0xa9,0xe1,0x4e]
    535 // CHECK:	fcvtps	v4.2s, v0.2s            // encoding: [0x04,0xa8,0xa1,0x0e]
    536 
    537          fcvtpu v6.4s, v8.4s
    538          fcvtpu v6.2d, v8.2d
    539          fcvtpu v4.2s, v0.2s
    540 
    541 // CHECK:	fcvtpu	v6.4s, v8.4s            // encoding: [0x06,0xa9,0xa1,0x6e]
    542 // CHECK:	fcvtpu	v6.2d, v8.2d            // encoding: [0x06,0xa9,0xe1,0x6e]
    543 // CHECK:	fcvtpu	v4.2s, v0.2s            // encoding: [0x04,0xa8,0xa1,0x2e]
    544 
    545          fcvtms v6.4s, v8.4s
    546          fcvtms v6.2d, v8.2d
    547          fcvtms v4.2s, v0.2s
    548 
    549 // CHECK:	fcvtms	v6.4s, v8.4s            // encoding: [0x06,0xb9,0x21,0x4e]
    550 // CHECK:	fcvtms	v6.2d, v8.2d            // encoding: [0x06,0xb9,0x61,0x4e]
    551 // CHECK:	fcvtms	v4.2s, v0.2s            // encoding: [0x04,0xb8,0x21,0x0e]
    552 
    553          fcvtmu v6.4s, v8.4s
    554          fcvtmu v6.2d, v8.2d
    555          fcvtmu v4.2s, v0.2s
    556 
    557 // CHECK:	fcvtmu	v6.4s, v8.4s            // encoding: [0x06,0xb9,0x21,0x6e]
    558 // CHECK:	fcvtmu	v6.2d, v8.2d            // encoding: [0x06,0xb9,0x61,0x6e]
    559 // CHECK:	fcvtmu	v4.2s, v0.2s            // encoding: [0x04,0xb8,0x21,0x2e]
    560 
    561          fcvtzs v6.4s, v8.4s
    562          fcvtzs v6.2d, v8.2d
    563          fcvtzs v4.2s, v0.2s
    564 
    565 // CHECK:	fcvtzs	v6.4s, v8.4s            // encoding: [0x06,0xb9,0xa1,0x4e]
    566 // CHECK:	fcvtzs	v6.2d, v8.2d            // encoding: [0x06,0xb9,0xe1,0x4e]
    567 // CHECK:	fcvtzs	v4.2s, v0.2s            // encoding: [0x04,0xb8,0xa1,0x0e]
    568 
    569 
    570          fcvtzu v6.4s, v8.4s
    571          fcvtzu v6.2d, v8.2d
    572          fcvtzu v4.2s, v0.2s
    573 
    574 // CHECK:	fcvtzu	v6.4s, v8.4s            // encoding: [0x06,0xb9,0xa1,0x6e]
    575 // CHECK:	fcvtzu	v6.2d, v8.2d            // encoding: [0x06,0xb9,0xe1,0x6e]
    576 // CHECK:	fcvtzu	v4.2s, v0.2s            // encoding: [0x04,0xb8,0xa1,0x2e]
    577 
    578          fcvtas v6.4s, v8.4s
    579          fcvtas v6.2d, v8.2d
    580          fcvtas v4.2s, v0.2s
    581 
    582 // CHECK:	fcvtas	v6.4s, v8.4s            // encoding: [0x06,0xc9,0x21,0x4e]
    583 // CHECK:	fcvtas	v6.2d, v8.2d            // encoding: [0x06,0xc9,0x61,0x4e]
    584 // CHECK:	fcvtas	v4.2s, v0.2s            // encoding: [0x04,0xc8,0x21,0x0e]
    585 
    586          fcvtau v6.4s, v8.4s
    587          fcvtau v6.2d, v8.2d
    588          fcvtau v4.2s, v0.2s
    589 
    590 // CHECK:	fcvtau	v6.4s, v8.4s            // encoding: [0x06,0xc9,0x21,0x6e]
    591 // CHECK:	fcvtau	v6.2d, v8.2d            // encoding: [0x06,0xc9,0x61,0x6e]
    592 // CHECK:	fcvtau	v4.2s, v0.2s            // encoding: [0x04,0xc8,0x21,0x2e]
    593 
    594          urecpe v6.4s, v8.4s
    595          urecpe v4.2s, v0.2s
    596 
    597 // CHECK:	urecpe	v6.4s, v8.4s            // encoding: [0x06,0xc9,0xa1,0x4e]
    598 // CHECK:	urecpe	v4.2s, v0.2s            // encoding: [0x04,0xc8,0xa1,0x0e]
    599 
    600          ursqrte v6.4s, v8.4s
    601          ursqrte v4.2s, v0.2s
    602 
    603 // CHECK:	ursqrte	v6.4s, v8.4s            // encoding: [0x06,0xc9,0xa1,0x6e]
    604 // CHECK:	ursqrte	v4.2s, v0.2s            // encoding: [0x04,0xc8,0xa1,0x2e]
    605 
    606          scvtf v6.4s, v8.4s
    607          scvtf v6.2d, v8.2d
    608          scvtf v4.2s, v0.2s
    609 
    610 // CHECK:	scvtf	v6.4s, v8.4s            // encoding: [0x06,0xd9,0x21,0x4e]
    611 // CHECK:	scvtf	v6.2d, v8.2d            // encoding: [0x06,0xd9,0x61,0x4e]
    612 // CHECK:	scvtf	v4.2s, v0.2s            // encoding: [0x04,0xd8,0x21,0x0e]
    613 
    614          ucvtf v6.4s, v8.4s
    615          ucvtf v6.2d, v8.2d
    616          ucvtf v4.2s, v0.2s
    617 
    618 // CHECK:	ucvtf	v6.4s, v8.4s            // encoding: [0x06,0xd9,0x21,0x6e]
    619 // CHECK:	ucvtf	v6.2d, v8.2d            // encoding: [0x06,0xd9,0x61,0x6e]
    620 // CHECK:	ucvtf	v4.2s, v0.2s            // encoding: [0x04,0xd8,0x21,0x2e]
    621 
    622          frecpe v6.4s, v8.4s
    623          frecpe v6.2d, v8.2d
    624          frecpe v4.2s, v0.2s
    625 
    626 // CHECK:	frecpe	v6.4s, v8.4s            // encoding: [0x06,0xd9,0xa1,0x4e]
    627 // CHECK:	frecpe	v6.2d, v8.2d            // encoding: [0x06,0xd9,0xe1,0x4e]
    628 // CHECK:	frecpe	v4.2s, v0.2s            // encoding: [0x04,0xd8,0xa1,0x0e]
    629 
    630          frsqrte v6.4s, v8.4s
    631          frsqrte v6.2d, v8.2d
    632          frsqrte v4.2s, v0.2s
    633 
    634 // CHECK:	frsqrte	v6.4s, v8.4s            // encoding: [0x06,0xd9,0xa1,0x6e]
    635 // CHECK:	frsqrte	v6.2d, v8.2d            // encoding: [0x06,0xd9,0xe1,0x6e]
    636 // CHECK:	frsqrte	v4.2s, v0.2s            // encoding: [0x04,0xd8,0xa1,0x2e]
    637 
    638          fsqrt v6.4s, v8.4s
    639          fsqrt v6.2d, v8.2d
    640          fsqrt v4.2s, v0.2s
    641 
    642 // CHECK:	fsqrt	v6.4s, v8.4s            // encoding: [0x06,0xf9,0xa1,0x6e]
    643 // CHECK:	fsqrt	v6.2d, v8.2d            // encoding: [0x06,0xf9,0xe1,0x6e]
    644 // CHECK:	fsqrt	v4.2s, v0.2s            // encoding: [0x04,0xf8,0xa1,0x2e]
    645 
    646 
    647