Home | History | Annotate | Download | only in AArch64
      1 ; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon -output-asm-variant=1 -show-encoding < %s | FileCheck %s
      2 
      3 foo:
      4 ;-----------------------------------------------------------------------------
      5 ; ADD #0 to/from SP/WSP is a MOV
      6 ;-----------------------------------------------------------------------------
      7   add x1, sp, #0
      8 ; CHECK: mov x1, sp
      9   add sp, x2, #0
     10 ; CHECK: mov sp, x2
     11   add w3, wsp, #0
     12 ; CHECK: mov w3, wsp
     13   add wsp, w4, #0
     14 ; CHECK: mov wsp, w4
     15   mov x5, sp
     16 ; CHECK: mov x5, sp
     17   mov sp, x6
     18 ; CHECK: mov sp, x6
     19   mov w7, wsp
     20 ; CHECK: mov w7, wsp
     21   mov wsp, w8
     22 ; CHECK: mov wsp, w8
     23 
     24 ;-----------------------------------------------------------------------------
     25 ; ORR Rd, Rn, Rn is a MOV
     26 ;-----------------------------------------------------------------------------
     27   orr x2, xzr, x9
     28 ; CHECK: mov x2, x9
     29   orr w2, wzr, w9
     30 ; CHECK: mov w2, w9
     31   mov x3, x4
     32 ; CHECK: mov x3, x4
     33   mov w5, w6
     34 ; CHECK: mov w5, w6
     35 
     36 ;-----------------------------------------------------------------------------
     37 ; TST Xn, #<imm>
     38 ;-----------------------------------------------------------------------------
     39         tst w1, #3
     40         tst x1, #3
     41         tst w1, w2
     42         tst x1, x2
     43         ands wzr, w1, w2, lsl #2
     44         ands xzr, x1, x2, lsl #3
     45         tst w3, w7, lsl #31
     46         tst x2, x20, asr #0
     47 
     48 ; CHECK: tst	w1, #0x3                ; encoding: [0x3f,0x04,0x00,0x72]
     49 ; CHECK: tst	x1, #0x3                ; encoding: [0x3f,0x04,0x40,0xf2]
     50 ; CHECK: tst	w1, w2                  ; encoding: [0x3f,0x00,0x02,0x6a]
     51 ; CHECK: tst	x1, x2                  ; encoding: [0x3f,0x00,0x02,0xea]
     52 ; CHECK: tst	w1, w2, lsl #2          ; encoding: [0x3f,0x08,0x02,0x6a]
     53 ; CHECK: tst	x1, x2, lsl #3          ; encoding: [0x3f,0x0c,0x02,0xea]
     54 ; CHECK: tst	w3, w7, lsl #31         ; encoding: [0x7f,0x7c,0x07,0x6a]
     55 ; CHECK: tst	x2, x20, asr #0         ; encoding: [0x5f,0x00,0x94,0xea]
     56 
     57 ;-----------------------------------------------------------------------------
     58 ; ADDS to WZR/XZR is a CMN
     59 ;-----------------------------------------------------------------------------
     60   cmn w1, #3, lsl #0
     61   cmn x2, #4194304
     62   cmn w4, w5
     63   cmn x6, x7
     64   cmn w8, w9, asr #3
     65   cmn x2, x3, lsr #4
     66   cmn x2, w3, uxtb #1
     67   cmn x4, x5, uxtx #1
     68 
     69 ; CHECK: cmn	w1, #3                  ; encoding: [0x3f,0x0c,0x00,0x31]
     70 ; CHECK: cmn	x2, #1024, lsl #12      ; encoding: [0x5f,0x00,0x50,0xb1]
     71 ; CHECK: cmn	w4, w5                  ; encoding: [0x9f,0x00,0x05,0x2b]
     72 ; CHECK: cmn	x6, x7                  ; encoding: [0xdf,0x00,0x07,0xab]
     73 ; CHECK: cmn	w8, w9, asr #3          ; encoding: [0x1f,0x0d,0x89,0x2b]
     74 ; CHECK: cmn	x2, x3, lsr #4          ; encoding: [0x5f,0x10,0x43,0xab]
     75 ; CHECK: cmn	x2, w3, uxtb #1         ; encoding: [0x5f,0x04,0x23,0xab]
     76 ; CHECK: cmn	x4, x5, uxtx #1         ; encoding: [0x9f,0x64,0x25,0xab]
     77 
     78 
     79 ;-----------------------------------------------------------------------------
     80 ; SUBS to WZR/XZR is a CMP
     81 ;-----------------------------------------------------------------------------
     82   cmp w1, #1024, lsl #12
     83   cmp x2, #1024
     84   cmp w4, w5
     85   cmp x6, x7
     86   cmp w8, w9, asr #3
     87   cmp x2, x3, lsr #4
     88   cmp x2, w3, uxth #2
     89   cmp x4, x5, uxtx
     90   cmp wzr, w1
     91   cmp x8, w8, uxtw
     92   cmp w9, w8, uxtw
     93   cmp wsp, w9, lsl #0
     94 
     95 ; CHECK: cmp	w1, #1024, lsl #12      ; encoding: [0x3f,0x00,0x50,0x71]
     96 ; CHECK: cmp	x2, #1024               ; encoding: [0x5f,0x00,0x10,0xf1]
     97 ; CHECK: cmp	w4, w5                  ; encoding: [0x9f,0x00,0x05,0x6b]
     98 ; CHECK: cmp	x6, x7                  ; encoding: [0xdf,0x00,0x07,0xeb]
     99 ; CHECK: cmp	w8, w9, asr #3          ; encoding: [0x1f,0x0d,0x89,0x6b]
    100 ; CHECK: cmp	x2, x3, lsr #4          ; encoding: [0x5f,0x10,0x43,0xeb]
    101 ; CHECK: cmp	x2, w3, uxth #2         ; encoding: [0x5f,0x28,0x23,0xeb]
    102 ; CHECK: cmp	x4, x5, uxtx            ; encoding: [0x9f,0x60,0x25,0xeb]
    103 ; CHECK: cmp	wzr, w1                 ; encoding: [0xff,0x03,0x01,0x6b]
    104 ; CHECK: cmp	x8, w8, uxtw            ; encoding: [0x1f,0x41,0x28,0xeb]
    105 ; CHECK: cmp	w9, w8, uxtw            ; encoding: [0x3f,0x41,0x28,0x6b]
    106 ; CHECK: cmp	wsp, w9                 ; encoding: [0xff,0x43,0x29,0x6b]
    107 
    108 
    109 ;-----------------------------------------------------------------------------
    110 ; SUB/SUBS from WZR/XZR is a NEG
    111 ;-----------------------------------------------------------------------------
    112 
    113   neg w0, w1
    114 ; CHECK: neg w0, w1
    115   neg w0, w1, lsl #1
    116 ; CHECK: neg w0, w1, lsl #1
    117   neg x0, x1
    118 ; CHECK: neg x0, x1
    119   neg x0, x1, asr #1
    120 ; CHECK: neg x0, x1, asr #1
    121   negs w0, w1
    122 ; CHECK: negs w0, w1
    123   negs w0, w1, lsl #1
    124 ; CHECK: negs w0, w1, lsl #1
    125   negs x0, x1
    126 ; CHECK: negs x0, x1
    127   negs x0, x1, asr #1
    128 ; CHECK: negs x0, x1, asr #1
    129 
    130 ;-----------------------------------------------------------------------------
    131 ; MOV aliases
    132 ;-----------------------------------------------------------------------------
    133 
    134   mov x0, #281470681743360
    135   mov x0, #18446744073709486080
    136 
    137 ; CHECK: movz	x0, #0xffff, lsl #32
    138 ; CHECK: movn	x0, #0xffff
    139 
    140   mov w0, #0xffffffff
    141   mov w0, #0xffffff00
    142   mov wzr, #0xffffffff
    143   mov wzr, #0xffffff00
    144 
    145 ; CHECK: movn   w0, #0
    146 ; CHECK: movn   w0, #0xff
    147 ; CHECK: movn   wzr, #0
    148 ; CHECK: movn   wzr, #0xff
    149 
    150 ;-----------------------------------------------------------------------------
    151 ; MVN aliases
    152 ;-----------------------------------------------------------------------------
    153 
    154         mvn w4, w9
    155         mvn x2, x3
    156         orn w4, wzr, w9
    157 
    158 ; CHECK: mvn	w4, w9             ; encoding: [0xe4,0x03,0x29,0x2a]
    159 ; CHECK: mvn	x2, x3             ; encoding: [0xe2,0x03,0x23,0xaa]
    160 ; CHECK: mvn	w4, w9             ; encoding: [0xe4,0x03,0x29,0x2a]
    161 
    162         mvn w4, w9, lsl #1
    163         mvn x2, x3, lsl #1
    164         orn w4, wzr, w9, lsl #1
    165 
    166 ; CHECK: mvn	w4, w9, lsl #1     ; encoding: [0xe4,0x07,0x29,0x2a]
    167 ; CHECK: mvn	x2, x3, lsl #1     ; encoding: [0xe2,0x07,0x23,0xaa]
    168 ; CHECK: mvn	w4, w9, lsl #1     ; encoding: [0xe4,0x07,0x29,0x2a]
    169 
    170 ;-----------------------------------------------------------------------------
    171 ; Bitfield aliases
    172 ;-----------------------------------------------------------------------------
    173 
    174   bfi   w0, w0, #1, #4
    175   bfi   x0, x0, #1, #4
    176   bfi   w0, w0, #0, #2
    177   bfi   x0, x0, #0, #2
    178   bfxil w0, w0, #2, #3
    179   bfxil x0, x0, #2, #3
    180   sbfiz w0, w0, #1, #4
    181   sbfiz x0, x0, #1, #4
    182   sbfx  w0, w0, #2, #3
    183   sbfx  x0, x0, #2, #3
    184   ubfiz w0, w0, #1, #4
    185   ubfiz x0, x0, #1, #4
    186   ubfx  w0, w0, #2, #3
    187   ubfx  x0, x0, #2, #3
    188 
    189 ; CHECK: bfi   w0, w0, #1, #4
    190 ; CHECK: bfi   x0, x0, #1, #4
    191 ; CHECK: bfxil w0, w0, #0, #2
    192 ; CHECK: bfxil x0, x0, #0, #2
    193 ; CHECK: bfxil w0, w0, #2, #3
    194 ; CHECK: bfxil x0, x0, #2, #3
    195 ; CHECK: sbfiz w0, w0, #1, #4
    196 ; CHECK: sbfiz x0, x0, #1, #4
    197 ; CHECK: sbfx  w0, w0, #2, #3
    198 ; CHECK: sbfx  x0, x0, #2, #3
    199 ; CHECK: ubfiz w0, w0, #1, #4
    200 ; CHECK: ubfiz x0, x0, #1, #4
    201 ; CHECK: ubfx  w0, w0, #2, #3
    202 ; CHECK: ubfx  x0, x0, #2, #3
    203 
    204 ;-----------------------------------------------------------------------------
    205 ; Shift (immediate) aliases
    206 ;-----------------------------------------------------------------------------
    207 
    208 ; CHECK: asr w1, w3, #13
    209 ; CHECK: asr x1, x3, #13
    210 ; CHECK: lsl w0, w0, #1
    211 ; CHECK: lsl x0, x0, #1
    212 ; CHECK: lsr w0, w0, #4
    213 ; CHECK: lsr x0, x0, #4
    214 
    215    sbfm w1, w3, #13, #31
    216    sbfm x1, x3, #13, #63
    217    ubfm w0, w0, #31, #30
    218    ubfm x0, x0, #63, #62
    219    ubfm w0, w0, #4, #31
    220    ubfm x0, x0, #4, #63
    221 ; CHECK: ror w1, w3, #5
    222 ; CHECK: ror x1, x3, #5
    223    ror w1, w3, #5
    224    ror x1, x3, #5
    225 ; CHECK: lsl w1, wzr, #3
    226    lsl w1, wzr, #3
    227 
    228 ;-----------------------------------------------------------------------------
    229 ; Sign/Zero extend aliases
    230 ;-----------------------------------------------------------------------------
    231 
    232   sxtb  w1, w2
    233   sxth  w1, w2
    234   uxtb  w1, w2
    235   uxth  w1, w2
    236 
    237 ; CHECK: sxtb w1, w2
    238 ; CHECK: sxth w1, w2
    239 ; CHECK: uxtb w1, w2
    240 ; CHECK: uxth w1, w2
    241 
    242   sxtb  x1, w2
    243   sxth  x1, w2
    244   sxtw  x1, w2
    245   uxtb  x1, w2
    246   uxth  x1, w2
    247   uxtw  x1, w2
    248 
    249 ; CHECK: sxtb x1, w2
    250 ; CHECK: sxth x1, w2
    251 ; CHECK: sxtw x1, w2
    252 ; CHECK: uxtb w1, w2
    253 ; CHECK: uxth w1, w2
    254 ; CHECK: ubfx x1, x2, #0, #32
    255 
    256 ;-----------------------------------------------------------------------------
    257 ; Negate with carry
    258 ;-----------------------------------------------------------------------------
    259 
    260   ngc   w1, w2
    261   ngc   x1, x2
    262   ngcs  w1, w2
    263   ngcs  x1, x2
    264 
    265 ; CHECK: ngc  w1, w2
    266 ; CHECK: ngc  x1, x2
    267 ; CHECK: ngcs w1, w2
    268 ; CHECK: ngcs x1, x2
    269 
    270 ;-----------------------------------------------------------------------------
    271 ; 6.6.1 Multiply aliases
    272 ;-----------------------------------------------------------------------------
    273 
    274   mneg   w1, w2, w3
    275   mneg   x1, x2, x3
    276   mul    w1, w2, w3
    277   mul    x1, x2, x3
    278   smnegl x1, w2, w3
    279   umnegl x1, w2, w3
    280   smull   x1, w2, w3
    281   umull   x1, w2, w3
    282 
    283 ; CHECK: mneg w1, w2, w3
    284 ; CHECK: mneg x1, x2, x3
    285 ; CHECK: mul w1, w2, w3
    286 ; CHECK: mul x1, x2, x3
    287 ; CHECK: smnegl x1, w2, w3
    288 ; CHECK: umnegl x1, w2, w3
    289 ; CHECK: smull x1, w2, w3
    290 ; CHECK: umull x1, w2, w3
    291 
    292 ;-----------------------------------------------------------------------------
    293 ; Conditional select aliases
    294 ;-----------------------------------------------------------------------------
    295 
    296   cset   w1, eq
    297   cset   x1, eq
    298   csetm  w1, ne
    299   csetm  x1, ne
    300   cinc   w1, w2, lt
    301   cinc   x1, x2, lt
    302   cinv   w1, w2, mi
    303   cinv   x1, x2, mi
    304 
    305 ; CHECK: cset  w1, eq
    306 ; CHECK: cset  x1, eq
    307 ; CHECK: csetm  w1, ne
    308 ; CHECK: csetm  x1, ne
    309 ; CHECK: cinc  w1, w2, lt
    310 ; CHECK: cinc  x1, x2, lt
    311 ; CHECK: cinv  w1, w2, mi
    312 ; CHECK: cinv  x1, x2, mi
    313 
    314 ;-----------------------------------------------------------------------------
    315 ; SYS aliases
    316 ;-----------------------------------------------------------------------------
    317 
    318   sys #0, c7, c1, #0
    319 ; CHECK: ic ialluis
    320   sys #0, c7, c5, #0
    321 ; CHECK: ic iallu
    322   sys #3, c7, c5, #1
    323 ; CHECK: ic ivau
    324 
    325   sys #3, c7, c4, #1
    326 ; CHECK: dc zva
    327   sys #0, c7, c6, #1
    328 ; CHECK: dc ivac
    329   sys #0, c7, c6, #2
    330 ; CHECK: dc isw
    331   sys #3, c7, c10, #1
    332 ; CHECK: dc cvac
    333   sys #0, c7, c10, #2
    334 ; CHECK: dc csw
    335   sys #3, c7, c11, #1
    336 ; CHECK: dc cvau
    337   sys #3, c7, c14, #1
    338 ; CHECK: dc civac
    339   sys #0, c7, c14, #2
    340 ; CHECK: dc cisw
    341 
    342   sys #0, c7, c8, #0
    343 ; CHECK: at s1e1r
    344   sys #4, c7, c8, #0
    345 ; CHECK: at s1e2r
    346   sys #6, c7, c8, #0
    347 ; CHECK: at s1e3r
    348   sys #0, c7, c8, #1
    349 ; CHECK: at s1e1w
    350   sys #4, c7, c8, #1
    351 ; CHECK: at s1e2w
    352   sys #6, c7, c8, #1
    353 ; CHECK: at s1e3w
    354   sys #0, c7, c8, #2
    355 ; CHECK: at s1e0r
    356   sys #0, c7, c8, #3
    357 ; CHECK: at s1e0w
    358   sys #4, c7, c8, #4
    359 ; CHECK: at s12e1r
    360   sys #4, c7, c8, #5
    361 ; CHECK: at s12e1w
    362   sys #4, c7, c8, #6
    363 ; CHECK: at s12e0r
    364   sys #4, c7, c8, #7
    365 ; CHECK: at s12e0w
    366 
    367   sys #0, c8, c3, #0
    368 ; CHECK: tlbi vmalle1is
    369   sys #4, c8, c3, #0
    370 ; CHECK: tlbi alle2is
    371   sys #6, c8, c3, #0
    372 ; CHECK: tlbi alle3is
    373   sys #0, c8, c3, #1
    374 ; CHECK: tlbi vae1is
    375   sys #4, c8, c3, #1
    376 ; CHECK: tlbi vae2is
    377   sys #6, c8, c3, #1
    378 ; CHECK: tlbi vae3is
    379   sys #0, c8, c3, #2
    380 ; CHECK: tlbi aside1is
    381   sys #0, c8, c3, #3
    382 ; CHECK: tlbi vaae1is
    383   sys #4, c8, c3, #4
    384 ; CHECK: tlbi alle1is
    385   sys #0, c8, c3, #5
    386 ; CHECK: tlbi vale1is
    387   sys #0, c8, c3, #7
    388 ; CHECK: tlbi vaale1is
    389   sys #0, c8, c7, #0
    390 ; CHECK: tlbi vmalle1
    391   sys #4, c8, c7, #0
    392 ; CHECK: tlbi alle2
    393   sys #4, c8, c3, #5
    394 ; CHECK: tlbi vale2is
    395   sys #6, c8, c3, #5
    396 ; CHECK: tlbi vale3is
    397   sys #6, c8, c7, #0
    398 ; CHECK: tlbi alle3
    399   sys #0, c8, c7, #1
    400 ; CHECK: tlbi vae1
    401   sys #4, c8, c7, #1
    402 ; CHECK: tlbi vae2
    403   sys #6, c8, c7, #1
    404 ; CHECK: tlbi vae3
    405   sys #0, c8, c7, #2
    406 ; CHECK: tlbi aside1
    407   sys #0, c8, c7, #3
    408 ; CHECK: tlbi vaae1
    409   sys #4, c8, c7, #4
    410 ; CHECK: tlbi alle1
    411   sys #0, c8, c7, #5
    412 ; CHECK: tlbi vale1
    413   sys #4, c8, c7, #5
    414 ; CHECK: tlbi vale2
    415   sys #6, c8, c7, #5
    416 ; CHECK: tlbi vale3
    417   sys #0, c8, c7, #7
    418 ; CHECK: tlbi vaale1
    419   sys #4, c8, c4, #1
    420 ; CHECK: tlbi ipas2e1
    421   sys #4, c8, c4, #5
    422 ; CHECK: tlbi ipas2le1
    423   sys #4, c8, c0, #1
    424 ; CHECK: tlbi ipas2e1is
    425   sys #4, c8, c0, #5
    426 ; CHECK: tlbi ipas2le1is
    427   sys #4, c8, c7, #6
    428 ; CHECK: tlbi vmalls12e1
    429   sys #4, c8, c3, #6
    430 ; CHECK: tlbi vmalls12e1is
    431 
    432   ic ialluis
    433 ; CHECK: ic ialluis                 ; encoding: [0x1f,0x71,0x08,0xd5]
    434   ic iallu
    435 ; CHECK: ic iallu                   ; encoding: [0x1f,0x75,0x08,0xd5]
    436   ic ivau, x0
    437 ; CHECK: ic ivau, x0                ; encoding: [0x20,0x75,0x0b,0xd5]
    438 
    439   dc zva, x0
    440 ; CHECK: dc zva, x0                 ; encoding: [0x20,0x74,0x0b,0xd5]
    441   dc ivac, x0
    442 ; CHECK: dc ivac, x0                ; encoding: [0x20,0x76,0x08,0xd5]
    443   dc isw, x0
    444 ; CHECK: dc isw, x0                 ; encoding: [0x40,0x76,0x08,0xd5]
    445   dc cvac, x0
    446 ; CHECK: dc cvac, x0                ; encoding: [0x20,0x7a,0x0b,0xd5]
    447   dc csw, x0
    448 ; CHECK: dc csw, x0                 ; encoding: [0x40,0x7a,0x08,0xd5]
    449   dc cvau, x0
    450 ; CHECK: dc cvau, x0                ; encoding: [0x20,0x7b,0x0b,0xd5]
    451   dc civac, x0
    452 ; CHECK: dc civac, x0               ; encoding: [0x20,0x7e,0x0b,0xd5]
    453   dc cisw, x0
    454 ; CHECK: dc cisw, x0                ; encoding: [0x40,0x7e,0x08,0xd5]
    455 
    456   at s1e1r, x0
    457 ; CHECK: at s1e1r, x0               ; encoding: [0x00,0x78,0x08,0xd5]
    458   at s1e2r, x0
    459 ; CHECK: at s1e2r, x0               ; encoding: [0x00,0x78,0x0c,0xd5]
    460   at s1e3r, x0
    461 ; CHECK: at s1e3r, x0               ; encoding: [0x00,0x78,0x0e,0xd5]
    462   at s1e1w, x0
    463 ; CHECK: at s1e1w, x0               ; encoding: [0x20,0x78,0x08,0xd5]
    464   at s1e2w, x0
    465 ; CHECK: at s1e2w, x0               ; encoding: [0x20,0x78,0x0c,0xd5]
    466   at s1e3w, x0
    467 ; CHECK: at s1e3w, x0               ; encoding: [0x20,0x78,0x0e,0xd5]
    468   at s1e0r, x0
    469 ; CHECK: at s1e0r, x0               ; encoding: [0x40,0x78,0x08,0xd5]
    470   at s1e0w, x0
    471 ; CHECK: at s1e0w, x0               ; encoding: [0x60,0x78,0x08,0xd5]
    472   at s12e1r, x0
    473 ; CHECK: at s12e1r, x0              ; encoding: [0x80,0x78,0x0c,0xd5]
    474   at s12e1w, x0
    475 ; CHECK: at s12e1w, x0              ; encoding: [0xa0,0x78,0x0c,0xd5]
    476   at s12e0r, x0
    477 ; CHECK: at s12e0r, x0              ; encoding: [0xc0,0x78,0x0c,0xd5]
    478   at s12e0w, x0
    479 ; CHECK: at s12e0w, x0              ; encoding: [0xe0,0x78,0x0c,0xd5]
    480 
    481   tlbi vmalle1is
    482 ; CHECK: tlbi vmalle1is             ; encoding: [0x1f,0x83,0x08,0xd5]
    483   tlbi alle2is
    484 ; CHECK: tlbi alle2is               ; encoding: [0x1f,0x83,0x0c,0xd5]
    485   tlbi alle3is
    486 ; CHECK: tlbi alle3is               ; encoding: [0x1f,0x83,0x0e,0xd5]
    487   tlbi vae1is, x0
    488 ; CHECK: tlbi vae1is, x0            ; encoding: [0x20,0x83,0x08,0xd5]
    489   tlbi vae2is, x0
    490 ; CHECK: tlbi vae2is, x0            ; encoding: [0x20,0x83,0x0c,0xd5]
    491   tlbi vae3is, x0
    492 ; CHECK: tlbi vae3is, x0            ; encoding: [0x20,0x83,0x0e,0xd5]
    493   tlbi aside1is, x0
    494 ; CHECK: tlbi aside1is, x0          ; encoding: [0x40,0x83,0x08,0xd5]
    495   tlbi vaae1is, x0
    496 ; CHECK: tlbi vaae1is, x0           ; encoding: [0x60,0x83,0x08,0xd5]
    497   tlbi alle1is
    498 ; CHECK: tlbi alle1is               ; encoding: [0x9f,0x83,0x0c,0xd5]
    499   tlbi vale1is, x0
    500 ; CHECK: tlbi vale1is, x0           ; encoding: [0xa0,0x83,0x08,0xd5]
    501   tlbi vaale1is, x0
    502 ; CHECK: tlbi vaale1is, x0          ; encoding: [0xe0,0x83,0x08,0xd5]
    503   tlbi vmalle1
    504 ; CHECK: tlbi vmalle1               ; encoding: [0x1f,0x87,0x08,0xd5]
    505   tlbi alle2
    506 ; CHECK: tlbi alle2                 ; encoding: [0x1f,0x87,0x0c,0xd5]
    507   tlbi vale2is, x0
    508 ; CHECK: tlbi vale2is, x0           ; encoding: [0xa0,0x83,0x0c,0xd5]
    509   tlbi vale3is, x0
    510 ; CHECK: tlbi vale3is, x0           ; encoding: [0xa0,0x83,0x0e,0xd5]
    511   tlbi alle3
    512 ; CHECK: tlbi alle3                 ; encoding: [0x1f,0x87,0x0e,0xd5]
    513   tlbi vae1, x0
    514 ; CHECK: tlbi vae1, x0              ; encoding: [0x20,0x87,0x08,0xd5]
    515   tlbi vae2, x0
    516 ; CHECK: tlbi vae2, x0              ; encoding: [0x20,0x87,0x0c,0xd5]
    517   tlbi vae3, x0
    518 ; CHECK: tlbi vae3, x0              ; encoding: [0x20,0x87,0x0e,0xd5]
    519   tlbi aside1, x0
    520 ; CHECK: tlbi aside1, x0            ; encoding: [0x40,0x87,0x08,0xd5]
    521   tlbi vaae1, x0
    522 ; CHECK: tlbi vaae1, x0             ; encoding: [0x60,0x87,0x08,0xd5]
    523   tlbi alle1
    524 ; CHECK: tlbi alle1                 ; encoding: [0x9f,0x87,0x0c,0xd5
    525   tlbi vale1, x0
    526 ; CHECK: tlbi vale1, x0             ; encoding: [0xa0,0x87,0x08,0xd5]
    527   tlbi vale2, x0
    528 ; CHECK: tlbi vale2, x0             ; encoding: [0xa0,0x87,0x0c,0xd5]
    529   tlbi vale3, x0
    530 ; CHECK: tlbi vale3, x0             ; encoding: [0xa0,0x87,0x0e,0xd5]
    531   tlbi vaale1, x0
    532 ; CHECK: tlbi vaale1, x0            ; encoding: [0xe0,0x87,0x08,0xd5]
    533   tlbi ipas2e1, x0
    534 ; CHECK: tlbi ipas2e1, x0           ; encoding: [0x20,0x84,0x0c,0xd5]
    535   tlbi ipas2le1, x0
    536 ; CHECK: tlbi ipas2le1, x0          ; encoding: [0xa0,0x84,0x0c,0xd5]
    537   tlbi ipas2e1is, x0
    538 ; CHECK: tlbi ipas2e1is, x0         ; encoding: [0x20,0x80,0x0c,0xd5]
    539   tlbi ipas2le1is, x0
    540 ; CHECK: tlbi ipas2le1is, x0        ; encoding: [0xa0,0x80,0x0c,0xd5]
    541   tlbi vmalls12e1
    542 ; CHECK: tlbi vmalls12e1            ; encoding: [0xdf,0x87,0x0c,0xd5]
    543   tlbi vmalls12e1is
    544 ; CHECK: tlbi vmalls12e1is          ; encoding: [0xdf,0x83,0x0c,0xd5]
    545 
    546 ;-----------------------------------------------------------------------------
    547 ; 5.8.5 Vector Arithmetic aliases
    548 ;-----------------------------------------------------------------------------
    549 
    550   cmls.8b v0, v2, v1
    551   cmls.16b v0, v2, v1
    552   cmls.4h v0, v2, v1
    553   cmls.8h v0, v2, v1
    554   cmls.2s v0, v2, v1
    555   cmls.4s v0, v2, v1
    556   cmls.2d v0, v2, v1
    557 ; CHECK: cmhs.8b v0, v1, v2
    558 ; CHECK: cmhs.16b v0, v1, v2
    559 ; CHECK: cmhs.4h v0, v1, v2
    560 ; CHECK: cmhs.8h v0, v1, v2
    561 ; CHECK: cmhs.2s v0, v1, v2
    562 ; CHECK: cmhs.4s v0, v1, v2
    563 ; CHECK: cmhs.2d v0, v1, v2
    564 
    565   cmlo.8b v0, v2, v1
    566   cmlo.16b v0, v2, v1
    567   cmlo.4h v0, v2, v1
    568   cmlo.8h v0, v2, v1
    569   cmlo.2s v0, v2, v1
    570   cmlo.4s v0, v2, v1
    571   cmlo.2d v0, v2, v1
    572 ; CHECK: cmhi.8b v0, v1, v2
    573 ; CHECK: cmhi.16b v0, v1, v2
    574 ; CHECK: cmhi.4h v0, v1, v2
    575 ; CHECK: cmhi.8h v0, v1, v2
    576 ; CHECK: cmhi.2s v0, v1, v2
    577 ; CHECK: cmhi.4s v0, v1, v2
    578 ; CHECK: cmhi.2d v0, v1, v2
    579 
    580   cmle.8b v0, v2, v1
    581   cmle.16b v0, v2, v1
    582   cmle.4h v0, v2, v1
    583   cmle.8h  v0, v2, v1
    584   cmle.2s v0, v2, v1
    585   cmle.4s v0, v2, v1
    586   cmle.2d v0, v2, v1
    587 ; CHECK: cmge.8b v0, v1, v2
    588 ; CHECK: cmge.16b v0, v1, v2
    589 ; CHECK: cmge.4h v0, v1, v2
    590 ; CHECK: cmge.8h v0, v1, v2
    591 ; CHECK: cmge.2s v0, v1, v2
    592 ; CHECK: cmge.4s v0, v1, v2
    593 ; CHECK: cmge.2d v0, v1, v2
    594 
    595   cmlt.8b v0, v2, v1
    596   cmlt.16b v0, v2, v1
    597   cmlt.4h v0, v2, v1
    598   cmlt.8h  v0, v2, v1
    599   cmlt.2s v0, v2, v1
    600   cmlt.4s v0, v2, v1
    601   cmlt.2d v0, v2, v1
    602 ; CHECK: cmgt.8b v0, v1, v2
    603 ; CHECK: cmgt.16b v0, v1, v2
    604 ; CHECK: cmgt.4h v0, v1, v2
    605 ; CHECK: cmgt.8h v0, v1, v2
    606 ; CHECK: cmgt.2s v0, v1, v2
    607 ; CHECK: cmgt.4s v0, v1, v2
    608 ; CHECK: cmgt.2d v0, v1, v2
    609 
    610   fcmle.2s v0, v2, v1
    611   fcmle.4s v0, v2, v1
    612   fcmle.2d v0, v2, v1
    613 ; CHECK: fcmge.2s v0, v1, v2
    614 ; CHECK: fcmge.4s v0, v1, v2
    615 ; CHECK: fcmge.2d v0, v1, v2
    616 
    617   fcmlt.2s v0, v2, v1
    618   fcmlt.4s v0, v2, v1
    619   fcmlt.2d v0, v2, v1
    620 ; CHECK: fcmgt.2s v0, v1, v2
    621 ; CHECK: fcmgt.4s v0, v1, v2
    622 ; CHECK: fcmgt.2d v0, v1, v2
    623 
    624   facle.2s v0, v2, v1
    625   facle.4s v0, v2, v1
    626   facle.2d v0, v2, v1
    627 ; CHECK: facge.2s v0, v1, v2
    628 ; CHECK: facge.4s v0, v1, v2
    629 ; CHECK: facge.2d v0, v1, v2
    630 
    631   faclt.2s v0, v2, v1
    632   faclt.4s v0, v2, v1
    633   faclt.2d v0, v2, v1
    634 ; CHECK: facgt.2s v0, v1, v2
    635 ; CHECK: facgt.4s v0, v1, v2
    636 ; CHECK: facgt.2d v0, v1, v2
    637 
    638 ;-----------------------------------------------------------------------------
    639 ; 5.8.6 Scalar Arithmetic aliases
    640 ;-----------------------------------------------------------------------------
    641 
    642   cmls d0, d2, d1
    643 ; CHECK: cmhs d0, d1, d2
    644 
    645   cmle d0, d2, d1
    646 ; CHECK: cmge d0, d1, d2
    647 
    648   cmlo d0, d2, d1
    649 ; CHECK: cmhi d0, d1, d2
    650 
    651   cmlt d0, d2, d1
    652 ; CHECK: cmgt d0, d1, d2
    653 
    654   fcmle s0, s2, s1
    655   fcmle d0, d2, d1
    656 ; CHECK: fcmge s0, s1, s2
    657 ; CHECK: fcmge d0, d1, d2
    658 
    659   fcmlt s0, s2, s1
    660   fcmlt d0, d2, d1
    661 ; CHECK: fcmgt s0, s1, s2
    662 ; CHECK: fcmgt d0, d1, d2
    663 
    664   facle s0, s2, s1
    665   facle d0, d2, d1
    666 ; CHECK: facge s0, s1, s2
    667 ; CHECK: facge d0, d1, d2
    668 
    669   faclt s0, s2, s1
    670   faclt d0, d2, d1
    671 ; CHECK: facgt s0, s1, s2
    672 ; CHECK: facgt d0, d1, d2
    673 
    674 ;-----------------------------------------------------------------------------
    675 ; 5.8.14 Vector Shift (immediate)
    676 ;-----------------------------------------------------------------------------
    677   sxtl v1.8h, v2.8b
    678 ; CHECK: sshll.8h v1, v2, #0
    679   sxtl.8h v1, v2
    680 ; CHECK: sshll.8h v1, v2, #0
    681 
    682   sxtl v1.4s, v2.4h
    683 ; CHECK: sshll.4s v1, v2, #0
    684   sxtl.4s v1, v2
    685 ; CHECK: sshll.4s v1, v2, #0
    686 
    687   sxtl v1.2d, v2.2s
    688 ; CHECK: sshll.2d v1, v2, #0
    689   sxtl.2d v1, v2
    690 ; CHECK: sshll.2d v1, v2, #0
    691 
    692   sxtl2 v1.8h, v2.16b
    693 ; CHECK: sshll2.8h v1, v2, #0
    694   sxtl2.8h v1, v2
    695 ; CHECK: sshll2.8h v1, v2, #0
    696 
    697   sxtl2 v1.4s, v2.8h
    698 ; CHECK: sshll2.4s v1, v2, #0
    699   sxtl2.4s v1, v2
    700 ; CHECK: sshll2.4s v1, v2, #0
    701 
    702   sxtl2 v1.2d, v2.4s
    703 ; CHECK: sshll2.2d v1, v2, #0
    704   sxtl2.2d v1, v2
    705 ; CHECK: sshll2.2d v1, v2, #0
    706 
    707   uxtl v1.8h, v2.8b
    708 ; CHECK: ushll.8h v1, v2, #0
    709   uxtl.8h v1, v2
    710 ; CHECK: ushll.8h v1, v2, #0
    711 
    712   uxtl v1.4s, v2.4h
    713 ; CHECK: ushll.4s v1, v2, #0
    714   uxtl.4s v1, v2
    715 ; CHECK: ushll.4s v1, v2, #0
    716 
    717   uxtl v1.2d, v2.2s
    718 ; CHECK: ushll.2d v1, v2, #0
    719   uxtl.2d v1, v2
    720 ; CHECK: ushll.2d v1, v2, #0
    721 
    722   uxtl2 v1.8h, v2.16b
    723 ; CHECK: ushll2.8h v1, v2, #0
    724   uxtl2.8h v1, v2
    725 ; CHECK: ushll2.8h v1, v2, #0
    726 
    727   uxtl2 v1.4s, v2.8h
    728 ; CHECK: ushll2.4s v1, v2, #0
    729   uxtl2.4s v1, v2
    730 ; CHECK: ushll2.4s v1, v2, #0
    731 
    732   uxtl2 v1.2d, v2.4s
    733 ; CHECK: ushll2.2d v1, v2, #0
    734   uxtl2.2d v1, v2
    735 ; CHECK: ushll2.2d v1, v2, #0
    736 
    737 
    738 ;-----------------------------------------------------------------------------
    739 ; MOVI verbose syntax with shift operand omitted.
    740 ;-----------------------------------------------------------------------------
    741   movi v4.16b, #0x00
    742   movi v4.16B, #0x01
    743   movi v4.8b, #0x02
    744   movi v4.8B, #0x03
    745   movi v1.2d, #0x000000000000ff
    746   movi v2.2D, #0x000000000000ff
    747 
    748 ; CHECK: movi.16b	v4, #0              ; encoding: [0x04,0xe4,0x00,0x4f]
    749 ; CHECK: movi.16b	v4, #0x1              ; encoding: [0x24,0xe4,0x00,0x4f]
    750 ; CHECK: movi.8b	v4, #0x2               ; encoding: [0x44,0xe4,0x00,0x0f]
    751 ; CHECK: movi.8b	v4, #0x3               ; encoding: [0x64,0xe4,0x00,0x0f]
    752 ; CHECK: movi.2d	v1, #0x000000000000ff ; encoding: [0x21,0xe4,0x00,0x6f]
    753 ; CHECK: movi.2d	v2, #0x000000000000ff ; encoding: [0x22,0xe4,0x00,0x6f]
    754