Home | History | Annotate | Download | only in AArch64
      1 // RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding < %s | FileCheck %s
      2   .globl _func
      3 
      4 // Check that the assembler can handle the documented syntax from the ARM ARM.
      5 // For complex constructs like shifter operands, check more thoroughly for them
      6 // once then spot check that following instructions accept the form generally.
      7 // This gives us good coverage while keeping the overall size of the test
      8 // more reasonable.
      9 
     10 
     11 _func:
     12 // CHECK: _func
     13 
     14 //------------------------------------------------------------------------------
     15 // Add/sub (extended register)
     16 //------------------------------------------------------------------------------
     17         // Basic extends 64-bit ops
     18         add x2, x4, w5, uxtb
     19         add x20, sp, w19, uxth
     20         add x12, x1, w20, uxtw
     21         add x20, x3, x13, uxtx
     22         add x17, x25, w20, sxtb
     23         add x18, x13, w19, sxth
     24         add sp, x2, w3, sxtw
     25         add x3, x5, x9, sxtx
     26 // CHECK: add      x2, x4, w5, uxtb           // encoding: [0x82,0x00,0x25,0x8b]
     27 // CHECK: add      x20, sp, w19, uxth         // encoding: [0xf4,0x23,0x33,0x8b]
     28 // CHECK: add      x12, x1, w20, uxtw         // encoding: [0x2c,0x40,0x34,0x8b]
     29 // CHECK: add      x20, x3, x13, uxtx         // encoding: [0x74,0x60,0x2d,0x8b]
     30 // CHECK: add      x17, x25, w20, sxtb        // encoding: [0x31,0x83,0x34,0x8b]
     31 // CHECK: add      x18, x13, w19, sxth        // encoding: [0xb2,0xa1,0x33,0x8b]
     32 // CHECK: add      sp, x2, w3, sxtw           // encoding: [0x5f,0xc0,0x23,0x8b]
     33 // CHECK: add      x3, x5, x9, sxtx           // encoding: [0xa3,0xe0,0x29,0x8b]
     34 
     35         // Basic extends, 32-bit ops
     36         add w2, w5, w7, uxtb
     37         add w21, w15, w17, uxth
     38         add w30, w29, wzr, uxtw
     39         add w19, w17, w1, uxtx  // Goodness knows what this means
     40         add w2, w5, w1, sxtb
     41         add w26, w17, w19, sxth
     42         add w0, w2, w3, sxtw
     43         add w2, w3, w5, sxtx
     44 // CHECK: add      w2, w5, w7, uxtb           // encoding: [0xa2,0x00,0x27,0x0b]
     45 // CHECK: add      w21, w15, w17, uxth        // encoding: [0xf5,0x21,0x31,0x0b]
     46 // CHECK: add      w30, w29, wzr, uxtw        // encoding: [0xbe,0x43,0x3f,0x0b]
     47 // CHECK: add      w19, w17, w1, uxtx         // encoding: [0x33,0x62,0x21,0x0b]
     48 // CHECK: add      w2, w5, w1, sxtb           // encoding: [0xa2,0x80,0x21,0x0b]
     49 // CHECK: add      w26, w17, w19, sxth        // encoding: [0x3a,0xa2,0x33,0x0b]
     50 // CHECK: add      w0, w2, w3, sxtw           // encoding: [0x40,0xc0,0x23,0x0b]
     51 // CHECK: add      w2, w3, w5, sxtx           // encoding: [0x62,0xe0,0x25,0x0b]
     52 
     53         // Nonzero shift amounts
     54         add x2, x3, w5, sxtb #0
     55         add x7, x11, w13, uxth #4
     56         add w17, w19, w23, uxtw #2
     57         add w29, w23, w17, uxtx #1
     58 // CHECK: add      x2, x3, w5, sxtb           // encoding: [0x62,0x80,0x25,0x8b]
     59 // CHECK: add      x7, x11, w13, uxth #4      // encoding: [0x67,0x31,0x2d,0x8b]
     60 // CHECK: add      w17, w19, w23, uxtw #2     // encoding: [0x71,0x4a,0x37,0x0b]
     61 // CHECK: add      w29, w23, w17, uxtx #1     // encoding: [0xfd,0x66,0x31,0x0b]
     62 
     63         // Sub
     64         sub x2, x4, w5, uxtb #2
     65         sub x20, sp, w19, uxth #4
     66         sub x12, x1, w20, uxtw
     67         sub x20, x3, x13, uxtx #0
     68         sub x17, x25, w20, sxtb
     69         sub x18, x13, w19, sxth
     70         sub sp, x2, w3, sxtw
     71         sub x3, x5, x9, sxtx
     72 // CHECK: sub      x2, x4, w5, uxtb #2        // encoding: [0x82,0x08,0x25,0xcb]
     73 // CHECK: sub      x20, sp, w19, uxth #4      // encoding: [0xf4,0x33,0x33,0xcb]
     74 // CHECK: sub      x12, x1, w20, uxtw         // encoding: [0x2c,0x40,0x34,0xcb]
     75 // CHECK: sub      x20, x3, x13, uxtx         // encoding: [0x74,0x60,0x2d,0xcb]
     76 // CHECK: sub      x17, x25, w20, sxtb        // encoding: [0x31,0x83,0x34,0xcb]
     77 // CHECK: sub      x18, x13, w19, sxth        // encoding: [0xb2,0xa1,0x33,0xcb]
     78 // CHECK: sub      sp, x2, w3, sxtw           // encoding: [0x5f,0xc0,0x23,0xcb]
     79 // CHECK: sub      x3, x5, x9, sxtx           // encoding: [0xa3,0xe0,0x29,0xcb]
     80 
     81         sub w2, w5, w7, uxtb
     82         sub w21, w15, w17, uxth
     83         sub w30, w29, wzr, uxtw
     84         sub w19, w17, w1, uxtx  // Goodness knows what this means
     85         sub w2, w5, w1, sxtb
     86         sub w26, wsp, w19, sxth
     87         sub wsp, w2, w3, sxtw
     88         sub w2, w3, w5, sxtx
     89 // CHECK: sub      w2, w5, w7, uxtb           // encoding: [0xa2,0x00,0x27,0x4b]
     90 // CHECK: sub      w21, w15, w17, uxth        // encoding: [0xf5,0x21,0x31,0x4b]
     91 // CHECK: sub      w30, w29, wzr, uxtw        // encoding: [0xbe,0x43,0x3f,0x4b]
     92 // CHECK: sub      w19, w17, w1, uxtx         // encoding: [0x33,0x62,0x21,0x4b]
     93 // CHECK: sub      w2, w5, w1, sxtb           // encoding: [0xa2,0x80,0x21,0x4b]
     94 // CHECK: sub      w26, wsp, w19, sxth        // encoding: [0xfa,0xa3,0x33,0x4b]
     95 // CHECK: sub      wsp, w2, w3, sxtw          // encoding: [0x5f,0xc0,0x23,0x4b]
     96 // CHECK: sub      w2, w3, w5, sxtx           // encoding: [0x62,0xe0,0x25,0x4b]
     97 
     98         // Adds
     99         adds x2, x4, w5, uxtb #2
    100         adds x20, sp, w19, uxth #4
    101         adds x12, x1, w20, uxtw
    102         adds x20, x3, x13, uxtx #0
    103         adds xzr, x25, w20, sxtb #3
    104         adds x18, sp, w19, sxth
    105         adds xzr, x2, w3, sxtw
    106         adds x3, x5, x9, sxtx #2
    107 // CHECK: adds     x2, x4, w5, uxtb #2        // encoding: [0x82,0x08,0x25,0xab]
    108 // CHECK: adds     x20, sp, w19, uxth #4      // encoding: [0xf4,0x33,0x33,0xab]
    109 // CHECK: adds     x12, x1, w20, uxtw         // encoding: [0x2c,0x40,0x34,0xab]
    110 // CHECK: adds     x20, x3, x13, uxtx         // encoding: [0x74,0x60,0x2d,0xab]
    111 // CHECK: adds     xzr, x25, w20, sxtb #3     // encoding: [0x3f,0x8f,0x34,0xab]
    112 // CHECK: adds     x18, sp, w19, sxth         // encoding: [0xf2,0xa3,0x33,0xab]
    113 // CHECK: adds     xzr, x2, w3, sxtw          // encoding: [0x5f,0xc0,0x23,0xab]
    114 // CHECK: adds     x3, x5, x9, sxtx #2        // encoding: [0xa3,0xe8,0x29,0xab]
    115 
    116         adds w2, w5, w7, uxtb
    117         adds w21, w15, w17, uxth
    118         adds w30, w29, wzr, uxtw
    119         adds w19, w17, w1, uxtx  // Goodness knows what this means
    120         adds w2, w5, w1, sxtb #1
    121         adds w26, wsp, w19, sxth
    122         adds wzr, w2, w3, sxtw
    123         adds w2, w3, w5, sxtx
    124 // CHECK: adds     w2, w5, w7, uxtb           // encoding: [0xa2,0x00,0x27,0x2b]
    125 // CHECK: adds     w21, w15, w17, uxth        // encoding: [0xf5,0x21,0x31,0x2b]
    126 // CHECK: adds     w30, w29, wzr, uxtw        // encoding: [0xbe,0x43,0x3f,0x2b]
    127 // CHECK: adds     w19, w17, w1, uxtx         // encoding: [0x33,0x62,0x21,0x2b]
    128 // CHECK: adds     w2, w5, w1, sxtb #1        // encoding: [0xa2,0x84,0x21,0x2b]
    129 // CHECK: adds     w26, wsp, w19, sxth        // encoding: [0xfa,0xa3,0x33,0x2b]
    130 // CHECK: adds     wzr, w2, w3, sxtw          // encoding: [0x5f,0xc0,0x23,0x2b]
    131 // CHECK: adds     w2, w3, w5, sxtx           // encoding: [0x62,0xe0,0x25,0x2b]
    132 
    133         // subs
    134         subs x2, x4, w5, uxtb #2
    135         subs x20, sp, w19, uxth #4
    136         subs x12, x1, w20, uxtw
    137         subs x20, x3, x13, uxtx #0
    138         subs xzr, x25, w20, sxtb #3
    139         subs x18, sp, w19, sxth
    140         subs xzr, x2, w3, sxtw
    141         subs x3, x5, x9, sxtx #2
    142 // CHECK: subs     x2, x4, w5, uxtb #2        // encoding: [0x82,0x08,0x25,0xeb]
    143 // CHECK: subs     x20, sp, w19, uxth #4      // encoding: [0xf4,0x33,0x33,0xeb]
    144 // CHECK: subs     x12, x1, w20, uxtw         // encoding: [0x2c,0x40,0x34,0xeb]
    145 // CHECK: subs     x20, x3, x13, uxtx         // encoding: [0x74,0x60,0x2d,0xeb]
    146 // CHECK: subs     xzr, x25, w20, sxtb #3     // encoding: [0x3f,0x8f,0x34,0xeb]
    147 // CHECK: subs     x18, sp, w19, sxth         // encoding: [0xf2,0xa3,0x33,0xeb]
    148 // CHECK: subs     xzr, x2, w3, sxtw          // encoding: [0x5f,0xc0,0x23,0xeb]
    149 // CHECK: subs     x3, x5, x9, sxtx #2        // encoding: [0xa3,0xe8,0x29,0xeb]
    150 
    151         subs w2, w5, w7, uxtb
    152         subs w21, w15, w17, uxth
    153         subs w30, w29, wzr, uxtw
    154         subs w19, w17, w1, uxtx  // Goodness knows what this means
    155         subs w2, w5, w1, sxtb #1
    156         subs w26, wsp, w19, sxth
    157         subs wzr, w2, w3, sxtw
    158         subs w2, w3, w5, sxtx
    159 // CHECK: subs     w2, w5, w7, uxtb           // encoding: [0xa2,0x00,0x27,0x6b]
    160 // CHECK: subs     w21, w15, w17, uxth        // encoding: [0xf5,0x21,0x31,0x6b]
    161 // CHECK: subs     w30, w29, wzr, uxtw        // encoding: [0xbe,0x43,0x3f,0x6b]
    162 // CHECK: subs     w19, w17, w1, uxtx         // encoding: [0x33,0x62,0x21,0x6b]
    163 // CHECK: subs     w2, w5, w1, sxtb #1        // encoding: [0xa2,0x84,0x21,0x6b]
    164 // CHECK: subs     w26, wsp, w19, sxth        // encoding: [0xfa,0xa3,0x33,0x6b]
    165 // CHECK: subs     wzr, w2, w3, sxtw          // encoding: [0x5f,0xc0,0x23,0x6b]
    166 // CHECK: subs     w2, w3, w5, sxtx           // encoding: [0x62,0xe0,0x25,0x6b]
    167 
    168         // cmp
    169         cmp x4, w5, uxtb #2
    170         cmp sp, w19, uxth #4
    171         cmp x1, w20, uxtw
    172         cmp x3, x13, uxtx #0
    173         cmp x25, w20, sxtb #3
    174         cmp sp, w19, sxth
    175         cmp x2, w3, sxtw
    176         cmp x5, x9, sxtx #2
    177 // CHECK: cmp      x4, w5, uxtb #2            // encoding: [0x9f,0x08,0x25,0xeb]
    178 // CHECK: cmp      sp, w19, uxth #4           // encoding: [0xff,0x33,0x33,0xeb]
    179 // CHECK: cmp      x1, w20, uxtw              // encoding: [0x3f,0x40,0x34,0xeb]
    180 // CHECK: cmp      x3, x13, uxtx              // encoding: [0x7f,0x60,0x2d,0xeb]
    181 // CHECK: cmp      x25, w20, sxtb #3          // encoding: [0x3f,0x8f,0x34,0xeb]
    182 // CHECK: cmp      sp, w19, sxth              // encoding: [0xff,0xa3,0x33,0xeb]
    183 // CHECK: cmp      x2, w3, sxtw               // encoding: [0x5f,0xc0,0x23,0xeb]
    184 // CHECK: cmp      x5, x9, sxtx #2            // encoding: [0xbf,0xe8,0x29,0xeb]
    185 
    186         cmp w5, w7, uxtb
    187         cmp w15, w17, uxth
    188         cmp w29, wzr, uxtw
    189         cmp w17, w1, uxtx  // Goodness knows what this means
    190         cmp w5, w1, sxtb #1
    191         cmp wsp, w19, sxth
    192         cmp w2, w3, sxtw
    193         cmp w3, w5, sxtx
    194 // CHECK: cmp      w5, w7, uxtb               // encoding: [0xbf,0x00,0x27,0x6b]
    195 // CHECK: cmp      w15, w17, uxth             // encoding: [0xff,0x21,0x31,0x6b]
    196 // CHECK: cmp      w29, wzr, uxtw             // encoding: [0xbf,0x43,0x3f,0x6b]
    197 // CHECK: cmp      w17, w1, uxtx              // encoding: [0x3f,0x62,0x21,0x6b]
    198 // CHECK: cmp      w5, w1, sxtb #1            // encoding: [0xbf,0x84,0x21,0x6b]
    199 // CHECK: cmp      wsp, w19, sxth             // encoding: [0xff,0xa3,0x33,0x6b]
    200 // CHECK: cmp      w2, w3, sxtw               // encoding: [0x5f,0xc0,0x23,0x6b]
    201 // CHECK: cmp      w3, w5, sxtx               // encoding: [0x7f,0xe0,0x25,0x6b]
    202 
    203 
    204         // cmn
    205         cmn x4, w5, uxtb #2
    206         cmn sp, w19, uxth #4
    207         cmn x1, w20, uxtw
    208         cmn x3, x13, uxtx #0
    209         cmn x25, w20, sxtb #3
    210         cmn sp, w19, sxth
    211         cmn x2, w3, sxtw
    212         cmn x5, x9, sxtx #2
    213 // CHECK: cmn      x4, w5, uxtb #2            // encoding: [0x9f,0x08,0x25,0xab]
    214 // CHECK: cmn      sp, w19, uxth #4           // encoding: [0xff,0x33,0x33,0xab]
    215 // CHECK: cmn      x1, w20, uxtw              // encoding: [0x3f,0x40,0x34,0xab]
    216 // CHECK: cmn      x3, x13, uxtx              // encoding: [0x7f,0x60,0x2d,0xab]
    217 // CHECK: cmn      x25, w20, sxtb #3          // encoding: [0x3f,0x8f,0x34,0xab]
    218 // CHECK: cmn      sp, w19, sxth              // encoding: [0xff,0xa3,0x33,0xab]
    219 // CHECK: cmn      x2, w3, sxtw               // encoding: [0x5f,0xc0,0x23,0xab]
    220 // CHECK: cmn      x5, x9, sxtx #2            // encoding: [0xbf,0xe8,0x29,0xab]
    221 
    222         cmn w5, w7, uxtb
    223         cmn w15, w17, uxth
    224         cmn w29, wzr, uxtw
    225         cmn w17, w1, uxtx  // Goodness knows what this means
    226         cmn w5, w1, sxtb #1
    227         cmn wsp, w19, sxth
    228         cmn w2, w3, sxtw
    229         cmn w3, w5, sxtx
    230 // CHECK: cmn      w5, w7, uxtb               // encoding: [0xbf,0x00,0x27,0x2b]
    231 // CHECK: cmn      w15, w17, uxth             // encoding: [0xff,0x21,0x31,0x2b]
    232 // CHECK: cmn      w29, wzr, uxtw             // encoding: [0xbf,0x43,0x3f,0x2b]
    233 // CHECK: cmn      w17, w1, uxtx              // encoding: [0x3f,0x62,0x21,0x2b]
    234 // CHECK: cmn      w5, w1, sxtb #1            // encoding: [0xbf,0x84,0x21,0x2b]
    235 // CHECK: cmn      wsp, w19, sxth             // encoding: [0xff,0xa3,0x33,0x2b]
    236 // CHECK: cmn      w2, w3, sxtw               // encoding: [0x5f,0xc0,0x23,0x2b]
    237 // CHECK: cmn      w3, w5, sxtx               // encoding: [0x7f,0xe0,0x25,0x2b]
    238 
    239         // operands for cmp
    240         cmp x20, w29, uxtb #3
    241         cmp x12, x13, uxtx #4
    242         cmp wsp, w1, uxtb
    243         cmn wsp, wzr, sxtw
    244 // CHECK: cmp      x20, w29, uxtb #3          // encoding: [0x9f,0x0e,0x3d,0xeb]
    245 // CHECK: cmp      x12, x13, uxtx #4          // encoding: [0x9f,0x71,0x2d,0xeb]
    246 // CHECK: cmp      wsp, w1, uxtb              // encoding: [0xff,0x03,0x21,0x6b]
    247 // CHECK: cmn      wsp, wzr, sxtw             // encoding: [0xff,0xc3,0x3f,0x2b]
    248 
    249         // LSL variant if sp involved
    250         sub sp, x3, x7, lsl #4
    251         add w2, wsp, w3, lsl #1
    252         cmp wsp, w9, lsl #0
    253         adds wzr, wsp, w3, lsl #4
    254         subs x3, sp, x9, lsl #2
    255 // CHECK: sub      sp, x3, x7, lsl #4         // encoding: [0x7f,0x70,0x27,0xcb]
    256 // CHECK: add      w2, wsp, w3, lsl #1        // encoding: [0xe2,0x47,0x23,0x0b]
    257 // CHECK: cmp      wsp, w9                    // encoding: [0xff,0x43,0x29,0x6b]
    258 // CHECK: adds     wzr, wsp, w3, lsl #4       // encoding: [0xff,0x53,0x23,0x2b]
    259 // CHECK: subs     x3, sp, x9, lsl #2         // encoding: [0xe3,0x6b,0x29,0xeb]
    260 
    261 //------------------------------------------------------------------------------
    262 // Add/sub (immediate)
    263 //------------------------------------------------------------------------------
    264 
    265 // Check basic immediate values: an unsigned 12-bit immediate, optionally
    266 // shifted left by 12 bits.
    267         add w4, w5, #0x0
    268         add w2, w3, #4095
    269         add w30, w29, #1, lsl #12
    270         add w13, w5, #4095, lsl #12
    271         add x5, x7, #1638
    272 // CHECK: add      w4, w5, #0                 // encoding: [0xa4,0x00,0x00,0x11]
    273 // CHECK: add      w2, w3, #4095              // encoding: [0x62,0xfc,0x3f,0x11]
    274 // CHECK: add      w30, w29, #1, lsl #12      // encoding: [0xbe,0x07,0x40,0x11]
    275 // CHECK: add      w13, w5, #4095, lsl #12    // encoding: [0xad,0xfc,0x7f,0x11]
    276 // CHECK: add      x5, x7, #1638              // encoding: [0xe5,0x98,0x19,0x91]
    277 
    278 // All registers involved in the non-S variants have 31 encoding sp rather than zr
    279         add w20, wsp, #801, lsl #0
    280         add wsp, wsp, #1104
    281         add wsp, w30, #4084
    282 // CHECK: add      w20, wsp, #801             // encoding: [0xf4,0x87,0x0c,0x11]
    283 // CHECK: add      wsp, wsp, #1104            // encoding: [0xff,0x43,0x11,0x11]
    284 // CHECK: add      wsp, w30, #4084            // encoding: [0xdf,0xd3,0x3f,0x11]
    285 
    286 // A few checks on the sanity of 64-bit versions
    287         add x0, x24, #291
    288         add x3, x24, #4095, lsl #12
    289         add x8, sp, #1074
    290         add sp, x29, #3816
    291 // CHECK: add      x0, x24, #291              // encoding: [0x00,0x8f,0x04,0x91]
    292 // CHECK: add      x3, x24, #4095, lsl #12    // encoding: [0x03,0xff,0x7f,0x91]
    293 // CHECK: add      x8, sp, #1074              // encoding: [0xe8,0xcb,0x10,0x91]
    294 // CHECK: add      sp, x29, #3816             // encoding: [0xbf,0xa3,0x3b,0x91]
    295 
    296 // And on sub
    297         sub w0, wsp, #4077
    298         sub w4, w20, #546, lsl #12
    299         sub sp, sp, #288
    300         sub wsp, w19, #16
    301 // CHECK: sub      w0, wsp, #4077             // encoding: [0xe0,0xb7,0x3f,0x51]
    302 // CHECK: sub      w4, w20, #546, lsl #12     // encoding: [0x84,0x8a,0x48,0x51]
    303 // CHECK: sub      sp, sp, #288               // encoding: [0xff,0x83,0x04,0xd1]
    304 // CHECK: sub      wsp, w19, #16              // encoding: [0x7f,0x42,0x00,0x51]
    305 
    306 // ADDS/SUBS accept zr in the Rd position but sp in the Rn position
    307         adds w13, w23, #291, lsl #12
    308         adds wzr, w2, #4095                  // FIXME: canonically should be cmn
    309         adds w20, wsp, #0x0
    310         adds xzr, x3, #0x1, lsl #12          // FIXME: canonically should be cmn
    311 // CHECK: adds     w13, w23, #291, lsl #12    // encoding: [0xed,0x8e,0x44,0x31]
    312 // CHECK: adds     wzr, w2, #4095             // encoding: [0x5f,0xfc,0x3f,0x31]
    313 // CHECK: adds     w20, wsp, #0               // encoding: [0xf4,0x03,0x00,0x31]
    314 // CHECK: adds     xzr, x3, #1, lsl #12       // encoding: [0x7f,0x04,0x40,0xb1]
    315 
    316 // Checks for subs
    317         subs xzr, sp, #20, lsl #12           // FIXME: canonically should be cmp
    318         subs xzr, x30, #4095, lsl #0         // FIXME: canonically should be cmp
    319         subs x4, sp, #3822
    320 // CHECK: subs     xzr, sp, #20, lsl #12      // encoding: [0xff,0x53,0x40,0xf1]
    321 // CHECK: subs     xzr, x30, #4095            // encoding: [0xdf,0xff,0x3f,0xf1]
    322 // CHECK: subs     x4, sp, #3822              // encoding: [0xe4,0xbb,0x3b,0xf1]
    323 
    324 // cmn is an alias for adds zr, ...
    325         cmn w3, #291, lsl #12
    326         cmn wsp, #1365, lsl #0
    327         cmn sp, #1092, lsl #12
    328 // CHECK: cmn      w3, #291, lsl #12          // encoding: [0x7f,0x8c,0x44,0x31]
    329 // CHECK: cmn      wsp, #1365                 // encoding: [0xff,0x57,0x15,0x31]
    330 // CHECK: cmn      sp, #1092, lsl #12         // encoding: [0xff,0x13,0x51,0xb1]
    331 
    332 // cmp is an alias for subs zr, ... (FIXME: should always disassemble as such too).
    333         cmp x4, #300, lsl #12
    334         cmp wsp, #500
    335         cmp sp, #200, lsl #0
    336 // CHECK: cmp      x4, #300, lsl #12          // encoding: [0x9f,0xb0,0x44,0xf1]
    337 // CHECK: cmp      wsp, #500                  // encoding: [0xff,0xd3,0x07,0x71]
    338 // CHECK: cmp      sp, #200                   // encoding: [0xff,0x23,0x03,0xf1]
    339 
    340 // A "MOV" involving sp is encoded in this manner: add Reg, Reg, #0
    341         mov sp, x30
    342         mov wsp, w20
    343         mov x11, sp
    344         mov w24, wsp
    345 // CHECK: mov      sp, x30                    // encoding: [0xdf,0x03,0x00,0x91]
    346 // CHECK: mov      wsp, w20                   // encoding: [0x9f,0x02,0x00,0x11]
    347 // CHECK: mov      x11, sp                    // encoding: [0xeb,0x03,0x00,0x91]
    348 // CHECK: mov      w24, wsp                   // encoding: [0xf8,0x03,0x00,0x11]
    349 
    350 // A relocation check (default to lo12, which is the only sane relocation anyway really)
    351         add x0, x4, #:lo12:var
    352 // CHECK: add     x0, x4, #:lo12:var         // encoding: [0x80'A',A,A,0x91'A']
    353 // CHECK:                                    //   fixup A - offset: 0, value: :lo12:var, kind: fixup_a64_add_lo12
    354 
    355 //------------------------------------------------------------------------------
    356 // Add-sub (shifted register)
    357 //------------------------------------------------------------------------------
    358 
    359 // As usual, we don't print the canonical forms of many instructions.
    360 
    361         add w3, w5, w7
    362         add wzr, w3, w5
    363         add w20, wzr, w4
    364         add w4, w6, wzr
    365 // CHECK: add      w3, w5, w7                 // encoding: [0xa3,0x00,0x07,0x0b]
    366 // CHECK: add      wzr, w3, w5                // encoding: [0x7f,0x00,0x05,0x0b]
    367 // CHECK: add      w20, wzr, w4               // encoding: [0xf4,0x03,0x04,0x0b]
    368 // CHECK: add      w4, w6, wzr                // encoding: [0xc4,0x00,0x1f,0x0b]
    369 
    370         add w11, w13, w15, lsl #0
    371         add w9, w3, wzr, lsl #10
    372         add w17, w29, w20, lsl #31
    373 // CHECK: add      w11, w13, w15              // encoding: [0xab,0x01,0x0f,0x0b]
    374 // CHECK: add      w9, w3, wzr, lsl #10       // encoding: [0x69,0x28,0x1f,0x0b]
    375 // CHECK: add      w17, w29, w20, lsl #31     // encoding: [0xb1,0x7f,0x14,0x0b]
    376 
    377         add w21, w22, w23, lsr #0
    378         add w24, w25, w26, lsr #18
    379         add w27, w28, w29, lsr #31
    380 // CHECK: add      w21, w22, w23, lsr #0      // encoding: [0xd5,0x02,0x57,0x0b]
    381 // CHECK: add      w24, w25, w26, lsr #18     // encoding: [0x38,0x4b,0x5a,0x0b]
    382 // CHECK: add      w27, w28, w29, lsr #31     // encoding: [0x9b,0x7f,0x5d,0x0b]
    383 
    384         add w2, w3, w4, asr #0
    385         add w5, w6, w7, asr #21
    386         add w8, w9, w10, asr #31
    387 // CHECK: add      w2, w3, w4, asr #0         // encoding: [0x62,0x00,0x84,0x0b]
    388 // CHECK: add      w5, w6, w7, asr #21        // encoding: [0xc5,0x54,0x87,0x0b]
    389 // CHECK: add      w8, w9, w10, asr #31       // encoding: [0x28,0x7d,0x8a,0x0b]
    390 
    391         add x3, x5, x7
    392         add xzr, x3, x5
    393         add x20, xzr, x4
    394         add x4, x6, xzr
    395 // CHECK: add      x3, x5, x7                 // encoding: [0xa3,0x00,0x07,0x8b]
    396 // CHECK: add      xzr, x3, x5                // encoding: [0x7f,0x00,0x05,0x8b]
    397 // CHECK: add      x20, xzr, x4               // encoding: [0xf4,0x03,0x04,0x8b]
    398 // CHECK: add      x4, x6, xzr                // encoding: [0xc4,0x00,0x1f,0x8b]
    399 
    400         add x11, x13, x15, lsl #0
    401         add x9, x3, xzr, lsl #10
    402         add x17, x29, x20, lsl #63
    403 // CHECK: add      x11, x13, x15              // encoding: [0xab,0x01,0x0f,0x8b]
    404 // CHECK: add      x9, x3, xzr, lsl #10       // encoding: [0x69,0x28,0x1f,0x8b]
    405 // CHECK: add      x17, x29, x20, lsl #63     // encoding: [0xb1,0xff,0x14,0x8b]
    406 
    407         add x21, x22, x23, lsr #0
    408         add x24, x25, x26, lsr #18
    409         add x27, x28, x29, lsr #63
    410 // CHECK: add      x21, x22, x23, lsr #0      // encoding: [0xd5,0x02,0x57,0x8b]
    411 // CHECK: add      x24, x25, x26, lsr #18     // encoding: [0x38,0x4b,0x5a,0x8b]
    412 // CHECK: add      x27, x28, x29, lsr #63     // encoding: [0x9b,0xff,0x5d,0x8b]
    413 
    414         add x2, x3, x4, asr #0
    415         add x5, x6, x7, asr #21
    416         add x8, x9, x10, asr #63
    417 // CHECK: add      x2, x3, x4, asr #0         // encoding: [0x62,0x00,0x84,0x8b]
    418 // CHECK: add      x5, x6, x7, asr #21        // encoding: [0xc5,0x54,0x87,0x8b]
    419 // CHECK: add      x8, x9, x10, asr #63       // encoding: [0x28,0xfd,0x8a,0x8b]
    420 
    421         adds w3, w5, w7
    422         adds wzr, w3, w5
    423         adds w20, wzr, w4
    424         adds w4, w6, wzr
    425 // CHECK: adds     w3, w5, w7                 // encoding: [0xa3,0x00,0x07,0x2b]
    426 // CHECK: adds     wzr, w3, w5                // encoding: [0x7f,0x00,0x05,0x2b]
    427 // CHECK: adds     w20, wzr, w4               // encoding: [0xf4,0x03,0x04,0x2b]
    428 // CHECK: adds     w4, w6, wzr                // encoding: [0xc4,0x00,0x1f,0x2b]
    429 
    430         adds w11, w13, w15, lsl #0
    431         adds w9, w3, wzr, lsl #10
    432         adds w17, w29, w20, lsl #31
    433 // CHECK: adds     w11, w13, w15              // encoding: [0xab,0x01,0x0f,0x2b]
    434 // CHECK: adds     w9, w3, wzr, lsl #10       // encoding: [0x69,0x28,0x1f,0x2b]
    435 // CHECK: adds     w17, w29, w20, lsl #31     // encoding: [0xb1,0x7f,0x14,0x2b]
    436 
    437         adds w21, w22, w23, lsr #0
    438         adds w24, w25, w26, lsr #18
    439         adds w27, w28, w29, lsr #31
    440 // CHECK: adds     w21, w22, w23, lsr #0      // encoding: [0xd5,0x02,0x57,0x2b]
    441 // CHECK: adds     w24, w25, w26, lsr #18     // encoding: [0x38,0x4b,0x5a,0x2b]
    442 // CHECK: adds     w27, w28, w29, lsr #31     // encoding: [0x9b,0x7f,0x5d,0x2b]
    443 
    444         adds w2, w3, w4, asr #0
    445         adds w5, w6, w7, asr #21
    446         adds w8, w9, w10, asr #31
    447 // CHECK: adds     w2, w3, w4, asr #0         // encoding: [0x62,0x00,0x84,0x2b]
    448 // CHECK: adds     w5, w6, w7, asr #21        // encoding: [0xc5,0x54,0x87,0x2b]
    449 // CHECK: adds     w8, w9, w10, asr #31       // encoding: [0x28,0x7d,0x8a,0x2b]
    450 
    451         adds x3, x5, x7
    452         adds xzr, x3, x5
    453         adds x20, xzr, x4
    454         adds x4, x6, xzr
    455 // CHECK: adds     x3, x5, x7                 // encoding: [0xa3,0x00,0x07,0xab]
    456 // CHECK: adds     xzr, x3, x5                // encoding: [0x7f,0x00,0x05,0xab]
    457 // CHECK: adds     x20, xzr, x4               // encoding: [0xf4,0x03,0x04,0xab]
    458 // CHECK: adds     x4, x6, xzr                // encoding: [0xc4,0x00,0x1f,0xab]
    459 
    460         adds x11, x13, x15, lsl #0
    461         adds x9, x3, xzr, lsl #10
    462         adds x17, x29, x20, lsl #63
    463 // CHECK: adds     x11, x13, x15              // encoding: [0xab,0x01,0x0f,0xab]
    464 // CHECK: adds     x9, x3, xzr, lsl #10       // encoding: [0x69,0x28,0x1f,0xab]
    465 // CHECK: adds     x17, x29, x20, lsl #63     // encoding: [0xb1,0xff,0x14,0xab]
    466 
    467         adds x21, x22, x23, lsr #0
    468         adds x24, x25, x26, lsr #18
    469         adds x27, x28, x29, lsr #63
    470 // CHECK: adds     x21, x22, x23, lsr #0      // encoding: [0xd5,0x02,0x57,0xab]
    471 // CHECK: adds     x24, x25, x26, lsr #18     // encoding: [0x38,0x4b,0x5a,0xab]
    472 // CHECK: adds     x27, x28, x29, lsr #63     // encoding: [0x9b,0xff,0x5d,0xab]
    473 
    474         adds x2, x3, x4, asr #0
    475         adds x5, x6, x7, asr #21
    476         adds x8, x9, x10, asr #63
    477 // CHECK: adds     x2, x3, x4, asr #0         // encoding: [0x62,0x00,0x84,0xab]
    478 // CHECK: adds     x5, x6, x7, asr #21        // encoding: [0xc5,0x54,0x87,0xab]
    479 // CHECK: adds     x8, x9, x10, asr #63       // encoding: [0x28,0xfd,0x8a,0xab]
    480 
    481         sub w3, w5, w7
    482         sub wzr, w3, w5
    483         sub w20, wzr, w4
    484         sub w4, w6, wzr
    485 // CHECK: sub      w3, w5, w7                 // encoding: [0xa3,0x00,0x07,0x4b]
    486 // CHECK: sub      wzr, w3, w5                // encoding: [0x7f,0x00,0x05,0x4b]
    487 // CHECK: sub      w20, wzr, w4               // encoding: [0xf4,0x03,0x04,0x4b]
    488 // CHECK: sub      w4, w6, wzr                // encoding: [0xc4,0x00,0x1f,0x4b]
    489 
    490         sub w11, w13, w15, lsl #0
    491         sub w9, w3, wzr, lsl #10
    492         sub w17, w29, w20, lsl #31
    493 // CHECK: sub      w11, w13, w15              // encoding: [0xab,0x01,0x0f,0x4b]
    494 // CHECK: sub      w9, w3, wzr, lsl #10       // encoding: [0x69,0x28,0x1f,0x4b]
    495 // CHECK: sub      w17, w29, w20, lsl #31     // encoding: [0xb1,0x7f,0x14,0x4b]
    496 
    497         sub w21, w22, w23, lsr #0
    498         sub w24, w25, w26, lsr #18
    499         sub w27, w28, w29, lsr #31
    500 // CHECK: sub      w21, w22, w23, lsr #0      // encoding: [0xd5,0x02,0x57,0x4b]
    501 // CHECK: sub      w24, w25, w26, lsr #18     // encoding: [0x38,0x4b,0x5a,0x4b]
    502 // CHECK: sub      w27, w28, w29, lsr #31     // encoding: [0x9b,0x7f,0x5d,0x4b]
    503 
    504         sub w2, w3, w4, asr #0
    505         sub w5, w6, w7, asr #21
    506         sub w8, w9, w10, asr #31
    507 // CHECK: sub      w2, w3, w4, asr #0         // encoding: [0x62,0x00,0x84,0x4b]
    508 // CHECK: sub      w5, w6, w7, asr #21        // encoding: [0xc5,0x54,0x87,0x4b]
    509 // CHECK: sub      w8, w9, w10, asr #31       // encoding: [0x28,0x7d,0x8a,0x4b]
    510 
    511         sub x3, x5, x7
    512         sub xzr, x3, x5
    513         sub x20, xzr, x4
    514         sub x4, x6, xzr
    515 // CHECK: sub      x3, x5, x7                 // encoding: [0xa3,0x00,0x07,0xcb]
    516 // CHECK: sub      xzr, x3, x5                // encoding: [0x7f,0x00,0x05,0xcb]
    517 // CHECK: sub      x20, xzr, x4               // encoding: [0xf4,0x03,0x04,0xcb]
    518 // CHECK: sub      x4, x6, xzr                // encoding: [0xc4,0x00,0x1f,0xcb]
    519 
    520         sub x11, x13, x15, lsl #0
    521         sub x9, x3, xzr, lsl #10
    522         sub x17, x29, x20, lsl #63
    523 // CHECK: sub      x11, x13, x15              // encoding: [0xab,0x01,0x0f,0xcb]
    524 // CHECK: sub      x9, x3, xzr, lsl #10       // encoding: [0x69,0x28,0x1f,0xcb]
    525 // CHECK: sub      x17, x29, x20, lsl #63     // encoding: [0xb1,0xff,0x14,0xcb]
    526 
    527         sub x21, x22, x23, lsr #0
    528         sub x24, x25, x26, lsr #18
    529         sub x27, x28, x29, lsr #63
    530 // CHECK: sub      x21, x22, x23, lsr #0      // encoding: [0xd5,0x02,0x57,0xcb]
    531 // CHECK: sub      x24, x25, x26, lsr #18     // encoding: [0x38,0x4b,0x5a,0xcb]
    532 // CHECK: sub      x27, x28, x29, lsr #63     // encoding: [0x9b,0xff,0x5d,0xcb]
    533 
    534         sub x2, x3, x4, asr #0
    535         sub x5, x6, x7, asr #21
    536         sub x8, x9, x10, asr #63
    537 // CHECK: sub      x2, x3, x4, asr #0         // encoding: [0x62,0x00,0x84,0xcb]
    538 // CHECK: sub      x5, x6, x7, asr #21        // encoding: [0xc5,0x54,0x87,0xcb]
    539 // CHECK: sub      x8, x9, x10, asr #63       // encoding: [0x28,0xfd,0x8a,0xcb]
    540 
    541         subs w3, w5, w7
    542         subs wzr, w3, w5
    543         subs w20, wzr, w4
    544         subs w4, w6, wzr
    545 // CHECK: subs     w3, w5, w7                 // encoding: [0xa3,0x00,0x07,0x6b]
    546 // CHECK: subs     wzr, w3, w5                // encoding: [0x7f,0x00,0x05,0x6b]
    547 // CHECK: subs     w20, wzr, w4               // encoding: [0xf4,0x03,0x04,0x6b]
    548 // CHECK: subs     w4, w6, wzr                // encoding: [0xc4,0x00,0x1f,0x6b]
    549 
    550         subs w11, w13, w15, lsl #0
    551         subs w9, w3, wzr, lsl #10
    552         subs w17, w29, w20, lsl #31
    553 // CHECK: subs     w11, w13, w15              // encoding: [0xab,0x01,0x0f,0x6b]
    554 // CHECK: subs     w9, w3, wzr, lsl #10       // encoding: [0x69,0x28,0x1f,0x6b]
    555 // CHECK: subs     w17, w29, w20, lsl #31     // encoding: [0xb1,0x7f,0x14,0x6b]
    556 
    557         subs w21, w22, w23, lsr #0
    558         subs w24, w25, w26, lsr #18
    559         subs w27, w28, w29, lsr #31
    560 // CHECK: subs     w21, w22, w23, lsr #0      // encoding: [0xd5,0x02,0x57,0x6b]
    561 // CHECK: subs     w24, w25, w26, lsr #18     // encoding: [0x38,0x4b,0x5a,0x6b]
    562 // CHECK: subs     w27, w28, w29, lsr #31     // encoding: [0x9b,0x7f,0x5d,0x6b]
    563 
    564         subs w2, w3, w4, asr #0
    565         subs w5, w6, w7, asr #21
    566         subs w8, w9, w10, asr #31
    567 // CHECK: subs     w2, w3, w4, asr #0         // encoding: [0x62,0x00,0x84,0x6b]
    568 // CHECK: subs     w5, w6, w7, asr #21        // encoding: [0xc5,0x54,0x87,0x6b]
    569 // CHECK: subs     w8, w9, w10, asr #31       // encoding: [0x28,0x7d,0x8a,0x6b]
    570 
    571         subs x3, x5, x7
    572         subs xzr, x3, x5
    573         subs x20, xzr, x4
    574         subs x4, x6, xzr
    575 // CHECK: subs     x3, x5, x7                 // encoding: [0xa3,0x00,0x07,0xeb]
    576 // CHECK: subs     xzr, x3, x5                // encoding: [0x7f,0x00,0x05,0xeb]
    577 // CHECK: subs     x20, xzr, x4               // encoding: [0xf4,0x03,0x04,0xeb]
    578 // CHECK: subs     x4, x6, xzr                // encoding: [0xc4,0x00,0x1f,0xeb]
    579 
    580         subs x11, x13, x15, lsl #0
    581         subs x9, x3, xzr, lsl #10
    582         subs x17, x29, x20, lsl #63
    583 // CHECK: subs     x11, x13, x15              // encoding: [0xab,0x01,0x0f,0xeb]
    584 // CHECK: subs     x9, x3, xzr, lsl #10       // encoding: [0x69,0x28,0x1f,0xeb]
    585 // CHECK: subs     x17, x29, x20, lsl #63     // encoding: [0xb1,0xff,0x14,0xeb]
    586 
    587         subs x21, x22, x23, lsr #0
    588         subs x24, x25, x26, lsr #18
    589         subs x27, x28, x29, lsr #63
    590 // CHECK: subs     x21, x22, x23, lsr #0      // encoding: [0xd5,0x02,0x57,0xeb]
    591 // CHECK: subs     x24, x25, x26, lsr #18     // encoding: [0x38,0x4b,0x5a,0xeb]
    592 // CHECK: subs     x27, x28, x29, lsr #63     // encoding: [0x9b,0xff,0x5d,0xeb]
    593 
    594         subs x2, x3, x4, asr #0
    595         subs x5, x6, x7, asr #21
    596         subs x8, x9, x10, asr #63
    597 // CHECK: subs     x2, x3, x4, asr #0         // encoding: [0x62,0x00,0x84,0xeb]
    598 // CHECK: subs     x5, x6, x7, asr #21        // encoding: [0xc5,0x54,0x87,0xeb]
    599 // CHECK: subs     x8, x9, x10, asr #63       // encoding: [0x28,0xfd,0x8a,0xeb]
    600 
    601         cmn w0, w3
    602         cmn wzr, w4
    603         cmn w5, wzr
    604 // CHECK: cmn      w0, w3                     // encoding: [0x1f,0x00,0x03,0x2b]
    605 // CHECK: cmn      wzr, w4                    // encoding: [0xff,0x03,0x04,0x2b]
    606 // CHECK: cmn      w5, wzr                    // encoding: [0xbf,0x00,0x1f,0x2b]
    607 
    608         cmn w6, w7, lsl #0
    609         cmn w8, w9, lsl #15
    610         cmn w10, w11, lsl #31
    611 // CHECK: cmn      w6, w7                     // encoding: [0xdf,0x00,0x07,0x2b]
    612 // CHECK: cmn      w8, w9, lsl #15            // encoding: [0x1f,0x3d,0x09,0x2b]
    613 // CHECK: cmn      w10, w11, lsl #31          // encoding: [0x5f,0x7d,0x0b,0x2b]
    614 
    615         cmn w12, w13, lsr #0
    616         cmn w14, w15, lsr #21
    617         cmn w16, w17, lsr #31
    618 // CHECK: cmn      w12, w13, lsr #0           // encoding: [0x9f,0x01,0x4d,0x2b]
    619 // CHECK: cmn      w14, w15, lsr #21          // encoding: [0xdf,0x55,0x4f,0x2b]
    620 // CHECK: cmn      w16, w17, lsr #31          // encoding: [0x1f,0x7e,0x51,0x2b]
    621 
    622         cmn w18, w19, asr #0
    623         cmn w20, w21, asr #22
    624         cmn w22, w23, asr #31
    625 // CHECK: cmn      w18, w19, asr #0           // encoding: [0x5f,0x02,0x93,0x2b]
    626 // CHECK: cmn      w20, w21, asr #22          // encoding: [0x9f,0x5a,0x95,0x2b]
    627 // CHECK: cmn      w22, w23, asr #31          // encoding: [0xdf,0x7e,0x97,0x2b]
    628 
    629         cmn x0, x3
    630         cmn xzr, x4
    631         cmn x5, xzr
    632 // CHECK: cmn      x0, x3                     // encoding: [0x1f,0x00,0x03,0xab]
    633 // CHECK: cmn      xzr, x4                    // encoding: [0xff,0x03,0x04,0xab]
    634 // CHECK: cmn      x5, xzr                    // encoding: [0xbf,0x00,0x1f,0xab]
    635 
    636         cmn x6, x7, lsl #0
    637         cmn x8, x9, lsl #15
    638         cmn x10, x11, lsl #63
    639 // CHECK: cmn      x6, x7                     // encoding: [0xdf,0x00,0x07,0xab]
    640 // CHECK: cmn      x8, x9, lsl #15            // encoding: [0x1f,0x3d,0x09,0xab]
    641 // CHECK: cmn      x10, x11, lsl #63          // encoding: [0x5f,0xfd,0x0b,0xab]
    642 
    643         cmn x12, x13, lsr #0
    644         cmn x14, x15, lsr #41
    645         cmn x16, x17, lsr #63
    646 // CHECK: cmn      x12, x13, lsr #0           // encoding: [0x9f,0x01,0x4d,0xab]
    647 // CHECK: cmn      x14, x15, lsr #41          // encoding: [0xdf,0xa5,0x4f,0xab]
    648 // CHECK: cmn      x16, x17, lsr #63          // encoding: [0x1f,0xfe,0x51,0xab]
    649 
    650         cmn x18, x19, asr #0
    651         cmn x20, x21, asr #55
    652         cmn x22, x23, asr #63
    653 // CHECK: cmn      x18, x19, asr #0           // encoding: [0x5f,0x02,0x93,0xab]
    654 // CHECK: cmn      x20, x21, asr #55          // encoding: [0x9f,0xde,0x95,0xab]
    655 // CHECK: cmn      x22, x23, asr #63          // encoding: [0xdf,0xfe,0x97,0xab]
    656 
    657         cmp w0, w3
    658         cmp wzr, w4
    659         cmp w5, wzr
    660 // CHECK: cmp      w0, w3                     // encoding: [0x1f,0x00,0x03,0x6b]
    661 // CHECK: cmp      wzr, w4                    // encoding: [0xff,0x03,0x04,0x6b]
    662 // CHECK: cmp      w5, wzr                    // encoding: [0xbf,0x00,0x1f,0x6b]
    663 
    664         cmp w6, w7, lsl #0
    665         cmp w8, w9, lsl #15
    666         cmp w10, w11, lsl #31
    667 // CHECK: cmp      w6, w7                     // encoding: [0xdf,0x00,0x07,0x6b]
    668 // CHECK: cmp      w8, w9, lsl #15            // encoding: [0x1f,0x3d,0x09,0x6b]
    669 // CHECK: cmp      w10, w11, lsl #31          // encoding: [0x5f,0x7d,0x0b,0x6b]
    670 
    671         cmp w12, w13, lsr #0
    672         cmp w14, w15, lsr #21
    673         cmp w16, w17, lsr #31
    674 // CHECK: cmp      w12, w13, lsr #0           // encoding: [0x9f,0x01,0x4d,0x6b]
    675 // CHECK: cmp      w14, w15, lsr #21          // encoding: [0xdf,0x55,0x4f,0x6b]
    676 // CHECK: cmp      w16, w17, lsr #31          // encoding: [0x1f,0x7e,0x51,0x6b]
    677 
    678         cmp w18, w19, asr #0
    679         cmp w20, w21, asr #22
    680         cmp w22, w23, asr #31
    681 // CHECK: cmp      w18, w19, asr #0           // encoding: [0x5f,0x02,0x93,0x6b]
    682 // CHECK: cmp      w20, w21, asr #22          // encoding: [0x9f,0x5a,0x95,0x6b]
    683 // CHECK: cmp      w22, w23, asr #31          // encoding: [0xdf,0x7e,0x97,0x6b]
    684 
    685         cmp x0, x3
    686         cmp xzr, x4
    687         cmp x5, xzr
    688 // CHECK: cmp      x0, x3                     // encoding: [0x1f,0x00,0x03,0xeb]
    689 // CHECK: cmp      xzr, x4                    // encoding: [0xff,0x03,0x04,0xeb]
    690 // CHECK: cmp      x5, xzr                    // encoding: [0xbf,0x00,0x1f,0xeb]
    691 
    692         cmp x6, x7, lsl #0
    693         cmp x8, x9, lsl #15
    694         cmp x10, x11, lsl #63
    695 // CHECK: cmp      x6, x7                     // encoding: [0xdf,0x00,0x07,0xeb]
    696 // CHECK: cmp      x8, x9, lsl #15            // encoding: [0x1f,0x3d,0x09,0xeb]
    697 // CHECK: cmp      x10, x11, lsl #63          // encoding: [0x5f,0xfd,0x0b,0xeb]
    698 
    699         cmp x12, x13, lsr #0
    700         cmp x14, x15, lsr #41
    701         cmp x16, x17, lsr #63
    702 // CHECK: cmp      x12, x13, lsr #0           // encoding: [0x9f,0x01,0x4d,0xeb]
    703 // CHECK: cmp      x14, x15, lsr #41          // encoding: [0xdf,0xa5,0x4f,0xeb]
    704 // CHECK: cmp      x16, x17, lsr #63          // encoding: [0x1f,0xfe,0x51,0xeb]
    705 
    706         cmp x18, x19, asr #0
    707         cmp x20, x21, asr #55
    708         cmp x22, x23, asr #63
    709 // CHECK: cmp      x18, x19, asr #0           // encoding: [0x5f,0x02,0x93,0xeb]
    710 // CHECK: cmp      x20, x21, asr #55          // encoding: [0x9f,0xde,0x95,0xeb]
    711 // CHECK: cmp      x22, x23, asr #63          // encoding: [0xdf,0xfe,0x97,0xeb]
    712 
    713         neg w29, w30
    714         neg w30, wzr
    715         neg wzr, w0
    716 // CHECK: sub      w29, wzr, w30              // encoding: [0xfd,0x03,0x1e,0x4b]
    717 // CHECK: sub      w30, wzr, wzr              // encoding: [0xfe,0x03,0x1f,0x4b]
    718 // CHECK: sub      wzr, wzr, w0                    // encoding: [0xff,0x03,0x00,0x4b]
    719 
    720         neg w28, w27, lsl #0
    721         neg w26, w25, lsl #29
    722         neg w24, w23, lsl #31
    723 // CHECK: sub      w28, wzr, w27              // encoding: [0xfc,0x03,0x1b,0x4b]
    724 // CHECK: sub      w26, wzr, w25, lsl #29     // encoding: [0xfa,0x77,0x19,0x4b]
    725 // CHECK: sub      w24, wzr, w23, lsl #31     // encoding: [0xf8,0x7f,0x17,0x4b]
    726 
    727         neg w22, w21, lsr #0
    728         neg w20, w19, lsr #1
    729         neg w18, w17, lsr #31
    730 // CHECK: sub      w22, wzr, w21, lsr #0      // encoding: [0xf6,0x03,0x55,0x4b]
    731 // CHECK: sub      w20, wzr, w19, lsr #1      // encoding: [0xf4,0x07,0x53,0x4b]
    732 // CHECK: sub      w18, wzr, w17, lsr #31     // encoding: [0xf2,0x7f,0x51,0x4b]
    733 
    734         neg w16, w15, asr #0
    735         neg w14, w13, asr #12
    736         neg w12, w11, asr #31
    737 // CHECK: sub      w16, wzr, w15, asr #0      // encoding: [0xf0,0x03,0x8f,0x4b]
    738 // CHECK: sub      w14, wzr, w13, asr #12     // encoding: [0xee,0x33,0x8d,0x4b]
    739 // CHECK: sub      w12, wzr, w11, asr #31     // encoding: [0xec,0x7f,0x8b,0x4b]
    740 
    741         neg x29, x30
    742         neg x30, xzr
    743         neg xzr, x0
    744 // CHECK: sub      x29, xzr, x30              // encoding: [0xfd,0x03,0x1e,0xcb]
    745 // CHECK: sub      x30, xzr, xzr              // encoding: [0xfe,0x03,0x1f,0xcb]
    746 // CHECK: sub      xzr, xzr, x0               // encoding: [0xff,0x03,0x00,0xcb]
    747 
    748         neg x28, x27, lsl #0
    749         neg x26, x25, lsl #29
    750         neg x24, x23, lsl #31
    751 // CHECK: sub      x28, xzr, x27              // encoding: [0xfc,0x03,0x1b,0xcb]
    752 // CHECK: sub      x26, xzr, x25, lsl #29     // encoding: [0xfa,0x77,0x19,0xcb]
    753 // CHECK: sub      x24, xzr, x23, lsl #31     // encoding: [0xf8,0x7f,0x17,0xcb]
    754 
    755         neg x22, x21, lsr #0
    756         neg x20, x19, lsr #1
    757         neg x18, x17, lsr #31
    758 // CHECK: sub      x22, xzr, x21, lsr #0      // encoding: [0xf6,0x03,0x55,0xcb]
    759 // CHECK: sub      x20, xzr, x19, lsr #1      // encoding: [0xf4,0x07,0x53,0xcb]
    760 // CHECK: sub      x18, xzr, x17, lsr #31     // encoding: [0xf2,0x7f,0x51,0xcb]
    761 
    762         neg x16, x15, asr #0
    763         neg x14, x13, asr #12
    764         neg x12, x11, asr #31
    765 // CHECK: sub      x16, xzr, x15, asr #0      // encoding: [0xf0,0x03,0x8f,0xcb]
    766 // CHECK: sub      x14, xzr, x13, asr #12     // encoding: [0xee,0x33,0x8d,0xcb]
    767 // CHECK: sub      x12, xzr, x11, asr #31     // encoding: [0xec,0x7f,0x8b,0xcb]
    768 
    769         negs w29, w30
    770         negs w30, wzr
    771         negs wzr, w0
    772 // CHECK: subs     w29, wzr, w30              // encoding: [0xfd,0x03,0x1e,0x6b]
    773 // CHECK: subs     w30, wzr, wzr              // encoding: [0xfe,0x03,0x1f,0x6b]
    774 // CHECK: subs     wzr, wzr, w0               // encoding: [0xff,0x03,0x00,0x6b]
    775 
    776         negs w28, w27, lsl #0
    777         negs w26, w25, lsl #29
    778         negs w24, w23, lsl #31
    779 // CHECK: subs     w28, wzr, w27              // encoding: [0xfc,0x03,0x1b,0x6b]
    780 // CHECK: subs     w26, wzr, w25, lsl #29     // encoding: [0xfa,0x77,0x19,0x6b]
    781 // CHECK: subs     w24, wzr, w23, lsl #31     // encoding: [0xf8,0x7f,0x17,0x6b]
    782 
    783         negs w22, w21, lsr #0
    784         negs w20, w19, lsr #1
    785         negs w18, w17, lsr #31
    786 // CHECK: subs     w22, wzr, w21, lsr #0      // encoding: [0xf6,0x03,0x55,0x6b]
    787 // CHECK: subs     w20, wzr, w19, lsr #1      // encoding: [0xf4,0x07,0x53,0x6b]
    788 // CHECK: subs     w18, wzr, w17, lsr #31     // encoding: [0xf2,0x7f,0x51,0x6b]
    789 
    790         negs w16, w15, asr #0
    791         negs w14, w13, asr #12
    792         negs w12, w11, asr #31
    793 // CHECK: subs     w16, wzr, w15, asr #0      // encoding: [0xf0,0x03,0x8f,0x6b]
    794 // CHECK: subs     w14, wzr, w13, asr #12     // encoding: [0xee,0x33,0x8d,0x6b]
    795 // CHECK: subs     w12, wzr, w11, asr #31     // encoding: [0xec,0x7f,0x8b,0x6b]
    796 
    797         negs x29, x30
    798         negs x30, xzr
    799         negs xzr, x0
    800 // CHECK: subs     x29, xzr, x30              // encoding: [0xfd,0x03,0x1e,0xeb]
    801 // CHECK: subs     x30, xzr, xzr              // encoding: [0xfe,0x03,0x1f,0xeb]
    802 // CHECK: subs     xzr, xzr, x0               // encoding: [0xff,0x03,0x00,0xeb]
    803 
    804         negs x28, x27, lsl #0
    805         negs x26, x25, lsl #29
    806         negs x24, x23, lsl #31
    807 // CHECK: subs     x28, xzr, x27              // encoding: [0xfc,0x03,0x1b,0xeb]
    808 // CHECK: subs     x26, xzr, x25, lsl #29     // encoding: [0xfa,0x77,0x19,0xeb]
    809 // CHECK: subs     x24, xzr, x23, lsl #31     // encoding: [0xf8,0x7f,0x17,0xeb]
    810 
    811         negs x22, x21, lsr #0
    812         negs x20, x19, lsr #1
    813         negs x18, x17, lsr #31
    814 // CHECK: subs     x22, xzr, x21, lsr #0      // encoding: [0xf6,0x03,0x55,0xeb]
    815 // CHECK: subs     x20, xzr, x19, lsr #1      // encoding: [0xf4,0x07,0x53,0xeb]
    816 // CHECK: subs     x18, xzr, x17, lsr #31     // encoding: [0xf2,0x7f,0x51,0xeb]
    817 
    818         negs x16, x15, asr #0
    819         negs x14, x13, asr #12
    820         negs x12, x11, asr #31
    821 // CHECK: subs     x16, xzr, x15, asr #0      // encoding: [0xf0,0x03,0x8f,0xeb]
    822 // CHECK: subs     x14, xzr, x13, asr #12     // encoding: [0xee,0x33,0x8d,0xeb]
    823 // CHECK: subs     x12, xzr, x11, asr #31     // encoding: [0xec,0x7f,0x8b,0xeb]
    824 
    825 //------------------------------------------------------------------------------
    826 // Add-sub (shifted register)
    827 //------------------------------------------------------------------------------
    828         adc w29, w27, w25
    829         adc wzr, w3, w4
    830         adc w9, wzr, w10
    831         adc w20, w0, wzr
    832 // CHECK: adc      w29, w27, w25              // encoding: [0x7d,0x03,0x19,0x1a]
    833 // CHECK: adc      wzr, w3, w4                // encoding: [0x7f,0x00,0x04,0x1a]
    834 // CHECK: adc      w9, wzr, w10               // encoding: [0xe9,0x03,0x0a,0x1a]
    835 // CHECK: adc      w20, w0, wzr               // encoding: [0x14,0x00,0x1f,0x1a]
    836 
    837         adc x29, x27, x25
    838         adc xzr, x3, x4
    839         adc x9, xzr, x10
    840         adc x20, x0, xzr
    841 // CHECK: adc      x29, x27, x25              // encoding: [0x7d,0x03,0x19,0x9a]
    842 // CHECK: adc      xzr, x3, x4                // encoding: [0x7f,0x00,0x04,0x9a]
    843 // CHECK: adc      x9, xzr, x10               // encoding: [0xe9,0x03,0x0a,0x9a]
    844 // CHECK: adc      x20, x0, xzr               // encoding: [0x14,0x00,0x1f,0x9a]
    845 
    846         adcs w29, w27, w25
    847         adcs wzr, w3, w4
    848         adcs w9, wzr, w10
    849         adcs w20, w0, wzr
    850 // CHECK: adcs     w29, w27, w25              // encoding: [0x7d,0x03,0x19,0x3a]
    851 // CHECK: adcs     wzr, w3, w4                // encoding: [0x7f,0x00,0x04,0x3a]
    852 // CHECK: adcs     w9, wzr, w10               // encoding: [0xe9,0x03,0x0a,0x3a]
    853 // CHECK: adcs     w20, w0, wzr               // encoding: [0x14,0x00,0x1f,0x3a]
    854 
    855         adcs x29, x27, x25
    856         adcs xzr, x3, x4
    857         adcs x9, xzr, x10
    858         adcs x20, x0, xzr
    859 // CHECK: adcs     x29, x27, x25              // encoding: [0x7d,0x03,0x19,0xba]
    860 // CHECK: adcs     xzr, x3, x4                // encoding: [0x7f,0x00,0x04,0xba]
    861 // CHECK: adcs     x9, xzr, x10               // encoding: [0xe9,0x03,0x0a,0xba]
    862 // CHECK: adcs     x20, x0, xzr               // encoding: [0x14,0x00,0x1f,0xba]
    863 
    864         sbc w29, w27, w25
    865         sbc wzr, w3, w4
    866         sbc w9, wzr, w10
    867         sbc w20, w0, wzr
    868 // CHECK: sbc      w29, w27, w25              // encoding: [0x7d,0x03,0x19,0x5a]
    869 // CHECK: sbc      wzr, w3, w4                // encoding: [0x7f,0x00,0x04,0x5a]
    870 // CHECK: ngc      w9, w10                    // encoding: [0xe9,0x03,0x0a,0x5a]
    871 // CHECK: sbc      w20, w0, wzr               // encoding: [0x14,0x00,0x1f,0x5a]
    872 
    873         sbc x29, x27, x25
    874         sbc xzr, x3, x4
    875         sbc x9, xzr, x10
    876         sbc x20, x0, xzr
    877 // CHECK: sbc      x29, x27, x25              // encoding: [0x7d,0x03,0x19,0xda]
    878 // CHECK: sbc      xzr, x3, x4                // encoding: [0x7f,0x00,0x04,0xda]
    879 // CHECK: ngc      x9, x10                    // encoding: [0xe9,0x03,0x0a,0xda]
    880 // CHECK: sbc      x20, x0, xzr               // encoding: [0x14,0x00,0x1f,0xda]
    881 
    882         sbcs w29, w27, w25
    883         sbcs wzr, w3, w4
    884         sbcs w9, wzr, w10
    885         sbcs w20, w0, wzr
    886 // CHECK: sbcs     w29, w27, w25              // encoding: [0x7d,0x03,0x19,0x7a]
    887 // CHECK: sbcs     wzr, w3, w4                // encoding: [0x7f,0x00,0x04,0x7a]
    888 // CHECK: ngcs     w9, w10                    // encoding: [0xe9,0x03,0x0a,0x7a]
    889 // CHECK: sbcs     w20, w0, wzr               // encoding: [0x14,0x00,0x1f,0x7a]
    890 
    891         sbcs x29, x27, x25
    892         sbcs xzr, x3, x4
    893         sbcs x9, xzr, x10
    894         sbcs x20, x0, xzr
    895 // CHECK: sbcs     x29, x27, x25              // encoding: [0x7d,0x03,0x19,0xfa]
    896 // CHECK: sbcs     xzr, x3, x4                // encoding: [0x7f,0x00,0x04,0xfa]
    897 // CHECK: ngcs     x9, x10                    // encoding: [0xe9,0x03,0x0a,0xfa]
    898 // CHECK: sbcs     x20, x0, xzr               // encoding: [0x14,0x00,0x1f,0xfa]
    899 
    900         ngc w3, w12
    901         ngc wzr, w9
    902         ngc w23, wzr
    903 // CHECK: ngc      w3, w12                    // encoding: [0xe3,0x03,0x0c,0x5a]
    904 // CHECK: ngc      wzr, w9                    // encoding: [0xff,0x03,0x09,0x5a]
    905 // CHECK: ngc      w23, wzr                   // encoding: [0xf7,0x03,0x1f,0x5a]
    906 
    907         ngc x29, x30
    908         ngc xzr, x0
    909         ngc x0, xzr
    910 // CHECK: ngc      x29, x30                   // encoding: [0xfd,0x03,0x1e,0xda]
    911 // CHECK: ngc      xzr, x0                    // encoding: [0xff,0x03,0x00,0xda]
    912 // CHECK: ngc      x0, xzr                    // encoding: [0xe0,0x03,0x1f,0xda]
    913 
    914         ngcs w3, w12
    915         ngcs wzr, w9
    916         ngcs w23, wzr
    917 // CHECK: ngcs     w3, w12                    // encoding: [0xe3,0x03,0x0c,0x7a]
    918 // CHECK: ngcs     wzr, w9                    // encoding: [0xff,0x03,0x09,0x7a]
    919 // CHECK: ngcs     w23, wzr                   // encoding: [0xf7,0x03,0x1f,0x7a]
    920 
    921         ngcs x29, x30
    922         ngcs xzr, x0
    923         ngcs x0, xzr
    924 // CHECK: ngcs     x29, x30                   // encoding: [0xfd,0x03,0x1e,0xfa]
    925 // CHECK: ngcs     xzr, x0                    // encoding: [0xff,0x03,0x00,0xfa]
    926 // CHECK: ngcs     x0, xzr                    // encoding: [0xe0,0x03,0x1f,0xfa]
    927 
    928 //------------------------------------------------------------------------------
    929 // Bitfield
    930 //------------------------------------------------------------------------------
    931 
    932         sbfm x1, x2, #3, #4
    933         sbfm x3, x4, #63, #63
    934         sbfm wzr, wzr, #31, #31
    935         sbfm w12, w9, #0, #0
    936 // CHECK: sbfm     x1, x2, #3, #4             // encoding: [0x41,0x10,0x43,0x93]
    937 // CHECK: sbfm     x3, x4, #63, #63           // encoding: [0x83,0xfc,0x7f,0x93]
    938 // CHECK: sbfm     wzr, wzr, #31, #31         // encoding: [0xff,0x7f,0x1f,0x13]
    939 // CHECK: sbfm     w12, w9, #0, #0            // encoding: [0x2c,0x01,0x00,0x13]
    940 
    941         ubfm x4, x5, #12, #10
    942         ubfm xzr, x4, #0, #0
    943         ubfm x4, xzr, #63, #5
    944         ubfm x5, x6, #12, #63
    945 // CHECK: ubfm     x4, x5, #12, #10           // encoding: [0xa4,0x28,0x4c,0xd3]
    946 // CHECK: ubfm     xzr, x4, #0, #0            // encoding: [0x9f,0x00,0x40,0xd3]
    947 // CHECK: ubfm     x4, xzr, #63, #5            // encoding: [0xe4,0x17,0x7f,0xd3]
    948 // CHECK: ubfm     x5, x6, #12, #63           // encoding: [0xc5,0xfc,0x4c,0xd3]
    949 
    950         bfm x4, x5, #12, #10
    951         bfm xzr, x4, #0, #0
    952         bfm x4, xzr, #63, #5
    953         bfm x5, x6, #12, #63
    954 // CHECK: bfm      x4, x5, #12, #10           // encoding: [0xa4,0x28,0x4c,0xb3]
    955 // CHECK: bfm      xzr, x4, #0, #0            // encoding: [0x9f,0x00,0x40,0xb3]
    956 // CHECK: bfm      x4, xzr, #63, #5            // encoding: [0xe4,0x17,0x7f,0xb3]
    957 // CHECK: bfm      x5, x6, #12, #63           // encoding: [0xc5,0xfc,0x4c,0xb3]
    958 
    959         sxtb w1, w2
    960         sxtb xzr, w3
    961         sxth w9, w10
    962         sxth x0, w1
    963         sxtw x3, w30
    964 // CHECK: sxtb     w1, w2                     // encoding: [0x41,0x1c,0x00,0x13]
    965 // CHECK: sxtb     xzr, w3                    // encoding: [0x7f,0x1c,0x40,0x93]
    966 // CHECK: sxth     w9, w10                    // encoding: [0x49,0x3d,0x00,0x13]
    967 // CHECK: sxth     x0, w1                     // encoding: [0x20,0x3c,0x40,0x93]
    968 // CHECK: sxtw     x3, w30                    // encoding: [0xc3,0x7f,0x40,0x93]
    969 
    970         uxtb w1, w2
    971         uxtb xzr, w3
    972         uxth w9, w10
    973         uxth x0, w1
    974 // CHECK: uxtb     w1, w2                     // encoding: [0x41,0x1c,0x00,0x53]
    975 // CHECK: uxtb     xzr, w3                    // encoding: [0x7f,0x1c,0x00,0x53]
    976 // CHECK: uxth     w9, w10                    // encoding: [0x49,0x3d,0x00,0x53]
    977 // CHECK: uxth     x0, w1                     // encoding: [0x20,0x3c,0x00,0x53]
    978 
    979         asr w3, w2, #0
    980         asr w9, w10, #31
    981         asr x20, x21, #63
    982         asr w1, wzr, #3
    983 // CHECK: asr      w3, w2, #0                 // encoding: [0x43,0x7c,0x00,0x13]
    984 // CHECK: asr      w9, w10, #31               // encoding: [0x49,0x7d,0x1f,0x13]
    985 // CHECK: asr      x20, x21, #63              // encoding: [0xb4,0xfe,0x7f,0x93]
    986 // CHECK: asr      w1, wzr, #3                // encoding: [0xe1,0x7f,0x03,0x13]
    987 
    988         lsr w3, w2, #0
    989         lsr w9, w10, #31
    990         lsr x20, x21, #63
    991         lsr wzr, wzr, #3
    992 // CHECK: lsr      w3, w2, #0                 // encoding: [0x43,0x7c,0x00,0x53]
    993 // CHECK: lsr      w9, w10, #31               // encoding: [0x49,0x7d,0x1f,0x53]
    994 // CHECK: lsr      x20, x21, #63              // encoding: [0xb4,0xfe,0x7f,0xd3]
    995 // CHECK: lsr      wzr, wzr, #3               // encoding: [0xff,0x7f,0x03,0x53]
    996 
    997         lsl w3, w2, #0
    998         lsl w9, w10, #31
    999         lsl x20, x21, #63
   1000         lsl w1, wzr, #3
   1001 // CHECK: lsl      w3, w2, #0                 // encoding: [0x43,0x7c,0x00,0x53]
   1002 // CHECK: lsl      w9, w10, #31               // encoding: [0x49,0x01,0x01,0x53]
   1003 // CHECK: lsl      x20, x21, #63              // encoding: [0xb4,0x02,0x41,0xd3]
   1004 // CHECK: lsl      w1, wzr, #3                // encoding: [0xe1,0x73,0x1d,0x53]
   1005 
   1006         sbfiz w9, w10, #0, #1
   1007         sbfiz x2, x3, #63, #1
   1008         sbfiz x19, x20, #0, #64
   1009         sbfiz x9, x10, #5, #59
   1010         sbfiz w9, w10, #0, #32
   1011         sbfiz w11, w12, #31, #1
   1012         sbfiz w13, w14, #29, #3
   1013         sbfiz xzr, xzr, #10, #11
   1014 // CHECK: sbfiz    w9, w10, #0, #1            // encoding: [0x49,0x01,0x00,0x13]
   1015 // CHECK: sbfiz    x2, x3, #63, #1            // encoding: [0x62,0x00,0x41,0x93]
   1016 // CHECK: sbfiz    x19, x20, #0, #64          // encoding: [0x93,0xfe,0x40,0x93]
   1017 // CHECK: sbfiz    x9, x10, #5, #59           // encoding: [0x49,0xe9,0x7b,0x93]
   1018 // CHECK: sbfiz    w9, w10, #0, #32           // encoding: [0x49,0x7d,0x00,0x13]
   1019 // CHECK: sbfiz    w11, w12, #31, #1          // encoding: [0x8b,0x01,0x01,0x13]
   1020 // CHECK: sbfiz    w13, w14, #29, #3          // encoding: [0xcd,0x09,0x03,0x13]
   1021 // CHECK: sbfiz    xzr, xzr, #10, #11         // encoding: [0xff,0x2b,0x76,0x93]
   1022 
   1023         sbfx w9, w10, #0, #1
   1024         sbfx x2, x3, #63, #1
   1025         sbfx x19, x20, #0, #64
   1026         sbfx x9, x10, #5, #59
   1027         sbfx w9, w10, #0, #32
   1028         sbfx w11, w12, #31, #1
   1029         sbfx w13, w14, #29, #3
   1030         sbfx xzr, xzr, #10, #11
   1031 // CHECK: sbfx     w9, w10, #0, #1            // encoding: [0x49,0x01,0x00,0x13]
   1032 // CHECK: sbfx     x2, x3, #63, #1            // encoding: [0x62,0xfc,0x7f,0x93]
   1033 // CHECK: sbfx     x19, x20, #0, #64          // encoding: [0x93,0xfe,0x40,0x93]
   1034 // CHECK: sbfx     x9, x10, #5, #59           // encoding: [0x49,0xfd,0x45,0x93]
   1035 // CHECK: sbfx     w9, w10, #0, #32           // encoding: [0x49,0x7d,0x00,0x13]
   1036 // CHECK: sbfx     w11, w12, #31, #1          // encoding: [0x8b,0x7d,0x1f,0x13]
   1037 // CHECK: sbfx     w13, w14, #29, #3          // encoding: [0xcd,0x7d,0x1d,0x13]
   1038 // CHECK: sbfx     xzr, xzr, #10, #11         // encoding: [0xff,0x53,0x4a,0x93]
   1039 
   1040         bfi w9, w10, #0, #1
   1041         bfi x2, x3, #63, #1
   1042         bfi x19, x20, #0, #64
   1043         bfi x9, x10, #5, #59
   1044         bfi w9, w10, #0, #32
   1045         bfi w11, w12, #31, #1
   1046         bfi w13, w14, #29, #3
   1047         bfi xzr, xzr, #10, #11
   1048 // CHECK: bfi      w9, w10, #0, #1            // encoding: [0x49,0x01,0x00,0x33]
   1049 // CHECK: bfi      x2, x3, #63, #1            // encoding: [0x62,0x00,0x41,0xb3]
   1050 // CHECK: bfi      x19, x20, #0, #64          // encoding: [0x93,0xfe,0x40,0xb3]
   1051 // CHECK: bfi      x9, x10, #5, #59           // encoding: [0x49,0xe9,0x7b,0xb3]
   1052 // CHECK: bfi      w9, w10, #0, #32           // encoding: [0x49,0x7d,0x00,0x33]
   1053 // CHECK: bfi      w11, w12, #31, #1          // encoding: [0x8b,0x01,0x01,0x33]
   1054 // CHECK: bfi      w13, w14, #29, #3          // encoding: [0xcd,0x09,0x03,0x33]
   1055 // CHECK: bfi      xzr, xzr, #10, #11         // encoding: [0xff,0x2b,0x76,0xb3]
   1056 
   1057         bfxil w9, w10, #0, #1
   1058         bfxil x2, x3, #63, #1
   1059         bfxil x19, x20, #0, #64
   1060         bfxil x9, x10, #5, #59
   1061         bfxil w9, w10, #0, #32
   1062         bfxil w11, w12, #31, #1
   1063         bfxil w13, w14, #29, #3
   1064         bfxil xzr, xzr, #10, #11
   1065 // CHECK: bfxil    w9, w10, #0, #1            // encoding: [0x49,0x01,0x00,0x33]
   1066 // CHECK: bfxil    x2, x3, #63, #1            // encoding: [0x62,0xfc,0x7f,0xb3]
   1067 // CHECK: bfxil    x19, x20, #0, #64          // encoding: [0x93,0xfe,0x40,0xb3]
   1068 // CHECK: bfxil    x9, x10, #5, #59           // encoding: [0x49,0xfd,0x45,0xb3]
   1069 // CHECK: bfxil    w9, w10, #0, #32           // encoding: [0x49,0x7d,0x00,0x33]
   1070 // CHECK: bfxil    w11, w12, #31, #1          // encoding: [0x8b,0x7d,0x1f,0x33]
   1071 // CHECK: bfxil    w13, w14, #29, #3          // encoding: [0xcd,0x7d,0x1d,0x33]
   1072 // CHECK: bfxil    xzr, xzr, #10, #11         // encoding: [0xff,0x53,0x4a,0xb3]
   1073 
   1074         ubfiz w9, w10, #0, #1
   1075         ubfiz x2, x3, #63, #1
   1076         ubfiz x19, x20, #0, #64
   1077         ubfiz x9, x10, #5, #59
   1078         ubfiz w9, w10, #0, #32
   1079         ubfiz w11, w12, #31, #1
   1080         ubfiz w13, w14, #29, #3
   1081         ubfiz xzr, xzr, #10, #11
   1082 // CHECK: ubfiz    w9, w10, #0, #1            // encoding: [0x49,0x01,0x00,0x53]
   1083 // CHECK: ubfiz    x2, x3, #63, #1            // encoding: [0x62,0x00,0x41,0xd3]
   1084 // CHECK: ubfiz    x19, x20, #0, #64          // encoding: [0x93,0xfe,0x40,0xd3]
   1085 // CHECK: ubfiz    x9, x10, #5, #59           // encoding: [0x49,0xe9,0x7b,0xd3]
   1086 // CHECK: ubfiz    w9, w10, #0, #32           // encoding: [0x49,0x7d,0x00,0x53]
   1087 // CHECK: ubfiz    w11, w12, #31, #1          // encoding: [0x8b,0x01,0x01,0x53]
   1088 // CHECK: ubfiz    w13, w14, #29, #3          // encoding: [0xcd,0x09,0x03,0x53]
   1089 // CHECK: ubfiz    xzr, xzr, #10, #11         // encoding: [0xff,0x2b,0x76,0xd3]
   1090 
   1091         ubfx w9, w10, #0, #1
   1092         ubfx x2, x3, #63, #1
   1093         ubfx x19, x20, #0, #64
   1094         ubfx x9, x10, #5, #59
   1095         ubfx w9, w10, #0, #32
   1096         ubfx w11, w12, #31, #1
   1097         ubfx w13, w14, #29, #3
   1098         ubfx xzr, xzr, #10, #11
   1099 // CHECK: ubfx     w9, w10, #0, #1            // encoding: [0x49,0x01,0x00,0x53]
   1100 // CHECK: ubfx     x2, x3, #63, #1            // encoding: [0x62,0xfc,0x7f,0xd3]
   1101 // CHECK: ubfx     x19, x20, #0, #64          // encoding: [0x93,0xfe,0x40,0xd3]
   1102 // CHECK: ubfx     x9, x10, #5, #59           // encoding: [0x49,0xfd,0x45,0xd3]
   1103 // CHECK: ubfx     w9, w10, #0, #32           // encoding: [0x49,0x7d,0x00,0x53]
   1104 // CHECK: ubfx     w11, w12, #31, #1          // encoding: [0x8b,0x7d,0x1f,0x53]
   1105 // CHECK: ubfx     w13, w14, #29, #3          // encoding: [0xcd,0x7d,0x1d,0x53]
   1106 // CHECK: ubfx     xzr, xzr, #10, #11         // encoding: [0xff,0x53,0x4a,0xd3]
   1107 
   1108 //------------------------------------------------------------------------------
   1109 // Compare & branch (immediate)
   1110 //------------------------------------------------------------------------------
   1111 
   1112         cbz w5, lbl
   1113         cbz x5, lbl
   1114         cbnz x2, lbl
   1115         cbnz x26, lbl
   1116 // CHECK: cbz      w5, lbl                // encoding: [0x05'A',A,A,0x34'A']
   1117 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1118 // CHECK: cbz      x5, lbl                // encoding: [0x05'A',A,A,0xb4'A']
   1119 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1120 // CHECK: cbnz     x2, lbl                // encoding: [0x02'A',A,A,0xb5'A']
   1121 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1122 // CHECK: cbnz     x26, lbl               // encoding: [0x1a'A',A,A,0xb5'A']
   1123 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1124 
   1125         cbz wzr, lbl
   1126         cbnz xzr, lbl
   1127 // CHECK: cbz      wzr, lbl               // encoding: [0x1f'A',A,A,0x34'A']
   1128 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1129 // CHECK: cbnz     xzr, lbl               // encoding: [0x1f'A',A,A,0xb5'A']
   1130 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1131 
   1132         cbz w5, #0
   1133         cbnz x3, #-4
   1134         cbz w20, #1048572
   1135         cbnz xzr, #-1048576
   1136 // CHECK: cbz     w5, #0                  // encoding: [0x05,0x00,0x00,0x34]
   1137 // CHECK: cbnz    x3, #-4                 // encoding: [0xe3,0xff,0xff,0xb5]
   1138 // CHECK: cbz     w20, #1048572           // encoding: [0xf4,0xff,0x7f,0x34]
   1139 // CHECK: cbnz    xzr, #-1048576          // encoding: [0x1f,0x00,0x80,0xb5]
   1140 
   1141 //------------------------------------------------------------------------------
   1142 // Conditional branch (immediate)
   1143 //------------------------------------------------------------------------------
   1144 
   1145         b.eq lbl
   1146         b.ne lbl
   1147         b.cs lbl
   1148         b.hs lbl
   1149         b.lo lbl
   1150         b.cc lbl
   1151         b.mi lbl
   1152         b.pl lbl
   1153         b.vs lbl
   1154         b.vc lbl
   1155         b.hi lbl
   1156         b.ls lbl
   1157         b.ge lbl
   1158         b.lt lbl
   1159         b.gt lbl
   1160         b.le lbl
   1161         b.al lbl
   1162 // CHECK: b.eq lbl                        // encoding: [A,A,A,0x54'A']
   1163 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1164 // CHECK: b.ne lbl                        // encoding: [0x01'A',A,A,0x54'A']
   1165 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1166 // CHECK: b.hs lbl                        // encoding: [0x02'A',A,A,0x54'A']
   1167 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1168 // CHECK: b.hs lbl                        // encoding: [0x02'A',A,A,0x54'A']
   1169 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1170 // CHECK: b.lo lbl                        // encoding: [0x03'A',A,A,0x54'A']
   1171 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1172 // CHECK: b.lo lbl                        // encoding: [0x03'A',A,A,0x54'A']
   1173 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1174 // CHECK: b.mi lbl                        // encoding: [0x04'A',A,A,0x54'A']
   1175 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1176 // CHECK: b.pl lbl                        // encoding: [0x05'A',A,A,0x54'A']
   1177 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1178 // CHECK: b.vs lbl                        // encoding: [0x06'A',A,A,0x54'A']
   1179 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1180 // CHECK: b.vc lbl                        // encoding: [0x07'A',A,A,0x54'A']
   1181 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1182 // CHECK: b.hi lbl                        // encoding: [0x08'A',A,A,0x54'A']
   1183 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1184 // CHECK: b.ls lbl                        // encoding: [0x09'A',A,A,0x54'A']
   1185 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1186 // CHECK: b.ge lbl                        // encoding: [0x0a'A',A,A,0x54'A']
   1187 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1188 // CHECK: b.lt lbl                        // encoding: [0x0b'A',A,A,0x54'A']
   1189 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1190 // CHECK: b.gt lbl                        // encoding: [0x0c'A',A,A,0x54'A']
   1191 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1192 // CHECK: b.le lbl                        // encoding: [0x0d'A',A,A,0x54'A']
   1193 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1194 // CHECK: b.al lbl                        // encoding: [0x0e'A',A,A,0x54'A']
   1195 // CHECK:                                 //   fixup A - offset: 0, value: lbl, kind: fixup_a64_condbr
   1196 
   1197         b.eq #0
   1198         b.lt #-4
   1199         b.cc #1048572
   1200 // CHECK: b.eq #0                         // encoding: [0x00,0x00,0x00,0x54]
   1201 // CHECK: b.lt #-4                        // encoding: [0xeb,0xff,0xff,0x54]
   1202 // CHECK: b.lo #1048572                   // encoding: [0xe3,0xff,0x7f,0x54]
   1203 
   1204 //------------------------------------------------------------------------------
   1205 // Conditional compare (immediate)
   1206 //------------------------------------------------------------------------------
   1207 
   1208         ccmp w1, #31, #0, eq
   1209         ccmp w3, #0, #15, hs
   1210         ccmp wzr, #15, #13, cs
   1211 // CHECK: ccmp    w1, #31, #0, eq         // encoding: [0x20,0x08,0x5f,0x7a]
   1212 // CHECK: ccmp    w3, #0, #15, hs         // encoding: [0x6f,0x28,0x40,0x7a]
   1213 // CHECK: ccmp    wzr, #15, #13, hs       // encoding: [0xed,0x2b,0x4f,0x7a]
   1214 
   1215         ccmp x9, #31, #0, le
   1216         ccmp x3, #0, #15, gt
   1217         ccmp xzr, #5, #7, ne
   1218 // CHECK: ccmp    x9, #31, #0, le         // encoding: [0x20,0xd9,0x5f,0xfa]
   1219 // CHECK: ccmp    x3, #0, #15, gt         // encoding: [0x6f,0xc8,0x40,0xfa]
   1220 // CHECK: ccmp    xzr, #5, #7, ne         // encoding: [0xe7,0x1b,0x45,0xfa]
   1221 
   1222         ccmn w1, #31, #0, eq
   1223         ccmn w3, #0, #15, hs
   1224         ccmn wzr, #15, #13, cs
   1225 // CHECK: ccmn    w1, #31, #0, eq         // encoding: [0x20,0x08,0x5f,0x3a]
   1226 // CHECK: ccmn    w3, #0, #15, hs         // encoding: [0x6f,0x28,0x40,0x3a]
   1227 // CHECK: ccmn    wzr, #15, #13, hs       // encoding: [0xed,0x2b,0x4f,0x3a]
   1228 
   1229         ccmn x9, #31, #0, le
   1230         ccmn x3, #0, #15, gt
   1231         ccmn xzr, #5, #7, ne
   1232 // CHECK: ccmn    x9, #31, #0, le         // encoding: [0x20,0xd9,0x5f,0xba]
   1233 // CHECK: ccmn    x3, #0, #15, gt         // encoding: [0x6f,0xc8,0x40,0xba]
   1234 // CHECK: ccmn    xzr, #5, #7, ne         // encoding: [0xe7,0x1b,0x45,0xba]
   1235 
   1236 //------------------------------------------------------------------------------
   1237 // Conditional compare (register)
   1238 //------------------------------------------------------------------------------
   1239 
   1240         ccmp w1, wzr, #0, eq
   1241         ccmp w3, w0, #15, hs
   1242         ccmp wzr, w15, #13, cs
   1243 // CHECK: ccmp    w1, wzr, #0, eq         // encoding: [0x20,0x00,0x5f,0x7a]
   1244 // CHECK: ccmp    w3, w0, #15, hs         // encoding: [0x6f,0x20,0x40,0x7a]
   1245 // CHECK: ccmp    wzr, w15, #13, hs       // encoding: [0xed,0x23,0x4f,0x7a]
   1246 
   1247         ccmp x9, xzr, #0, le
   1248         ccmp x3, x0, #15, gt
   1249         ccmp xzr, x5, #7, ne
   1250 // CHECK: ccmp    x9, xzr, #0, le         // encoding: [0x20,0xd1,0x5f,0xfa]
   1251 // CHECK: ccmp    x3, x0, #15, gt         // encoding: [0x6f,0xc0,0x40,0xfa]
   1252 // CHECK: ccmp    xzr, x5, #7, ne         // encoding: [0xe7,0x13,0x45,0xfa]
   1253 
   1254         ccmn w1, wzr, #0, eq
   1255         ccmn w3, w0, #15, hs
   1256         ccmn wzr, w15, #13, cs
   1257 // CHECK: ccmn    w1, wzr, #0, eq         // encoding: [0x20,0x00,0x5f,0x3a]
   1258 // CHECK: ccmn    w3, w0, #15, hs         // encoding: [0x6f,0x20,0x40,0x3a]
   1259 // CHECK: ccmn    wzr, w15, #13, hs       // encoding: [0xed,0x23,0x4f,0x3a]
   1260 
   1261         ccmn x9, xzr, #0, le
   1262         ccmn x3, x0, #15, gt
   1263         ccmn xzr, x5, #7, ne
   1264 // CHECK: ccmn    x9, xzr, #0, le         // encoding: [0x20,0xd1,0x5f,0xba]
   1265 // CHECK: ccmn    x3, x0, #15, gt         // encoding: [0x6f,0xc0,0x40,0xba]
   1266 // CHECK: ccmn    xzr, x5, #7, ne         // encoding: [0xe7,0x13,0x45,0xba]
   1267 
   1268 //------------------------------------------------------------------------------
   1269 // Conditional select
   1270 //------------------------------------------------------------------------------
   1271         csel w1, w0, w19, ne
   1272         csel wzr, w5, w9, eq
   1273         csel w9, wzr, w30, gt
   1274         csel w1, w28, wzr, mi
   1275 // CHECK: csel     w1, w0, w19, ne            // encoding: [0x01,0x10,0x93,0x1a]
   1276 // CHECK: csel     wzr, w5, w9, eq            // encoding: [0xbf,0x00,0x89,0x1a]
   1277 // CHECK: csel     w9, wzr, w30, gt           // encoding: [0xe9,0xc3,0x9e,0x1a]
   1278 // CHECK: csel     w1, w28, wzr, mi           // encoding: [0x81,0x43,0x9f,0x1a]
   1279 
   1280         csel x19, x23, x29, lt
   1281         csel xzr, x3, x4, ge
   1282         csel x5, xzr, x6, cs
   1283         csel x7, x8, xzr, cc
   1284 // CHECK: csel     x19, x23, x29, lt          // encoding: [0xf3,0xb2,0x9d,0x9a]
   1285 // CHECK: csel     xzr, x3, x4, ge            // encoding: [0x7f,0xa0,0x84,0x9a]
   1286 // CHECK: csel     x5, xzr, x6, hs            // encoding: [0xe5,0x23,0x86,0x9a]
   1287 // CHECK: csel     x7, x8, xzr, lo            // encoding: [0x07,0x31,0x9f,0x9a]
   1288 
   1289         csinc w1, w0, w19, ne
   1290         csinc wzr, w5, w9, eq
   1291         csinc w9, wzr, w30, gt
   1292         csinc w1, w28, wzr, mi
   1293 // CHECK: csinc    w1, w0, w19, ne            // encoding: [0x01,0x14,0x93,0x1a]
   1294 // CHECK: csinc    wzr, w5, w9, eq            // encoding: [0xbf,0x04,0x89,0x1a]
   1295 // CHECK: csinc    w9, wzr, w30, gt           // encoding: [0xe9,0xc7,0x9e,0x1a]
   1296 // CHECK: csinc    w1, w28, wzr, mi           // encoding: [0x81,0x47,0x9f,0x1a]
   1297 
   1298         csinc x19, x23, x29, lt
   1299         csinc xzr, x3, x4, ge
   1300         csinc x5, xzr, x6, cs
   1301         csinc x7, x8, xzr, cc
   1302 // CHECK: csinc    x19, x23, x29, lt          // encoding: [0xf3,0xb6,0x9d,0x9a]
   1303 // CHECK: csinc    xzr, x3, x4, ge            // encoding: [0x7f,0xa4,0x84,0x9a]
   1304 // CHECK: csinc    x5, xzr, x6, hs            // encoding: [0xe5,0x27,0x86,0x9a]
   1305 // CHECK: csinc    x7, x8, xzr, lo            // encoding: [0x07,0x35,0x9f,0x9a]
   1306 
   1307         csinv w1, w0, w19, ne
   1308         csinv wzr, w5, w9, eq
   1309         csinv w9, wzr, w30, gt
   1310         csinv w1, w28, wzr, mi
   1311 // CHECK: csinv    w1, w0, w19, ne            // encoding: [0x01,0x10,0x93,0x5a]
   1312 // CHECK: csinv    wzr, w5, w9, eq            // encoding: [0xbf,0x00,0x89,0x5a]
   1313 // CHECK: csinv    w9, wzr, w30, gt           // encoding: [0xe9,0xc3,0x9e,0x5a]
   1314 // CHECK: csinv    w1, w28, wzr, mi           // encoding: [0x81,0x43,0x9f,0x5a]
   1315 
   1316         csinv x19, x23, x29, lt
   1317         csinv xzr, x3, x4, ge
   1318         csinv x5, xzr, x6, cs
   1319         csinv x7, x8, xzr, cc
   1320 // CHECK: csinv    x19, x23, x29, lt          // encoding: [0xf3,0xb2,0x9d,0xda]
   1321 // CHECK: csinv    xzr, x3, x4, ge            // encoding: [0x7f,0xa0,0x84,0xda]
   1322 // CHECK: csinv    x5, xzr, x6, hs            // encoding: [0xe5,0x23,0x86,0xda]
   1323 // CHECK: csinv    x7, x8, xzr, lo            // encoding: [0x07,0x31,0x9f,0xda]
   1324 
   1325         csneg w1, w0, w19, ne
   1326         csneg wzr, w5, w9, eq
   1327         csneg w9, wzr, w30, gt
   1328         csneg w1, w28, wzr, mi
   1329 // CHECK: csneg    w1, w0, w19, ne            // encoding: [0x01,0x14,0x93,0x5a]
   1330 // CHECK: csneg    wzr, w5, w9, eq            // encoding: [0xbf,0x04,0x89,0x5a]
   1331 // CHECK: csneg    w9, wzr, w30, gt           // encoding: [0xe9,0xc7,0x9e,0x5a]
   1332 // CHECK: csneg    w1, w28, wzr, mi           // encoding: [0x81,0x47,0x9f,0x5a]
   1333 
   1334         csneg x19, x23, x29, lt
   1335         csneg xzr, x3, x4, ge
   1336         csneg x5, xzr, x6, cs
   1337         csneg x7, x8, xzr, cc
   1338 // CHECK: csneg    x19, x23, x29, lt          // encoding: [0xf3,0xb6,0x9d,0xda]
   1339 // CHECK: csneg    xzr, x3, x4, ge            // encoding: [0x7f,0xa4,0x84,0xda]
   1340 // CHECK: csneg    x5, xzr, x6, hs            // encoding: [0xe5,0x27,0x86,0xda]
   1341 // CHECK: csneg    x7, x8, xzr, lo            // encoding: [0x07,0x35,0x9f,0xda]
   1342 
   1343         cset w3, eq
   1344         cset x9, pl
   1345 // CHECK: csinc    w3, wzr, wzr, ne           // encoding: [0xe3,0x17,0x9f,0x1a]
   1346 // CHECK: csinc    x9, xzr, xzr, mi           // encoding: [0xe9,0x47,0x9f,0x9a]
   1347 
   1348         csetm w20, ne
   1349         csetm x30, ge
   1350 // CHECK: csinv    w20, wzr, wzr, eq          // encoding: [0xf4,0x03,0x9f,0x5a]
   1351 // CHECK: csinv    x30, xzr, xzr, lt          // encoding: [0xfe,0xb3,0x9f,0xda]
   1352 
   1353         cinc w3, w5, gt
   1354         cinc wzr, w4, le
   1355         cinc w9, wzr, lt
   1356 // CHECK: csinc    w3, w5, w5, le             // encoding: [0xa3,0xd4,0x85,0x1a]
   1357 // CHECK: csinc    wzr, w4, w4, gt            // encoding: [0x9f,0xc4,0x84,0x1a]
   1358 // CHECK: csinc    w9, wzr, wzr, ge           // encoding: [0xe9,0xa7,0x9f,0x1a]
   1359 
   1360         cinc x3, x5, gt
   1361         cinc xzr, x4, le
   1362         cinc x9, xzr, lt
   1363 // CHECK: csinc     x3, x5, x5, le             // encoding: [0xa3,0xd4,0x85,0x9a]
   1364 // CHECK: csinc     xzr, x4, x4, gt            // encoding: [0x9f,0xc4,0x84,0x9a]
   1365 // CHECK: csinc     x9, xzr, xzr, ge           // encoding: [0xe9,0xa7,0x9f,0x9a]
   1366 
   1367         cinv w3, w5, gt
   1368         cinv wzr, w4, le
   1369         cinv w9, wzr, lt
   1370 // CHECK: csinv    w3, w5, w5, le             // encoding: [0xa3,0xd0,0x85,0x5a]
   1371 // CHECK: csinv    wzr, w4, w4, gt            // encoding: [0x9f,0xc0,0x84,0x5a]
   1372 // CHECK: csinv    w9, wzr, wzr, ge           // encoding: [0xe9,0xa3,0x9f,0x5a]
   1373 
   1374         cinv x3, x5, gt
   1375         cinv xzr, x4, le
   1376         cinv x9, xzr, lt
   1377 // CHECK: csinv    x3, x5, x5, le             // encoding: [0xa3,0xd0,0x85,0xda]
   1378 // CHECK: csinv    xzr, x4, x4, gt            // encoding: [0x9f,0xc0,0x84,0xda]
   1379 // CHECK: csinv    x9, xzr, xzr, ge           // encoding: [0xe9,0xa3,0x9f,0xda]
   1380 
   1381         cneg w3, w5, gt
   1382         cneg wzr, w4, le
   1383         cneg w9, wzr, lt
   1384 // CHECK: csneg    w3, w5, w5, le             // encoding: [0xa3,0xd4,0x85,0x5a]
   1385 // CHECK: csneg    wzr, w4, w4, gt            // encoding: [0x9f,0xc4,0x84,0x5a]
   1386 // CHECK: csneg    w9, wzr, wzr, ge           // encoding: [0xe9,0xa7,0x9f,0x5a]
   1387 
   1388         cneg x3, x5, gt
   1389         cneg xzr, x4, le
   1390         cneg x9, xzr, lt
   1391 // CHECK: csneg    x3, x5, x5, le             // encoding: [0xa3,0xd4,0x85,0xda]
   1392 // CHECK: csneg    xzr, x4, x4, gt            // encoding: [0x9f,0xc4,0x84,0xda]
   1393 // CHECK: csneg    x9, xzr, xzr, ge           // encoding: [0xe9,0xa7,0x9f,0xda]
   1394 
   1395 //------------------------------------------------------------------------------
   1396 // Data-processing (1 source)
   1397 //------------------------------------------------------------------------------
   1398 
   1399 	rbit	w0, w7
   1400 	rbit	x18, x3
   1401 	rev16	w17, w1
   1402 	rev16	x5, x2
   1403 	rev	w18, w0
   1404 	rev32	x20, x1
   1405 	rev32	x20, xzr
   1406 // CHECK: rbit	w0, w7                       // encoding: [0xe0,0x00,0xc0,0x5a]
   1407 // CHECK: rbit	x18, x3                      // encoding: [0x72,0x00,0xc0,0xda]
   1408 // CHECK: rev16 w17, w1                      // encoding: [0x31,0x04,0xc0,0x5a]
   1409 // CHECK: rev16	x5, x2                       // encoding: [0x45,0x04,0xc0,0xda]
   1410 // CHECK: rev	w18, w0                      // encoding: [0x12,0x08,0xc0,0x5a]
   1411 // CHECK: rev32	x20, x1                      // encoding: [0x34,0x08,0xc0,0xda]
   1412 // CHECK: rev32	x20, xzr                     // encoding: [0xf4,0x0b,0xc0,0xda]
   1413 
   1414 	rev	x22, x2
   1415 	rev	x18, xzr
   1416 	rev	w7, wzr
   1417 	clz	w24, w3
   1418 	clz	x26, x4
   1419 	cls	w3, w5
   1420 	cls	x20, x5
   1421 // CHECK: rev	x22, x2                      // encoding: [0x56,0x0c,0xc0,0xda]
   1422 // CHECK: rev	x18, xzr                     // encoding: [0xf2,0x0f,0xc0,0xda]
   1423 // CHECK: rev	w7, wzr                      // encoding: [0xe7,0x0b,0xc0,0x5a]
   1424 // CHECK: clz	w24, w3                      // encoding: [0x78,0x10,0xc0,0x5a]
   1425 // CHECK: clz	x26, x4                      // encoding: [0x9a,0x10,0xc0,0xda]
   1426 // CHECK: cls	w3, w5                       // encoding: [0xa3,0x14,0xc0,0x5a]
   1427 // CHECK: cls	x20, x5                      // encoding: [0xb4,0x14,0xc0,0xda]
   1428 
   1429 	clz	w24, wzr
   1430 	rev	x22, xzr
   1431 // CHECK: clz	w24, wzr                     // encoding: [0xf8,0x13,0xc0,0x5a]
   1432 // CHECK: rev	x22, xzr                     // encoding: [0xf6,0x0f,0xc0,0xda]
   1433 
   1434 //------------------------------------------------------------------------------
   1435 // Data-processing (2 source)
   1436 //------------------------------------------------------------------------------
   1437 
   1438         crc32b  w5, w7, w20
   1439         crc32h  w28, wzr, w30
   1440         crc32w  w0, w1, w2
   1441         crc32x  w7, w9, x20
   1442         crc32cb w9, w5, w4
   1443         crc32ch w13, w17, w25
   1444         crc32cw wzr, w3, w5
   1445         crc32cx w18, w16, xzr
   1446 // CHECK: crc32b   w5, w7, w20             // encoding: [0xe5,0x40,0xd4,0x1a]
   1447 // CHECK: crc32h   w28, wzr, w30           // encoding: [0xfc,0x47,0xde,0x1a]
   1448 // CHECK: crc32w   w0, w1, w2              // encoding: [0x20,0x48,0xc2,0x1a]
   1449 // CHECK: crc32x   w7, w9, x20             // encoding: [0x27,0x4d,0xd4,0x9a]
   1450 // CHECK: crc32cb  w9, w5, w4              // encoding: [0xa9,0x50,0xc4,0x1a]
   1451 // CHECK: crc32ch  w13, w17, w25           // encoding: [0x2d,0x56,0xd9,0x1a]
   1452 // CHECK: crc32cw  wzr, w3, w5             // encoding: [0x7f,0x58,0xc5,0x1a]
   1453 // CHECK: crc32cx  w18, w16, xzr           // encoding: [0x12,0x5e,0xdf,0x9a]
   1454 
   1455         udiv	w0, w7, w10
   1456         udiv	x9, x22, x4
   1457         sdiv	w12, w21, w0
   1458         sdiv	x13, x2, x1
   1459         lslv	w11, w12, w13
   1460         lslv	x14, x15, x16
   1461         lsrv	w17, w18, w19
   1462         lsrv	x20, x21, x22
   1463         asrv	w23, w24, w25
   1464         asrv	x26, x27, x28
   1465         rorv	w0, w1, w2
   1466         rorv    x3, x4, x5
   1467 
   1468 
   1469 // CHECK: udiv	w0, w7, w10                   // encoding: [0xe0,0x08,0xca,0x1a]
   1470 // CHECK: udiv	x9, x22, x4                   // encoding: [0xc9,0x0a,0xc4,0x9a]
   1471 // CHECK: sdiv	w12, w21, w0                  // encoding: [0xac,0x0e,0xc0,0x1a]
   1472 // CHECK: sdiv	x13, x2, x1                   // encoding: [0x4d,0x0c,0xc1,0x9a]
   1473 // CHECK: lsl	w11, w12, w13                 // encoding: [0x8b,0x21,0xcd,0x1a]
   1474 // CHECK: lsl	x14, x15, x16                 // encoding: [0xee,0x21,0xd0,0x9a]
   1475 // CHECK: lsr	w17, w18, w19                 // encoding: [0x51,0x26,0xd3,0x1a]
   1476 // CHECK: lsr	x20, x21, x22                 // encoding: [0xb4,0x26,0xd6,0x9a]
   1477 // CHECK: asr	w23, w24, w25                 // encoding: [0x17,0x2b,0xd9,0x1a]
   1478 // CHECK: asr	x26, x27, x28                 // encoding: [0x7a,0x2b,0xdc,0x9a]
   1479 // CHECK: ror	w0, w1, w2                    // encoding: [0x20,0x2c,0xc2,0x1a]
   1480 // CHECK: ror  x3, x4, x5                     // encoding: [0x83,0x2c,0xc5,0x9a]
   1481 
   1482 
   1483         lsl	w6, w7, w8
   1484         lsl	x9, x10, x11
   1485         lsr	w12, w13, w14
   1486         lsr	x15, x16, x17
   1487         asr	w18, w19, w20
   1488         asr	x21, x22, x23
   1489         ror	w24, w25, w26
   1490         ror	x27, x28, x29
   1491 // CHECK: lsl	w6, w7, w8                    // encoding: [0xe6,0x20,0xc8,0x1a]
   1492 // CHECK: lsl	x9, x10, x11                  // encoding: [0x49,0x21,0xcb,0x9a]
   1493 // CHECK: lsr	w12, w13, w14                 // encoding: [0xac,0x25,0xce,0x1a]
   1494 // CHECK: lsr	x15, x16, x17                 // encoding: [0x0f,0x26,0xd1,0x9a]
   1495 // CHECK: asr	w18, w19, w20                 // encoding: [0x72,0x2a,0xd4,0x1a]
   1496 // CHECK: asr	x21, x22, x23                 // encoding: [0xd5,0x2a,0xd7,0x9a]
   1497 // CHECK: ror	w24, w25, w26                 // encoding: [0x38,0x2f,0xda,0x1a]
   1498 // CHECK: ror	x27, x28, x29                 // encoding: [0x9b,0x2f,0xdd,0x9a]
   1499 
   1500         madd w1, w3, w7, w4
   1501         madd wzr, w0, w9, w11
   1502         madd w13, wzr, w4, w4
   1503         madd w19, w30, wzr, w29
   1504         madd w4, w5, w6, wzr
   1505 // CHECK: madd     w1, w3, w7, w4             // encoding: [0x61,0x10,0x07,0x1b]
   1506 // CHECK: madd     wzr, w0, w9, w11           // encoding: [0x1f,0x2c,0x09,0x1b]
   1507 // CHECK: madd     w13, wzr, w4, w4           // encoding: [0xed,0x13,0x04,0x1b]
   1508 // CHECK: madd     w19, w30, wzr, w29         // encoding: [0xd3,0x77,0x1f,0x1b]
   1509 // CHECK: mul      w4, w5, w6                 // encoding: [0xa4,0x7c,0x06,0x1b]
   1510 
   1511         madd x1, x3, x7, x4
   1512         madd xzr, x0, x9, x11
   1513         madd x13, xzr, x4, x4
   1514         madd x19, x30, xzr, x29
   1515         madd x4, x5, x6, xzr
   1516 // CHECK: madd     x1, x3, x7, x4             // encoding: [0x61,0x10,0x07,0x9b]
   1517 // CHECK: madd     xzr, x0, x9, x11           // encoding: [0x1f,0x2c,0x09,0x9b]
   1518 // CHECK: madd     x13, xzr, x4, x4           // encoding: [0xed,0x13,0x04,0x9b]
   1519 // CHECK: madd     x19, x30, xzr, x29         // encoding: [0xd3,0x77,0x1f,0x9b]
   1520 // CHECK: mul      x4, x5, x6                 // encoding: [0xa4,0x7c,0x06,0x9b]
   1521 
   1522         msub w1, w3, w7, w4
   1523         msub wzr, w0, w9, w11
   1524         msub w13, wzr, w4, w4
   1525         msub w19, w30, wzr, w29
   1526         msub w4, w5, w6, wzr
   1527 // CHECK: msub     w1, w3, w7, w4             // encoding: [0x61,0x90,0x07,0x1b]
   1528 // CHECK: msub     wzr, w0, w9, w11           // encoding: [0x1f,0xac,0x09,0x1b]
   1529 // CHECK: msub     w13, wzr, w4, w4           // encoding: [0xed,0x93,0x04,0x1b]
   1530 // CHECK: msub     w19, w30, wzr, w29         // encoding: [0xd3,0xf7,0x1f,0x1b]
   1531 // CHECK: mneg     w4, w5, w6                 // encoding: [0xa4,0xfc,0x06,0x1b]
   1532 
   1533         msub x1, x3, x7, x4
   1534         msub xzr, x0, x9, x11
   1535         msub x13, xzr, x4, x4
   1536         msub x19, x30, xzr, x29
   1537         msub x4, x5, x6, xzr
   1538 // CHECK: msub     x1, x3, x7, x4             // encoding: [0x61,0x90,0x07,0x9b]
   1539 // CHECK: msub     xzr, x0, x9, x11           // encoding: [0x1f,0xac,0x09,0x9b]
   1540 // CHECK: msub     x13, xzr, x4, x4           // encoding: [0xed,0x93,0x04,0x9b]
   1541 // CHECK: msub     x19, x30, xzr, x29         // encoding: [0xd3,0xf7,0x1f,0x9b]
   1542 // CHECK: mneg     x4, x5, x6                 // encoding: [0xa4,0xfc,0x06,0x9b]
   1543 
   1544         smaddl x3, w5, w2, x9
   1545         smaddl xzr, w10, w11, x12
   1546         smaddl x13, wzr, w14, x15
   1547         smaddl x16, w17, wzr, x18
   1548         smaddl x19, w20, w21, xzr
   1549 // CHECK: smaddl   x3, w5, w2, x9             // encoding: [0xa3,0x24,0x22,0x9b]
   1550 // CHECK: smaddl   xzr, w10, w11, x12         // encoding: [0x5f,0x31,0x2b,0x9b]
   1551 // CHECK: smaddl   x13, wzr, w14, x15         // encoding: [0xed,0x3f,0x2e,0x9b]
   1552 // CHECK: smaddl   x16, w17, wzr, x18         // encoding: [0x30,0x4a,0x3f,0x9b]
   1553 // CHECK: smull    x19, w20, w21              // encoding: [0x93,0x7e,0x35,0x9b]
   1554 
   1555         smsubl x3, w5, w2, x9
   1556         smsubl xzr, w10, w11, x12
   1557         smsubl x13, wzr, w14, x15
   1558         smsubl x16, w17, wzr, x18
   1559         smsubl x19, w20, w21, xzr
   1560 // CHECK: smsubl   x3, w5, w2, x9             // encoding: [0xa3,0xa4,0x22,0x9b]
   1561 // CHECK: smsubl   xzr, w10, w11, x12         // encoding: [0x5f,0xb1,0x2b,0x9b]
   1562 // CHECK: smsubl   x13, wzr, w14, x15         // encoding: [0xed,0xbf,0x2e,0x9b]
   1563 // CHECK: smsubl   x16, w17, wzr, x18         // encoding: [0x30,0xca,0x3f,0x9b]
   1564 // CHECK: smnegl   x19, w20, w21              // encoding: [0x93,0xfe,0x35,0x9b]
   1565 
   1566         umaddl x3, w5, w2, x9
   1567         umaddl xzr, w10, w11, x12
   1568         umaddl x13, wzr, w14, x15
   1569         umaddl x16, w17, wzr, x18
   1570         umaddl x19, w20, w21, xzr
   1571 // CHECK: umaddl   x3, w5, w2, x9             // encoding: [0xa3,0x24,0xa2,0x9b]
   1572 // CHECK: umaddl   xzr, w10, w11, x12         // encoding: [0x5f,0x31,0xab,0x9b]
   1573 // CHECK: umaddl   x13, wzr, w14, x15         // encoding: [0xed,0x3f,0xae,0x9b]
   1574 // CHECK: umaddl   x16, w17, wzr, x18         // encoding: [0x30,0x4a,0xbf,0x9b]
   1575 // CHECK: umull    x19, w20, w21              // encoding: [0x93,0x7e,0xb5,0x9b]
   1576 
   1577 
   1578 
   1579         umsubl x3, w5, w2, x9
   1580         umsubl xzr, w10, w11, x12
   1581         umsubl x13, wzr, w14, x15
   1582         umsubl x16, w17, wzr, x18
   1583         umsubl x19, w20, w21, xzr
   1584 // CHECK: umsubl   x3, w5, w2, x9             // encoding: [0xa3,0xa4,0xa2,0x9b]
   1585 // CHECK: umsubl   xzr, w10, w11, x12         // encoding: [0x5f,0xb1,0xab,0x9b]
   1586 // CHECK: umsubl   x13, wzr, w14, x15         // encoding: [0xed,0xbf,0xae,0x9b]
   1587 // CHECK: umsubl   x16, w17, wzr, x18         // encoding: [0x30,0xca,0xbf,0x9b]
   1588 // CHECK: umnegl   x19, w20, w21              // encoding: [0x93,0xfe,0xb5,0x9b]
   1589 
   1590         smulh x30, x29, x28
   1591         smulh xzr, x27, x26
   1592         smulh x25, xzr, x24
   1593         smulh x23, x22, xzr
   1594 // CHECK: smulh    x30, x29, x28              // encoding: [0xbe,0x7f,0x5c,0x9b]
   1595 // CHECK: smulh    xzr, x27, x26              // encoding: [0x7f,0x7f,0x5a,0x9b]
   1596 // CHECK: smulh    x25, xzr, x24              // encoding: [0xf9,0x7f,0x58,0x9b]
   1597 // CHECK: smulh    x23, x22, xzr              // encoding: [0xd7,0x7e,0x5f,0x9b]
   1598 
   1599         umulh x30, x29, x28
   1600         umulh xzr, x27, x26
   1601         umulh x25, xzr, x24
   1602         umulh x23, x22, xzr
   1603 // CHECK: umulh    x30, x29, x28              // encoding: [0xbe,0x7f,0xdc,0x9b]
   1604 // CHECK: umulh    xzr, x27, x26              // encoding: [0x7f,0x7f,0xda,0x9b]
   1605 // CHECK: umulh    x25, xzr, x24              // encoding: [0xf9,0x7f,0xd8,0x9b]
   1606 // CHECK: umulh    x23, x22, xzr              // encoding: [0xd7,0x7e,0xdf,0x9b]
   1607 
   1608         mul w3, w4, w5
   1609         mul wzr, w6, w7
   1610         mul w8, wzr, w9
   1611         mul w10, w11, wzr
   1612 
   1613         mul x12, x13, x14
   1614         mul xzr, x15, x16
   1615         mul x17, xzr, x18
   1616         mul x19, x20, xzr
   1617 
   1618         mneg w21, w22, w23
   1619         mneg wzr, w24, w25
   1620         mneg w26, wzr, w27
   1621         mneg w28, w29, wzr
   1622 
   1623         smull x11, w13, w17
   1624         umull x11, w13, w17
   1625         smnegl x11, w13, w17
   1626         umnegl x11, w13, w17
   1627 // CHECK: mul      w3, w4, w5                 // encoding: [0x83,0x7c,0x05,0x1b]
   1628 // CHECK: mul      wzr, w6, w7                // encoding: [0xdf,0x7c,0x07,0x1b]
   1629 // CHECK: mul      w8, wzr, w9                // encoding: [0xe8,0x7f,0x09,0x1b]
   1630 // CHECK: mul      w10, w11, wzr              // encoding: [0x6a,0x7d,0x1f,0x1b]
   1631 // CHECK: mul      x12, x13, x14              // encoding: [0xac,0x7d,0x0e,0x9b]
   1632 // CHECK: mul      xzr, x15, x16              // encoding: [0xff,0x7d,0x10,0x9b]
   1633 // CHECK: mul      x17, xzr, x18              // encoding: [0xf1,0x7f,0x12,0x9b]
   1634 // CHECK: mul      x19, x20, xzr              // encoding: [0x93,0x7e,0x1f,0x9b]
   1635 // CHECK: mneg     w21, w22, w23              // encoding: [0xd5,0xfe,0x17,0x1b]
   1636 // CHECK: mneg     wzr, w24, w25              // encoding: [0x1f,0xff,0x19,0x1b]
   1637 // CHECK: mneg     w26, wzr, w27              // encoding: [0xfa,0xff,0x1b,0x1b]
   1638 // CHECK: mneg     w28, w29, wzr              // encoding: [0xbc,0xff,0x1f,0x1b]
   1639 // CHECK: smull    x11, w13, w17              // encoding: [0xab,0x7d,0x31,0x9b]
   1640 // CHECK: umull    x11, w13, w17              // encoding: [0xab,0x7d,0xb1,0x9b]
   1641 // CHECK: smnegl   x11, w13, w17              // encoding: [0xab,0xfd,0x31,0x9b]
   1642 // CHECK: umnegl   x11, w13, w17              // encoding: [0xab,0xfd,0xb1,0x9b]
   1643 
   1644 //------------------------------------------------------------------------------
   1645 // Exception generation
   1646 //------------------------------------------------------------------------------
   1647         svc #0
   1648         svc #65535
   1649 // CHECK: svc      #0                         // encoding: [0x01,0x00,0x00,0xd4]
   1650 // CHECK: svc      #65535                     // encoding: [0xe1,0xff,0x1f,0xd4]
   1651 
   1652         hvc #1
   1653         smc #12000
   1654         brk #12
   1655         hlt #123
   1656 // CHECK: hvc      #1                         // encoding: [0x22,0x00,0x00,0xd4]
   1657 // CHECK: smc      #12000                     // encoding: [0x03,0xdc,0x05,0xd4]
   1658 // CHECK: brk      #12                        // encoding: [0x80,0x01,0x20,0xd4]
   1659 // CHECK: hlt      #123                       // encoding: [0x60,0x0f,0x40,0xd4]
   1660 
   1661         dcps1 #42
   1662         dcps2 #9
   1663         dcps3 #1000
   1664 // CHECK: dcps1    #42                        // encoding: [0x41,0x05,0xa0,0xd4]
   1665 // CHECK: dcps2    #9                         // encoding: [0x22,0x01,0xa0,0xd4]
   1666 // CHECK: dcps3    #1000                      // encoding: [0x03,0x7d,0xa0,0xd4]
   1667 
   1668         dcps1
   1669         dcps2
   1670         dcps3
   1671 // CHECK: dcps1                               // encoding: [0x01,0x00,0xa0,0xd4]
   1672 // CHECK: dcps2                               // encoding: [0x02,0x00,0xa0,0xd4]
   1673 // CHECK: dcps3                               // encoding: [0x03,0x00,0xa0,0xd4]
   1674 
   1675 //------------------------------------------------------------------------------
   1676 // Extract (immediate)
   1677 //------------------------------------------------------------------------------
   1678 
   1679         extr w3, w5, w7, #0
   1680         extr w11, w13, w17, #31
   1681 // CHECK: extr     w3, w5, w7, #0             // encoding: [0xa3,0x00,0x87,0x13]
   1682 // CHECK: extr     w11, w13, w17, #31         // encoding: [0xab,0x7d,0x91,0x13]
   1683 
   1684         extr x3, x5, x7, #15
   1685         extr x11, x13, x17, #63
   1686 // CHECK: extr     x3, x5, x7, #15            // encoding: [0xa3,0x3c,0xc7,0x93]
   1687 // CHECK: extr     x11, x13, x17, #63         // encoding: [0xab,0xfd,0xd1,0x93]
   1688 
   1689         ror x19, x23, #24
   1690         ror x29, xzr, #63
   1691 // CHECK: extr     x19, x23, x23, #24         // encoding: [0xf3,0x62,0xd7,0x93]
   1692 // CHECK: extr     x29, xzr, xzr, #63         // encoding: [0xfd,0xff,0xdf,0x93]
   1693 
   1694         ror w9, w13, #31
   1695 // CHECK: extr     w9, w13, w13, #31          // encoding: [0xa9,0x7d,0x8d,0x13]
   1696 
   1697 //------------------------------------------------------------------------------
   1698 // Floating-point compare
   1699 //------------------------------------------------------------------------------
   1700 
   1701         fcmp s3, s5
   1702         fcmp s31, #0.0
   1703 // CHECK: fcmp    s3, s5                  // encoding: [0x60,0x20,0x25,0x1e]
   1704 // CHECK: fcmp    s31, #0.0               // encoding: [0xe8,0x23,0x20,0x1e]
   1705 
   1706         fcmpe s29, s30
   1707         fcmpe s15, #0.0
   1708 // CHECK: fcmpe   s29, s30                // encoding: [0xb0,0x23,0x3e,0x1e]
   1709 // CHECK: fcmpe   s15, #0.0               // encoding: [0xf8,0x21,0x20,0x1e]
   1710 
   1711         fcmp d4, d12
   1712         fcmp d23, #0.0
   1713 // CHECK: fcmp    d4, d12                 // encoding: [0x80,0x20,0x6c,0x1e]
   1714 // CHECK: fcmp    d23, #0.0               // encoding: [0xe8,0x22,0x60,0x1e]
   1715 
   1716         fcmpe d26, d22
   1717         fcmpe d29, #0.0
   1718 // CHECK: fcmpe   d26, d22                // encoding: [0x50,0x23,0x76,0x1e]
   1719 // CHECK: fcmpe   d29, #0.0               // encoding: [0xb8,0x23,0x60,0x1e]
   1720 
   1721 //------------------------------------------------------------------------------
   1722 // Floating-point conditional compare
   1723 //------------------------------------------------------------------------------
   1724 
   1725         fccmp s1, s31, #0, eq
   1726         fccmp s3, s0, #15, hs
   1727         fccmp s31, s15, #13, cs
   1728 // CHECK: fccmp    s1, s31, #0, eq         // encoding: [0x20,0x04,0x3f,0x1e]
   1729 // CHECK: fccmp    s3, s0, #15, hs         // encoding: [0x6f,0x24,0x20,0x1e]
   1730 // CHECK: fccmp    s31, s15, #13, hs       // encoding: [0xed,0x27,0x2f,0x1e]
   1731 
   1732         fccmp d9, d31, #0, le
   1733         fccmp d3, d0, #15, gt
   1734         fccmp d31, d5, #7, ne
   1735 // CHECK: fccmp    d9, d31, #0, le         // encoding: [0x20,0xd5,0x7f,0x1e]
   1736 // CHECK: fccmp    d3, d0, #15, gt         // encoding: [0x6f,0xc4,0x60,0x1e]
   1737 // CHECK: fccmp    d31, d5, #7, ne         // encoding: [0xe7,0x17,0x65,0x1e]
   1738 
   1739         fccmpe s1, s31, #0, eq
   1740         fccmpe s3, s0, #15, hs
   1741         fccmpe s31, s15, #13, cs
   1742 // CHECK: fccmpe    s1, s31, #0, eq         // encoding: [0x30,0x04,0x3f,0x1e]
   1743 // CHECK: fccmpe    s3, s0, #15, hs         // encoding: [0x7f,0x24,0x20,0x1e]
   1744 // CHECK: fccmpe    s31, s15, #13, hs       // encoding: [0xfd,0x27,0x2f,0x1e]
   1745 
   1746         fccmpe d9, d31, #0, le
   1747         fccmpe d3, d0, #15, gt
   1748         fccmpe d31, d5, #7, ne
   1749 // CHECK: fccmpe    d9, d31, #0, le         // encoding: [0x30,0xd5,0x7f,0x1e]
   1750 // CHECK: fccmpe    d3, d0, #15, gt         // encoding: [0x7f,0xc4,0x60,0x1e]
   1751 // CHECK: fccmpe    d31, d5, #7, ne         // encoding: [0xf7,0x17,0x65,0x1e]
   1752 
   1753 //------------------------------------------------------------------------------
   1754 // Floating-point conditional compare
   1755 //------------------------------------------------------------------------------
   1756 
   1757         fcsel s3, s20, s9, pl
   1758         fcsel d9, d10, d11, mi
   1759 // CHECK: fcsel   s3, s20, s9, pl         // encoding: [0x83,0x5e,0x29,0x1e]
   1760 // CHECK: fcsel   d9, d10, d11, mi        // encoding: [0x49,0x4d,0x6b,0x1e]
   1761 
   1762 //------------------------------------------------------------------------------
   1763 // Floating-point data-processing (1 source)
   1764 //------------------------------------------------------------------------------
   1765 
   1766         fmov s0, s1
   1767         fabs s2, s3
   1768         fneg s4, s5
   1769         fsqrt s6, s7
   1770         fcvt d8, s9
   1771         fcvt h10, s11
   1772         frintn s12, s13
   1773         frintp s14, s15
   1774         frintm s16, s17
   1775         frintz s18, s19
   1776         frinta s20, s21
   1777         frintx s22, s23
   1778         frinti s24, s25
   1779 // CHECK: fmov     s0, s1                // encoding: [0x20,0x40,0x20,0x1e]
   1780 // CHECK: fabs     s2, s3                // encoding: [0x62,0xc0,0x20,0x1e]
   1781 // CHECK: fneg     s4, s5                     // encoding: [0xa4,0x40,0x21,0x1e]
   1782 // CHECK: fsqrt    s6, s7                     // encoding: [0xe6,0xc0,0x21,0x1e]
   1783 // CHECK: fcvt     d8, s9                     // encoding: [0x28,0xc1,0x22,0x1e]
   1784 // CHECK: fcvt     h10, s11                   // encoding: [0x6a,0xc1,0x23,0x1e]
   1785 // CHECK: frintn   s12, s13                   // encoding: [0xac,0x41,0x24,0x1e]
   1786 // CHECK: frintp   s14, s15                   // encoding: [0xee,0xc1,0x24,0x1e]
   1787 // CHECK: frintm   s16, s17                   // encoding: [0x30,0x42,0x25,0x1e]
   1788 // CHECK: frintz   s18, s19                   // encoding: [0x72,0xc2,0x25,0x1e]
   1789 // CHECK: frinta   s20, s21                   // encoding: [0xb4,0x42,0x26,0x1e]
   1790 // CHECK: frintx   s22, s23                   // encoding: [0xf6,0x42,0x27,0x1e]
   1791 // CHECK: frinti   s24, s25                   // encoding: [0x38,0xc3,0x27,0x1e]
   1792 
   1793         fmov d0, d1
   1794         fabs d2, d3
   1795         fneg d4, d5
   1796         fsqrt d6, d7
   1797         fcvt s8, d9
   1798         fcvt h10, d11
   1799         frintn d12, d13
   1800         frintp d14, d15
   1801         frintm d16, d17
   1802         frintz d18, d19
   1803         frinta d20, d21
   1804         frintx d22, d23
   1805         frinti d24, d25
   1806 // CHECK: fmov     d0, d1                     // encoding: [0x20,0x40,0x60,0x1e]
   1807 // CHECK: fabs     d2, d3                     // encoding: [0x62,0xc0,0x60,0x1e]
   1808 // CHECK: fneg     d4, d5                     // encoding: [0xa4,0x40,0x61,0x1e]
   1809 // CHECK: fsqrt    d6, d7                     // encoding: [0xe6,0xc0,0x61,0x1e]
   1810 // CHECK: fcvt     s8, d9                     // encoding: [0x28,0x41,0x62,0x1e]
   1811 // CHECK: fcvt     h10, d11                   // encoding: [0x6a,0xc1,0x63,0x1e]
   1812 // CHECK: frintn   d12, d13                   // encoding: [0xac,0x41,0x64,0x1e]
   1813 // CHECK: frintp   d14, d15                   // encoding: [0xee,0xc1,0x64,0x1e]
   1814 // CHECK: frintm   d16, d17                   // encoding: [0x30,0x42,0x65,0x1e]
   1815 // CHECK: frintz   d18, d19                   // encoding: [0x72,0xc2,0x65,0x1e]
   1816 // CHECK: frinta   d20, d21                   // encoding: [0xb4,0x42,0x66,0x1e]
   1817 // CHECK: frintx   d22, d23                   // encoding: [0xf6,0x42,0x67,0x1e]
   1818 // CHECK: frinti   d24, d25                   // encoding: [0x38,0xc3,0x67,0x1e]
   1819 
   1820         fcvt s26, h27
   1821         fcvt d28, h29
   1822 // CHECK: fcvt     s26, h27                   // encoding: [0x7a,0x43,0xe2,0x1e]
   1823 // CHECK: fcvt     d28, h29                   // encoding: [0xbc,0xc3,0xe2,0x1e]
   1824 
   1825 //------------------------------------------------------------------------------
   1826 // Floating-point data-processing (2 sources)
   1827 //------------------------------------------------------------------------------
   1828 
   1829         fmul s20, s19, s17
   1830         fdiv s1, s2, s3
   1831         fadd s4, s5, s6
   1832         fsub s7, s8, s9
   1833         fmax s10, s11, s12
   1834         fmin s13, s14, s15
   1835         fmaxnm s16, s17, s18
   1836         fminnm s19, s20, s21
   1837         fnmul s22, s23, s24
   1838 // CHECK: fmul     s20, s19, s17              // encoding: [0x74,0x0a,0x31,0x1e]
   1839 // CHECK: fdiv     s1, s2, s3                 // encoding: [0x41,0x18,0x23,0x1e]
   1840 // CHECK: fadd     s4, s5, s6                 // encoding: [0xa4,0x28,0x26,0x1e]
   1841 // CHECK: fsub     s7, s8, s9                 // encoding: [0x07,0x39,0x29,0x1e]
   1842 // CHECK: fmax     s10, s11, s12              // encoding: [0x6a,0x49,0x2c,0x1e]
   1843 // CHECK: fmin     s13, s14, s15              // encoding: [0xcd,0x59,0x2f,0x1e]
   1844 // CHECK: fmaxnm   s16, s17, s18              // encoding: [0x30,0x6a,0x32,0x1e]
   1845 // CHECK: fminnm   s19, s20, s21              // encoding: [0x93,0x7a,0x35,0x1e]
   1846 // CHECK: fnmul    s22, s23, s24              // encoding: [0xf6,0x8a,0x38,0x1e]
   1847 
   1848         fmul d20, d19, d17
   1849         fdiv d1, d2, d3
   1850         fadd d4, d5, d6
   1851         fsub d7, d8, d9
   1852         fmax d10, d11, d12
   1853         fmin d13, d14, d15
   1854         fmaxnm d16, d17, d18
   1855         fminnm d19, d20, d21
   1856         fnmul d22, d23, d24
   1857 // CHECK: fmul     d20, d19, d17              // encoding: [0x74,0x0a,0x71,0x1e]
   1858 // CHECK: fdiv     d1, d2, d3                 // encoding: [0x41,0x18,0x63,0x1e]
   1859 // CHECK: fadd     d4, d5, d6                 // encoding: [0xa4,0x28,0x66,0x1e]
   1860 // CHECK: fsub     d7, d8, d9                 // encoding: [0x07,0x39,0x69,0x1e]
   1861 // CHECK: fmax     d10, d11, d12              // encoding: [0x6a,0x49,0x6c,0x1e]
   1862 // CHECK: fmin     d13, d14, d15              // encoding: [0xcd,0x59,0x6f,0x1e]
   1863 // CHECK: fmaxnm   d16, d17, d18              // encoding: [0x30,0x6a,0x72,0x1e]
   1864 // CHECK: fminnm   d19, d20, d21              // encoding: [0x93,0x7a,0x75,0x1e]
   1865 // CHECK: fnmul    d22, d23, d24              // encoding: [0xf6,0x8a,0x78,0x1e]
   1866 
   1867 //------------------------------------------------------------------------------
   1868 // Floating-point data-processing (3 sources)
   1869 //------------------------------------------------------------------------------
   1870 
   1871         fmadd s3, s5, s6, s31
   1872         fmadd d3, d13, d0, d23
   1873         fmsub s3, s5, s6, s31
   1874         fmsub d3, d13, d0, d23
   1875         fnmadd s3, s5, s6, s31
   1876         fnmadd d3, d13, d0, d23
   1877         fnmsub s3, s5, s6, s31
   1878         fnmsub d3, d13, d0, d23
   1879 // CHECK: fmadd   s3, s5, s6, s31         // encoding: [0xa3,0x7c,0x06,0x1f]
   1880 // CHECK: fmadd   d3, d13, d0, d23        // encoding: [0xa3,0x5d,0x40,0x1f]
   1881 // CHECK: fmsub   s3, s5, s6, s31         // encoding: [0xa3,0xfc,0x06,0x1f]
   1882 // CHECK: fmsub   d3, d13, d0, d23        // encoding: [0xa3,0xdd,0x40,0x1f]
   1883 // CHECK: fnmadd  s3, s5, s6, s31         // encoding: [0xa3,0x7c,0x26,0x1f]
   1884 // CHECK: fnmadd  d3, d13, d0, d23        // encoding: [0xa3,0x5d,0x60,0x1f]
   1885 // CHECK: fnmsub  s3, s5, s6, s31         // encoding: [0xa3,0xfc,0x26,0x1f]
   1886 // CHECK: fnmsub  d3, d13, d0, d23        // encoding: [0xa3,0xdd,0x60,0x1f]
   1887 
   1888 //------------------------------------------------------------------------------
   1889 // Floating-point <-> fixed-point conversion
   1890 //------------------------------------------------------------------------------
   1891 
   1892         fcvtzs w3, s5, #1
   1893         fcvtzs wzr, s20, #13
   1894         fcvtzs w19, s0, #32
   1895 // CHECK: fcvtzs  w3, s5, #1              // encoding: [0xa3,0xfc,0x18,0x1e]
   1896 // CHECK: fcvtzs  wzr, s20, #13           // encoding: [0x9f,0xce,0x18,0x1e]
   1897 // CHECK: fcvtzs  w19, s0, #32            // encoding: [0x13,0x80,0x18,0x1e]
   1898 
   1899         fcvtzs x3, s5, #1
   1900         fcvtzs x12, s30, #45
   1901         fcvtzs x19, s0, #64
   1902 // CHECK: fcvtzs  x3, s5, #1              // encoding: [0xa3,0xfc,0x18,0x9e]
   1903 // CHECK: fcvtzs  x12, s30, #45           // encoding: [0xcc,0x4f,0x18,0x9e]
   1904 // CHECK: fcvtzs  x19, s0, #64            // encoding: [0x13,0x00,0x18,0x9e]
   1905 
   1906         fcvtzs w3, d5, #1
   1907         fcvtzs wzr, d20, #13
   1908         fcvtzs w19, d0, #32
   1909 // CHECK: fcvtzs  w3, d5, #1              // encoding: [0xa3,0xfc,0x58,0x1e]
   1910 // CHECK: fcvtzs  wzr, d20, #13           // encoding: [0x9f,0xce,0x58,0x1e]
   1911 // CHECK: fcvtzs  w19, d0, #32            // encoding: [0x13,0x80,0x58,0x1e]
   1912 
   1913         fcvtzs x3, d5, #1
   1914         fcvtzs x12, d30, #45
   1915         fcvtzs x19, d0, #64
   1916 // CHECK: fcvtzs  x3, d5, #1              // encoding: [0xa3,0xfc,0x58,0x9e]
   1917 // CHECK: fcvtzs  x12, d30, #45           // encoding: [0xcc,0x4f,0x58,0x9e]
   1918 // CHECK: fcvtzs  x19, d0, #64            // encoding: [0x13,0x00,0x58,0x9e]
   1919 
   1920         fcvtzu w3, s5, #1
   1921         fcvtzu wzr, s20, #13
   1922         fcvtzu w19, s0, #32
   1923 // CHECK: fcvtzu  w3, s5, #1              // encoding: [0xa3,0xfc,0x19,0x1e]
   1924 // CHECK: fcvtzu  wzr, s20, #13           // encoding: [0x9f,0xce,0x19,0x1e]
   1925 // CHECK: fcvtzu  w19, s0, #32            // encoding: [0x13,0x80,0x19,0x1e]
   1926 
   1927         fcvtzu x3, s5, #1
   1928         fcvtzu x12, s30, #45
   1929         fcvtzu x19, s0, #64
   1930 // CHECK: fcvtzu  x3, s5, #1              // encoding: [0xa3,0xfc,0x19,0x9e]
   1931 // CHECK: fcvtzu  x12, s30, #45           // encoding: [0xcc,0x4f,0x19,0x9e]
   1932 // CHECK: fcvtzu  x19, s0, #64            // encoding: [0x13,0x00,0x19,0x9e]
   1933 
   1934         fcvtzu w3, d5, #1
   1935         fcvtzu wzr, d20, #13
   1936         fcvtzu w19, d0, #32
   1937 // CHECK: fcvtzu  w3, d5, #1              // encoding: [0xa3,0xfc,0x59,0x1e]
   1938 // CHECK: fcvtzu  wzr, d20, #13           // encoding: [0x9f,0xce,0x59,0x1e]
   1939 // CHECK: fcvtzu  w19, d0, #32            // encoding: [0x13,0x80,0x59,0x1e]
   1940 
   1941         fcvtzu x3, d5, #1
   1942         fcvtzu x12, d30, #45
   1943         fcvtzu x19, d0, #64
   1944 // CHECK: fcvtzu  x3, d5, #1              // encoding: [0xa3,0xfc,0x59,0x9e]
   1945 // CHECK: fcvtzu  x12, d30, #45           // encoding: [0xcc,0x4f,0x59,0x9e]
   1946 // CHECK: fcvtzu  x19, d0, #64            // encoding: [0x13,0x00,0x59,0x9e]
   1947 
   1948         scvtf s23, w19, #1
   1949         scvtf s31, wzr, #20
   1950         scvtf s14, w0, #32
   1951 // CHECK: scvtf   s23, w19, #1            // encoding: [0x77,0xfe,0x02,0x1e]
   1952 // CHECK: scvtf   s31, wzr, #20           // encoding: [0xff,0xb3,0x02,0x1e]
   1953 // CHECK: scvtf   s14, w0, #32            // encoding: [0x0e,0x80,0x02,0x1e]
   1954 
   1955         scvtf s23, x19, #1
   1956         scvtf s31, xzr, #20
   1957         scvtf s14, x0, #64
   1958 // CHECK: scvtf   s23, x19, #1            // encoding: [0x77,0xfe,0x02,0x9e]
   1959 // CHECK: scvtf   s31, xzr, #20           // encoding: [0xff,0xb3,0x02,0x9e]
   1960 // CHECK: scvtf   s14, x0, #64            // encoding: [0x0e,0x00,0x02,0x9e]
   1961 
   1962         scvtf d23, w19, #1
   1963         scvtf d31, wzr, #20
   1964         scvtf d14, w0, #32
   1965 // CHECK: scvtf   d23, w19, #1            // encoding: [0x77,0xfe,0x42,0x1e]
   1966 // CHECK: scvtf   d31, wzr, #20           // encoding: [0xff,0xb3,0x42,0x1e]
   1967 // CHECK: scvtf   d14, w0, #32            // encoding: [0x0e,0x80,0x42,0x1e]
   1968 
   1969         scvtf d23, x19, #1
   1970         scvtf d31, xzr, #20
   1971         scvtf d14, x0, #64
   1972 // CHECK: scvtf   d23, x19, #1            // encoding: [0x77,0xfe,0x42,0x9e]
   1973 // CHECK: scvtf   d31, xzr, #20           // encoding: [0xff,0xb3,0x42,0x9e]
   1974 // CHECK: scvtf   d14, x0, #64            // encoding: [0x0e,0x00,0x42,0x9e]
   1975 
   1976         ucvtf s23, w19, #1
   1977         ucvtf s31, wzr, #20
   1978         ucvtf s14, w0, #32
   1979 // CHECK: ucvtf   s23, w19, #1            // encoding: [0x77,0xfe,0x03,0x1e]
   1980 // CHECK: ucvtf   s31, wzr, #20           // encoding: [0xff,0xb3,0x03,0x1e]
   1981 // CHECK: ucvtf   s14, w0, #32            // encoding: [0x0e,0x80,0x03,0x1e]
   1982 
   1983         ucvtf s23, x19, #1
   1984         ucvtf s31, xzr, #20
   1985         ucvtf s14, x0, #64
   1986 // CHECK: ucvtf   s23, x19, #1            // encoding: [0x77,0xfe,0x03,0x9e]
   1987 // CHECK: ucvtf   s31, xzr, #20           // encoding: [0xff,0xb3,0x03,0x9e]
   1988 // CHECK: ucvtf   s14, x0, #64            // encoding: [0x0e,0x00,0x03,0x9e]
   1989 
   1990         ucvtf d23, w19, #1
   1991         ucvtf d31, wzr, #20
   1992         ucvtf d14, w0, #32
   1993 // CHECK: ucvtf   d23, w19, #1            // encoding: [0x77,0xfe,0x43,0x1e]
   1994 // CHECK: ucvtf   d31, wzr, #20           // encoding: [0xff,0xb3,0x43,0x1e]
   1995 // CHECK: ucvtf   d14, w0, #32            // encoding: [0x0e,0x80,0x43,0x1e]
   1996 
   1997         ucvtf d23, x19, #1
   1998         ucvtf d31, xzr, #20
   1999         ucvtf d14, x0, #64
   2000 // CHECK: ucvtf   d23, x19, #1            // encoding: [0x77,0xfe,0x43,0x9e]
   2001 // CHECK: ucvtf   d31, xzr, #20           // encoding: [0xff,0xb3,0x43,0x9e]
   2002 // CHECK: ucvtf   d14, x0, #64            // encoding: [0x0e,0x00,0x43,0x9e]
   2003 
   2004 //------------------------------------------------------------------------------
   2005 // Floating-point <-> integer conversion
   2006 //------------------------------------------------------------------------------
   2007         fcvtns w3, s31
   2008         fcvtns xzr, s12
   2009         fcvtnu wzr, s12
   2010         fcvtnu x0, s0
   2011 // CHECK: fcvtns   w3, s31                    // encoding: [0xe3,0x03,0x20,0x1e]
   2012 // CHECK: fcvtns   xzr, s12                   // encoding: [0x9f,0x01,0x20,0x9e]
   2013 // CHECK: fcvtnu   wzr, s12                   // encoding: [0x9f,0x01,0x21,0x1e]
   2014 // CHECK: fcvtnu   x0, s0                     // encoding: [0x00,0x00,0x21,0x9e]
   2015 
   2016         fcvtps wzr, s9
   2017         fcvtps x12, s20
   2018         fcvtpu w30, s23
   2019         fcvtpu x29, s3
   2020 // CHECK: fcvtps   wzr, s9                    // encoding: [0x3f,0x01,0x28,0x1e]
   2021 // CHECK: fcvtps   x12, s20                   // encoding: [0x8c,0x02,0x28,0x9e]
   2022 // CHECK: fcvtpu   w30, s23                   // encoding: [0xfe,0x02,0x29,0x1e]
   2023 // CHECK: fcvtpu   x29, s3                    // encoding: [0x7d,0x00,0x29,0x9e]
   2024 
   2025         fcvtms w2, s3
   2026         fcvtms x4, s5
   2027         fcvtmu w6, s7
   2028         fcvtmu x8, s9
   2029 // CHECK: fcvtms   w2, s3                     // encoding: [0x62,0x00,0x30,0x1e]
   2030 // CHECK: fcvtms   x4, s5                     // encoding: [0xa4,0x00,0x30,0x9e]
   2031 // CHECK: fcvtmu   w6, s7                     // encoding: [0xe6,0x00,0x31,0x1e]
   2032 // CHECK: fcvtmu   x8, s9                     // encoding: [0x28,0x01,0x31,0x9e]
   2033 
   2034         fcvtzs w10, s11
   2035         fcvtzs x12, s13
   2036         fcvtzu w14, s15
   2037         fcvtzu x15, s16
   2038 // CHECK: fcvtzs   w10, s11                   // encoding: [0x6a,0x01,0x38,0x1e]
   2039 // CHECK: fcvtzs   x12, s13                   // encoding: [0xac,0x01,0x38,0x9e]
   2040 // CHECK: fcvtzu   w14, s15                   // encoding: [0xee,0x01,0x39,0x1e]
   2041 // CHECK: fcvtzu   x15, s16                   // encoding: [0x0f,0x02,0x39,0x9e]
   2042 
   2043         scvtf s17, w18
   2044         scvtf s19, x20
   2045         ucvtf s21, w22
   2046         scvtf s23, x24
   2047 // CHECK: scvtf    s17, w18                   // encoding: [0x51,0x02,0x22,0x1e]
   2048 // CHECK: scvtf    s19, x20                   // encoding: [0x93,0x02,0x22,0x9e]
   2049 // CHECK: ucvtf    s21, w22                   // encoding: [0xd5,0x02,0x23,0x1e]
   2050 // CHECK: scvtf    s23, x24                   // encoding: [0x17,0x03,0x22,0x9e]
   2051 
   2052         fcvtas w25, s26
   2053         fcvtas x27, s28
   2054         fcvtau w29, s30
   2055         fcvtau xzr, s0
   2056 // CHECK: fcvtas   w25, s26                   // encoding: [0x59,0x03,0x24,0x1e]
   2057 // CHECK: fcvtas   x27, s28                   // encoding: [0x9b,0x03,0x24,0x9e]
   2058 // CHECK: fcvtau   w29, s30                   // encoding: [0xdd,0x03,0x25,0x1e]
   2059 // CHECK: fcvtau   xzr, s0                    // encoding: [0x1f,0x00,0x25,0x9e]
   2060 
   2061         fcvtns w3, d31
   2062         fcvtns xzr, d12
   2063         fcvtnu wzr, d12
   2064         fcvtnu x0, d0
   2065 // CHECK: fcvtns   w3, d31                    // encoding: [0xe3,0x03,0x60,0x1e]
   2066 // CHECK: fcvtns   xzr, d12                   // encoding: [0x9f,0x01,0x60,0x9e]
   2067 // CHECK: fcvtnu   wzr, d12                   // encoding: [0x9f,0x01,0x61,0x1e]
   2068 // CHECK: fcvtnu   x0, d0                     // encoding: [0x00,0x00,0x61,0x9e]
   2069 
   2070         fcvtps wzr, d9
   2071         fcvtps x12, d20
   2072         fcvtpu w30, d23
   2073         fcvtpu x29, d3
   2074 // CHECK: fcvtps   wzr, d9                    // encoding: [0x3f,0x01,0x68,0x1e]
   2075 // CHECK: fcvtps   x12, d20                   // encoding: [0x8c,0x02,0x68,0x9e]
   2076 // CHECK: fcvtpu   w30, d23                   // encoding: [0xfe,0x02,0x69,0x1e]
   2077 // CHECK: fcvtpu   x29, d3                    // encoding: [0x7d,0x00,0x69,0x9e]
   2078 
   2079         fcvtms w2, d3
   2080         fcvtms x4, d5
   2081         fcvtmu w6, d7
   2082         fcvtmu x8, d9
   2083 // CHECK: fcvtms   w2, d3                     // encoding: [0x62,0x00,0x70,0x1e]
   2084 // CHECK: fcvtms   x4, d5                     // encoding: [0xa4,0x00,0x70,0x9e]
   2085 // CHECK: fcvtmu   w6, d7                     // encoding: [0xe6,0x00,0x71,0x1e]
   2086 // CHECK: fcvtmu   x8, d9                     // encoding: [0x28,0x01,0x71,0x9e]
   2087 
   2088         fcvtzs w10, d11
   2089         fcvtzs x12, d13
   2090         fcvtzu w14, d15
   2091         fcvtzu x15, d16
   2092 // CHECK: fcvtzs   w10, d11                   // encoding: [0x6a,0x01,0x78,0x1e]
   2093 // CHECK: fcvtzs   x12, d13                   // encoding: [0xac,0x01,0x78,0x9e]
   2094 // CHECK: fcvtzu   w14, d15                   // encoding: [0xee,0x01,0x79,0x1e]
   2095 // CHECK: fcvtzu   x15, d16                   // encoding: [0x0f,0x02,0x79,0x9e]
   2096 
   2097         scvtf d17, w18
   2098         scvtf d19, x20
   2099         ucvtf d21, w22
   2100         ucvtf d23, x24
   2101 // CHECK: scvtf    d17, w18                   // encoding: [0x51,0x02,0x62,0x1e]
   2102 // CHECK: scvtf    d19, x20                   // encoding: [0x93,0x02,0x62,0x9e]
   2103 // CHECK: ucvtf    d21, w22                   // encoding: [0xd5,0x02,0x63,0x1e]
   2104 // CHECK: ucvtf    d23, x24                   // encoding: [0x17,0x03,0x63,0x9e]
   2105 
   2106         fcvtas w25, d26
   2107         fcvtas x27, d28
   2108         fcvtau w29, d30
   2109         fcvtau xzr, d0
   2110 // CHECK: fcvtas   w25, d26                   // encoding: [0x59,0x03,0x64,0x1e]
   2111 // CHECK: fcvtas   x27, d28                   // encoding: [0x9b,0x03,0x64,0x9e]
   2112 // CHECK: fcvtau   w29, d30                   // encoding: [0xdd,0x03,0x65,0x1e]
   2113 // CHECK: fcvtau   xzr, d0                    // encoding: [0x1f,0x00,0x65,0x9e]
   2114 
   2115         fmov w3, s9
   2116         fmov s9, w3
   2117 // CHECK: fmov     w3, s9                     // encoding: [0x23,0x01,0x26,0x1e]
   2118 // CHECK: fmov     s9, w3                     // encoding: [0x69,0x00,0x27,0x1e]
   2119 
   2120         fmov x20, d31
   2121         fmov d1, x15
   2122 // CHECK: fmov     x20, d31                   // encoding: [0xf4,0x03,0x66,0x9e]
   2123 // CHECK: fmov     d1, x15                    // encoding: [0xe1,0x01,0x67,0x9e]
   2124 
   2125         fmov x3, v12.d[1]
   2126         fmov v1.d[1], x19
   2127         fmov v3.2d[1], xzr
   2128 // CHECK: fmov     x3, v12.d[1]               // encoding: [0x83,0x01,0xae,0x9e]
   2129 // CHECK: fmov     v1.d[1], x19               // encoding: [0x61,0x02,0xaf,0x9e]
   2130 // CHECK: fmov     v3.d[1], xzr               // encoding: [0xe3,0x03,0xaf,0x9e]
   2131 
   2132 //------------------------------------------------------------------------------
   2133 // Floating-point immediate
   2134 //------------------------------------------------------------------------------
   2135 
   2136         fmov s2, #0.125
   2137         fmov s3, #1.0
   2138         fmov d30, #16.0
   2139 // CHECK: fmov     s2, #0.12500000            // encoding: [0x02,0x10,0x28,0x1e]
   2140 // CHECK: fmov     s3, #1.00000000            // encoding: [0x03,0x10,0x2e,0x1e]
   2141 // CHECK: fmov     d30, #16.00000000          // encoding: [0x1e,0x10,0x66,0x1e]
   2142 
   2143         fmov s4, #1.0625
   2144         fmov d10, #1.9375
   2145 // CHECK: fmov     s4, #1.06250000            // encoding: [0x04,0x30,0x2e,0x1e]
   2146 // CHECK: fmov     d10, #1.93750000           // encoding: [0x0a,0xf0,0x6f,0x1e]
   2147 
   2148         fmov s12, #-1.0
   2149 // CHECK: fmov     s12, #-1.00000000          // encoding: [0x0c,0x10,0x3e,0x1e]
   2150 
   2151         fmov d16, #8.5
   2152 // CHECK: fmov     d16, #8.50000000           // encoding: [0x10,0x30,0x64,0x1e]
   2153 
   2154 //------------------------------------------------------------------------------
   2155 // Load-register (literal)
   2156 //------------------------------------------------------------------------------
   2157         ldr w3, here
   2158         ldr x29, there
   2159         ldrsw xzr, everywhere
   2160 // CHECK: ldr     w3, here                // encoding: [0x03'A',A,A,0x18'A']
   2161 // CHECK:                                 //   fixup A - offset: 0, value: here, kind: fixup_a64_ld_prel
   2162 // CHECK: ldr     x29, there              // encoding: [0x1d'A',A,A,0x58'A']
   2163 // CHECK:                                 //   fixup A - offset: 0, value: there, kind: fixup_a64_ld_prel
   2164 // CHECK: ldrsw   xzr, everywhere         // encoding: [0x1f'A',A,A,0x98'A']
   2165 // CHECK:                                 //   fixup A - offset: 0, value: everywhere, kind: fixup_a64_ld_prel
   2166 
   2167         ldr s0, who_knows
   2168         ldr d0, i_dont
   2169         ldr q0, there_must_be_a_better_way
   2170 // CHECK: ldr     s0, who_knows           // encoding: [A,A,A,0x1c'A']
   2171 // CHECK:                                 //   fixup A - offset: 0, value: who_knows, kind: fixup_a64_ld_prel
   2172 // CHECK: ldr     d0, i_dont              // encoding: [A,A,A,0x5c'A']
   2173 // CHECK:                                 //   fixup A - offset: 0, value: i_dont, kind: fixup_a64_ld_prel
   2174 // CHECK: ldr     q0, there_must_be_a_better_way // encoding: [A,A,A,0x9c'A']
   2175 // CHECK:                                 //   fixup A - offset: 0, value: there_must_be_a_better_way, kind: fixup_a64_ld_prel
   2176 
   2177         ldr w0, #1048572
   2178         ldr x10, #-1048576
   2179 // CHECK: ldr     w0, #1048572            // encoding: [0xe0,0xff,0x7f,0x18]
   2180 // CHECK: ldr     x10, #-1048576          // encoding: [0x0a,0x00,0x80,0x58]
   2181 
   2182         prfm pldl1strm, nowhere
   2183         prfm #22, somewhere
   2184 // CHECK: prfm    pldl1strm, nowhere      // encoding: [0x01'A',A,A,0xd8'A']
   2185 // CHECK:                                 //   fixup A - offset: 0, value: nowhere, kind: fixup_a64_ld_prel
   2186 // CHECK: prfm    #22, somewhere          // encoding: [0x16'A',A,A,0xd8'A']
   2187 // CHECK:                                 //   fixup A - offset: 0, value: somewhere, kind: fixup_a64_ld_prel
   2188 
   2189 //------------------------------------------------------------------------------
   2190 // Floating-point immediate
   2191 //------------------------------------------------------------------------------
   2192 
   2193         fmov s2, #0.125
   2194         fmov s3, #1.0
   2195         fmov d30, #16.0
   2196 // CHECK: fmov     s2, #0.12500000            // encoding: [0x02,0x10,0x28,0x1e]
   2197 // CHECK: fmov     s3, #1.00000000            // encoding: [0x03,0x10,0x2e,0x1e]
   2198 // CHECK: fmov     d30, #16.00000000          // encoding: [0x1e,0x10,0x66,0x1e]
   2199 
   2200         fmov s4, #1.0625
   2201         fmov d10, #1.9375
   2202 // CHECK: fmov     s4, #1.06250000            // encoding: [0x04,0x30,0x2e,0x1e]
   2203 // CHECK: fmov     d10, #1.93750000           // encoding: [0x0a,0xf0,0x6f,0x1e]
   2204 
   2205         fmov s12, #-1.0
   2206 // CHECK: fmov     s12, #-1.00000000          // encoding: [0x0c,0x10,0x3e,0x1e]
   2207 
   2208         fmov d16, #8.5
   2209 // CHECK: fmov     d16, #8.50000000           // encoding: [0x10,0x30,0x64,0x1e]
   2210 
   2211 //------------------------------------------------------------------------------
   2212 // Load/store exclusive
   2213 //------------------------------------------------------------------------------
   2214 
   2215         stxrb      w1, w2, [x3, #0]
   2216         stxrh      w2, w3, [x4]
   2217         stxr       wzr, w4, [sp]
   2218         stxr       w5, x6, [x7]
   2219 // CHECK: stxrb    w1, w2, [x3]              // encoding: [0x62,0x7c,0x01,0x08]
   2220 // CHECK: stxrh    w2, w3, [x4]              // encoding: [0x83,0x7c,0x02,0x48]
   2221 // CHECK: stxr     wzr, w4, [sp]             // encoding: [0xe4,0x7f,0x1f,0x88]
   2222 // CHECK: stxr     w5, x6, [x7]              // encoding: [0xe6,0x7c,0x05,0xc8]
   2223 
   2224         ldxrb      w7, [x9]
   2225         ldxrh      wzr, [x10]
   2226         ldxr       w9, [sp]
   2227         ldxr       x10, [x11]
   2228 // CHECK: ldxrb    w7, [x9]                  // encoding: [0x27,0x7d,0x5f,0x08]
   2229 // CHECK: ldxrh    wzr, [x10]                // encoding: [0x5f,0x7d,0x5f,0x48]
   2230 // CHECK: ldxr     w9, [sp]                  // encoding: [0xe9,0x7f,0x5f,0x88]
   2231 // CHECK: ldxr     x10, [x11]                // encoding: [0x6a,0x7d,0x5f,0xc8]
   2232 
   2233         stxp       w11, w12, w13, [x14]
   2234         stxp       wzr, x23, x14, [x15]
   2235 // CHECK: stxp     w11, w12, w13, [x14]      // encoding: [0xcc,0x35,0x2b,0x88]
   2236 // CHECK: stxp     wzr, x23, x14, [x15]      // encoding: [0xf7,0x39,0x3f,0xc8]
   2237 
   2238         ldxp       w12, wzr, [sp]
   2239         ldxp       x13, x14, [x15]
   2240 // CHECK: ldxp     w12, wzr, [sp]            // encoding: [0xec,0x7f,0x7f,0x88]
   2241 // CHECK: ldxp     x13, x14, [x15]           // encoding: [0xed,0x39,0x7f,0xc8]
   2242 
   2243         stlxrb     w14, w15, [x16]
   2244         stlxrh     w15, w16, [x17,#0]
   2245         stlxr      wzr, w17, [sp]
   2246         stlxr      w18, x19, [x20]
   2247 // CHECK: stlxrb   w14, w15, [x16]           // encoding: [0x0f,0xfe,0x0e,0x08]
   2248 // CHECK: stlxrh   w15, w16, [x17]           // encoding: [0x30,0xfe,0x0f,0x48]
   2249 // CHECK: stlxr    wzr, w17, [sp]            // encoding: [0xf1,0xff,0x1f,0x88]
   2250 // CHECK: stlxr    w18, x19, [x20]           // encoding: [0x93,0xfe,0x12,0xc8]
   2251 
   2252         ldaxrb     w19, [x21]
   2253         ldaxrh     w20, [sp]
   2254         ldaxr      wzr, [x22]
   2255         ldaxr      x21, [x23]
   2256 // CHECK: ldaxrb   w19, [x21]                // encoding: [0xb3,0xfe,0x5f,0x08]
   2257 // CHECK: ldaxrh   w20, [sp]                 // encoding: [0xf4,0xff,0x5f,0x48]
   2258 // CHECK: ldaxr    wzr, [x22]                // encoding: [0xdf,0xfe,0x5f,0x88]
   2259 // CHECK: ldaxr    x21, [x23]                // encoding: [0xf5,0xfe,0x5f,0xc8]
   2260 
   2261         stlxp      wzr, w22, w23, [x24]
   2262         stlxp      w25, x26, x27, [sp]
   2263 // CHECK: stlxp    wzr, w22, w23, [x24]      // encoding: [0x16,0xdf,0x3f,0x88]
   2264 // CHECK: stlxp    w25, x26, x27, [sp]       // encoding: [0xfa,0xef,0x39,0xc8]
   2265 
   2266         ldaxp      w26, wzr, [sp]
   2267         ldaxp      x27, x28, [x30]
   2268 // CHECK: ldaxp    w26, wzr, [sp]            // encoding: [0xfa,0xff,0x7f,0x88]
   2269 // CHECK: ldaxp    x27, x28, [x30]           // encoding: [0xdb,0xf3,0x7f,0xc8]
   2270 
   2271         stlrb      w27, [sp]
   2272         stlrh      w28, [x0]
   2273         stlr       wzr, [x1]
   2274         stlr       x30, [x2]
   2275 // CHECK: stlrb    w27, [sp]                 // encoding: [0xfb,0xff,0x9f,0x08]
   2276 // CHECK: stlrh    w28, [x0]                 // encoding: [0x1c,0xfc,0x9f,0x48]
   2277 // CHECK: stlr     wzr, [x1]                 // encoding: [0x3f,0xfc,0x9f,0x88]
   2278 // CHECK: stlr     x30, [x2]                 // encoding: [0x5e,0xfc,0x9f,0xc8]
   2279 
   2280         ldarb      w29, [sp]
   2281         ldarh      w30, [x0]
   2282         ldar       wzr, [x1]
   2283         ldar       x1, [x2]
   2284 // CHECK: ldarb    w29, [sp]                 // encoding: [0xfd,0xff,0xdf,0x08]
   2285 // CHECK: ldarh    w30, [x0]                 // encoding: [0x1e,0xfc,0xdf,0x48]
   2286 // CHECK: ldar     wzr, [x1]                 // encoding: [0x3f,0xfc,0xdf,0x88]
   2287 // CHECK: ldar     x1, [x2]                  // encoding: [0x41,0xfc,0xdf,0xc8]
   2288 
   2289         stlxp      wzr, w22, w23, [x24,#0]
   2290 // CHECK: stlxp    wzr, w22, w23, [x24]      // encoding: [0x16,0xdf,0x3f,0x88]
   2291 
   2292 //------------------------------------------------------------------------------
   2293 // Load/store (unaligned immediate)
   2294 //------------------------------------------------------------------------------
   2295 
   2296         sturb w9, [sp, #0]
   2297         sturh wzr, [x12, #255]
   2298         stur w16, [x0, #-256]
   2299         stur x28, [x14, #1]
   2300 // CHECK: sturb    w9, [sp]                   // encoding: [0xe9,0x03,0x00,0x38]
   2301 // CHECK: sturh    wzr, [x12, #255]           // encoding: [0x9f,0xf1,0x0f,0x78]
   2302 // CHECK: stur     w16, [x0, #-256]           // encoding: [0x10,0x00,0x10,0xb8]
   2303 // CHECK: stur     x28, [x14, #1]             // encoding: [0xdc,0x11,0x00,0xf8]
   2304 
   2305         ldurb w1, [x20, #255]
   2306         ldurh w20, [x1, #255]
   2307         ldur w12, [sp, #255]
   2308         ldur xzr, [x12, #255]
   2309 // CHECK: ldurb    w1, [x20, #255]            // encoding: [0x81,0xf2,0x4f,0x38]
   2310 // CHECK: ldurh    w20, [x1, #255]            // encoding: [0x34,0xf0,0x4f,0x78]
   2311 // CHECK: ldur     w12, [sp, #255]            // encoding: [0xec,0xf3,0x4f,0xb8]
   2312 // CHECK: ldur     xzr, [x12, #255]           // encoding: [0x9f,0xf1,0x4f,0xf8]
   2313 
   2314         ldursb x9, [x7, #-256]
   2315         ldursh x17, [x19, #-256]
   2316         ldursw x20, [x15, #-256]
   2317         ldursw x13, [x2]
   2318         prfum pldl2keep, [sp, #-256]
   2319         ldursb w19, [x1, #-256]
   2320         ldursh w15, [x21, #-256]
   2321 // CHECK: ldursb   x9, [x7, #-256]            // encoding: [0xe9,0x00,0x90,0x38]
   2322 // CHECK: ldursh   x17, [x19, #-256]          // encoding: [0x71,0x02,0x90,0x78]
   2323 // CHECK: ldursw   x20, [x15, #-256]          // encoding: [0xf4,0x01,0x90,0xb8]
   2324 // CHECK: ldursw   x13, [x2]                  // encoding: [0x4d,0x00,0x80,0xb8]
   2325 // CHECK: prfum    pldl2keep, [sp, #-256]     // encoding: [0xe2,0x03,0x90,0xf8]
   2326 // CHECK: ldursb   w19, [x1, #-256]           // encoding: [0x33,0x00,0xd0,0x38]
   2327 // CHECK: ldursh   w15, [x21, #-256]          // encoding: [0xaf,0x02,0xd0,0x78]
   2328 
   2329         stur b0, [sp, #1]
   2330         stur h12, [x12, #-1]
   2331         stur s15, [x0, #255]
   2332         stur d31, [x5, #25]
   2333         stur q9, [x5]
   2334 // CHECK: stur     b0, [sp, #1]               // encoding: [0xe0,0x13,0x00,0x3c]
   2335 // CHECK: stur     h12, [x12, #-1]            // encoding: [0x8c,0xf1,0x1f,0x7c]
   2336 // CHECK: stur     s15, [x0, #255]            // encoding: [0x0f,0xf0,0x0f,0xbc]
   2337 // CHECK: stur     d31, [x5, #25]             // encoding: [0xbf,0x90,0x01,0xfc]
   2338 // CHECK: stur     q9, [x5]                   // encoding: [0xa9,0x00,0x80,0x3c]
   2339 
   2340         ldur b3, [sp]
   2341         ldur h5, [x4, #-256]
   2342         ldur s7, [x12, #-1]
   2343         ldur d11, [x19, #4]
   2344         ldur q13, [x1, #2]
   2345 // CHECK: ldur     b3, [sp]                   // encoding: [0xe3,0x03,0x40,0x3c]
   2346 // CHECK: ldur     h5, [x4, #-256]            // encoding: [0x85,0x00,0x50,0x7c]
   2347 // CHECK: ldur     s7, [x12, #-1]             // encoding: [0x87,0xf1,0x5f,0xbc]
   2348 // CHECK: ldur     d11, [x19, #4]             // encoding: [0x6b,0x42,0x40,0xfc]
   2349 // CHECK: ldur     q13, [x1, #2]              // encoding: [0x2d,0x20,0xc0,0x3c]
   2350 
   2351 //------------------------------------------------------------------------------
   2352 // Load/store (unsigned immediate)
   2353 //------------------------------------------------------------------------------
   2354 
   2355 //// Basic addressing mode limits: 8 byte access
   2356         ldr x0, [x0]
   2357         ldr x4, [x29, #0]
   2358         ldr x30, [x12, #32760]
   2359         ldr x20, [sp, #8]
   2360 // CHECK: ldr      x0, [x0]                   // encoding: [0x00,0x00,0x40,0xf9]
   2361 // CHECK: ldr      x4, [x29]                  // encoding: [0xa4,0x03,0x40,0xf9]
   2362 // CHECK: ldr      x30, [x12, #32760]         // encoding: [0x9e,0xfd,0x7f,0xf9]
   2363 // CHECK: ldr      x20, [sp, #8]              // encoding: [0xf4,0x07,0x40,0xf9]
   2364 
   2365 //// Rt treats 31 as zero-register
   2366         ldr xzr, [sp]
   2367 // CHECK: ldr      xzr, [sp]                  // encoding: [0xff,0x03,0x40,0xf9]
   2368 
   2369         //// 4-byte load, check still 64-bit address, limits
   2370         ldr w2, [sp]
   2371         ldr w17, [sp, #16380]
   2372         ldr w13, [x2, #4]
   2373 // CHECK: ldr      w2, [sp]                   // encoding: [0xe2,0x03,0x40,0xb9]
   2374 // CHECK: ldr      w17, [sp, #16380]          // encoding: [0xf1,0xff,0x7f,0xb9]
   2375 // CHECK: ldr      w13, [x2, #4]              // encoding: [0x4d,0x04,0x40,0xb9]
   2376 
   2377 //// Signed 4-byte load. Limits.
   2378         ldrsw x2, [x5,#4]
   2379         ldrsw x23, [sp, #16380]
   2380 // CHECK: ldrsw    x2, [x5, #4]               // encoding: [0xa2,0x04,0x80,0xb9]
   2381 // CHECK: ldrsw    x23, [sp, #16380]          // encoding: [0xf7,0xff,0xbf,0xb9]
   2382 
   2383 ////  2-byte loads
   2384         ldrh w2, [x4]
   2385         ldrsh w23, [x6, #8190]
   2386         ldrsh wzr, [sp, #2]
   2387         ldrsh x29, [x2, #2]
   2388 // CHECK: ldrh     w2, [x4]                   // encoding: [0x82,0x00,0x40,0x79]
   2389 // CHECK: ldrsh    w23, [x6, #8190]           // encoding: [0xd7,0xfc,0xff,0x79]
   2390 // CHECK: ldrsh    wzr, [sp, #2]              // encoding: [0xff,0x07,0xc0,0x79]
   2391 // CHECK: ldrsh    x29, [x2, #2]              // encoding: [0x5d,0x04,0x80,0x79]
   2392 
   2393 //// 1-byte loads
   2394         ldrb w26, [x3, #121]
   2395         ldrb w12, [x2, #0]
   2396         ldrsb w27, [sp, #4095]
   2397         ldrsb xzr, [x15]
   2398 // CHECK: ldrb     w26, [x3, #121]            // encoding: [0x7a,0xe4,0x41,0x39]
   2399 // CHECK: ldrb     w12, [x2]                  // encoding: [0x4c,0x00,0x40,0x39]
   2400 // CHECK: ldrsb    w27, [sp, #4095]           // encoding: [0xfb,0xff,0xff,0x39]
   2401 // CHECK: ldrsb    xzr, [x15]                 // encoding: [0xff,0x01,0x80,0x39]
   2402 
   2403 //// Stores
   2404         str x30, [sp]
   2405         str w20, [x4, #16380]
   2406         strh w20, [x10, #14]
   2407         strh w17, [sp, #8190]
   2408         strb w23, [x3, #4095]
   2409         strb wzr, [x2]
   2410 // CHECK: str      x30, [sp]                  // encoding: [0xfe,0x03,0x00,0xf9]
   2411 // CHECK: str      w20, [x4, #16380]          // encoding: [0x94,0xfc,0x3f,0xb9]
   2412 // CHECK: strh     w20, [x10, #14]            // encoding: [0x54,0x1d,0x00,0x79]
   2413 // CHECK: strh     w17, [sp, #8190]           // encoding: [0xf1,0xff,0x3f,0x79]
   2414 // CHECK: strb     w23, [x3, #4095]           // encoding: [0x77,0xfc,0x3f,0x39]
   2415 // CHECK: strb     wzr, [x2]                  // encoding: [0x5f,0x00,0x00,0x39]
   2416 
   2417 //// Relocations
   2418         str x15, [x5, #:lo12:sym]
   2419         ldrb w15, [x5, #:lo12:sym]
   2420         ldrsh x15, [x5, #:lo12:sym]
   2421         ldrsw x15, [x5, #:lo12:sym]
   2422         ldr x15, [x5, #:lo12:sym]
   2423         ldr q3, [x2, #:lo12:sym]
   2424 // CHECK: str     x15, [x5, #:lo12:sym]   // encoding: [0xaf'A',A,A,0xf9'A']
   2425 // CHECK:                                         //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_a64_ldst64_lo12
   2426 // CHECK: ldrb    w15, [x5, #:lo12:sym]   // encoding: [0xaf'A',A,0x40'A',0x39'A']
   2427 // CHECK:                                         //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_a64_ldst8_lo12
   2428 // CHECK: ldrsh   x15, [x5, #:lo12:sym]   // encoding: [0xaf'A',A,0x80'A',0x79'A']
   2429 // CHECK:                                         //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_a64_ldst16_lo12
   2430 // CHECK: ldrsw   x15, [x5, #:lo12:sym]   // encoding: [0xaf'A',A,0x80'A',0xb9'A']
   2431 // CHECK:                                         //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_a64_ldst32_lo12
   2432 // CHECK: ldr     x15, [x5, #:lo12:sym]   // encoding: [0xaf'A',A,0x40'A',0xf9'A']
   2433 // CHECK:                                         //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_a64_ldst64_lo12
   2434 // CHECK: ldr     q3, [x2, #:lo12:sym]    // encoding: [0x43'A',A,0xc0'A',0x3d'A']
   2435 // CHECK:                                         //   fixup A - offset: 0, value: :lo12:sym, kind: fixup_a64_ldst128_lo12
   2436 
   2437         prfm pldl1keep, [sp, #8]
   2438         prfm pldl1strm, [x3]
   2439         prfm pldl2keep, [x5,#16]
   2440         prfm pldl2strm, [x2]
   2441         prfm pldl3keep, [x5]
   2442         prfm pldl3strm, [x6]
   2443         prfm plil1keep, [sp, #8]
   2444         prfm plil1strm, [x3]
   2445         prfm plil2keep, [x5,#16]
   2446         prfm plil2strm, [x2]
   2447         prfm plil3keep, [x5]
   2448         prfm plil3strm, [x6]
   2449         prfm pstl1keep, [sp, #8]
   2450         prfm pstl1strm, [x3]
   2451         prfm pstl2keep, [x5,#16]
   2452         prfm pstl2strm, [x2]
   2453         prfm pstl3keep, [x5]
   2454         prfm pstl3strm, [x6]
   2455         prfm #15, [sp]
   2456 // CHECK: prfm    pldl1keep, [sp, #8]     // encoding: [0xe0,0x07,0x80,0xf9]
   2457 // CHECK: prfm    pldl1strm, [x3, #0]     // encoding: [0x61,0x00,0x80,0xf9]
   2458 // CHECK: prfm    pldl2keep, [x5, #16]    // encoding: [0xa2,0x08,0x80,0xf9]
   2459 // CHECK: prfm    pldl2strm, [x2, #0]     // encoding: [0x43,0x00,0x80,0xf9]
   2460 // CHECK: prfm    pldl3keep, [x5, #0]     // encoding: [0xa4,0x00,0x80,0xf9]
   2461 // CHECK: prfm    pldl3strm, [x6, #0]     // encoding: [0xc5,0x00,0x80,0xf9]
   2462 // CHECK: prfm    plil1keep, [sp, #8]     // encoding: [0xe8,0x07,0x80,0xf9]
   2463 // CHECK: prfm    plil1strm, [x3, #0]     // encoding: [0x69,0x00,0x80,0xf9]
   2464 // CHECK: prfm    plil2keep, [x5, #16]    // encoding: [0xaa,0x08,0x80,0xf9]
   2465 // CHECK: prfm    plil2strm, [x2, #0]     // encoding: [0x4b,0x00,0x80,0xf9]
   2466 // CHECK: prfm    plil3keep, [x5, #0]     // encoding: [0xac,0x00,0x80,0xf9]
   2467 // CHECK: prfm    plil3strm, [x6, #0]     // encoding: [0xcd,0x00,0x80,0xf9]
   2468 // CHECK: prfm    pstl1keep, [sp, #8]     // encoding: [0xf0,0x07,0x80,0xf9]
   2469 // CHECK: prfm    pstl1strm, [x3, #0]     // encoding: [0x71,0x00,0x80,0xf9]
   2470 // CHECK: prfm    pstl2keep, [x5, #16]    // encoding: [0xb2,0x08,0x80,0xf9]
   2471 // CHECK: prfm    pstl2strm, [x2, #0]     // encoding: [0x53,0x00,0x80,0xf9]
   2472 // CHECK: prfm    pstl3keep, [x5, #0]     // encoding: [0xb4,0x00,0x80,0xf9]
   2473 // CHECK: prfm    pstl3strm, [x6, #0]     // encoding: [0xd5,0x00,0x80,0xf9]
   2474 // CHECK: prfm    #15, [sp, #0]           // encoding: [0xef,0x03,0x80,0xf9]
   2475 
   2476 //// Floating-point versions
   2477 
   2478         ldr b31, [sp, #4095]
   2479         ldr h20, [x2, #8190]
   2480         ldr s10, [x19, #16380]
   2481         ldr d3, [x10, #32760]
   2482         str q12, [sp, #65520]
   2483 // CHECK: ldr      b31, [sp, #4095]           // encoding: [0xff,0xff,0x7f,0x3d]
   2484 // CHECK: ldr      h20, [x2, #8190]           // encoding: [0x54,0xfc,0x7f,0x7d]
   2485 // CHECK: ldr      s10, [x19, #16380]         // encoding: [0x6a,0xfe,0x7f,0xbd]
   2486 // CHECK: ldr      d3, [x10, #32760]          // encoding: [0x43,0xfd,0x7f,0xfd]
   2487 // CHECK: str      q12, [sp, #65520]          // encoding: [0xec,0xff,0xbf,0x3d]
   2488 
   2489 //------------------------------------------------------------------------------
   2490 // Load/store register (register offset)
   2491 //------------------------------------------------------------------------------
   2492 
   2493         ldrb w3, [sp, x5]
   2494         ldrb w9, [x27, x6, lsl #0]
   2495         ldrsb w10, [x30, x7]
   2496         ldrb w11, [x29, x3, sxtx]
   2497         strb w12, [x28, xzr, sxtx #0]
   2498         ldrb w14, [x26, w6, uxtw]
   2499         ldrsb w15, [x25, w7, uxtw #0]
   2500         ldrb w17, [x23, w9, sxtw]
   2501         ldrsb x18, [x22, w10, sxtw #0]
   2502 // CHECK: ldrb     w3, [sp, x5]               // encoding: [0xe3,0x6b,0x65,0x38]
   2503 // CHECK: ldrb     w9, [x27, x6, lsl #0]      // encoding: [0x69,0x7b,0x66,0x38]
   2504 // CHECK: ldrsb    w10, [x30, x7]             // encoding: [0xca,0x6b,0xe7,0x38]
   2505 // CHECK: ldrb     w11, [x29, x3, sxtx]       // encoding: [0xab,0xeb,0x63,0x38]
   2506 // CHECK: strb     w12, [x28, xzr, sxtx #0]   // encoding: [0x8c,0xfb,0x3f,0x38]
   2507 // CHECK: ldrb     w14, [x26, w6, uxtw]       // encoding: [0x4e,0x4b,0x66,0x38]
   2508 // CHECK: ldrsb    w15, [x25, w7, uxtw #0]    // encoding: [0x2f,0x5b,0xe7,0x38]
   2509 // CHECK: ldrb     w17, [x23, w9, sxtw]       // encoding: [0xf1,0xca,0x69,0x38]
   2510 // CHECK: ldrsb    x18, [x22, w10, sxtw #0]   // encoding: [0xd2,0xda,0xaa,0x38]
   2511 
   2512         ldrsh w3, [sp, x5]
   2513         ldrsh w9, [x27, x6, lsl #0]
   2514         ldrh w10, [x30, x7, lsl #1]
   2515         strh w11, [x29, x3, sxtx]
   2516         ldrh w12, [x28, xzr, sxtx #0]
   2517         ldrsh x13, [x27, x5, sxtx #1]
   2518         ldrh w14, [x26, w6, uxtw]
   2519         ldrh w15, [x25, w7, uxtw #0]
   2520         ldrsh w16, [x24, w8, uxtw #1]
   2521         ldrh w17, [x23, w9, sxtw]
   2522         ldrh w18, [x22, w10, sxtw #0]
   2523         strh w19, [x21, wzr, sxtw #1]
   2524 // CHECK: ldrsh    w3, [sp, x5]               // encoding: [0xe3,0x6b,0xe5,0x78]
   2525 // CHECK: ldrsh    w9, [x27, x6]              // encoding: [0x69,0x6b,0xe6,0x78]
   2526 // CHECK: ldrh     w10, [x30, x7, lsl #1]     // encoding: [0xca,0x7b,0x67,0x78]
   2527 // CHECK: strh     w11, [x29, x3, sxtx]       // encoding: [0xab,0xeb,0x23,0x78]
   2528 // CHECK: ldrh     w12, [x28, xzr, sxtx]      // encoding: [0x8c,0xeb,0x7f,0x78]
   2529 // CHECK: ldrsh    x13, [x27, x5, sxtx #1]    // encoding: [0x6d,0xfb,0xa5,0x78]
   2530 // CHECK: ldrh     w14, [x26, w6, uxtw]       // encoding: [0x4e,0x4b,0x66,0x78]
   2531 // CHECK: ldrh     w15, [x25, w7, uxtw]       // encoding: [0x2f,0x4b,0x67,0x78]
   2532 // CHECK: ldrsh    w16, [x24, w8, uxtw #1]    // encoding: [0x10,0x5b,0xe8,0x78]
   2533 // CHECK: ldrh     w17, [x23, w9, sxtw]       // encoding: [0xf1,0xca,0x69,0x78]
   2534 // CHECK: ldrh     w18, [x22, w10, sxtw]      // encoding: [0xd2,0xca,0x6a,0x78]
   2535 // CHECK: strh     w19, [x21, wzr, sxtw #1]   // encoding: [0xb3,0xda,0x3f,0x78]
   2536 
   2537         ldr w3, [sp, x5]
   2538         ldr s9, [x27, x6, lsl #0]
   2539         ldr w10, [x30, x7, lsl #2]
   2540         ldr w11, [x29, x3, sxtx]
   2541         str s12, [x28, xzr, sxtx #0]
   2542         str w13, [x27, x5, sxtx #2]
   2543         str w14, [x26, w6, uxtw]
   2544         ldr w15, [x25, w7, uxtw #0]
   2545         ldr w16, [x24, w8, uxtw #2]
   2546         ldrsw x17, [x23, w9, sxtw]
   2547         ldr w18, [x22, w10, sxtw #0]
   2548         ldrsw x19, [x21, wzr, sxtw #2]
   2549 // CHECK: ldr      w3, [sp, x5]               // encoding: [0xe3,0x6b,0x65,0xb8]
   2550 // CHECK: ldr      s9, [x27, x6]              // encoding: [0x69,0x6b,0x66,0xbc]
   2551 // CHECK: ldr      w10, [x30, x7, lsl #2]     // encoding: [0xca,0x7b,0x67,0xb8]
   2552 // CHECK: ldr      w11, [x29, x3, sxtx]       // encoding: [0xab,0xeb,0x63,0xb8]
   2553 // CHECK: str      s12, [x28, xzr, sxtx]      // encoding: [0x8c,0xeb,0x3f,0xbc]
   2554 // CHECK: str      w13, [x27, x5, sxtx #2]    // encoding: [0x6d,0xfb,0x25,0xb8]
   2555 // CHECK: str      w14, [x26, w6, uxtw]       // encoding: [0x4e,0x4b,0x26,0xb8]
   2556 // CHECK: ldr      w15, [x25, w7, uxtw]       // encoding: [0x2f,0x4b,0x67,0xb8]
   2557 // CHECK: ldr      w16, [x24, w8, uxtw #2]    // encoding: [0x10,0x5b,0x68,0xb8]
   2558 // CHECK: ldrsw    x17, [x23, w9, sxtw]       // encoding: [0xf1,0xca,0xa9,0xb8]
   2559 // CHECK: ldr      w18, [x22, w10, sxtw]      // encoding: [0xd2,0xca,0x6a,0xb8]
   2560 // CHECK: ldrsw    x19, [x21, wzr, sxtw #2]   // encoding: [0xb3,0xda,0xbf,0xb8]
   2561 
   2562         ldr x3, [sp, x5]
   2563         str x9, [x27, x6, lsl #0]
   2564         ldr d10, [x30, x7, lsl #3]
   2565         str x11, [x29, x3, sxtx]
   2566         ldr x12, [x28, xzr, sxtx #0]
   2567         ldr x13, [x27, x5, sxtx #3]
   2568         prfm pldl1keep, [x26, w6, uxtw]
   2569         ldr x15, [x25, w7, uxtw #0]
   2570         ldr x16, [x24, w8, uxtw #3]
   2571         ldr x17, [x23, w9, sxtw]
   2572         ldr x18, [x22, w10, sxtw #0]
   2573         str d19, [x21, wzr, sxtw #3]
   2574         prfm #6, [x0, x5]
   2575 // CHECK: ldr      x3, [sp, x5]               // encoding: [0xe3,0x6b,0x65,0xf8]
   2576 // CHECK: str      x9, [x27, x6]              // encoding: [0x69,0x6b,0x26,0xf8]
   2577 // CHECK: ldr      d10, [x30, x7, lsl #3]     // encoding: [0xca,0x7b,0x67,0xfc]
   2578 // CHECK: str      x11, [x29, x3, sxtx]       // encoding: [0xab,0xeb,0x23,0xf8]
   2579 // CHECK: ldr      x12, [x28, xzr, sxtx]      // encoding: [0x8c,0xeb,0x7f,0xf8]
   2580 // CHECK: ldr      x13, [x27, x5, sxtx #3]    // encoding: [0x6d,0xfb,0x65,0xf8]
   2581 // CHECK: prfm     pldl1keep, [x26, w6, uxtw] // encoding: [0x40,0x4b,0xa6,0xf8]
   2582 // CHECK: ldr      x15, [x25, w7, uxtw]       // encoding: [0x2f,0x4b,0x67,0xf8]
   2583 // CHECK: ldr      x16, [x24, w8, uxtw #3]    // encoding: [0x10,0x5b,0x68,0xf8]
   2584 // CHECK: ldr      x17, [x23, w9, sxtw]       // encoding: [0xf1,0xca,0x69,0xf8]
   2585 // CHECK: ldr      x18, [x22, w10, sxtw]      // encoding: [0xd2,0xca,0x6a,0xf8]
   2586 // CHECK: str      d19, [x21, wzr, sxtw #3]   // encoding: [0xb3,0xda,0x3f,0xfc]
   2587 // CHECK: prfm     #6, [x0, x5, lsl #0]       // encoding: [0x06,0x68,0xa5,0xf8]
   2588 
   2589         ldr q3, [sp, x5]
   2590         ldr q9, [x27, x6, lsl #0]
   2591         ldr q10, [x30, x7, lsl #4]
   2592         str q11, [x29, x3, sxtx]
   2593         str q12, [x28, xzr, sxtx #0]
   2594         str q13, [x27, x5, sxtx #4]
   2595         ldr q14, [x26, w6, uxtw]
   2596         ldr q15, [x25, w7, uxtw #0]
   2597         ldr q16, [x24, w8, uxtw #4]
   2598         ldr q17, [x23, w9, sxtw]
   2599         str q18, [x22, w10, sxtw #0]
   2600         ldr q19, [x21, wzr, sxtw #4]
   2601 // CHECK: ldr      q3, [sp, x5]               // encoding: [0xe3,0x6b,0xe5,0x3c]
   2602 // CHECK: ldr      q9, [x27, x6]              // encoding: [0x69,0x6b,0xe6,0x3c]
   2603 // CHECK: ldr      q10, [x30, x7, lsl #4]     // encoding: [0xca,0x7b,0xe7,0x3c]
   2604 // CHECK: str      q11, [x29, x3, sxtx]       // encoding: [0xab,0xeb,0xa3,0x3c]
   2605 // CHECK: str      q12, [x28, xzr, sxtx]      // encoding: [0x8c,0xeb,0xbf,0x3c]
   2606 // CHECK: str      q13, [x27, x5, sxtx #4]    // encoding: [0x6d,0xfb,0xa5,0x3c]
   2607 // CHECK: ldr      q14, [x26, w6, uxtw]       // encoding: [0x4e,0x4b,0xe6,0x3c]
   2608 // CHECK: ldr      q15, [x25, w7, uxtw]       // encoding: [0x2f,0x4b,0xe7,0x3c]
   2609 // CHECK: ldr      q16, [x24, w8, uxtw #4]    // encoding: [0x10,0x5b,0xe8,0x3c]
   2610 // CHECK: ldr      q17, [x23, w9, sxtw]       // encoding: [0xf1,0xca,0xe9,0x3c]
   2611 // CHECK: str      q18, [x22, w10, sxtw]      // encoding: [0xd2,0xca,0xaa,0x3c]
   2612 // CHECK: ldr      q19, [x21, wzr, sxtw #4]   // encoding: [0xb3,0xda,0xff,0x3c]
   2613 
   2614 //------------------------------------------------------------------------------
   2615 // Load/store register (immediate post-indexed)
   2616 //------------------------------------------------------------------------------
   2617 
   2618         strb w9, [x2], #255
   2619         strb w10, [x3], #1
   2620         strb w10, [x3], #-256
   2621         strh w9, [x2], #255
   2622         strh w9, [x2], #1
   2623         strh w10, [x3], #-256
   2624 // CHECK: strb     w9, [x2], #255             // encoding: [0x49,0xf4,0x0f,0x38]
   2625 // CHECK: strb     w10, [x3], #1              // encoding: [0x6a,0x14,0x00,0x38]
   2626 // CHECK: strb     w10, [x3], #-256           // encoding: [0x6a,0x04,0x10,0x38]
   2627 // CHECK: strh     w9, [x2], #255             // encoding: [0x49,0xf4,0x0f,0x78]
   2628 // CHECK: strh     w9, [x2], #1               // encoding: [0x49,0x14,0x00,0x78]
   2629 // CHECK: strh     w10, [x3], #-256           // encoding: [0x6a,0x04,0x10,0x78]
   2630 
   2631         str w19, [sp], #255
   2632         str w20, [x30], #1
   2633         str w21, [x12], #-256
   2634         str xzr, [x9], #255
   2635         str x2, [x3], #1
   2636         str x19, [x12], #-256
   2637 // CHECK: str      w19, [sp], #255            // encoding: [0xf3,0xf7,0x0f,0xb8]
   2638 // CHECK: str      w20, [x30], #1             // encoding: [0xd4,0x17,0x00,0xb8]
   2639 // CHECK: str      w21, [x12], #-256          // encoding: [0x95,0x05,0x10,0xb8]
   2640 // CHECK: str      xzr, [x9], #255            // encoding: [0x3f,0xf5,0x0f,0xf8]
   2641 // CHECK: str      x2, [x3], #1               // encoding: [0x62,0x14,0x00,0xf8]
   2642 // CHECK: str      x19, [x12], #-256          // encoding: [0x93,0x05,0x10,0xf8]
   2643 
   2644         ldrb w9, [x2], #255
   2645         ldrb w10, [x3], #1
   2646         ldrb w10, [x3], #-256
   2647         ldrh w9, [x2], #255
   2648         ldrh w9, [x2], #1
   2649         ldrh w10, [x3], #-256
   2650 // CHECK: ldrb     w9, [x2], #255             // encoding: [0x49,0xf4,0x4f,0x38]
   2651 // CHECK: ldrb     w10, [x3], #1              // encoding: [0x6a,0x14,0x40,0x38]
   2652 // CHECK: ldrb     w10, [x3], #-256           // encoding: [0x6a,0x04,0x50,0x38]
   2653 // CHECK: ldrh     w9, [x2], #255             // encoding: [0x49,0xf4,0x4f,0x78]
   2654 // CHECK: ldrh     w9, [x2], #1               // encoding: [0x49,0x14,0x40,0x78]
   2655 // CHECK: ldrh     w10, [x3], #-256           // encoding: [0x6a,0x04,0x50,0x78]
   2656 
   2657         ldr w19, [sp], #255
   2658         ldr w20, [x30], #1
   2659         ldr w21, [x12], #-256
   2660         ldr xzr, [x9], #255
   2661         ldr x2, [x3], #1
   2662         ldr x19, [x12], #-256
   2663 // CHECK: ldr      w19, [sp], #255            // encoding: [0xf3,0xf7,0x4f,0xb8]
   2664 // CHECK: ldr      w20, [x30], #1             // encoding: [0xd4,0x17,0x40,0xb8]
   2665 // CHECK: ldr      w21, [x12], #-256          // encoding: [0x95,0x05,0x50,0xb8]
   2666 // CHECK: ldr      xzr, [x9], #255            // encoding: [0x3f,0xf5,0x4f,0xf8]
   2667 // CHECK: ldr      x2, [x3], #1               // encoding: [0x62,0x14,0x40,0xf8]
   2668 // CHECK: ldr      x19, [x12], #-256          // encoding: [0x93,0x05,0x50,0xf8]
   2669 
   2670         ldrsb xzr, [x9], #255
   2671         ldrsb x2, [x3], #1
   2672         ldrsb x19, [x12], #-256
   2673         ldrsh xzr, [x9], #255
   2674         ldrsh x2, [x3], #1
   2675         ldrsh x19, [x12], #-256
   2676         ldrsw xzr, [x9], #255
   2677         ldrsw x2, [x3], #1
   2678         ldrsw x19, [x12], #-256
   2679 // CHECK: ldrsb    xzr, [x9], #255            // encoding: [0x3f,0xf5,0x8f,0x38]
   2680 // CHECK: ldrsb    x2, [x3], #1               // encoding: [0x62,0x14,0x80,0x38]
   2681 // CHECK: ldrsb    x19, [x12], #-256          // encoding: [0x93,0x05,0x90,0x38]
   2682 // CHECK: ldrsh    xzr, [x9], #255            // encoding: [0x3f,0xf5,0x8f,0x78]
   2683 // CHECK: ldrsh    x2, [x3], #1               // encoding: [0x62,0x14,0x80,0x78]
   2684 // CHECK: ldrsh    x19, [x12], #-256          // encoding: [0x93,0x05,0x90,0x78]
   2685 // CHECK: ldrsw    xzr, [x9], #255            // encoding: [0x3f,0xf5,0x8f,0xb8]
   2686 // CHECK: ldrsw    x2, [x3], #1               // encoding: [0x62,0x14,0x80,0xb8]
   2687 // CHECK: ldrsw    x19, [x12], #-256          // encoding: [0x93,0x05,0x90,0xb8]
   2688 
   2689         ldrsb wzr, [x9], #255
   2690         ldrsb w2, [x3], #1
   2691         ldrsb w19, [x12], #-256
   2692         ldrsh wzr, [x9], #255
   2693         ldrsh w2, [x3], #1
   2694         ldrsh w19, [x12], #-256
   2695 // CHECK: ldrsb    wzr, [x9], #255            // encoding: [0x3f,0xf5,0xcf,0x38]
   2696 // CHECK: ldrsb    w2, [x3], #1               // encoding: [0x62,0x14,0xc0,0x38]
   2697 // CHECK: ldrsb    w19, [x12], #-256          // encoding: [0x93,0x05,0xd0,0x38]
   2698 // CHECK: ldrsh    wzr, [x9], #255            // encoding: [0x3f,0xf5,0xcf,0x78]
   2699 // CHECK: ldrsh    w2, [x3], #1               // encoding: [0x62,0x14,0xc0,0x78]
   2700 // CHECK: ldrsh    w19, [x12], #-256          // encoding: [0x93,0x05,0xd0,0x78]
   2701 
   2702         str b0, [x0], #255
   2703         str b3, [x3], #1
   2704         str b5, [sp], #-256
   2705         str h10, [x10], #255
   2706         str h13, [x23], #1
   2707         str h15, [sp], #-256
   2708         str s20, [x20], #255
   2709         str s23, [x23], #1
   2710         str s25, [x0], #-256
   2711         str d20, [x20], #255
   2712         str d23, [x23], #1
   2713         str d25, [x0], #-256
   2714 // CHECK: str      b0, [x0], #255             // encoding: [0x00,0xf4,0x0f,0x3c]
   2715 // CHECK: str      b3, [x3], #1               // encoding: [0x63,0x14,0x00,0x3c]
   2716 // CHECK: str      b5, [sp], #-256            // encoding: [0xe5,0x07,0x10,0x3c]
   2717 // CHECK: str      h10, [x10], #255           // encoding: [0x4a,0xf5,0x0f,0x7c]
   2718 // CHECK: str      h13, [x23], #1             // encoding: [0xed,0x16,0x00,0x7c]
   2719 // CHECK: str      h15, [sp], #-256           // encoding: [0xef,0x07,0x10,0x7c]
   2720 // CHECK: str      s20, [x20], #255           // encoding: [0x94,0xf6,0x0f,0xbc]
   2721 // CHECK: str      s23, [x23], #1             // encoding: [0xf7,0x16,0x00,0xbc]
   2722 // CHECK: str      s25, [x0], #-256           // encoding: [0x19,0x04,0x10,0xbc]
   2723 // CHECK: str      d20, [x20], #255           // encoding: [0x94,0xf6,0x0f,0xfc]
   2724 // CHECK: str      d23, [x23], #1             // encoding: [0xf7,0x16,0x00,0xfc]
   2725 // CHECK: str      d25, [x0], #-256           // encoding: [0x19,0x04,0x10,0xfc]
   2726 
   2727         ldr b0, [x0], #255
   2728         ldr b3, [x3], #1
   2729         ldr b5, [sp], #-256
   2730         ldr h10, [x10], #255
   2731         ldr h13, [x23], #1
   2732         ldr h15, [sp], #-256
   2733         ldr s20, [x20], #255
   2734         ldr s23, [x23], #1
   2735         ldr s25, [x0], #-256
   2736         ldr d20, [x20], #255
   2737         ldr d23, [x23], #1
   2738         ldr d25, [x0], #-256
   2739 // CHECK: ldr      b0, [x0], #255             // encoding: [0x00,0xf4,0x4f,0x3c]
   2740 // CHECK: ldr      b3, [x3], #1               // encoding: [0x63,0x14,0x40,0x3c]
   2741 // CHECK: ldr      b5, [sp], #-256            // encoding: [0xe5,0x07,0x50,0x3c]
   2742 // CHECK: ldr      h10, [x10], #255           // encoding: [0x4a,0xf5,0x4f,0x7c]
   2743 // CHECK: ldr      h13, [x23], #1             // encoding: [0xed,0x16,0x40,0x7c]
   2744 // CHECK: ldr      h15, [sp], #-256           // encoding: [0xef,0x07,0x50,0x7c]
   2745 // CHECK: ldr      s20, [x20], #255           // encoding: [0x94,0xf6,0x4f,0xbc]
   2746 // CHECK: ldr      s23, [x23], #1             // encoding: [0xf7,0x16,0x40,0xbc]
   2747 // CHECK: ldr      s25, [x0], #-256           // encoding: [0x19,0x04,0x50,0xbc]
   2748 // CHECK: ldr      d20, [x20], #255           // encoding: [0x94,0xf6,0x4f,0xfc]
   2749 // CHECK: ldr      d23, [x23], #1             // encoding: [0xf7,0x16,0x40,0xfc]
   2750 // CHECK: ldr      d25, [x0], #-256           // encoding: [0x19,0x04,0x50,0xfc]
   2751 
   2752         ldr q20, [x1], #255
   2753         ldr q23, [x9], #1
   2754         ldr q25, [x20], #-256
   2755         str q10, [x1], #255
   2756         str q22, [sp], #1
   2757         str q21, [x20], #-256
   2758 // CHECK: ldr      q20, [x1], #255            // encoding: [0x34,0xf4,0xcf,0x3c]
   2759 // CHECK: ldr      q23, [x9], #1              // encoding: [0x37,0x15,0xc0,0x3c]
   2760 // CHECK: ldr      q25, [x20], #-256          // encoding: [0x99,0x06,0xd0,0x3c]
   2761 // CHECK: str      q10, [x1], #255            // encoding: [0x2a,0xf4,0x8f,0x3c]
   2762 // CHECK: str      q22, [sp], #1              // encoding: [0xf6,0x17,0x80,0x3c]
   2763 // CHECK: str      q21, [x20], #-256          // encoding: [0x95,0x06,0x90,0x3c]
   2764 
   2765 //------------------------------------------------------------------------------
   2766 // Load/store register (immediate pre-indexed)
   2767 //------------------------------------------------------------------------------
   2768 
   2769         ldr x3, [x4, #0]!
   2770         ldr xzr, [sp, #0]!
   2771 // CHECK: ldr      x3, [x4, #0]!              // encoding: [0x83,0x0c,0x40,0xf8]
   2772 // CHECK: ldr      xzr, [sp, #0]!              // encoding: [0xff,0x0f,0x40,0xf8]
   2773 
   2774         strb w9, [x2, #255]!
   2775         strb w10, [x3, #1]!
   2776         strb w10, [x3, #-256]!
   2777         strh w9, [x2, #255]!
   2778         strh w9, [x2, #1]!
   2779         strh w10, [x3, #-256]!
   2780 // CHECK: strb     w9, [x2, #255]!            // encoding: [0x49,0xfc,0x0f,0x38]
   2781 // CHECK: strb     w10, [x3, #1]!             // encoding: [0x6a,0x1c,0x00,0x38]
   2782 // CHECK: strb     w10, [x3, #-256]!          // encoding: [0x6a,0x0c,0x10,0x38]
   2783 // CHECK: strh     w9, [x2, #255]!            // encoding: [0x49,0xfc,0x0f,0x78]
   2784 // CHECK: strh     w9, [x2, #1]!              // encoding: [0x49,0x1c,0x00,0x78]
   2785 // CHECK: strh     w10, [x3, #-256]!          // encoding: [0x6a,0x0c,0x10,0x78]
   2786 
   2787         str w19, [sp, #255]!
   2788         str w20, [x30, #1]!
   2789         str w21, [x12, #-256]!
   2790         str xzr, [x9, #255]!
   2791         str x2, [x3, #1]!
   2792         str x19, [x12, #-256]!
   2793 // CHECK: str      w19, [sp, #255]!           // encoding: [0xf3,0xff,0x0f,0xb8]
   2794 // CHECK: str      w20, [x30, #1]!            // encoding: [0xd4,0x1f,0x00,0xb8]
   2795 // CHECK: str      w21, [x12, #-256]!         // encoding: [0x95,0x0d,0x10,0xb8]
   2796 // CHECK: str      xzr, [x9, #255]!           // encoding: [0x3f,0xfd,0x0f,0xf8]
   2797 // CHECK: str      x2, [x3, #1]!              // encoding: [0x62,0x1c,0x00,0xf8]
   2798 // CHECK: str      x19, [x12, #-256]!         // encoding: [0x93,0x0d,0x10,0xf8]
   2799 
   2800         ldrb w9, [x2, #255]!
   2801         ldrb w10, [x3, #1]!
   2802         ldrb w10, [x3, #-256]!
   2803         ldrh w9, [x2, #255]!
   2804         ldrh w9, [x2, #1]!
   2805         ldrh w10, [x3, #-256]!
   2806 // CHECK: ldrb     w9, [x2, #255]!            // encoding: [0x49,0xfc,0x4f,0x38]
   2807 // CHECK: ldrb     w10, [x3, #1]!             // encoding: [0x6a,0x1c,0x40,0x38]
   2808 // CHECK: ldrb     w10, [x3, #-256]!          // encoding: [0x6a,0x0c,0x50,0x38]
   2809 // CHECK: ldrh     w9, [x2, #255]!            // encoding: [0x49,0xfc,0x4f,0x78]
   2810 // CHECK: ldrh     w9, [x2, #1]!              // encoding: [0x49,0x1c,0x40,0x78]
   2811 // CHECK: ldrh     w10, [x3, #-256]!          // encoding: [0x6a,0x0c,0x50,0x78]
   2812 
   2813         ldr w19, [sp, #255]!
   2814         ldr w20, [x30, #1]!
   2815         ldr w21, [x12, #-256]!
   2816         ldr xzr, [x9, #255]!
   2817         ldr x2, [x3, #1]!
   2818         ldr x19, [x12, #-256]!
   2819 // CHECK: ldr      w19, [sp, #255]!           // encoding: [0xf3,0xff,0x4f,0xb8]
   2820 // CHECK: ldr      w20, [x30, #1]!            // encoding: [0xd4,0x1f,0x40,0xb8]
   2821 // CHECK: ldr      w21, [x12, #-256]!         // encoding: [0x95,0x0d,0x50,0xb8]
   2822 // CHECK: ldr      xzr, [x9, #255]!           // encoding: [0x3f,0xfd,0x4f,0xf8]
   2823 // CHECK: ldr      x2, [x3, #1]!              // encoding: [0x62,0x1c,0x40,0xf8]
   2824 // CHECK: ldr      x19, [x12, #-256]!         // encoding: [0x93,0x0d,0x50,0xf8]
   2825 
   2826         ldrsb xzr, [x9, #255]!
   2827         ldrsb x2, [x3, #1]!
   2828         ldrsb x19, [x12, #-256]!
   2829         ldrsh xzr, [x9, #255]!
   2830         ldrsh x2, [x3, #1]!
   2831         ldrsh x19, [x12, #-256]!
   2832         ldrsw xzr, [x9, #255]!
   2833         ldrsw x2, [x3, #1]!
   2834         ldrsw x19, [x12, #-256]!
   2835 // CHECK: ldrsb    xzr, [x9, #255]!           // encoding: [0x3f,0xfd,0x8f,0x38]
   2836 // CHECK: ldrsb    x2, [x3, #1]!              // encoding: [0x62,0x1c,0x80,0x38]
   2837 // CHECK: ldrsb    x19, [x12, #-256]!         // encoding: [0x93,0x0d,0x90,0x38]
   2838 // CHECK: ldrsh    xzr, [x9, #255]!           // encoding: [0x3f,0xfd,0x8f,0x78]
   2839 // CHECK: ldrsh    x2, [x3, #1]!              // encoding: [0x62,0x1c,0x80,0x78]
   2840 // CHECK: ldrsh    x19, [x12, #-256]!         // encoding: [0x93,0x0d,0x90,0x78]
   2841 // CHECK: ldrsw    xzr, [x9, #255]!           // encoding: [0x3f,0xfd,0x8f,0xb8]
   2842 // CHECK: ldrsw    x2, [x3, #1]!              // encoding: [0x62,0x1c,0x80,0xb8]
   2843 // CHECK: ldrsw    x19, [x12, #-256]!         // encoding: [0x93,0x0d,0x90,0xb8]
   2844 
   2845         ldrsb wzr, [x9, #255]!
   2846         ldrsb w2, [x3, #1]!
   2847         ldrsb w19, [x12, #-256]!
   2848         ldrsh wzr, [x9, #255]!
   2849         ldrsh w2, [x3, #1]!
   2850         ldrsh w19, [x12, #-256]!
   2851 // CHECK: ldrsb    wzr, [x9, #255]!           // encoding: [0x3f,0xfd,0xcf,0x38]
   2852 // CHECK: ldrsb    w2, [x3, #1]!              // encoding: [0x62,0x1c,0xc0,0x38]
   2853 // CHECK: ldrsb    w19, [x12, #-256]!         // encoding: [0x93,0x0d,0xd0,0x38]
   2854 // CHECK: ldrsh    wzr, [x9, #255]!           // encoding: [0x3f,0xfd,0xcf,0x78]
   2855 // CHECK: ldrsh    w2, [x3, #1]!              // encoding: [0x62,0x1c,0xc0,0x78]
   2856 // CHECK: ldrsh    w19, [x12, #-256]!         // encoding: [0x93,0x0d,0xd0,0x78]
   2857 
   2858         str b0, [x0, #255]!
   2859         str b3, [x3, #1]!
   2860         str b5, [sp, #-256]!
   2861         str h10, [x10, #255]!
   2862         str h13, [x23, #1]!
   2863         str h15, [sp, #-256]!
   2864         str s20, [x20, #255]!
   2865         str s23, [x23, #1]!
   2866         str s25, [x0, #-256]!
   2867         str d20, [x20, #255]!
   2868         str d23, [x23, #1]!
   2869         str d25, [x0, #-256]!
   2870 // CHECK: str      b0, [x0, #255]!            // encoding: [0x00,0xfc,0x0f,0x3c]
   2871 // CHECK: str      b3, [x3, #1]!              // encoding: [0x63,0x1c,0x00,0x3c]
   2872 // CHECK: str      b5, [sp, #-256]!           // encoding: [0xe5,0x0f,0x10,0x3c]
   2873 // CHECK: str      h10, [x10, #255]!          // encoding: [0x4a,0xfd,0x0f,0x7c]
   2874 // CHECK: str      h13, [x23, #1]!            // encoding: [0xed,0x1e,0x00,0x7c]
   2875 // CHECK: str      h15, [sp, #-256]!          // encoding: [0xef,0x0f,0x10,0x7c]
   2876 // CHECK: str      s20, [x20, #255]!          // encoding: [0x94,0xfe,0x0f,0xbc]
   2877 // CHECK: str      s23, [x23, #1]!            // encoding: [0xf7,0x1e,0x00,0xbc]
   2878 // CHECK: str      s25, [x0, #-256]!          // encoding: [0x19,0x0c,0x10,0xbc]
   2879 // CHECK: str      d20, [x20, #255]!          // encoding: [0x94,0xfe,0x0f,0xfc]
   2880 // CHECK: str      d23, [x23, #1]!            // encoding: [0xf7,0x1e,0x00,0xfc]
   2881 // CHECK: str      d25, [x0, #-256]!          // encoding: [0x19,0x0c,0x10,0xfc]
   2882 
   2883         ldr b0, [x0, #255]!
   2884         ldr b3, [x3, #1]!
   2885         ldr b5, [sp, #-256]!
   2886         ldr h10, [x10, #255]!
   2887         ldr h13, [x23, #1]!
   2888         ldr h15, [sp, #-256]!
   2889         ldr s20, [x20, #255]!
   2890         ldr s23, [x23, #1]!
   2891         ldr s25, [x0, #-256]!
   2892         ldr d20, [x20, #255]!
   2893         ldr d23, [x23, #1]!
   2894         ldr d25, [x0, #-256]!
   2895 // CHECK: ldr      b0, [x0, #255]!            // encoding: [0x00,0xfc,0x4f,0x3c]
   2896 // CHECK: ldr      b3, [x3, #1]!              // encoding: [0x63,0x1c,0x40,0x3c]
   2897 // CHECK: ldr      b5, [sp, #-256]!           // encoding: [0xe5,0x0f,0x50,0x3c]
   2898 // CHECK: ldr      h10, [x10, #255]!          // encoding: [0x4a,0xfd,0x4f,0x7c]
   2899 // CHECK: ldr      h13, [x23, #1]!            // encoding: [0xed,0x1e,0x40,0x7c]
   2900 // CHECK: ldr      h15, [sp, #-256]!          // encoding: [0xef,0x0f,0x50,0x7c]
   2901 // CHECK: ldr      s20, [x20, #255]!          // encoding: [0x94,0xfe,0x4f,0xbc]
   2902 // CHECK: ldr      s23, [x23, #1]!            // encoding: [0xf7,0x1e,0x40,0xbc]
   2903 // CHECK: ldr      s25, [x0, #-256]!          // encoding: [0x19,0x0c,0x50,0xbc]
   2904 // CHECK: ldr      d20, [x20, #255]!          // encoding: [0x94,0xfe,0x4f,0xfc]
   2905 // CHECK: ldr      d23, [x23, #1]!            // encoding: [0xf7,0x1e,0x40,0xfc]
   2906 // CHECK: ldr      d25, [x0, #-256]!          // encoding: [0x19,0x0c,0x50,0xfc]
   2907 
   2908         ldr q20, [x1, #255]!
   2909         ldr q23, [x9, #1]!
   2910         ldr q25, [x20, #-256]!
   2911         str q10, [x1, #255]!
   2912         str q22, [sp, #1]!
   2913         str q21, [x20, #-256]!
   2914 // CHECK: ldr      q20, [x1, #255]!           // encoding: [0x34,0xfc,0xcf,0x3c]
   2915 // CHECK: ldr      q23, [x9, #1]!             // encoding: [0x37,0x1d,0xc0,0x3c]
   2916 // CHECK: ldr      q25, [x20, #-256]!         // encoding: [0x99,0x0e,0xd0,0x3c]
   2917 // CHECK: str      q10, [x1, #255]!           // encoding: [0x2a,0xfc,0x8f,0x3c]
   2918 // CHECK: str      q22, [sp, #1]!             // encoding: [0xf6,0x1f,0x80,0x3c]
   2919 // CHECK: str      q21, [x20, #-256]!         // encoding: [0x95,0x0e,0x90,0x3c]
   2920 
   2921 //------------------------------------------------------------------------------
   2922 // Load/store (unprivileged)
   2923 //------------------------------------------------------------------------------
   2924 
   2925         sttrb w9, [sp, #0]
   2926         sttrh wzr, [x12, #255]
   2927         sttr w16, [x0, #-256]
   2928         sttr x28, [x14, #1]
   2929 // CHECK: sttrb    w9, [sp]                   // encoding: [0xe9,0x0b,0x00,0x38]
   2930 // CHECK: sttrh    wzr, [x12, #255]           // encoding: [0x9f,0xf9,0x0f,0x78]
   2931 // CHECK: sttr     w16, [x0, #-256]           // encoding: [0x10,0x08,0x10,0xb8]
   2932 // CHECK: sttr     x28, [x14, #1]             // encoding: [0xdc,0x19,0x00,0xf8]
   2933 
   2934         ldtrb w1, [x20, #255]
   2935         ldtrh w20, [x1, #255]
   2936         ldtr w12, [sp, #255]
   2937         ldtr xzr, [x12, #255]
   2938 // CHECK: ldtrb    w1, [x20, #255]            // encoding: [0x81,0xfa,0x4f,0x38]
   2939 // CHECK: ldtrh    w20, [x1, #255]            // encoding: [0x34,0xf8,0x4f,0x78]
   2940 // CHECK: ldtr     w12, [sp, #255]            // encoding: [0xec,0xfb,0x4f,0xb8]
   2941 // CHECK: ldtr     xzr, [x12, #255]           // encoding: [0x9f,0xf9,0x4f,0xf8]
   2942 
   2943         ldtrsb x9, [x7, #-256]
   2944         ldtrsh x17, [x19, #-256]
   2945         ldtrsw x20, [x15, #-256]
   2946         ldtrsb w19, [x1, #-256]
   2947         ldtrsh w15, [x21, #-256]
   2948 // CHECK: ldtrsb   x9, [x7, #-256]            // encoding: [0xe9,0x08,0x90,0x38]
   2949 // CHECK: ldtrsh   x17, [x19, #-256]          // encoding: [0x71,0x0a,0x90,0x78]
   2950 // CHECK: ldtrsw   x20, [x15, #-256]          // encoding: [0xf4,0x09,0x90,0xb8]
   2951 // CHECK: ldtrsb   w19, [x1, #-256]           // encoding: [0x33,0x08,0xd0,0x38]
   2952 // CHECK: ldtrsh   w15, [x21, #-256]          // encoding: [0xaf,0x0a,0xd0,0x78]
   2953 
   2954 //------------------------------------------------------------------------------
   2955 // Load/store register pair (offset)
   2956 //------------------------------------------------------------------------------
   2957 
   2958         ldp w3, w5, [sp]
   2959         stp wzr, w9, [sp, #252]
   2960         ldp w2, wzr, [sp, #-256]
   2961         ldp w9, w10, [sp, #4]
   2962 // CHECK: ldp      w3, w5, [sp]               // encoding: [0xe3,0x17,0x40,0x29]
   2963 // CHECK: stp      wzr, w9, [sp, #252]        // encoding: [0xff,0xa7,0x1f,0x29]
   2964 // CHECK: ldp      w2, wzr, [sp, #-256]       // encoding: [0xe2,0x7f,0x60,0x29]
   2965 // CHECK: ldp      w9, w10, [sp, #4]          // encoding: [0xe9,0xab,0x40,0x29]
   2966 
   2967         ldpsw x9, x10, [sp, #4]
   2968         ldpsw x9, x10, [x2, #-256]
   2969         ldpsw x20, x30, [sp, #252]
   2970 // CHECK: ldpsw    x9, x10, [sp, #4]          // encoding: [0xe9,0xab,0x40,0x69]
   2971 // CHECK: ldpsw    x9, x10, [x2, #-256]       // encoding: [0x49,0x28,0x60,0x69]
   2972 // CHECK: ldpsw    x20, x30, [sp, #252]       // encoding: [0xf4,0xfb,0x5f,0x69]
   2973 
   2974         ldp x21, x29, [x2, #504]
   2975         ldp x22, x23, [x3, #-512]
   2976         ldp x24, x25, [x4, #8]
   2977 // CHECK: ldp      x21, x29, [x2, #504]       // encoding: [0x55,0xf4,0x5f,0xa9]
   2978 // CHECK: ldp      x22, x23, [x3, #-512]      // encoding: [0x76,0x5c,0x60,0xa9]
   2979 // CHECK: ldp      x24, x25, [x4, #8]         // encoding: [0x98,0xe4,0x40,0xa9]
   2980 
   2981         ldp s29, s28, [sp, #252]
   2982         stp s27, s26, [sp, #-256]
   2983         ldp s1, s2, [x3, #44]
   2984 // CHECK: ldp      s29, s28, [sp, #252]       // encoding: [0xfd,0xf3,0x5f,0x2d]
   2985 // CHECK: stp      s27, s26, [sp, #-256]      // encoding: [0xfb,0x6b,0x20,0x2d]
   2986 // CHECK: ldp      s1, s2, [x3, #44]          // encoding: [0x61,0x88,0x45,0x2d]
   2987 
   2988         stp d3, d5, [x9, #504]
   2989         stp d7, d11, [x10, #-512]
   2990         ldp d2, d3, [x30, #-8]
   2991 // CHECK: stp      d3, d5, [x9, #504]         // encoding: [0x23,0x95,0x1f,0x6d]
   2992 // CHECK: stp      d7, d11, [x10, #-512]      // encoding: [0x47,0x2d,0x20,0x6d]
   2993 // CHECK: ldp      d2, d3, [x30, #-8]         // encoding: [0xc2,0x8f,0x7f,0x6d]
   2994 
   2995         stp q3, q5, [sp]
   2996         stp q17, q19, [sp, #1008]
   2997         ldp q23, q29, [x1, #-1024]
   2998 // CHECK: stp      q3, q5, [sp]               // encoding: [0xe3,0x17,0x00,0xad]
   2999 // CHECK: stp      q17, q19, [sp, #1008]      // encoding: [0xf1,0xcf,0x1f,0xad]
   3000 // CHECK: ldp      q23, q29, [x1, #-1024]     // encoding: [0x37,0x74,0x60,0xad]
   3001 
   3002 //------------------------------------------------------------------------------
   3003 // Load/store register pair (post-indexed)
   3004 //------------------------------------------------------------------------------
   3005 
   3006         ldp w3, w5, [sp], #0
   3007         stp wzr, w9, [sp], #252
   3008         ldp w2, wzr, [sp], #-256
   3009         ldp w9, w10, [sp], #4
   3010 // CHECK: ldp      w3, w5, [sp], #0           // encoding: [0xe3,0x17,0xc0,0x28]
   3011 // CHECK: stp      wzr, w9, [sp], #252        // encoding: [0xff,0xa7,0x9f,0x28]
   3012 // CHECK: ldp      w2, wzr, [sp], #-256       // encoding: [0xe2,0x7f,0xe0,0x28]
   3013 // CHECK: ldp      w9, w10, [sp], #4          // encoding: [0xe9,0xab,0xc0,0x28]
   3014 
   3015         ldpsw x9, x10, [sp], #4
   3016         ldpsw x9, x10, [x2], #-256
   3017         ldpsw x20, x30, [sp], #252
   3018 // CHECK: ldpsw    x9, x10, [sp], #4          // encoding: [0xe9,0xab,0xc0,0x68]
   3019 // CHECK: ldpsw    x9, x10, [x2], #-256       // encoding: [0x49,0x28,0xe0,0x68]
   3020 // CHECK: ldpsw    x20, x30, [sp], #252       // encoding: [0xf4,0xfb,0xdf,0x68]
   3021 
   3022         ldp x21, x29, [x2], #504
   3023         ldp x22, x23, [x3], #-512
   3024         ldp x24, x25, [x4], #8
   3025 // CHECK: ldp      x21, x29, [x2], #504       // encoding: [0x55,0xf4,0xdf,0xa8]
   3026 // CHECK: ldp      x22, x23, [x3], #-512      // encoding: [0x76,0x5c,0xe0,0xa8]
   3027 // CHECK: ldp      x24, x25, [x4], #8         // encoding: [0x98,0xe4,0xc0,0xa8]
   3028 
   3029         ldp s29, s28, [sp], #252
   3030         stp s27, s26, [sp], #-256
   3031         ldp s1, s2, [x3], #44
   3032 // CHECK: ldp      s29, s28, [sp], #252       // encoding: [0xfd,0xf3,0xdf,0x2c]
   3033 // CHECK: stp      s27, s26, [sp], #-256      // encoding: [0xfb,0x6b,0xa0,0x2c]
   3034 // CHECK: ldp      s1, s2, [x3], #44          // encoding: [0x61,0x88,0xc5,0x2c]
   3035 
   3036         stp d3, d5, [x9], #504
   3037         stp d7, d11, [x10], #-512
   3038         ldp d2, d3, [x30], #-8
   3039 // CHECK: stp      d3, d5, [x9], #504         // encoding: [0x23,0x95,0x9f,0x6c]
   3040 // CHECK: stp      d7, d11, [x10], #-512      // encoding: [0x47,0x2d,0xa0,0x6c]
   3041 // CHECK: ldp      d2, d3, [x30], #-8         // encoding: [0xc2,0x8f,0xff,0x6c]
   3042 
   3043         stp q3, q5, [sp], #0
   3044         stp q17, q19, [sp], #1008
   3045         ldp q23, q29, [x1], #-1024
   3046 // CHECK: stp      q3, q5, [sp], #0           // encoding: [0xe3,0x17,0x80,0xac]
   3047 // CHECK: stp      q17, q19, [sp], #1008      // encoding: [0xf1,0xcf,0x9f,0xac]
   3048 // CHECK: ldp      q23, q29, [x1], #-1024     // encoding: [0x37,0x74,0xe0,0xac]
   3049 
   3050 //------------------------------------------------------------------------------
   3051 // Load/store register pair (pre-indexed)
   3052 //------------------------------------------------------------------------------
   3053         ldp w3, w5, [sp, #0]!
   3054         stp wzr, w9, [sp, #252]!
   3055         ldp w2, wzr, [sp, #-256]!
   3056         ldp w9, w10, [sp, #4]!
   3057 // CHECK: ldp      w3, w5, [sp, #0]!          // encoding: [0xe3,0x17,0xc0,0x29]
   3058 // CHECK: stp      wzr, w9, [sp, #252]!       // encoding: [0xff,0xa7,0x9f,0x29]
   3059 // CHECK: ldp      w2, wzr, [sp, #-256]!      // encoding: [0xe2,0x7f,0xe0,0x29]
   3060 // CHECK: ldp      w9, w10, [sp, #4]!         // encoding: [0xe9,0xab,0xc0,0x29]
   3061 
   3062         ldpsw x9, x10, [sp, #4]!
   3063         ldpsw x9, x10, [x2, #-256]!
   3064         ldpsw x20, x30, [sp, #252]!
   3065 // CHECK: ldpsw    x9, x10, [sp, #4]!         // encoding: [0xe9,0xab,0xc0,0x69]
   3066 // CHECK: ldpsw    x9, x10, [x2, #-256]!      // encoding: [0x49,0x28,0xe0,0x69]
   3067 // CHECK: ldpsw    x20, x30, [sp, #252]!      // encoding: [0xf4,0xfb,0xdf,0x69]
   3068 
   3069         ldp x21, x29, [x2, #504]!
   3070         ldp x22, x23, [x3, #-512]!
   3071         ldp x24, x25, [x4, #8]!
   3072 // CHECK: ldp      x21, x29, [x2, #504]!      // encoding: [0x55,0xf4,0xdf,0xa9]
   3073 // CHECK: ldp      x22, x23, [x3, #-512]!     // encoding: [0x76,0x5c,0xe0,0xa9]
   3074 // CHECK: ldp      x24, x25, [x4, #8]!        // encoding: [0x98,0xe4,0xc0,0xa9]
   3075 
   3076         ldp s29, s28, [sp, #252]!
   3077         stp s27, s26, [sp, #-256]!
   3078         ldp s1, s2, [x3, #44]!
   3079 // CHECK: ldp      s29, s28, [sp, #252]!      // encoding: [0xfd,0xf3,0xdf,0x2d]
   3080 // CHECK: stp      s27, s26, [sp, #-256]!     // encoding: [0xfb,0x6b,0xa0,0x2d]
   3081 // CHECK: ldp      s1, s2, [x3, #44]!         // encoding: [0x61,0x88,0xc5,0x2d]
   3082 
   3083         stp d3, d5, [x9, #504]!
   3084         stp d7, d11, [x10, #-512]!
   3085         ldp d2, d3, [x30, #-8]!
   3086 // CHECK: stp      d3, d5, [x9, #504]!        // encoding: [0x23,0x95,0x9f,0x6d]
   3087 // CHECK: stp      d7, d11, [x10, #-512]!     // encoding: [0x47,0x2d,0xa0,0x6d]
   3088 // CHECK: ldp      d2, d3, [x30, #-8]!        // encoding: [0xc2,0x8f,0xff,0x6d]
   3089 
   3090         stp q3, q5, [sp, #0]!
   3091         stp q17, q19, [sp, #1008]!
   3092         ldp q23, q29, [x1, #-1024]!
   3093 // CHECK: stp      q3, q5, [sp, #0]!          // encoding: [0xe3,0x17,0x80,0xad]
   3094 // CHECK: stp      q17, q19, [sp, #1008]!     // encoding: [0xf1,0xcf,0x9f,0xad]
   3095 // CHECK: ldp      q23, q29, [x1, #-1024]!    // encoding: [0x37,0x74,0xe0,0xad]
   3096 
   3097 //------------------------------------------------------------------------------
   3098 // Load/store non-temporal register pair (offset)
   3099 //------------------------------------------------------------------------------
   3100 
   3101         ldnp w3, w5, [sp]
   3102         stnp wzr, w9, [sp, #252]
   3103         ldnp w2, wzr, [sp, #-256]
   3104         ldnp w9, w10, [sp, #4]
   3105 // CHECK: ldnp      w3, w5, [sp]               // encoding: [0xe3,0x17,0x40,0x28]
   3106 // CHECK: stnp      wzr, w9, [sp, #252]        // encoding: [0xff,0xa7,0x1f,0x28]
   3107 // CHECK: ldnp      w2, wzr, [sp, #-256]       // encoding: [0xe2,0x7f,0x60,0x28]
   3108 // CHECK: ldnp      w9, w10, [sp, #4]          // encoding: [0xe9,0xab,0x40,0x28]
   3109 
   3110         ldnp x21, x29, [x2, #504]
   3111         ldnp x22, x23, [x3, #-512]
   3112         ldnp x24, x25, [x4, #8]
   3113 // CHECK: ldnp      x21, x29, [x2, #504]       // encoding: [0x55,0xf4,0x5f,0xa8]
   3114 // CHECK: ldnp      x22, x23, [x3, #-512]      // encoding: [0x76,0x5c,0x60,0xa8]
   3115 // CHECK: ldnp      x24, x25, [x4, #8]         // encoding: [0x98,0xe4,0x40,0xa8]
   3116 
   3117         ldnp s29, s28, [sp, #252]
   3118         stnp s27, s26, [sp, #-256]
   3119         ldnp s1, s2, [x3, #44]
   3120 // CHECK: ldnp      s29, s28, [sp, #252]       // encoding: [0xfd,0xf3,0x5f,0x2c]
   3121 // CHECK: stnp      s27, s26, [sp, #-256]      // encoding: [0xfb,0x6b,0x20,0x2c]
   3122 // CHECK: ldnp      s1, s2, [x3, #44]          // encoding: [0x61,0x88,0x45,0x2c]
   3123 
   3124         stnp d3, d5, [x9, #504]
   3125         stnp d7, d11, [x10, #-512]
   3126         ldnp d2, d3, [x30, #-8]
   3127 // CHECK: stnp      d3, d5, [x9, #504]         // encoding: [0x23,0x95,0x1f,0x6c]
   3128 // CHECK: stnp      d7, d11, [x10, #-512]      // encoding: [0x47,0x2d,0x20,0x6c]
   3129 // CHECK: ldnp      d2, d3, [x30, #-8]         // encoding: [0xc2,0x8f,0x7f,0x6c]
   3130 
   3131         stnp q3, q5, [sp]
   3132         stnp q17, q19, [sp, #1008]
   3133         ldnp q23, q29, [x1, #-1024]
   3134 // CHECK: stnp      q3, q5, [sp]               // encoding: [0xe3,0x17,0x00,0xac]
   3135 // CHECK: stnp      q17, q19, [sp, #1008]      // encoding: [0xf1,0xcf,0x1f,0xac]
   3136 // CHECK: ldnp      q23, q29, [x1, #-1024]     // encoding: [0x37,0x74,0x60,0xac]
   3137 
   3138 //------------------------------------------------------------------------------
   3139 // Logical (immediate)
   3140 //------------------------------------------------------------------------------
   3141         // 32 bit replication-width
   3142         orr w3, w9, #0xffff0000
   3143         orr wsp, w10, #0xe00000ff
   3144         orr w9, w10, #0x000003ff
   3145 // CHECK: orr      w3, w9, #0xffff0000        // encoding: [0x23,0x3d,0x10,0x32]
   3146 // CHECK: orr      wsp, w10, #0xe00000ff      // encoding: [0x5f,0x29,0x03,0x32]
   3147 // CHECK: orr      w9, w10, #0x3ff            // encoding: [0x49,0x25,0x00,0x32]
   3148 
   3149         // 16 bit replication width
   3150         and w14, w15, #0x80008000
   3151         and w12, w13, #0xffc3ffc3
   3152         and w11, wzr, #0x00030003
   3153 // CHECK: and      w14, w15, #0x80008000      // encoding: [0xee,0x81,0x01,0x12]
   3154 // CHECK: and      w12, w13, #0xffc3ffc3      // encoding: [0xac,0xad,0x0a,0x12]
   3155 // CHECK: and      w11, wzr, #0x30003         // encoding: [0xeb,0x87,0x00,0x12]
   3156 
   3157         // 8 bit replication width
   3158         eor w3, w6, #0xe0e0e0e0
   3159         eor wsp, wzr, #0x03030303
   3160         eor w16, w17, #0x81818181
   3161 // CHECK: eor      w3, w6, #0xe0e0e0e0        // encoding: [0xc3,0xc8,0x03,0x52]
   3162 // CHECK: eor      wsp, wzr, #0x3030303       // encoding: [0xff,0xc7,0x00,0x52]
   3163 // CHECK: eor      w16, w17, #0x81818181      // encoding: [0x30,0xc6,0x01,0x52]
   3164 
   3165         // 4 bit replication width
   3166         ands wzr, w18, #0xcccccccc
   3167         ands w19, w20, #0x33333333
   3168         ands w21, w22, #0x99999999
   3169 // CHECK: ands     wzr, w18, #0xcccccccc      // encoding: [0x5f,0xe6,0x02,0x72]
   3170 // CHECK: ands     w19, w20, #0x33333333      // encoding: [0x93,0xe6,0x00,0x72]
   3171 // CHECK: ands     w21, w22, #0x99999999      // encoding: [0xd5,0xe6,0x01,0x72]
   3172 
   3173         // 2 bit replication width
   3174         tst w3, #0xaaaaaaaa
   3175         tst wzr, #0x55555555
   3176 // CHECK: ands     wzr, w3, #0xaaaaaaaa       // encoding: [0x7f,0xf0,0x01,0x72]
   3177 // CHECK: ands     wzr, wzr, #0x55555555      // encoding: [0xff,0xf3,0x00,0x72]
   3178 
   3179         // 64 bit replication-width
   3180         eor x3, x5, #0xffffffffc000000
   3181         and x9, x10, #0x00007fffffffffff
   3182         orr x11, x12, #0x8000000000000fff
   3183 // CHECK: eor      x3, x5, #0xffffffffc000000 // encoding: [0xa3,0x84,0x66,0xd2]
   3184 // CHECK: and      x9, x10, #0x7fffffffffff   // encoding: [0x49,0xb9,0x40,0x92]
   3185 // CHECK: orr      x11, x12, #0x8000000000000fff // encoding: [0x8b,0x31,0x41,0xb2]
   3186 
   3187         // 32 bit replication-width
   3188         orr x3, x9, #0xffff0000ffff0000
   3189         orr sp, x10, #0xe00000ffe00000ff
   3190         orr x9, x10, #0x000003ff000003ff
   3191 // CHECK: orr      x3, x9, #0xffff0000ffff0000 // encoding: [0x23,0x3d,0x10,0xb2]
   3192 // CHECK: orr      sp, x10, #0xe00000ffe00000ff // encoding: [0x5f,0x29,0x03,0xb2]
   3193 // CHECK: orr      x9, x10, #0x3ff000003ff    // encoding: [0x49,0x25,0x00,0xb2]
   3194 
   3195         // 16 bit replication-width
   3196         and x14, x15, #0x8000800080008000
   3197         and x12, x13, #0xffc3ffc3ffc3ffc3
   3198         and x11, xzr, #0x0003000300030003
   3199 // CHECK: and      x14, x15, #0x8000800080008000 // encoding: [0xee,0x81,0x01,0x92]
   3200 // CHECK: and      x12, x13, #0xffc3ffc3ffc3ffc3 // encoding: [0xac,0xad,0x0a,0x92]
   3201 // CHECK: and      x11, xzr, #0x3000300030003 // encoding: [0xeb,0x87,0x00,0x92]
   3202 
   3203         // 8 bit replication-width
   3204         eor x3, x6, #0xe0e0e0e0e0e0e0e0
   3205         eor sp, xzr, #0x0303030303030303
   3206         eor x16, x17, #0x8181818181818181
   3207 // CHECK: eor      x3, x6, #0xe0e0e0e0e0e0e0e0 // encoding: [0xc3,0xc8,0x03,0xd2]
   3208 // CHECK: eor      sp, xzr, #0x303030303030303 // encoding: [0xff,0xc7,0x00,0xd2]
   3209 // CHECK: eor      x16, x17, #0x8181818181818181 // encoding: [0x30,0xc6,0x01,0xd2]
   3210 
   3211         // 4 bit replication-width
   3212         ands xzr, x18, #0xcccccccccccccccc
   3213         ands x19, x20, #0x3333333333333333
   3214         ands x21, x22, #0x9999999999999999
   3215 // CHECK: ands     xzr, x18, #0xcccccccccccccccc // encoding: [0x5f,0xe6,0x02,0xf2]
   3216 // CHECK: ands     x19, x20, #0x3333333333333333 // encoding: [0x93,0xe6,0x00,0xf2]
   3217 // CHECK: ands     x21, x22, #0x9999999999999999 // encoding: [0xd5,0xe6,0x01,0xf2]
   3218 
   3219         // 2 bit replication-width
   3220         tst x3, #0xaaaaaaaaaaaaaaaa
   3221         tst xzr, #0x5555555555555555
   3222 // CHECK: ands     xzr, x3, #0xaaaaaaaaaaaaaaaa    // encoding: [0x7f,0xf0,0x01,0xf2]
   3223 // CHECK: ands     xzr, xzr, #0x5555555555555555   // encoding: [0xff,0xf3,0x00,0xf2]
   3224 
   3225         mov w3, #0xf000f
   3226         mov x10, #0xaaaaaaaaaaaaaaaa
   3227 // CHECK: orr      w3, wzr, #0xf000f          // encoding: [0xe3,0x8f,0x00,0x32]
   3228 // CHECK: orr      x10, xzr, #0xaaaaaaaaaaaaaaaa // encoding: [0xea,0xf3,0x01,0xb2]
   3229 
   3230 //------------------------------------------------------------------------------
   3231 // Logical (shifted register)
   3232 //------------------------------------------------------------------------------
   3233 
   3234         and w12, w23, w21
   3235         and w16, w15, w1, lsl #1
   3236         and w9, w4, w10, lsl #31
   3237         and w3, w30, w11, lsl #0
   3238         and x3, x5, x7, lsl #63
   3239 // CHECK: and      w12, w23, w21              // encoding: [0xec,0x02,0x15,0x0a]
   3240 // CHECK: and      w16, w15, w1, lsl #1       // encoding: [0xf0,0x05,0x01,0x0a]
   3241 // CHECK: and      w9, w4, w10, lsl #31       // encoding: [0x89,0x7c,0x0a,0x0a]
   3242 // CHECK: and      w3, w30, w11               // encoding: [0xc3,0x03,0x0b,0x0a]
   3243 // CHECK: and      x3, x5, x7, lsl #63        // encoding: [0xa3,0xfc,0x07,0x8a]
   3244 
   3245         and x5, x14, x19, asr #4
   3246         and w3, w17, w19, ror #31
   3247         and w0, w2, wzr, lsr #17
   3248         and w3, w30, w11, asr #0
   3249 // CHECK: and      x5, x14, x19, asr #4       // encoding: [0xc5,0x11,0x93,0x8a]
   3250 // CHECK: and      w3, w17, w19, ror #31      // encoding: [0x23,0x7e,0xd3,0x0a]
   3251 // CHECK: and      w0, w2, wzr, lsr #17       // encoding: [0x40,0x44,0x5f,0x0a]
   3252 // CHECK: and      w3, w30, w11, asr #0       // encoding: [0xc3,0x03,0x8b,0x0a]
   3253 
   3254         and xzr, x4, x26, lsl #0
   3255         and w3, wzr, w20, ror #0
   3256         and x7, x20, xzr, asr #63
   3257 // CHECK: and      xzr, x4, x26               // encoding: [0x9f,0x00,0x1a,0x8a]
   3258 // CHECK: and      w3, wzr, w20, ror #0       // encoding: [0xe3,0x03,0xd4,0x0a]
   3259 // CHECK: and      x7, x20, xzr, asr #63      // encoding: [0x87,0xfe,0x9f,0x8a]
   3260 
   3261         bic x13, x20, x14, lsl #47
   3262         bic w2, w7, w9
   3263         orr w2, w7, w0, asr #31
   3264         orr x8, x9, x10, lsl #12
   3265         orn x3, x5, x7, asr #0
   3266         orn w2, w5, w29
   3267 // CHECK: bic      x13, x20, x14, lsl #47     // encoding: [0x8d,0xbe,0x2e,0x8a]
   3268 // CHECK: bic      w2, w7, w9                 // encoding: [0xe2,0x00,0x29,0x0a]
   3269 // CHECK: orr      w2, w7, w0, asr #31        // encoding: [0xe2,0x7c,0x80,0x2a]
   3270 // CHECK: orr      x8, x9, x10, lsl #12       // encoding: [0x28,0x31,0x0a,0xaa]
   3271 // CHECK: orn      x3, x5, x7, asr #0         // encoding: [0xa3,0x00,0xa7,0xaa]
   3272 // CHECK: orn      w2, w5, w29                // encoding: [0xa2,0x00,0x3d,0x2a]
   3273 
   3274         ands w7, wzr, w9, lsl #1
   3275         ands x3, x5, x20, ror #63
   3276         bics w3, w5, w7, lsl #0
   3277         bics x3, xzr, x3, lsl #1
   3278 // CHECK: ands     w7, wzr, w9, lsl #1        // encoding: [0xe7,0x07,0x09,0x6a]
   3279 // CHECK: ands     x3, x5, x20, ror #63       // encoding: [0xa3,0xfc,0xd4,0xea]
   3280 // CHECK: bics     w3, w5, w7                 // encoding: [0xa3,0x00,0x27,0x6a]
   3281 // CHECK: bics     x3, xzr, x3, lsl #1        // encoding: [0xe3,0x07,0x23,0xea]
   3282 
   3283         tst w3, w7, lsl #31
   3284         tst x2, x20, asr #0
   3285 // CHECK: tst      w3, w7, lsl #31            // encoding: [0x7f,0x7c,0x07,0x6a]
   3286 // CHECK: tst      x2, x20, asr #0            // encoding: [0x5f,0x00,0x94,0xea]
   3287 
   3288         mov x3, x6
   3289         mov x3, xzr
   3290         mov wzr, w2
   3291         mov w3, w5
   3292 // CHECK: mov      x3, x6                     // encoding: [0xe3,0x03,0x06,0xaa]
   3293 // CHECK: mov      x3, xzr                    // encoding: [0xe3,0x03,0x1f,0xaa]
   3294 // CHECK: mov      wzr, w2                    // encoding: [0xff,0x03,0x02,0x2a]
   3295 // CHECK: mov      w3, w5                     // encoding: [0xe3,0x03,0x05,0x2a]
   3296 
   3297 //------------------------------------------------------------------------------
   3298 // Move wide (immediate)
   3299 //------------------------------------------------------------------------------
   3300 
   3301         movz w1, #65535, lsl #0
   3302         movz w2, #0, lsl #16
   3303         movn w2, #1234, lsl #0
   3304 // CHECK: movz     w1, #65535                 // encoding: [0xe1,0xff,0x9f,0x52]
   3305 // CHECK: movz     w2, #0, lsl #16            // encoding: [0x02,0x00,0xa0,0x52]
   3306 // CHECK: movn     w2, #1234                  // encoding: [0x42,0x9a,0x80,0x12]
   3307 
   3308         movz x2, #1234, lsl #32
   3309         movk xzr, #4321, lsl #48
   3310 // CHECK: movz     x2, #1234, lsl #32         // encoding: [0x42,0x9a,0xc0,0xd2]
   3311 // CHECK: movk     xzr, #4321, lsl #48        // encoding: [0x3f,0x1c,0xe2,0xf2]
   3312 
   3313         movz x2, #:abs_g0:sym
   3314         movk w3, #:abs_g0_nc:sym
   3315 // CHECK: movz    x2, #:abs_g0:sym        // encoding: [0x02'A',A,0x80'A',0xd2'A']
   3316 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g0:sym, kind: fixup_a64_movw_uabs_g0
   3317 // CHECK: movk     w3, #:abs_g0_nc:sym    // encoding: [0x03'A',A,0x80'A',0x72'A']
   3318 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g0_nc:sym, kind: fixup_a64_movw_uabs_g0_nc
   3319 
   3320         movz x4, #:abs_g1:sym
   3321         movk w5, #:abs_g1_nc:sym
   3322 // CHECK: movz     x4, #:abs_g1:sym       // encoding: [0x04'A',A,0xa0'A',0xd2'A']
   3323 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g1:sym, kind: fixup_a64_movw_uabs_g1
   3324 // CHECK: movk     w5, #:abs_g1_nc:sym    // encoding: [0x05'A',A,0xa0'A',0x72'A']
   3325 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g1_nc:sym, kind: fixup_a64_movw_uabs_g1_nc
   3326 
   3327         movz x6, #:abs_g2:sym
   3328         movk x7, #:abs_g2_nc:sym
   3329 // CHECK: movz     x6, #:abs_g2:sym       // encoding: [0x06'A',A,0xc0'A',0xd2'A']
   3330 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g2:sym, kind: fixup_a64_movw_uabs_g2
   3331 // CHECK: movk     x7, #:abs_g2_nc:sym    // encoding: [0x07'A',A,0xc0'A',0xf2'A']
   3332 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g2_nc:sym, kind: fixup_a64_movw_uabs_g2_nc
   3333 
   3334         movz x8, #:abs_g3:sym
   3335         movk x9, #:abs_g3:sym
   3336 // CHECK: movz     x8, #:abs_g3:sym       // encoding: [0x08'A',A,0xe0'A',0xd2'A']
   3337 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g3:sym, kind: fixup_a64_movw_uabs_g3
   3338 // CHECK: movk     x9, #:abs_g3:sym       // encoding: [0x09'A',A,0xe0'A',0xf2'A']
   3339 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g3:sym, kind: fixup_a64_movw_uabs_g3
   3340 
   3341         movn x30, #:abs_g0_s:sym
   3342         movz x19, #:abs_g0_s:sym
   3343         movn w10, #:abs_g0_s:sym
   3344         movz w25, #:abs_g0_s:sym
   3345 // CHECK: movn     x30, #:abs_g0_s:sym    // encoding: [0x1e'A',A,0x80'A',0x92'A']
   3346 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_a64_movw_sabs_g0
   3347 // CHECK: movz     x19, #:abs_g0_s:sym    // encoding: [0x13'A',A,0x80'A',0x92'A']
   3348 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_a64_movw_sabs_g0
   3349 // CHECK: movn     w10, #:abs_g0_s:sym    // encoding: [0x0a'A',A,0x80'A',0x12'A']
   3350 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_a64_movw_sabs_g0
   3351 // CHECK: movz     w25, #:abs_g0_s:sym    // encoding: [0x19'A',A,0x80'A',0x12'A']
   3352 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g0_s:sym, kind: fixup_a64_movw_sabs_g0
   3353 
   3354         movn x30, #:abs_g1_s:sym
   3355         movz x19, #:abs_g1_s:sym
   3356         movn w10, #:abs_g1_s:sym
   3357         movz w25, #:abs_g1_s:sym
   3358 // CHECK: movn     x30, #:abs_g1_s:sym    // encoding: [0x1e'A',A,0xa0'A',0x92'A']
   3359 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_a64_movw_sabs_g1
   3360 // CHECK: movz     x19, #:abs_g1_s:sym    // encoding: [0x13'A',A,0xa0'A',0x92'A']
   3361 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_a64_movw_sabs_g1
   3362 // CHECK: movn     w10, #:abs_g1_s:sym    // encoding: [0x0a'A',A,0xa0'A',0x12'A']
   3363 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_a64_movw_sabs_g1
   3364 // CHECK: movz     w25, #:abs_g1_s:sym    // encoding: [0x19'A',A,0xa0'A',0x12'A']
   3365 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g1_s:sym, kind: fixup_a64_movw_sabs_g1
   3366 
   3367         movn x30, #:abs_g2_s:sym
   3368         movz x19, #:abs_g2_s:sym
   3369 // CHECK: movn     x30, #:abs_g2_s:sym    // encoding: [0x1e'A',A,0xc0'A',0x92'A']
   3370 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g2_s:sym, kind: fixup_a64_movw_sabs_g2
   3371 // CHECK: movz     x19, #:abs_g2_s:sym    // encoding: [0x13'A',A,0xc0'A',0x92'A']
   3372 // CHECK-NEXT:                            //   fixup A - offset: 0, value: :abs_g2_s:sym, kind: fixup_a64_movw_sabs_g2
   3373 
   3374 //------------------------------------------------------------------------------
   3375 // PC-relative addressing
   3376 //------------------------------------------------------------------------------
   3377 
   3378         adr x2, loc
   3379         adr xzr, loc
   3380  // CHECK: adr     x2, loc                 // encoding: [0x02'A',A,A,0x10'A']
   3381  // CHECK:                                 //   fixup A - offset: 0, value: loc, kind: fixup_a64_adr_prel
   3382  // CHECK: adr     xzr, loc                // encoding: [0x1f'A',A,A,0x10'A']
   3383  // CHECK:                                 //   fixup A - offset: 0, value: loc, kind: fixup_a64_adr_prel
   3384 
   3385         adrp x29, loc
   3386  // CHECK: adrp    x29, loc                // encoding: [0x1d'A',A,A,0x90'A']
   3387  // CHECK:                                 //   fixup A - offset: 0, value: loc, kind: fixup_a64_adr_prel_page
   3388 
   3389         adrp x30, #4096
   3390         adr x20, #0
   3391         adr x9, #-1
   3392         adr x5, #1048575
   3393 // CHECK: adrp    x30, #4096              // encoding: [0x1e,0x00,0x00,0xb0]
   3394 // CHECK: adr     x20, #0                 // encoding: [0x14,0x00,0x00,0x10]
   3395 // CHECK: adr     x9, #-1                 // encoding: [0xe9,0xff,0xff,0x70]
   3396 // CHECK: adr     x5, #1048575            // encoding: [0xe5,0xff,0x7f,0x70]
   3397 
   3398         adr x9, #1048575
   3399         adr x2, #-1048576
   3400         adrp x9, #4294963200
   3401         adrp x20, #-4294967296
   3402 // CHECK: adr     x9, #1048575            // encoding: [0xe9,0xff,0x7f,0x70]
   3403 // CHECK: adr     x2, #-1048576           // encoding: [0x02,0x00,0x80,0x10]
   3404 // CHECK: adrp    x9, #4294963200         // encoding: [0xe9,0xff,0x7f,0xf0]
   3405 // CHECK: adrp    x20, #-4294967296       // encoding: [0x14,0x00,0x80,0x90]
   3406 
   3407 //------------------------------------------------------------------------------
   3408 // System
   3409 //------------------------------------------------------------------------------
   3410 
   3411         hint #0
   3412         hint #127
   3413 // CHECK: nop                             // encoding: [0x1f,0x20,0x03,0xd5]
   3414 // CHECK: hint    #127                    // encoding: [0xff,0x2f,0x03,0xd5]
   3415 
   3416         nop
   3417         yield
   3418         wfe
   3419         wfi
   3420         sev
   3421         sevl
   3422 // CHECK: nop                             // encoding: [0x1f,0x20,0x03,0xd5]
   3423 // CHECK: yield                           // encoding: [0x3f,0x20,0x03,0xd5]
   3424 // CHECK: wfe                             // encoding: [0x5f,0x20,0x03,0xd5]
   3425 // CHECK: wfi                             // encoding: [0x7f,0x20,0x03,0xd5]
   3426 // CHECK: sev                             // encoding: [0x9f,0x20,0x03,0xd5]
   3427 // CHECK: sevl                            // encoding: [0xbf,0x20,0x03,0xd5]
   3428 
   3429         clrex
   3430         clrex #0
   3431         clrex #7
   3432         clrex #15
   3433 // CHECK: clrex                           // encoding: [0x5f,0x3f,0x03,0xd5]
   3434 // CHECK: clrex   #0                      // encoding: [0x5f,0x30,0x03,0xd5]
   3435 // CHECK: clrex   #7                      // encoding: [0x5f,0x37,0x03,0xd5]
   3436 // CHECK: clrex                           // encoding: [0x5f,0x3f,0x03,0xd5]
   3437 
   3438         dsb #0
   3439         dsb #12
   3440         dsb #15
   3441         dsb oshld
   3442         dsb oshst
   3443         dsb osh
   3444         dsb nshld
   3445         dsb nshst
   3446         dsb nsh
   3447         dsb ishld
   3448         dsb ishst
   3449         dsb ish
   3450         dsb ld
   3451         dsb st
   3452         dsb sy
   3453 // CHECK: dsb     #0                      // encoding: [0x9f,0x30,0x03,0xd5]
   3454 // CHECK: dsb     #12                     // encoding: [0x9f,0x3c,0x03,0xd5]
   3455 // CHECK: dsb     sy                      // encoding: [0x9f,0x3f,0x03,0xd5]
   3456 // CHECK: dsb     oshld                   // encoding: [0x9f,0x31,0x03,0xd5]
   3457 // CHECK: dsb     oshst                   // encoding: [0x9f,0x32,0x03,0xd5]
   3458 // CHECK: dsb     osh                     // encoding: [0x9f,0x33,0x03,0xd5]
   3459 // CHECK: dsb     nshld                   // encoding: [0x9f,0x35,0x03,0xd5]
   3460 // CHECK: dsb     nshst                   // encoding: [0x9f,0x36,0x03,0xd5]
   3461 // CHECK: dsb     nsh                     // encoding: [0x9f,0x37,0x03,0xd5]
   3462 // CHECK: dsb     ishld                   // encoding: [0x9f,0x39,0x03,0xd5]
   3463 // CHECK: dsb     ishst                   // encoding: [0x9f,0x3a,0x03,0xd5]
   3464 // CHECK: dsb     ish                     // encoding: [0x9f,0x3b,0x03,0xd5]
   3465 // CHECK: dsb     ld                      // encoding: [0x9f,0x3d,0x03,0xd5]
   3466 // CHECK: dsb     st                      // encoding: [0x9f,0x3e,0x03,0xd5]
   3467 // CHECK: dsb     sy                      // encoding: [0x9f,0x3f,0x03,0xd5]
   3468 
   3469         dmb #0
   3470         dmb #12
   3471         dmb #15
   3472         dmb oshld
   3473         dmb oshst
   3474         dmb osh
   3475         dmb nshld
   3476         dmb nshst
   3477         dmb nsh
   3478         dmb ishld
   3479         dmb ishst
   3480         dmb ish
   3481         dmb ld
   3482         dmb st
   3483         dmb sy
   3484 // CHECK: dmb     #0                      // encoding: [0xbf,0x30,0x03,0xd5]
   3485 // CHECK: dmb     #12                     // encoding: [0xbf,0x3c,0x03,0xd5]
   3486 // CHECK: dmb     sy                      // encoding: [0xbf,0x3f,0x03,0xd5]
   3487 // CHECK: dmb     oshld                   // encoding: [0xbf,0x31,0x03,0xd5]
   3488 // CHECK: dmb     oshst                   // encoding: [0xbf,0x32,0x03,0xd5]
   3489 // CHECK: dmb     osh                     // encoding: [0xbf,0x33,0x03,0xd5]
   3490 // CHECK: dmb     nshld                   // encoding: [0xbf,0x35,0x03,0xd5]
   3491 // CHECK: dmb     nshst                   // encoding: [0xbf,0x36,0x03,0xd5]
   3492 // CHECK: dmb     nsh                     // encoding: [0xbf,0x37,0x03,0xd5]
   3493 // CHECK: dmb     ishld                   // encoding: [0xbf,0x39,0x03,0xd5]
   3494 // CHECK: dmb     ishst                   // encoding: [0xbf,0x3a,0x03,0xd5]
   3495 // CHECK: dmb     ish                     // encoding: [0xbf,0x3b,0x03,0xd5]
   3496 // CHECK: dmb     ld                      // encoding: [0xbf,0x3d,0x03,0xd5]
   3497 // CHECK: dmb     st                      // encoding: [0xbf,0x3e,0x03,0xd5]
   3498 // CHECK: dmb     sy                      // encoding: [0xbf,0x3f,0x03,0xd5]
   3499 
   3500         isb sy
   3501         isb
   3502         isb #12
   3503 // CHECK: isb                             // encoding: [0xdf,0x3f,0x03,0xd5]
   3504 // CHECK: isb                             // encoding: [0xdf,0x3f,0x03,0xd5]
   3505 // CHECK: isb     #12                     // encoding: [0xdf,0x3c,0x03,0xd5]
   3506 
   3507 
   3508         msr spsel, #0
   3509         msr daifset, #15
   3510         msr daifclr, #12
   3511 // CHECK: msr     spsel, #0               // encoding: [0xbf,0x40,0x00,0xd5]
   3512 // CHECK: msr     daifset, #15            // encoding: [0xdf,0x4f,0x03,0xd5]
   3513 // CHECK: msr     daifclr, #12            // encoding: [0xff,0x4c,0x03,0xd5]
   3514 
   3515         sys #7, c5, c9, #7, x5
   3516         sys #0, c15, c15, #2
   3517 // CHECK: sys     #7, c5, c9, #7, x5      // encoding: [0xe5,0x59,0x0f,0xd5]
   3518 // CHECK: sys     #0, c15, c15, #2, xzr   // encoding: [0x5f,0xff,0x08,0xd5]
   3519 
   3520         sysl x9, #7, c5, c9, #7
   3521         sysl x1, #0, c15, c15, #2
   3522 // CHECK: sysl    x9, #7, c5, c9, #7      // encoding: [0xe9,0x59,0x2f,0xd5]
   3523 // CHECK: sysl    x1, #0, c15, c15, #2    // encoding: [0x41,0xff,0x28,0xd5]
   3524 
   3525         ic ialluis
   3526         ic iallu
   3527         ic ivau, x9
   3528 // CHECK:         ic      ialluis                 // encoding: [0x1f,0x71,0x08,0xd5]
   3529 // CHECK:         ic      iallu                   // encoding: [0x1f,0x75,0x08,0xd5]
   3530 // CHECK:         ic      ivau, x9                // encoding: [0x29,0x75,0x0b,0xd5]
   3531 
   3532         dc zva, x12
   3533         dc ivac, xzr
   3534         dc isw, x2
   3535         dc cvac, x9
   3536         dc csw, x10
   3537         dc cvau, x0
   3538         dc civac, x3
   3539         dc cisw, x30
   3540 // CHECK:         dc      zva, x12                // encoding: [0x2c,0x74,0x0b,0xd5]
   3541 // CHECK:         dc      ivac, xzr               // encoding: [0x3f,0x76,0x08,0xd5]
   3542 // CHECK:         dc      isw, x2                 // encoding: [0x42,0x76,0x08,0xd5]
   3543 // CHECK:         dc      cvac, x9                // encoding: [0x29,0x7a,0x0b,0xd5]
   3544 // CHECK:         dc      csw, x10                // encoding: [0x4a,0x7a,0x08,0xd5]
   3545 // CHECK:         dc      cvau, x0                // encoding: [0x20,0x7b,0x0b,0xd5]
   3546 // CHECK:         dc      civac, x3               // encoding: [0x23,0x7e,0x0b,0xd5]
   3547 // CHECK:         dc      cisw, x30               // encoding: [0x5e,0x7e,0x08,0xd5]
   3548 
   3549         at S1E1R, x19
   3550         at S1E2R, x19
   3551         at S1E3R, x19
   3552         at S1E1W, x19
   3553         at S1E2W, x19
   3554         at S1E3W, x19
   3555         at S1E0R, x19
   3556         at S1E0W, x19
   3557         at S12E1R, x20
   3558         at S12E1W, x20
   3559         at S12E0R, x20
   3560         at S12E0W, x20
   3561 // CHECK: at      s1e1r, x19              // encoding: [0x13,0x78,0x08,0xd5]
   3562 // CHECK: at      s1e2r, x19              // encoding: [0x13,0x78,0x0c,0xd5]
   3563 // CHECK: at      s1e3r, x19              // encoding: [0x13,0x78,0x0e,0xd5]
   3564 // CHECK: at      s1e1w, x19              // encoding: [0x33,0x78,0x08,0xd5]
   3565 // CHECK: at      s1e2w, x19              // encoding: [0x33,0x78,0x0c,0xd5]
   3566 // CHECK: at      s1e3w, x19              // encoding: [0x33,0x78,0x0e,0xd5]
   3567 // CHECK: at      s1e0r, x19              // encoding: [0x53,0x78,0x08,0xd5]
   3568 // CHECK: at      s1e0w, x19              // encoding: [0x73,0x78,0x08,0xd5]
   3569 // CHECK: at      s12e1r, x20             // encoding: [0x94,0x78,0x0c,0xd5]
   3570 // CHECK: at      s12e1w, x20             // encoding: [0xb4,0x78,0x0c,0xd5]
   3571 // CHECK: at      s12e0r, x20             // encoding: [0xd4,0x78,0x0c,0xd5]
   3572 // CHECK: at      s12e0w, x20             // encoding: [0xf4,0x78,0x0c,0xd5]
   3573 
   3574         tlbi IPAS2E1IS, x4
   3575         tlbi IPAS2LE1IS, x9
   3576         tlbi VMALLE1IS
   3577         tlbi ALLE2IS
   3578         tlbi ALLE3IS
   3579         tlbi VAE1IS, x1
   3580         tlbi VAE2IS, x2
   3581         tlbi VAE3IS, x3
   3582         tlbi ASIDE1IS, x5
   3583         tlbi VAAE1IS, x9
   3584         tlbi ALLE1IS
   3585         tlbi VALE1IS, x10
   3586         tlbi VALE2IS, x11
   3587         tlbi VALE3IS, x13
   3588         tlbi VMALLS12E1IS
   3589         tlbi VAALE1IS, x14
   3590         tlbi IPAS2E1, x15
   3591         tlbi IPAS2LE1, x16
   3592         tlbi VMALLE1
   3593         tlbi ALLE2
   3594         tlbi ALLE3
   3595         tlbi VAE1, x17
   3596         tlbi VAE2, x18
   3597         tlbi VAE3, x19
   3598         tlbi ASIDE1, x20
   3599         tlbi VAAE1, x21
   3600         tlbi ALLE1
   3601         tlbi VALE1, x22
   3602         tlbi VALE2, x23
   3603         tlbi VALE3, x24
   3604         tlbi VMALLS12E1
   3605         tlbi VAALE1, x25
   3606 // CHECK: tlbi    ipas2e1is, x4           // encoding: [0x24,0x80,0x0c,0xd5]
   3607 // CHECK: tlbi    ipas2le1is, x9          // encoding: [0xa9,0x80,0x0c,0xd5]
   3608 // CHECK: tlbi    vmalle1is               // encoding: [0x1f,0x83,0x08,0xd5]
   3609 // CHECK: tlbi    alle2is                 // encoding: [0x1f,0x83,0x0c,0xd5]
   3610 // CHECK: tlbi    alle3is                 // encoding: [0x1f,0x83,0x0e,0xd5]
   3611 // CHECK: tlbi    vae1is, x1              // encoding: [0x21,0x83,0x08,0xd5]
   3612 // CHECK: tlbi    vae2is, x2              // encoding: [0x22,0x83,0x0c,0xd5]
   3613 // CHECK: tlbi    vae3is, x3              // encoding: [0x23,0x83,0x0e,0xd5]
   3614 // CHECK: tlbi    aside1is, x5            // encoding: [0x45,0x83,0x08,0xd5]
   3615 // CHECK: tlbi    vaae1is, x9             // encoding: [0x69,0x83,0x08,0xd5]
   3616 // CHECK: tlbi    alle1is                 // encoding: [0x9f,0x83,0x0c,0xd5]
   3617 // CHECK: tlbi    vale1is, x10            // encoding: [0xaa,0x83,0x08,0xd5]
   3618 // CHECK: tlbi    vale2is, x11            // encoding: [0xab,0x83,0x0c,0xd5]
   3619 // CHECK: tlbi    vale3is, x13            // encoding: [0xad,0x83,0x0e,0xd5]
   3620 // CHECK: tlbi    vmalls12e1is            // encoding: [0xdf,0x83,0x0c,0xd5]
   3621 // CHECK: tlbi    vaale1is, x14           // encoding: [0xee,0x83,0x08,0xd5]
   3622 // CHECK: tlbi    ipas2e1, x15            // encoding: [0x2f,0x84,0x0c,0xd5]
   3623 // CHECK: tlbi    ipas2le1, x16           // encoding: [0xb0,0x84,0x0c,0xd5]
   3624 // CHECK: tlbi    vmalle1                 // encoding: [0x1f,0x87,0x08,0xd5]
   3625 // CHECK: tlbi    alle2                   // encoding: [0x1f,0x87,0x0c,0xd5]
   3626 // CHECK: tlbi    alle3                   // encoding: [0x1f,0x87,0x0e,0xd5]
   3627 // CHECK: tlbi    vae1, x17               // encoding: [0x31,0x87,0x08,0xd5]
   3628 // CHECK: tlbi    vae2, x18               // encoding: [0x32,0x87,0x0c,0xd5]
   3629 // CHECK: tlbi    vae3, x19               // encoding: [0x33,0x87,0x0e,0xd5]
   3630 // CHECK: tlbi    aside1, x20             // encoding: [0x54,0x87,0x08,0xd5]
   3631 // CHECK: tlbi    vaae1, x21              // encoding: [0x75,0x87,0x08,0xd5]
   3632 // CHECK: tlbi    alle1                   // encoding: [0x9f,0x87,0x0c,0xd5]
   3633 // CHECK: tlbi    vale1, x22              // encoding: [0xb6,0x87,0x08,0xd5]
   3634 // CHECK: tlbi    vale2, x23              // encoding: [0xb7,0x87,0x0c,0xd5]
   3635 // CHECK: tlbi    vale3, x24              // encoding: [0xb8,0x87,0x0e,0xd5]
   3636 // CHECK: tlbi    vmalls12e1              // encoding: [0xdf,0x87,0x0c,0xd5]
   3637 // CHECK: tlbi    vaale1, x25             // encoding: [0xf9,0x87,0x08,0xd5]
   3638 
   3639 	msr TEECR32_EL1, x12
   3640 	msr OSDTRRX_EL1, x12
   3641 	msr MDCCINT_EL1, x12
   3642 	msr MDSCR_EL1, x12
   3643 	msr OSDTRTX_EL1, x12
   3644 	msr DBGDTR_EL0, x12
   3645 	msr DBGDTRTX_EL0, x12
   3646 	msr OSECCR_EL1, x12
   3647 	msr DBGVCR32_EL2, x12
   3648 	msr DBGBVR0_EL1, x12
   3649 	msr DBGBVR1_EL1, x12
   3650 	msr DBGBVR2_EL1, x12
   3651 	msr DBGBVR3_EL1, x12
   3652 	msr DBGBVR4_EL1, x12
   3653 	msr DBGBVR5_EL1, x12
   3654 	msr DBGBVR6_EL1, x12
   3655 	msr DBGBVR7_EL1, x12
   3656 	msr DBGBVR8_EL1, x12
   3657 	msr DBGBVR9_EL1, x12
   3658 	msr DBGBVR10_EL1, x12
   3659 	msr DBGBVR11_EL1, x12
   3660 	msr DBGBVR12_EL1, x12
   3661 	msr DBGBVR13_EL1, x12
   3662 	msr DBGBVR14_EL1, x12
   3663 	msr DBGBVR15_EL1, x12
   3664 	msr DBGBCR0_EL1, x12
   3665 	msr DBGBCR1_EL1, x12
   3666 	msr DBGBCR2_EL1, x12
   3667 	msr DBGBCR3_EL1, x12
   3668 	msr DBGBCR4_EL1, x12
   3669 	msr DBGBCR5_EL1, x12
   3670 	msr DBGBCR6_EL1, x12
   3671 	msr DBGBCR7_EL1, x12
   3672 	msr DBGBCR8_EL1, x12
   3673 	msr DBGBCR9_EL1, x12
   3674 	msr DBGBCR10_EL1, x12
   3675 	msr DBGBCR11_EL1, x12
   3676 	msr DBGBCR12_EL1, x12
   3677 	msr DBGBCR13_EL1, x12
   3678 	msr DBGBCR14_EL1, x12
   3679 	msr DBGBCR15_EL1, x12
   3680 	msr DBGWVR0_EL1, x12
   3681 	msr DBGWVR1_EL1, x12
   3682 	msr DBGWVR2_EL1, x12
   3683 	msr DBGWVR3_EL1, x12
   3684 	msr DBGWVR4_EL1, x12
   3685 	msr DBGWVR5_EL1, x12
   3686 	msr DBGWVR6_EL1, x12
   3687 	msr DBGWVR7_EL1, x12
   3688 	msr DBGWVR8_EL1, x12
   3689 	msr DBGWVR9_EL1, x12
   3690 	msr DBGWVR10_EL1, x12
   3691 	msr DBGWVR11_EL1, x12
   3692 	msr DBGWVR12_EL1, x12
   3693 	msr DBGWVR13_EL1, x12
   3694 	msr DBGWVR14_EL1, x12
   3695 	msr DBGWVR15_EL1, x12
   3696 	msr DBGWCR0_EL1, x12
   3697 	msr DBGWCR1_EL1, x12
   3698 	msr DBGWCR2_EL1, x12
   3699 	msr DBGWCR3_EL1, x12
   3700 	msr DBGWCR4_EL1, x12
   3701 	msr DBGWCR5_EL1, x12
   3702 	msr DBGWCR6_EL1, x12
   3703 	msr DBGWCR7_EL1, x12
   3704 	msr DBGWCR8_EL1, x12
   3705 	msr DBGWCR9_EL1, x12
   3706 	msr DBGWCR10_EL1, x12
   3707 	msr DBGWCR11_EL1, x12
   3708 	msr DBGWCR12_EL1, x12
   3709 	msr DBGWCR13_EL1, x12
   3710 	msr DBGWCR14_EL1, x12
   3711 	msr DBGWCR15_EL1, x12
   3712 	msr TEEHBR32_EL1, x12
   3713 	msr OSLAR_EL1, x12
   3714 	msr OSDLR_EL1, x12
   3715 	msr DBGPRCR_EL1, x12
   3716 	msr DBGCLAIMSET_EL1, x12
   3717 	msr DBGCLAIMCLR_EL1, x12
   3718 	msr CSSELR_EL1, x12
   3719 	msr VPIDR_EL2, x12
   3720 	msr VMPIDR_EL2, x12
   3721 	msr SCTLR_EL1, x12
   3722 	msr SCTLR_EL2, x12
   3723 	msr SCTLR_EL3, x12
   3724 	msr ACTLR_EL1, x12
   3725 	msr ACTLR_EL2, x12
   3726 	msr ACTLR_EL3, x12
   3727 	msr CPACR_EL1, x12
   3728 	msr HCR_EL2, x12
   3729 	msr SCR_EL3, x12
   3730 	msr MDCR_EL2, x12
   3731 	msr SDER32_EL3, x12
   3732 	msr CPTR_EL2, x12
   3733 	msr CPTR_EL3, x12
   3734 	msr HSTR_EL2, x12
   3735 	msr HACR_EL2, x12
   3736 	msr MDCR_EL3, x12
   3737 	msr TTBR0_EL1, x12
   3738 	msr TTBR0_EL2, x12
   3739 	msr TTBR0_EL3, x12
   3740 	msr TTBR1_EL1, x12
   3741 	msr TCR_EL1, x12
   3742 	msr TCR_EL2, x12
   3743 	msr TCR_EL3, x12
   3744 	msr VTTBR_EL2, x12
   3745 	msr VTCR_EL2, x12
   3746 	msr DACR32_EL2, x12
   3747 	msr SPSR_EL1, x12
   3748 	msr SPSR_EL2, x12
   3749 	msr SPSR_EL3, x12
   3750 	msr ELR_EL1, x12
   3751 	msr ELR_EL2, x12
   3752 	msr ELR_EL3, x12
   3753 	msr SP_EL0, x12
   3754 	msr SP_EL1, x12
   3755 	msr SP_EL2, x12
   3756 	msr SPSel, x12
   3757 	msr NZCV, x12
   3758 	msr DAIF, x12
   3759 	msr CurrentEL, x12
   3760 	msr SPSR_irq, x12
   3761 	msr SPSR_abt, x12
   3762 	msr SPSR_und, x12
   3763 	msr SPSR_fiq, x12
   3764 	msr FPCR, x12
   3765 	msr FPSR, x12
   3766 	msr DSPSR_EL0, x12
   3767 	msr DLR_EL0, x12
   3768 	msr IFSR32_EL2, x12
   3769 	msr AFSR0_EL1, x12
   3770 	msr AFSR0_EL2, x12
   3771 	msr AFSR0_EL3, x12
   3772 	msr AFSR1_EL1, x12
   3773 	msr AFSR1_EL2, x12
   3774 	msr AFSR1_EL3, x12
   3775 	msr ESR_EL1, x12
   3776 	msr ESR_EL2, x12
   3777 	msr ESR_EL3, x12
   3778 	msr FPEXC32_EL2, x12
   3779 	msr FAR_EL1, x12
   3780 	msr FAR_EL2, x12
   3781 	msr FAR_EL3, x12
   3782 	msr HPFAR_EL2, x12
   3783 	msr PAR_EL1, x12
   3784 	msr PMCR_EL0, x12
   3785 	msr PMCNTENSET_EL0, x12
   3786 	msr PMCNTENCLR_EL0, x12
   3787 	msr PMOVSCLR_EL0, x12
   3788 	msr PMSELR_EL0, x12
   3789 	msr PMCCNTR_EL0, x12
   3790 	msr PMXEVTYPER_EL0, x12
   3791 	msr PMXEVCNTR_EL0, x12
   3792 	msr PMUSERENR_EL0, x12
   3793 	msr PMINTENSET_EL1, x12
   3794 	msr PMINTENCLR_EL1, x12
   3795 	msr PMOVSSET_EL0, x12
   3796 	msr MAIR_EL1, x12
   3797 	msr MAIR_EL2, x12
   3798 	msr MAIR_EL3, x12
   3799 	msr AMAIR_EL1, x12
   3800 	msr AMAIR_EL2, x12
   3801 	msr AMAIR_EL3, x12
   3802 	msr VBAR_EL1, x12
   3803 	msr VBAR_EL2, x12
   3804 	msr VBAR_EL3, x12
   3805 	msr RMR_EL1, x12
   3806 	msr RMR_EL2, x12
   3807 	msr RMR_EL3, x12
   3808 	msr CONTEXTIDR_EL1, x12
   3809 	msr TPIDR_EL0, x12
   3810 	msr TPIDR_EL2, x12
   3811 	msr TPIDR_EL3, x12
   3812 	msr TPIDRRO_EL0, x12
   3813 	msr TPIDR_EL1, x12
   3814 	msr CNTFRQ_EL0, x12
   3815 	msr CNTVOFF_EL2, x12
   3816 	msr CNTKCTL_EL1, x12
   3817 	msr CNTHCTL_EL2, x12
   3818 	msr CNTP_TVAL_EL0, x12
   3819 	msr CNTHP_TVAL_EL2, x12
   3820 	msr CNTPS_TVAL_EL1, x12
   3821 	msr CNTP_CTL_EL0, x12
   3822 	msr CNTHP_CTL_EL2, x12
   3823 	msr CNTPS_CTL_EL1, x12
   3824 	msr CNTP_CVAL_EL0, x12
   3825 	msr CNTHP_CVAL_EL2, x12
   3826 	msr CNTPS_CVAL_EL1, x12
   3827 	msr CNTV_TVAL_EL0, x12
   3828 	msr CNTV_CTL_EL0, x12
   3829 	msr CNTV_CVAL_EL0, x12
   3830 	msr PMEVCNTR0_EL0, x12
   3831 	msr PMEVCNTR1_EL0, x12
   3832 	msr PMEVCNTR2_EL0, x12
   3833 	msr PMEVCNTR3_EL0, x12
   3834 	msr PMEVCNTR4_EL0, x12
   3835 	msr PMEVCNTR5_EL0, x12
   3836 	msr PMEVCNTR6_EL0, x12
   3837 	msr PMEVCNTR7_EL0, x12
   3838 	msr PMEVCNTR8_EL0, x12
   3839 	msr PMEVCNTR9_EL0, x12
   3840 	msr PMEVCNTR10_EL0, x12
   3841 	msr PMEVCNTR11_EL0, x12
   3842 	msr PMEVCNTR12_EL0, x12
   3843 	msr PMEVCNTR13_EL0, x12
   3844 	msr PMEVCNTR14_EL0, x12
   3845 	msr PMEVCNTR15_EL0, x12
   3846 	msr PMEVCNTR16_EL0, x12
   3847 	msr PMEVCNTR17_EL0, x12
   3848 	msr PMEVCNTR18_EL0, x12
   3849 	msr PMEVCNTR19_EL0, x12
   3850 	msr PMEVCNTR20_EL0, x12
   3851 	msr PMEVCNTR21_EL0, x12
   3852 	msr PMEVCNTR22_EL0, x12
   3853 	msr PMEVCNTR23_EL0, x12
   3854 	msr PMEVCNTR24_EL0, x12
   3855 	msr PMEVCNTR25_EL0, x12
   3856 	msr PMEVCNTR26_EL0, x12
   3857 	msr PMEVCNTR27_EL0, x12
   3858 	msr PMEVCNTR28_EL0, x12
   3859 	msr PMEVCNTR29_EL0, x12
   3860 	msr PMEVCNTR30_EL0, x12
   3861 	msr PMCCFILTR_EL0, x12
   3862 	msr PMEVTYPER0_EL0, x12
   3863 	msr PMEVTYPER1_EL0, x12
   3864 	msr PMEVTYPER2_EL0, x12
   3865 	msr PMEVTYPER3_EL0, x12
   3866 	msr PMEVTYPER4_EL0, x12
   3867 	msr PMEVTYPER5_EL0, x12
   3868 	msr PMEVTYPER6_EL0, x12
   3869 	msr PMEVTYPER7_EL0, x12
   3870 	msr PMEVTYPER8_EL0, x12
   3871 	msr PMEVTYPER9_EL0, x12
   3872 	msr PMEVTYPER10_EL0, x12
   3873 	msr PMEVTYPER11_EL0, x12
   3874 	msr PMEVTYPER12_EL0, x12
   3875 	msr PMEVTYPER13_EL0, x12
   3876 	msr PMEVTYPER14_EL0, x12
   3877 	msr PMEVTYPER15_EL0, x12
   3878 	msr PMEVTYPER16_EL0, x12
   3879 	msr PMEVTYPER17_EL0, x12
   3880 	msr PMEVTYPER18_EL0, x12
   3881 	msr PMEVTYPER19_EL0, x12
   3882 	msr PMEVTYPER20_EL0, x12
   3883 	msr PMEVTYPER21_EL0, x12
   3884 	msr PMEVTYPER22_EL0, x12
   3885 	msr PMEVTYPER23_EL0, x12
   3886 	msr PMEVTYPER24_EL0, x12
   3887 	msr PMEVTYPER25_EL0, x12
   3888 	msr PMEVTYPER26_EL0, x12
   3889 	msr PMEVTYPER27_EL0, x12
   3890 	msr PMEVTYPER28_EL0, x12
   3891 	msr PMEVTYPER29_EL0, x12
   3892 	msr PMEVTYPER30_EL0, x12
   3893 // CHECK: msr      teecr32_el1, x12           // encoding: [0x0c,0x00,0x12,0xd5]
   3894 // CHECK: msr      osdtrrx_el1, x12           // encoding: [0x4c,0x00,0x10,0xd5]
   3895 // CHECK: msr      mdccint_el1, x12           // encoding: [0x0c,0x02,0x10,0xd5]
   3896 // CHECK: msr      mdscr_el1, x12             // encoding: [0x4c,0x02,0x10,0xd5]
   3897 // CHECK: msr      osdtrtx_el1, x12           // encoding: [0x4c,0x03,0x10,0xd5]
   3898 // CHECK: msr      dbgdtr_el0, x12            // encoding: [0x0c,0x04,0x13,0xd5]
   3899 // CHECK: msr      dbgdtrtx_el0, x12          // encoding: [0x0c,0x05,0x13,0xd5]
   3900 // CHECK: msr      oseccr_el1, x12            // encoding: [0x4c,0x06,0x10,0xd5]
   3901 // CHECK: msr      dbgvcr32_el2, x12          // encoding: [0x0c,0x07,0x14,0xd5]
   3902 // CHECK: msr      dbgbvr0_el1, x12           // encoding: [0x8c,0x00,0x10,0xd5]
   3903 // CHECK: msr      dbgbvr1_el1, x12           // encoding: [0x8c,0x01,0x10,0xd5]
   3904 // CHECK: msr      dbgbvr2_el1, x12           // encoding: [0x8c,0x02,0x10,0xd5]
   3905 // CHECK: msr      dbgbvr3_el1, x12           // encoding: [0x8c,0x03,0x10,0xd5]
   3906 // CHECK: msr      dbgbvr4_el1, x12           // encoding: [0x8c,0x04,0x10,0xd5]
   3907 // CHECK: msr      dbgbvr5_el1, x12           // encoding: [0x8c,0x05,0x10,0xd5]
   3908 // CHECK: msr      dbgbvr6_el1, x12           // encoding: [0x8c,0x06,0x10,0xd5]
   3909 // CHECK: msr      dbgbvr7_el1, x12           // encoding: [0x8c,0x07,0x10,0xd5]
   3910 // CHECK: msr      dbgbvr8_el1, x12           // encoding: [0x8c,0x08,0x10,0xd5]
   3911 // CHECK: msr      dbgbvr9_el1, x12           // encoding: [0x8c,0x09,0x10,0xd5]
   3912 // CHECK: msr      dbgbvr10_el1, x12          // encoding: [0x8c,0x0a,0x10,0xd5]
   3913 // CHECK: msr      dbgbvr11_el1, x12          // encoding: [0x8c,0x0b,0x10,0xd5]
   3914 // CHECK: msr      dbgbvr12_el1, x12          // encoding: [0x8c,0x0c,0x10,0xd5]
   3915 // CHECK: msr      dbgbvr13_el1, x12          // encoding: [0x8c,0x0d,0x10,0xd5]
   3916 // CHECK: msr      dbgbvr14_el1, x12          // encoding: [0x8c,0x0e,0x10,0xd5]
   3917 // CHECK: msr      dbgbvr15_el1, x12          // encoding: [0x8c,0x0f,0x10,0xd5]
   3918 // CHECK: msr      dbgbcr0_el1, x12           // encoding: [0xac,0x00,0x10,0xd5]
   3919 // CHECK: msr      dbgbcr1_el1, x12           // encoding: [0xac,0x01,0x10,0xd5]
   3920 // CHECK: msr      dbgbcr2_el1, x12           // encoding: [0xac,0x02,0x10,0xd5]
   3921 // CHECK: msr      dbgbcr3_el1, x12           // encoding: [0xac,0x03,0x10,0xd5]
   3922 // CHECK: msr      dbgbcr4_el1, x12           // encoding: [0xac,0x04,0x10,0xd5]
   3923 // CHECK: msr      dbgbcr5_el1, x12           // encoding: [0xac,0x05,0x10,0xd5]
   3924 // CHECK: msr      dbgbcr6_el1, x12           // encoding: [0xac,0x06,0x10,0xd5]
   3925 // CHECK: msr      dbgbcr7_el1, x12           // encoding: [0xac,0x07,0x10,0xd5]
   3926 // CHECK: msr      dbgbcr8_el1, x12           // encoding: [0xac,0x08,0x10,0xd5]
   3927 // CHECK: msr      dbgbcr9_el1, x12           // encoding: [0xac,0x09,0x10,0xd5]
   3928 // CHECK: msr      dbgbcr10_el1, x12          // encoding: [0xac,0x0a,0x10,0xd5]
   3929 // CHECK: msr      dbgbcr11_el1, x12          // encoding: [0xac,0x0b,0x10,0xd5]
   3930 // CHECK: msr      dbgbcr12_el1, x12          // encoding: [0xac,0x0c,0x10,0xd5]
   3931 // CHECK: msr      dbgbcr13_el1, x12          // encoding: [0xac,0x0d,0x10,0xd5]
   3932 // CHECK: msr      dbgbcr14_el1, x12          // encoding: [0xac,0x0e,0x10,0xd5]
   3933 // CHECK: msr      dbgbcr15_el1, x12          // encoding: [0xac,0x0f,0x10,0xd5]
   3934 // CHECK: msr      dbgwvr0_el1, x12           // encoding: [0xcc,0x00,0x10,0xd5]
   3935 // CHECK: msr      dbgwvr1_el1, x12           // encoding: [0xcc,0x01,0x10,0xd5]
   3936 // CHECK: msr      dbgwvr2_el1, x12           // encoding: [0xcc,0x02,0x10,0xd5]
   3937 // CHECK: msr      dbgwvr3_el1, x12           // encoding: [0xcc,0x03,0x10,0xd5]
   3938 // CHECK: msr      dbgwvr4_el1, x12           // encoding: [0xcc,0x04,0x10,0xd5]
   3939 // CHECK: msr      dbgwvr5_el1, x12           // encoding: [0xcc,0x05,0x10,0xd5]
   3940 // CHECK: msr      dbgwvr6_el1, x12           // encoding: [0xcc,0x06,0x10,0xd5]
   3941 // CHECK: msr      dbgwvr7_el1, x12           // encoding: [0xcc,0x07,0x10,0xd5]
   3942 // CHECK: msr      dbgwvr8_el1, x12           // encoding: [0xcc,0x08,0x10,0xd5]
   3943 // CHECK: msr      dbgwvr9_el1, x12           // encoding: [0xcc,0x09,0x10,0xd5]
   3944 // CHECK: msr      dbgwvr10_el1, x12          // encoding: [0xcc,0x0a,0x10,0xd5]
   3945 // CHECK: msr      dbgwvr11_el1, x12          // encoding: [0xcc,0x0b,0x10,0xd5]
   3946 // CHECK: msr      dbgwvr12_el1, x12          // encoding: [0xcc,0x0c,0x10,0xd5]
   3947 // CHECK: msr      dbgwvr13_el1, x12          // encoding: [0xcc,0x0d,0x10,0xd5]
   3948 // CHECK: msr      dbgwvr14_el1, x12          // encoding: [0xcc,0x0e,0x10,0xd5]
   3949 // CHECK: msr      dbgwvr15_el1, x12          // encoding: [0xcc,0x0f,0x10,0xd5]
   3950 // CHECK: msr      dbgwcr0_el1, x12           // encoding: [0xec,0x00,0x10,0xd5]
   3951 // CHECK: msr      dbgwcr1_el1, x12           // encoding: [0xec,0x01,0x10,0xd5]
   3952 // CHECK: msr      dbgwcr2_el1, x12           // encoding: [0xec,0x02,0x10,0xd5]
   3953 // CHECK: msr      dbgwcr3_el1, x12           // encoding: [0xec,0x03,0x10,0xd5]
   3954 // CHECK: msr      dbgwcr4_el1, x12           // encoding: [0xec,0x04,0x10,0xd5]
   3955 // CHECK: msr      dbgwcr5_el1, x12           // encoding: [0xec,0x05,0x10,0xd5]
   3956 // CHECK: msr      dbgwcr6_el1, x12           // encoding: [0xec,0x06,0x10,0xd5]
   3957 // CHECK: msr      dbgwcr7_el1, x12           // encoding: [0xec,0x07,0x10,0xd5]
   3958 // CHECK: msr      dbgwcr8_el1, x12           // encoding: [0xec,0x08,0x10,0xd5]
   3959 // CHECK: msr      dbgwcr9_el1, x12           // encoding: [0xec,0x09,0x10,0xd5]
   3960 // CHECK: msr      dbgwcr10_el1, x12          // encoding: [0xec,0x0a,0x10,0xd5]
   3961 // CHECK: msr      dbgwcr11_el1, x12          // encoding: [0xec,0x0b,0x10,0xd5]
   3962 // CHECK: msr      dbgwcr12_el1, x12          // encoding: [0xec,0x0c,0x10,0xd5]
   3963 // CHECK: msr      dbgwcr13_el1, x12          // encoding: [0xec,0x0d,0x10,0xd5]
   3964 // CHECK: msr      dbgwcr14_el1, x12          // encoding: [0xec,0x0e,0x10,0xd5]
   3965 // CHECK: msr      dbgwcr15_el1, x12          // encoding: [0xec,0x0f,0x10,0xd5]
   3966 // CHECK: msr      teehbr32_el1, x12          // encoding: [0x0c,0x10,0x12,0xd5]
   3967 // CHECK: msr      oslar_el1, x12             // encoding: [0x8c,0x10,0x10,0xd5]
   3968 // CHECK: msr      osdlr_el1, x12             // encoding: [0x8c,0x13,0x10,0xd5]
   3969 // CHECK: msr      dbgprcr_el1, x12           // encoding: [0x8c,0x14,0x10,0xd5]
   3970 // CHECK: msr      dbgclaimset_el1, x12       // encoding: [0xcc,0x78,0x10,0xd5]
   3971 // CHECK: msr      dbgclaimclr_el1, x12       // encoding: [0xcc,0x79,0x10,0xd5]
   3972 // CHECK: msr      csselr_el1, x12            // encoding: [0x0c,0x00,0x1a,0xd5]
   3973 // CHECK: msr      vpidr_el2, x12             // encoding: [0x0c,0x00,0x1c,0xd5]
   3974 // CHECK: msr      vmpidr_el2, x12            // encoding: [0xac,0x00,0x1c,0xd5]
   3975 // CHECK: msr      sctlr_el1, x12             // encoding: [0x0c,0x10,0x18,0xd5]
   3976 // CHECK: msr      sctlr_el2, x12             // encoding: [0x0c,0x10,0x1c,0xd5]
   3977 // CHECK: msr      sctlr_el3, x12             // encoding: [0x0c,0x10,0x1e,0xd5]
   3978 // CHECK: msr      actlr_el1, x12             // encoding: [0x2c,0x10,0x18,0xd5]
   3979 // CHECK: msr      actlr_el2, x12             // encoding: [0x2c,0x10,0x1c,0xd5]
   3980 // CHECK: msr      actlr_el3, x12             // encoding: [0x2c,0x10,0x1e,0xd5]
   3981 // CHECK: msr      cpacr_el1, x12             // encoding: [0x4c,0x10,0x18,0xd5]
   3982 // CHECK: msr      hcr_el2, x12               // encoding: [0x0c,0x11,0x1c,0xd5]
   3983 // CHECK: msr      scr_el3, x12               // encoding: [0x0c,0x11,0x1e,0xd5]
   3984 // CHECK: msr      mdcr_el2, x12              // encoding: [0x2c,0x11,0x1c,0xd5]
   3985 // CHECK: msr      sder32_el3, x12            // encoding: [0x2c,0x11,0x1e,0xd5]
   3986 // CHECK: msr      cptr_el2, x12              // encoding: [0x4c,0x11,0x1c,0xd5]
   3987 // CHECK: msr      cptr_el3, x12              // encoding: [0x4c,0x11,0x1e,0xd5]
   3988 // CHECK: msr      hstr_el2, x12              // encoding: [0x6c,0x11,0x1c,0xd5]
   3989 // CHECK: msr      hacr_el2, x12              // encoding: [0xec,0x11,0x1c,0xd5]
   3990 // CHECK: msr      mdcr_el3, x12              // encoding: [0x2c,0x13,0x1e,0xd5]
   3991 // CHECK: msr      ttbr0_el1, x12             // encoding: [0x0c,0x20,0x18,0xd5]
   3992 // CHECK: msr      ttbr0_el2, x12             // encoding: [0x0c,0x20,0x1c,0xd5]
   3993 // CHECK: msr      ttbr0_el3, x12             // encoding: [0x0c,0x20,0x1e,0xd5]
   3994 // CHECK: msr      ttbr1_el1, x12             // encoding: [0x2c,0x20,0x18,0xd5]
   3995 // CHECK: msr      tcr_el1, x12               // encoding: [0x4c,0x20,0x18,0xd5]
   3996 // CHECK: msr      tcr_el2, x12               // encoding: [0x4c,0x20,0x1c,0xd5]
   3997 // CHECK: msr      tcr_el3, x12               // encoding: [0x4c,0x20,0x1e,0xd5]
   3998 // CHECK: msr      vttbr_el2, x12             // encoding: [0x0c,0x21,0x1c,0xd5]
   3999 // CHECK: msr      vtcr_el2, x12              // encoding: [0x4c,0x21,0x1c,0xd5]
   4000 // CHECK: msr      dacr32_el2, x12            // encoding: [0x0c,0x30,0x1c,0xd5]
   4001 // CHECK: msr      spsr_el1, x12              // encoding: [0x0c,0x40,0x18,0xd5]
   4002 // CHECK: msr      spsr_el2, x12              // encoding: [0x0c,0x40,0x1c,0xd5]
   4003 // CHECK: msr      spsr_el3, x12              // encoding: [0x0c,0x40,0x1e,0xd5]
   4004 // CHECK: msr      elr_el1, x12               // encoding: [0x2c,0x40,0x18,0xd5]
   4005 // CHECK: msr      elr_el2, x12               // encoding: [0x2c,0x40,0x1c,0xd5]
   4006 // CHECK: msr      elr_el3, x12               // encoding: [0x2c,0x40,0x1e,0xd5]
   4007 // CHECK: msr      sp_el0, x12                // encoding: [0x0c,0x41,0x18,0xd5]
   4008 // CHECK: msr      sp_el1, x12                // encoding: [0x0c,0x41,0x1c,0xd5]
   4009 // CHECK: msr      sp_el2, x12                // encoding: [0x0c,0x41,0x1e,0xd5]
   4010 // CHECK: msr      spsel, x12                 // encoding: [0x0c,0x42,0x18,0xd5]
   4011 // CHECK: msr      nzcv, x12                  // encoding: [0x0c,0x42,0x1b,0xd5]
   4012 // CHECK: msr      daif, x12                  // encoding: [0x2c,0x42,0x1b,0xd5]
   4013 // CHECK: msr      currentel, x12             // encoding: [0x4c,0x42,0x18,0xd5]
   4014 // CHECK: msr      spsr_irq, x12              // encoding: [0x0c,0x43,0x1c,0xd5]
   4015 // CHECK: msr      spsr_abt, x12              // encoding: [0x2c,0x43,0x1c,0xd5]
   4016 // CHECK: msr      spsr_und, x12              // encoding: [0x4c,0x43,0x1c,0xd5]
   4017 // CHECK: msr      spsr_fiq, x12              // encoding: [0x6c,0x43,0x1c,0xd5]
   4018 // CHECK: msr      fpcr, x12                  // encoding: [0x0c,0x44,0x1b,0xd5]
   4019 // CHECK: msr      fpsr, x12                  // encoding: [0x2c,0x44,0x1b,0xd5]
   4020 // CHECK: msr      dspsr_el0, x12             // encoding: [0x0c,0x45,0x1b,0xd5]
   4021 // CHECK: msr      dlr_el0, x12               // encoding: [0x2c,0x45,0x1b,0xd5]
   4022 // CHECK: msr      ifsr32_el2, x12            // encoding: [0x2c,0x50,0x1c,0xd5]
   4023 // CHECK: msr      afsr0_el1, x12             // encoding: [0x0c,0x51,0x18,0xd5]
   4024 // CHECK: msr      afsr0_el2, x12             // encoding: [0x0c,0x51,0x1c,0xd5]
   4025 // CHECK: msr      afsr0_el3, x12             // encoding: [0x0c,0x51,0x1e,0xd5]
   4026 // CHECK: msr      afsr1_el1, x12             // encoding: [0x2c,0x51,0x18,0xd5]
   4027 // CHECK: msr      afsr1_el2, x12             // encoding: [0x2c,0x51,0x1c,0xd5]
   4028 // CHECK: msr      afsr1_el3, x12             // encoding: [0x2c,0x51,0x1e,0xd5]
   4029 // CHECK: msr      esr_el1, x12               // encoding: [0x0c,0x52,0x18,0xd5]
   4030 // CHECK: msr      esr_el2, x12               // encoding: [0x0c,0x52,0x1c,0xd5]
   4031 // CHECK: msr      esr_el3, x12               // encoding: [0x0c,0x52,0x1e,0xd5]
   4032 // CHECK: msr      fpexc32_el2, x12           // encoding: [0x0c,0x53,0x1c,0xd5]
   4033 // CHECK: msr      far_el1, x12               // encoding: [0x0c,0x60,0x18,0xd5]
   4034 // CHECK: msr      far_el2, x12               // encoding: [0x0c,0x60,0x1c,0xd5]
   4035 // CHECK: msr      far_el3, x12               // encoding: [0x0c,0x60,0x1e,0xd5]
   4036 // CHECK: msr      hpfar_el2, x12             // encoding: [0x8c,0x60,0x1c,0xd5]
   4037 // CHECK: msr      par_el1, x12               // encoding: [0x0c,0x74,0x18,0xd5]
   4038 // CHECK: msr      pmcr_el0, x12              // encoding: [0x0c,0x9c,0x1b,0xd5]
   4039 // CHECK: msr      pmcntenset_el0, x12        // encoding: [0x2c,0x9c,0x1b,0xd5]
   4040 // CHECK: msr      pmcntenclr_el0, x12        // encoding: [0x4c,0x9c,0x1b,0xd5]
   4041 // CHECK: msr      pmovsclr_el0, x12          // encoding: [0x6c,0x9c,0x1b,0xd5]
   4042 // CHECK: msr      pmselr_el0, x12            // encoding: [0xac,0x9c,0x1b,0xd5]
   4043 // CHECK: msr      pmccntr_el0, x12           // encoding: [0x0c,0x9d,0x1b,0xd5]
   4044 // CHECK: msr      pmxevtyper_el0, x12        // encoding: [0x2c,0x9d,0x1b,0xd5]
   4045 // CHECK: msr      pmxevcntr_el0, x12         // encoding: [0x4c,0x9d,0x1b,0xd5]
   4046 // CHECK: msr      pmuserenr_el0, x12         // encoding: [0x0c,0x9e,0x1b,0xd5]
   4047 // CHECK: msr      pmintenset_el1, x12        // encoding: [0x2c,0x9e,0x18,0xd5]
   4048 // CHECK: msr      pmintenclr_el1, x12        // encoding: [0x4c,0x9e,0x18,0xd5]
   4049 // CHECK: msr      pmovsset_el0, x12          // encoding: [0x6c,0x9e,0x1b,0xd5]
   4050 // CHECK: msr      mair_el1, x12              // encoding: [0x0c,0xa2,0x18,0xd5]
   4051 // CHECK: msr      mair_el2, x12              // encoding: [0x0c,0xa2,0x1c,0xd5]
   4052 // CHECK: msr      mair_el3, x12              // encoding: [0x0c,0xa2,0x1e,0xd5]
   4053 // CHECK: msr      amair_el1, x12             // encoding: [0x0c,0xa3,0x18,0xd5]
   4054 // CHECK: msr      amair_el2, x12             // encoding: [0x0c,0xa3,0x1c,0xd5]
   4055 // CHECK: msr      amair_el3, x12             // encoding: [0x0c,0xa3,0x1e,0xd5]
   4056 // CHECK: msr      vbar_el1, x12              // encoding: [0x0c,0xc0,0x18,0xd5]
   4057 // CHECK: msr      vbar_el2, x12              // encoding: [0x0c,0xc0,0x1c,0xd5]
   4058 // CHECK: msr      vbar_el3, x12              // encoding: [0x0c,0xc0,0x1e,0xd5]
   4059 // CHECK: msr      rmr_el1, x12               // encoding: [0x4c,0xc0,0x18,0xd5]
   4060 // CHECK: msr      rmr_el2, x12               // encoding: [0x4c,0xc0,0x1c,0xd5]
   4061 // CHECK: msr      rmr_el3, x12               // encoding: [0x4c,0xc0,0x1e,0xd5]
   4062 // CHECK: msr      contextidr_el1, x12        // encoding: [0x2c,0xd0,0x18,0xd5]
   4063 // CHECK: msr      tpidr_el0, x12             // encoding: [0x4c,0xd0,0x1b,0xd5]
   4064 // CHECK: msr      tpidr_el2, x12             // encoding: [0x4c,0xd0,0x1c,0xd5]
   4065 // CHECK: msr      tpidr_el3, x12             // encoding: [0x4c,0xd0,0x1e,0xd5]
   4066 // CHECK: msr      tpidrro_el0, x12           // encoding: [0x6c,0xd0,0x1b,0xd5]
   4067 // CHECK: msr      tpidr_el1, x12             // encoding: [0x8c,0xd0,0x18,0xd5]
   4068 // CHECK: msr      cntfrq_el0, x12            // encoding: [0x0c,0xe0,0x1b,0xd5]
   4069 // CHECK: msr      cntvoff_el2, x12           // encoding: [0x6c,0xe0,0x1c,0xd5]
   4070 // CHECK: msr      cntkctl_el1, x12           // encoding: [0x0c,0xe1,0x18,0xd5]
   4071 // CHECK: msr      cnthctl_el2, x12           // encoding: [0x0c,0xe1,0x1c,0xd5]
   4072 // CHECK: msr      cntp_tval_el0, x12         // encoding: [0x0c,0xe2,0x1b,0xd5]
   4073 // CHECK: msr      cnthp_tval_el2, x12        // encoding: [0x0c,0xe2,0x1c,0xd5]
   4074 // CHECK: msr      cntps_tval_el1, x12        // encoding: [0x0c,0xe2,0x1f,0xd5]
   4075 // CHECK: msr      cntp_ctl_el0, x12          // encoding: [0x2c,0xe2,0x1b,0xd5]
   4076 // CHECK: msr      cnthp_ctl_el2, x12         // encoding: [0x2c,0xe2,0x1c,0xd5]
   4077 // CHECK: msr      cntps_ctl_el1, x12         // encoding: [0x2c,0xe2,0x1f,0xd5]
   4078 // CHECK: msr      cntp_cval_el0, x12         // encoding: [0x4c,0xe2,0x1b,0xd5]
   4079 // CHECK: msr      cnthp_cval_el2, x12        // encoding: [0x4c,0xe2,0x1c,0xd5]
   4080 // CHECK: msr      cntps_cval_el1, x12        // encoding: [0x4c,0xe2,0x1f,0xd5]
   4081 // CHECK: msr      cntv_tval_el0, x12         // encoding: [0x0c,0xe3,0x1b,0xd5]
   4082 // CHECK: msr      cntv_ctl_el0, x12          // encoding: [0x2c,0xe3,0x1b,0xd5]
   4083 // CHECK: msr      cntv_cval_el0, x12         // encoding: [0x4c,0xe3,0x1b,0xd5]
   4084 // CHECK: msr      pmevcntr0_el0, x12         // encoding: [0x0c,0xe8,0x1b,0xd5]
   4085 // CHECK: msr      pmevcntr1_el0, x12         // encoding: [0x2c,0xe8,0x1b,0xd5]
   4086 // CHECK: msr      pmevcntr2_el0, x12         // encoding: [0x4c,0xe8,0x1b,0xd5]
   4087 // CHECK: msr      pmevcntr3_el0, x12         // encoding: [0x6c,0xe8,0x1b,0xd5]
   4088 // CHECK: msr      pmevcntr4_el0, x12         // encoding: [0x8c,0xe8,0x1b,0xd5]
   4089 // CHECK: msr      pmevcntr5_el0, x12         // encoding: [0xac,0xe8,0x1b,0xd5]
   4090 // CHECK: msr      pmevcntr6_el0, x12         // encoding: [0xcc,0xe8,0x1b,0xd5]
   4091 // CHECK: msr      pmevcntr7_el0, x12         // encoding: [0xec,0xe8,0x1b,0xd5]
   4092 // CHECK: msr      pmevcntr8_el0, x12         // encoding: [0x0c,0xe9,0x1b,0xd5]
   4093 // CHECK: msr      pmevcntr9_el0, x12         // encoding: [0x2c,0xe9,0x1b,0xd5]
   4094 // CHECK: msr      pmevcntr10_el0, x12        // encoding: [0x4c,0xe9,0x1b,0xd5]
   4095 // CHECK: msr      pmevcntr11_el0, x12        // encoding: [0x6c,0xe9,0x1b,0xd5]
   4096 // CHECK: msr      pmevcntr12_el0, x12        // encoding: [0x8c,0xe9,0x1b,0xd5]
   4097 // CHECK: msr      pmevcntr13_el0, x12        // encoding: [0xac,0xe9,0x1b,0xd5]
   4098 // CHECK: msr      pmevcntr14_el0, x12        // encoding: [0xcc,0xe9,0x1b,0xd5]
   4099 // CHECK: msr      pmevcntr15_el0, x12        // encoding: [0xec,0xe9,0x1b,0xd5]
   4100 // CHECK: msr      pmevcntr16_el0, x12        // encoding: [0x0c,0xea,0x1b,0xd5]
   4101 // CHECK: msr      pmevcntr17_el0, x12        // encoding: [0x2c,0xea,0x1b,0xd5]
   4102 // CHECK: msr      pmevcntr18_el0, x12        // encoding: [0x4c,0xea,0x1b,0xd5]
   4103 // CHECK: msr      pmevcntr19_el0, x12        // encoding: [0x6c,0xea,0x1b,0xd5]
   4104 // CHECK: msr      pmevcntr20_el0, x12        // encoding: [0x8c,0xea,0x1b,0xd5]
   4105 // CHECK: msr      pmevcntr21_el0, x12        // encoding: [0xac,0xea,0x1b,0xd5]
   4106 // CHECK: msr      pmevcntr22_el0, x12        // encoding: [0xcc,0xea,0x1b,0xd5]
   4107 // CHECK: msr      pmevcntr23_el0, x12        // encoding: [0xec,0xea,0x1b,0xd5]
   4108 // CHECK: msr      pmevcntr24_el0, x12        // encoding: [0x0c,0xeb,0x1b,0xd5]
   4109 // CHECK: msr      pmevcntr25_el0, x12        // encoding: [0x2c,0xeb,0x1b,0xd5]
   4110 // CHECK: msr      pmevcntr26_el0, x12        // encoding: [0x4c,0xeb,0x1b,0xd5]
   4111 // CHECK: msr      pmevcntr27_el0, x12        // encoding: [0x6c,0xeb,0x1b,0xd5]
   4112 // CHECK: msr      pmevcntr28_el0, x12        // encoding: [0x8c,0xeb,0x1b,0xd5]
   4113 // CHECK: msr      pmevcntr29_el0, x12        // encoding: [0xac,0xeb,0x1b,0xd5]
   4114 // CHECK: msr      pmevcntr30_el0, x12        // encoding: [0xcc,0xeb,0x1b,0xd5]
   4115 // CHECK: msr      pmccfiltr_el0, x12         // encoding: [0xec,0xef,0x1b,0xd5]
   4116 // CHECK: msr      pmevtyper0_el0, x12        // encoding: [0x0c,0xec,0x1b,0xd5]
   4117 // CHECK: msr      pmevtyper1_el0, x12        // encoding: [0x2c,0xec,0x1b,0xd5]
   4118 // CHECK: msr      pmevtyper2_el0, x12        // encoding: [0x4c,0xec,0x1b,0xd5]
   4119 // CHECK: msr      pmevtyper3_el0, x12        // encoding: [0x6c,0xec,0x1b,0xd5]
   4120 // CHECK: msr      pmevtyper4_el0, x12        // encoding: [0x8c,0xec,0x1b,0xd5]
   4121 // CHECK: msr      pmevtyper5_el0, x12        // encoding: [0xac,0xec,0x1b,0xd5]
   4122 // CHECK: msr      pmevtyper6_el0, x12        // encoding: [0xcc,0xec,0x1b,0xd5]
   4123 // CHECK: msr      pmevtyper7_el0, x12        // encoding: [0xec,0xec,0x1b,0xd5]
   4124 // CHECK: msr      pmevtyper8_el0, x12        // encoding: [0x0c,0xed,0x1b,0xd5]
   4125 // CHECK: msr      pmevtyper9_el0, x12        // encoding: [0x2c,0xed,0x1b,0xd5]
   4126 // CHECK: msr      pmevtyper10_el0, x12       // encoding: [0x4c,0xed,0x1b,0xd5]
   4127 // CHECK: msr      pmevtyper11_el0, x12       // encoding: [0x6c,0xed,0x1b,0xd5]
   4128 // CHECK: msr      pmevtyper12_el0, x12       // encoding: [0x8c,0xed,0x1b,0xd5]
   4129 // CHECK: msr      pmevtyper13_el0, x12       // encoding: [0xac,0xed,0x1b,0xd5]
   4130 // CHECK: msr      pmevtyper14_el0, x12       // encoding: [0xcc,0xed,0x1b,0xd5]
   4131 // CHECK: msr      pmevtyper15_el0, x12       // encoding: [0xec,0xed,0x1b,0xd5]
   4132 // CHECK: msr      pmevtyper16_el0, x12       // encoding: [0x0c,0xee,0x1b,0xd5]
   4133 // CHECK: msr      pmevtyper17_el0, x12       // encoding: [0x2c,0xee,0x1b,0xd5]
   4134 // CHECK: msr      pmevtyper18_el0, x12       // encoding: [0x4c,0xee,0x1b,0xd5]
   4135 // CHECK: msr      pmevtyper19_el0, x12       // encoding: [0x6c,0xee,0x1b,0xd5]
   4136 // CHECK: msr      pmevtyper20_el0, x12       // encoding: [0x8c,0xee,0x1b,0xd5]
   4137 // CHECK: msr      pmevtyper21_el0, x12       // encoding: [0xac,0xee,0x1b,0xd5]
   4138 // CHECK: msr      pmevtyper22_el0, x12       // encoding: [0xcc,0xee,0x1b,0xd5]
   4139 // CHECK: msr      pmevtyper23_el0, x12       // encoding: [0xec,0xee,0x1b,0xd5]
   4140 // CHECK: msr      pmevtyper24_el0, x12       // encoding: [0x0c,0xef,0x1b,0xd5]
   4141 // CHECK: msr      pmevtyper25_el0, x12       // encoding: [0x2c,0xef,0x1b,0xd5]
   4142 // CHECK: msr      pmevtyper26_el0, x12       // encoding: [0x4c,0xef,0x1b,0xd5]
   4143 // CHECK: msr      pmevtyper27_el0, x12       // encoding: [0x6c,0xef,0x1b,0xd5]
   4144 // CHECK: msr      pmevtyper28_el0, x12       // encoding: [0x8c,0xef,0x1b,0xd5]
   4145 // CHECK: msr      pmevtyper29_el0, x12       // encoding: [0xac,0xef,0x1b,0xd5]
   4146 // CHECK: msr      pmevtyper30_el0, x12       // encoding: [0xcc,0xef,0x1b,0xd5]
   4147 
   4148 	mrs x9, TEECR32_EL1
   4149 	mrs x9, OSDTRRX_EL1
   4150 	mrs x9, MDCCSR_EL0
   4151 	mrs x9, MDCCINT_EL1
   4152 	mrs x9, MDSCR_EL1
   4153 	mrs x9, OSDTRTX_EL1
   4154 	mrs x9, DBGDTR_EL0
   4155 	mrs x9, DBGDTRRX_EL0
   4156 	mrs x9, OSECCR_EL1
   4157 	mrs x9, DBGVCR32_EL2
   4158 	mrs x9, DBGBVR0_EL1
   4159 	mrs x9, DBGBVR1_EL1
   4160 	mrs x9, DBGBVR2_EL1
   4161 	mrs x9, DBGBVR3_EL1
   4162 	mrs x9, DBGBVR4_EL1
   4163 	mrs x9, DBGBVR5_EL1
   4164 	mrs x9, DBGBVR6_EL1
   4165 	mrs x9, DBGBVR7_EL1
   4166 	mrs x9, DBGBVR8_EL1
   4167 	mrs x9, DBGBVR9_EL1
   4168 	mrs x9, DBGBVR10_EL1
   4169 	mrs x9, DBGBVR11_EL1
   4170 	mrs x9, DBGBVR12_EL1
   4171 	mrs x9, DBGBVR13_EL1
   4172 	mrs x9, DBGBVR14_EL1
   4173 	mrs x9, DBGBVR15_EL1
   4174 	mrs x9, DBGBCR0_EL1
   4175 	mrs x9, DBGBCR1_EL1
   4176 	mrs x9, DBGBCR2_EL1
   4177 	mrs x9, DBGBCR3_EL1
   4178 	mrs x9, DBGBCR4_EL1
   4179 	mrs x9, DBGBCR5_EL1
   4180 	mrs x9, DBGBCR6_EL1
   4181 	mrs x9, DBGBCR7_EL1
   4182 	mrs x9, DBGBCR8_EL1
   4183 	mrs x9, DBGBCR9_EL1
   4184 	mrs x9, DBGBCR10_EL1
   4185 	mrs x9, DBGBCR11_EL1
   4186 	mrs x9, DBGBCR12_EL1
   4187 	mrs x9, DBGBCR13_EL1
   4188 	mrs x9, DBGBCR14_EL1
   4189 	mrs x9, DBGBCR15_EL1
   4190 	mrs x9, DBGWVR0_EL1
   4191 	mrs x9, DBGWVR1_EL1
   4192 	mrs x9, DBGWVR2_EL1
   4193 	mrs x9, DBGWVR3_EL1
   4194 	mrs x9, DBGWVR4_EL1
   4195 	mrs x9, DBGWVR5_EL1
   4196 	mrs x9, DBGWVR6_EL1
   4197 	mrs x9, DBGWVR7_EL1
   4198 	mrs x9, DBGWVR8_EL1
   4199 	mrs x9, DBGWVR9_EL1
   4200 	mrs x9, DBGWVR10_EL1
   4201 	mrs x9, DBGWVR11_EL1
   4202 	mrs x9, DBGWVR12_EL1
   4203 	mrs x9, DBGWVR13_EL1
   4204 	mrs x9, DBGWVR14_EL1
   4205 	mrs x9, DBGWVR15_EL1
   4206 	mrs x9, DBGWCR0_EL1
   4207 	mrs x9, DBGWCR1_EL1
   4208 	mrs x9, DBGWCR2_EL1
   4209 	mrs x9, DBGWCR3_EL1
   4210 	mrs x9, DBGWCR4_EL1
   4211 	mrs x9, DBGWCR5_EL1
   4212 	mrs x9, DBGWCR6_EL1
   4213 	mrs x9, DBGWCR7_EL1
   4214 	mrs x9, DBGWCR8_EL1
   4215 	mrs x9, DBGWCR9_EL1
   4216 	mrs x9, DBGWCR10_EL1
   4217 	mrs x9, DBGWCR11_EL1
   4218 	mrs x9, DBGWCR12_EL1
   4219 	mrs x9, DBGWCR13_EL1
   4220 	mrs x9, DBGWCR14_EL1
   4221 	mrs x9, DBGWCR15_EL1
   4222 	mrs x9, MDRAR_EL1
   4223 	mrs x9, TEEHBR32_EL1
   4224 	mrs x9, OSLSR_EL1
   4225 	mrs x9, OSDLR_EL1
   4226 	mrs x9, DBGPRCR_EL1
   4227 	mrs x9, DBGCLAIMSET_EL1
   4228 	mrs x9, DBGCLAIMCLR_EL1
   4229 	mrs x9, DBGAUTHSTATUS_EL1
   4230 	mrs x9, MIDR_EL1
   4231 	mrs x9, CCSIDR_EL1
   4232 	mrs x9, CSSELR_EL1
   4233 	mrs x9, VPIDR_EL2
   4234 	mrs x9, CLIDR_EL1
   4235 	mrs x9, CTR_EL0
   4236 	mrs x9, MPIDR_EL1
   4237 	mrs x9, VMPIDR_EL2
   4238 	mrs x9, REVIDR_EL1
   4239 	mrs x9, AIDR_EL1
   4240 	mrs x9, DCZID_EL0
   4241 	mrs x9, ID_PFR0_EL1
   4242 	mrs x9, ID_PFR1_EL1
   4243 	mrs x9, ID_DFR0_EL1
   4244 	mrs x9, ID_AFR0_EL1
   4245 	mrs x9, ID_MMFR0_EL1
   4246 	mrs x9, ID_MMFR1_EL1
   4247 	mrs x9, ID_MMFR2_EL1
   4248 	mrs x9, ID_MMFR3_EL1
   4249 	mrs x9, ID_ISAR0_EL1
   4250 	mrs x9, ID_ISAR1_EL1
   4251 	mrs x9, ID_ISAR2_EL1
   4252 	mrs x9, ID_ISAR3_EL1
   4253 	mrs x9, ID_ISAR4_EL1
   4254 	mrs x9, ID_ISAR5_EL1
   4255 	mrs x9, MVFR0_EL1
   4256 	mrs x9, MVFR1_EL1
   4257 	mrs x9, MVFR2_EL1
   4258 	mrs x9, ID_AA64PFR0_EL1
   4259 	mrs x9, ID_AA64PFR1_EL1
   4260 	mrs x9, ID_AA64DFR0_EL1
   4261 	mrs x9, ID_AA64DFR1_EL1
   4262 	mrs x9, ID_AA64AFR0_EL1
   4263 	mrs x9, ID_AA64AFR1_EL1
   4264 	mrs x9, ID_AA64ISAR0_EL1
   4265 	mrs x9, ID_AA64ISAR1_EL1
   4266 	mrs x9, ID_AA64MMFR0_EL1
   4267 	mrs x9, ID_AA64MMFR1_EL1
   4268 	mrs x9, SCTLR_EL1
   4269 	mrs x9, SCTLR_EL2
   4270 	mrs x9, SCTLR_EL3
   4271 	mrs x9, ACTLR_EL1
   4272 	mrs x9, ACTLR_EL2
   4273 	mrs x9, ACTLR_EL3
   4274 	mrs x9, CPACR_EL1
   4275 	mrs x9, HCR_EL2
   4276 	mrs x9, SCR_EL3
   4277 	mrs x9, MDCR_EL2
   4278 	mrs x9, SDER32_EL3
   4279 	mrs x9, CPTR_EL2
   4280 	mrs x9, CPTR_EL3
   4281 	mrs x9, HSTR_EL2
   4282 	mrs x9, HACR_EL2
   4283 	mrs x9, MDCR_EL3
   4284 	mrs x9, TTBR0_EL1
   4285 	mrs x9, TTBR0_EL2
   4286 	mrs x9, TTBR0_EL3
   4287 	mrs x9, TTBR1_EL1
   4288 	mrs x9, TCR_EL1
   4289 	mrs x9, TCR_EL2
   4290 	mrs x9, TCR_EL3
   4291 	mrs x9, VTTBR_EL2
   4292 	mrs x9, VTCR_EL2
   4293 	mrs x9, DACR32_EL2
   4294 	mrs x9, SPSR_EL1
   4295 	mrs x9, SPSR_EL2
   4296 	mrs x9, SPSR_EL3
   4297 	mrs x9, ELR_EL1
   4298 	mrs x9, ELR_EL2
   4299 	mrs x9, ELR_EL3
   4300 	mrs x9, SP_EL0
   4301 	mrs x9, SP_EL1
   4302 	mrs x9, SP_EL2
   4303 	mrs x9, SPSel
   4304 	mrs x9, NZCV
   4305 	mrs x9, DAIF
   4306 	mrs x9, CurrentEL
   4307 	mrs x9, SPSR_irq
   4308 	mrs x9, SPSR_abt
   4309 	mrs x9, SPSR_und
   4310 	mrs x9, SPSR_fiq
   4311 	mrs x9, FPCR
   4312 	mrs x9, FPSR
   4313 	mrs x9, DSPSR_EL0
   4314 	mrs x9, DLR_EL0
   4315 	mrs x9, IFSR32_EL2
   4316 	mrs x9, AFSR0_EL1
   4317 	mrs x9, AFSR0_EL2
   4318 	mrs x9, AFSR0_EL3
   4319 	mrs x9, AFSR1_EL1
   4320 	mrs x9, AFSR1_EL2
   4321 	mrs x9, AFSR1_EL3
   4322 	mrs x9, ESR_EL1
   4323 	mrs x9, ESR_EL2
   4324 	mrs x9, ESR_EL3
   4325 	mrs x9, FPEXC32_EL2
   4326 	mrs x9, FAR_EL1
   4327 	mrs x9, FAR_EL2
   4328 	mrs x9, FAR_EL3
   4329 	mrs x9, HPFAR_EL2
   4330 	mrs x9, PAR_EL1
   4331 	mrs x9, PMCR_EL0
   4332 	mrs x9, PMCNTENSET_EL0
   4333 	mrs x9, PMCNTENCLR_EL0
   4334 	mrs x9, PMOVSCLR_EL0
   4335 	mrs x9, PMSELR_EL0
   4336 	mrs x9, PMCEID0_EL0
   4337 	mrs x9, PMCEID1_EL0
   4338 	mrs x9, PMCCNTR_EL0
   4339 	mrs x9, PMXEVTYPER_EL0
   4340 	mrs x9, PMXEVCNTR_EL0
   4341 	mrs x9, PMUSERENR_EL0
   4342 	mrs x9, PMINTENSET_EL1
   4343 	mrs x9, PMINTENCLR_EL1
   4344 	mrs x9, PMOVSSET_EL0
   4345 	mrs x9, MAIR_EL1
   4346 	mrs x9, MAIR_EL2
   4347 	mrs x9, MAIR_EL3
   4348 	mrs x9, AMAIR_EL1
   4349 	mrs x9, AMAIR_EL2
   4350 	mrs x9, AMAIR_EL3
   4351 	mrs x9, VBAR_EL1
   4352 	mrs x9, VBAR_EL2
   4353 	mrs x9, VBAR_EL3
   4354 	mrs x9, RVBAR_EL1
   4355 	mrs x9, RVBAR_EL2
   4356 	mrs x9, RVBAR_EL3
   4357 	mrs x9, RMR_EL1
   4358 	mrs x9, RMR_EL2
   4359 	mrs x9, RMR_EL3
   4360 	mrs x9, ISR_EL1
   4361 	mrs x9, CONTEXTIDR_EL1
   4362 	mrs x9, TPIDR_EL0
   4363 	mrs x9, TPIDR_EL2
   4364 	mrs x9, TPIDR_EL3
   4365 	mrs x9, TPIDRRO_EL0
   4366 	mrs x9, TPIDR_EL1
   4367 	mrs x9, CNTFRQ_EL0
   4368 	mrs x9, CNTPCT_EL0
   4369 	mrs x9, CNTVCT_EL0
   4370 	mrs x9, CNTVOFF_EL2
   4371 	mrs x9, CNTKCTL_EL1
   4372 	mrs x9, CNTHCTL_EL2
   4373 	mrs x9, CNTP_TVAL_EL0
   4374 	mrs x9, CNTHP_TVAL_EL2
   4375 	mrs x9, CNTPS_TVAL_EL1
   4376 	mrs x9, CNTP_CTL_EL0
   4377 	mrs x9, CNTHP_CTL_EL2
   4378 	mrs x9, CNTPS_CTL_EL1
   4379 	mrs x9, CNTP_CVAL_EL0
   4380 	mrs x9, CNTHP_CVAL_EL2
   4381 	mrs x9, CNTPS_CVAL_EL1
   4382 	mrs x9, CNTV_TVAL_EL0
   4383 	mrs x9, CNTV_CTL_EL0
   4384 	mrs x9, CNTV_CVAL_EL0
   4385 	mrs x9, PMEVCNTR0_EL0
   4386 	mrs x9, PMEVCNTR1_EL0
   4387 	mrs x9, PMEVCNTR2_EL0
   4388 	mrs x9, PMEVCNTR3_EL0
   4389 	mrs x9, PMEVCNTR4_EL0
   4390 	mrs x9, PMEVCNTR5_EL0
   4391 	mrs x9, PMEVCNTR6_EL0
   4392 	mrs x9, PMEVCNTR7_EL0
   4393 	mrs x9, PMEVCNTR8_EL0
   4394 	mrs x9, PMEVCNTR9_EL0
   4395 	mrs x9, PMEVCNTR10_EL0
   4396 	mrs x9, PMEVCNTR11_EL0
   4397 	mrs x9, PMEVCNTR12_EL0
   4398 	mrs x9, PMEVCNTR13_EL0
   4399 	mrs x9, PMEVCNTR14_EL0
   4400 	mrs x9, PMEVCNTR15_EL0
   4401 	mrs x9, PMEVCNTR16_EL0
   4402 	mrs x9, PMEVCNTR17_EL0
   4403 	mrs x9, PMEVCNTR18_EL0
   4404 	mrs x9, PMEVCNTR19_EL0
   4405 	mrs x9, PMEVCNTR20_EL0
   4406 	mrs x9, PMEVCNTR21_EL0
   4407 	mrs x9, PMEVCNTR22_EL0
   4408 	mrs x9, PMEVCNTR23_EL0
   4409 	mrs x9, PMEVCNTR24_EL0
   4410 	mrs x9, PMEVCNTR25_EL0
   4411 	mrs x9, PMEVCNTR26_EL0
   4412 	mrs x9, PMEVCNTR27_EL0
   4413 	mrs x9, PMEVCNTR28_EL0
   4414 	mrs x9, PMEVCNTR29_EL0
   4415 	mrs x9, PMEVCNTR30_EL0
   4416 	mrs x9, PMCCFILTR_EL0
   4417 	mrs x9, PMEVTYPER0_EL0
   4418 	mrs x9, PMEVTYPER1_EL0
   4419 	mrs x9, PMEVTYPER2_EL0
   4420 	mrs x9, PMEVTYPER3_EL0
   4421 	mrs x9, PMEVTYPER4_EL0
   4422 	mrs x9, PMEVTYPER5_EL0
   4423 	mrs x9, PMEVTYPER6_EL0
   4424 	mrs x9, PMEVTYPER7_EL0
   4425 	mrs x9, PMEVTYPER8_EL0
   4426 	mrs x9, PMEVTYPER9_EL0
   4427 	mrs x9, PMEVTYPER10_EL0
   4428 	mrs x9, PMEVTYPER11_EL0
   4429 	mrs x9, PMEVTYPER12_EL0
   4430 	mrs x9, PMEVTYPER13_EL0
   4431 	mrs x9, PMEVTYPER14_EL0
   4432 	mrs x9, PMEVTYPER15_EL0
   4433 	mrs x9, PMEVTYPER16_EL0
   4434 	mrs x9, PMEVTYPER17_EL0
   4435 	mrs x9, PMEVTYPER18_EL0
   4436 	mrs x9, PMEVTYPER19_EL0
   4437 	mrs x9, PMEVTYPER20_EL0
   4438 	mrs x9, PMEVTYPER21_EL0
   4439 	mrs x9, PMEVTYPER22_EL0
   4440 	mrs x9, PMEVTYPER23_EL0
   4441 	mrs x9, PMEVTYPER24_EL0
   4442 	mrs x9, PMEVTYPER25_EL0
   4443 	mrs x9, PMEVTYPER26_EL0
   4444 	mrs x9, PMEVTYPER27_EL0
   4445 	mrs x9, PMEVTYPER28_EL0
   4446 	mrs x9, PMEVTYPER29_EL0
   4447 	mrs x9, PMEVTYPER30_EL0
   4448 // CHECK: mrs      x9, teecr32_el1            // encoding: [0x09,0x00,0x32,0xd5]
   4449 // CHECK: mrs      x9, osdtrrx_el1            // encoding: [0x49,0x00,0x30,0xd5]
   4450 // CHECK: mrs      x9, mdccsr_el0             // encoding: [0x09,0x01,0x33,0xd5]
   4451 // CHECK: mrs      x9, mdccint_el1            // encoding: [0x09,0x02,0x30,0xd5]
   4452 // CHECK: mrs      x9, mdscr_el1              // encoding: [0x49,0x02,0x30,0xd5]
   4453 // CHECK: mrs      x9, osdtrtx_el1            // encoding: [0x49,0x03,0x30,0xd5]
   4454 // CHECK: mrs      x9, dbgdtr_el0             // encoding: [0x09,0x04,0x33,0xd5]
   4455 // CHECK: mrs      x9, dbgdtrrx_el0           // encoding: [0x09,0x05,0x33,0xd5]
   4456 // CHECK: mrs      x9, oseccr_el1             // encoding: [0x49,0x06,0x30,0xd5]
   4457 // CHECK: mrs      x9, dbgvcr32_el2           // encoding: [0x09,0x07,0x34,0xd5]
   4458 // CHECK: mrs      x9, dbgbvr0_el1            // encoding: [0x89,0x00,0x30,0xd5]
   4459 // CHECK: mrs      x9, dbgbvr1_el1            // encoding: [0x89,0x01,0x30,0xd5]
   4460 // CHECK: mrs      x9, dbgbvr2_el1            // encoding: [0x89,0x02,0x30,0xd5]
   4461 // CHECK: mrs      x9, dbgbvr3_el1            // encoding: [0x89,0x03,0x30,0xd5]
   4462 // CHECK: mrs      x9, dbgbvr4_el1            // encoding: [0x89,0x04,0x30,0xd5]
   4463 // CHECK: mrs      x9, dbgbvr5_el1            // encoding: [0x89,0x05,0x30,0xd5]
   4464 // CHECK: mrs      x9, dbgbvr6_el1            // encoding: [0x89,0x06,0x30,0xd5]
   4465 // CHECK: mrs      x9, dbgbvr7_el1            // encoding: [0x89,0x07,0x30,0xd5]
   4466 // CHECK: mrs      x9, dbgbvr8_el1            // encoding: [0x89,0x08,0x30,0xd5]
   4467 // CHECK: mrs      x9, dbgbvr9_el1            // encoding: [0x89,0x09,0x30,0xd5]
   4468 // CHECK: mrs      x9, dbgbvr10_el1           // encoding: [0x89,0x0a,0x30,0xd5]
   4469 // CHECK: mrs      x9, dbgbvr11_el1           // encoding: [0x89,0x0b,0x30,0xd5]
   4470 // CHECK: mrs      x9, dbgbvr12_el1           // encoding: [0x89,0x0c,0x30,0xd5]
   4471 // CHECK: mrs      x9, dbgbvr13_el1           // encoding: [0x89,0x0d,0x30,0xd5]
   4472 // CHECK: mrs      x9, dbgbvr14_el1           // encoding: [0x89,0x0e,0x30,0xd5]
   4473 // CHECK: mrs      x9, dbgbvr15_el1           // encoding: [0x89,0x0f,0x30,0xd5]
   4474 // CHECK: mrs      x9, dbgbcr0_el1            // encoding: [0xa9,0x00,0x30,0xd5]
   4475 // CHECK: mrs      x9, dbgbcr1_el1            // encoding: [0xa9,0x01,0x30,0xd5]
   4476 // CHECK: mrs      x9, dbgbcr2_el1            // encoding: [0xa9,0x02,0x30,0xd5]
   4477 // CHECK: mrs      x9, dbgbcr3_el1            // encoding: [0xa9,0x03,0x30,0xd5]
   4478 // CHECK: mrs      x9, dbgbcr4_el1            // encoding: [0xa9,0x04,0x30,0xd5]
   4479 // CHECK: mrs      x9, dbgbcr5_el1            // encoding: [0xa9,0x05,0x30,0xd5]
   4480 // CHECK: mrs      x9, dbgbcr6_el1            // encoding: [0xa9,0x06,0x30,0xd5]
   4481 // CHECK: mrs      x9, dbgbcr7_el1            // encoding: [0xa9,0x07,0x30,0xd5]
   4482 // CHECK: mrs      x9, dbgbcr8_el1            // encoding: [0xa9,0x08,0x30,0xd5]
   4483 // CHECK: mrs      x9, dbgbcr9_el1            // encoding: [0xa9,0x09,0x30,0xd5]
   4484 // CHECK: mrs      x9, dbgbcr10_el1           // encoding: [0xa9,0x0a,0x30,0xd5]
   4485 // CHECK: mrs      x9, dbgbcr11_el1           // encoding: [0xa9,0x0b,0x30,0xd5]
   4486 // CHECK: mrs      x9, dbgbcr12_el1           // encoding: [0xa9,0x0c,0x30,0xd5]
   4487 // CHECK: mrs      x9, dbgbcr13_el1           // encoding: [0xa9,0x0d,0x30,0xd5]
   4488 // CHECK: mrs      x9, dbgbcr14_el1           // encoding: [0xa9,0x0e,0x30,0xd5]
   4489 // CHECK: mrs      x9, dbgbcr15_el1           // encoding: [0xa9,0x0f,0x30,0xd5]
   4490 // CHECK: mrs      x9, dbgwvr0_el1            // encoding: [0xc9,0x00,0x30,0xd5]
   4491 // CHECK: mrs      x9, dbgwvr1_el1            // encoding: [0xc9,0x01,0x30,0xd5]
   4492 // CHECK: mrs      x9, dbgwvr2_el1            // encoding: [0xc9,0x02,0x30,0xd5]
   4493 // CHECK: mrs      x9, dbgwvr3_el1            // encoding: [0xc9,0x03,0x30,0xd5]
   4494 // CHECK: mrs      x9, dbgwvr4_el1            // encoding: [0xc9,0x04,0x30,0xd5]
   4495 // CHECK: mrs      x9, dbgwvr5_el1            // encoding: [0xc9,0x05,0x30,0xd5]
   4496 // CHECK: mrs      x9, dbgwvr6_el1            // encoding: [0xc9,0x06,0x30,0xd5]
   4497 // CHECK: mrs      x9, dbgwvr7_el1            // encoding: [0xc9,0x07,0x30,0xd5]
   4498 // CHECK: mrs      x9, dbgwvr8_el1            // encoding: [0xc9,0x08,0x30,0xd5]
   4499 // CHECK: mrs      x9, dbgwvr9_el1            // encoding: [0xc9,0x09,0x30,0xd5]
   4500 // CHECK: mrs      x9, dbgwvr10_el1           // encoding: [0xc9,0x0a,0x30,0xd5]
   4501 // CHECK: mrs      x9, dbgwvr11_el1           // encoding: [0xc9,0x0b,0x30,0xd5]
   4502 // CHECK: mrs      x9, dbgwvr12_el1           // encoding: [0xc9,0x0c,0x30,0xd5]
   4503 // CHECK: mrs      x9, dbgwvr13_el1           // encoding: [0xc9,0x0d,0x30,0xd5]
   4504 // CHECK: mrs      x9, dbgwvr14_el1           // encoding: [0xc9,0x0e,0x30,0xd5]
   4505 // CHECK: mrs      x9, dbgwvr15_el1           // encoding: [0xc9,0x0f,0x30,0xd5]
   4506 // CHECK: mrs      x9, dbgwcr0_el1            // encoding: [0xe9,0x00,0x30,0xd5]
   4507 // CHECK: mrs      x9, dbgwcr1_el1            // encoding: [0xe9,0x01,0x30,0xd5]
   4508 // CHECK: mrs      x9, dbgwcr2_el1            // encoding: [0xe9,0x02,0x30,0xd5]
   4509 // CHECK: mrs      x9, dbgwcr3_el1            // encoding: [0xe9,0x03,0x30,0xd5]
   4510 // CHECK: mrs      x9, dbgwcr4_el1            // encoding: [0xe9,0x04,0x30,0xd5]
   4511 // CHECK: mrs      x9, dbgwcr5_el1            // encoding: [0xe9,0x05,0x30,0xd5]
   4512 // CHECK: mrs      x9, dbgwcr6_el1            // encoding: [0xe9,0x06,0x30,0xd5]
   4513 // CHECK: mrs      x9, dbgwcr7_el1            // encoding: [0xe9,0x07,0x30,0xd5]
   4514 // CHECK: mrs      x9, dbgwcr8_el1            // encoding: [0xe9,0x08,0x30,0xd5]
   4515 // CHECK: mrs      x9, dbgwcr9_el1            // encoding: [0xe9,0x09,0x30,0xd5]
   4516 // CHECK: mrs      x9, dbgwcr10_el1           // encoding: [0xe9,0x0a,0x30,0xd5]
   4517 // CHECK: mrs      x9, dbgwcr11_el1           // encoding: [0xe9,0x0b,0x30,0xd5]
   4518 // CHECK: mrs      x9, dbgwcr12_el1           // encoding: [0xe9,0x0c,0x30,0xd5]
   4519 // CHECK: mrs      x9, dbgwcr13_el1           // encoding: [0xe9,0x0d,0x30,0xd5]
   4520 // CHECK: mrs      x9, dbgwcr14_el1           // encoding: [0xe9,0x0e,0x30,0xd5]
   4521 // CHECK: mrs      x9, dbgwcr15_el1           // encoding: [0xe9,0x0f,0x30,0xd5]
   4522 // CHECK: mrs      x9, mdrar_el1              // encoding: [0x09,0x10,0x30,0xd5]
   4523 // CHECK: mrs      x9, teehbr32_el1           // encoding: [0x09,0x10,0x32,0xd5]
   4524 // CHECK: mrs      x9, oslsr_el1              // encoding: [0x89,0x11,0x30,0xd5]
   4525 // CHECK: mrs      x9, osdlr_el1              // encoding: [0x89,0x13,0x30,0xd5]
   4526 // CHECK: mrs      x9, dbgprcr_el1            // encoding: [0x89,0x14,0x30,0xd5]
   4527 // CHECK: mrs      x9, dbgclaimset_el1        // encoding: [0xc9,0x78,0x30,0xd5]
   4528 // CHECK: mrs      x9, dbgclaimclr_el1        // encoding: [0xc9,0x79,0x30,0xd5]
   4529 // CHECK: mrs      x9, dbgauthstatus_el1      // encoding: [0xc9,0x7e,0x30,0xd5]
   4530 // CHECK: mrs      x9, midr_el1               // encoding: [0x09,0x00,0x38,0xd5]
   4531 // CHECK: mrs      x9, ccsidr_el1             // encoding: [0x09,0x00,0x39,0xd5]
   4532 // CHECK: mrs      x9, csselr_el1             // encoding: [0x09,0x00,0x3a,0xd5]
   4533 // CHECK: mrs      x9, vpidr_el2              // encoding: [0x09,0x00,0x3c,0xd5]
   4534 // CHECK: mrs      x9, clidr_el1              // encoding: [0x29,0x00,0x39,0xd5]
   4535 // CHECK: mrs      x9, ctr_el0                // encoding: [0x29,0x00,0x3b,0xd5]
   4536 // CHECK: mrs      x9, mpidr_el1              // encoding: [0xa9,0x00,0x38,0xd5]
   4537 // CHECK: mrs      x9, vmpidr_el2             // encoding: [0xa9,0x00,0x3c,0xd5]
   4538 // CHECK: mrs      x9, revidr_el1             // encoding: [0xc9,0x00,0x38,0xd5]
   4539 // CHECK: mrs      x9, aidr_el1               // encoding: [0xe9,0x00,0x39,0xd5]
   4540 // CHECK: mrs      x9, dczid_el0              // encoding: [0xe9,0x00,0x3b,0xd5]
   4541 // CHECK: mrs      x9, id_pfr0_el1            // encoding: [0x09,0x01,0x38,0xd5]
   4542 // CHECK: mrs      x9, id_pfr1_el1            // encoding: [0x29,0x01,0x38,0xd5]
   4543 // CHECK: mrs      x9, id_dfr0_el1            // encoding: [0x49,0x01,0x38,0xd5]
   4544 // CHECK: mrs      x9, id_afr0_el1            // encoding: [0x69,0x01,0x38,0xd5]
   4545 // CHECK: mrs      x9, id_mmfr0_el1           // encoding: [0x89,0x01,0x38,0xd5]
   4546 // CHECK: mrs      x9, id_mmfr1_el1           // encoding: [0xa9,0x01,0x38,0xd5]
   4547 // CHECK: mrs      x9, id_mmfr2_el1           // encoding: [0xc9,0x01,0x38,0xd5]
   4548 // CHECK: mrs      x9, id_mmfr3_el1           // encoding: [0xe9,0x01,0x38,0xd5]
   4549 // CHECK: mrs      x9, id_isar0_el1           // encoding: [0x09,0x02,0x38,0xd5]
   4550 // CHECK: mrs      x9, id_isar1_el1           // encoding: [0x29,0x02,0x38,0xd5]
   4551 // CHECK: mrs      x9, id_isar2_el1           // encoding: [0x49,0x02,0x38,0xd5]
   4552 // CHECK: mrs      x9, id_isar3_el1           // encoding: [0x69,0x02,0x38,0xd5]
   4553 // CHECK: mrs      x9, id_isar4_el1           // encoding: [0x89,0x02,0x38,0xd5]
   4554 // CHECK: mrs      x9, id_isar5_el1           // encoding: [0xa9,0x02,0x38,0xd5]
   4555 // CHECK: mrs      x9, mvfr0_el1              // encoding: [0x09,0x03,0x38,0xd5]
   4556 // CHECK: mrs      x9, mvfr1_el1              // encoding: [0x29,0x03,0x38,0xd5]
   4557 // CHECK: mrs      x9, mvfr2_el1              // encoding: [0x49,0x03,0x38,0xd5]
   4558 // CHECK: mrs      x9, id_aa64pfr0_el1        // encoding: [0x09,0x04,0x38,0xd5]
   4559 // CHECK: mrs      x9, id_aa64pfr1_el1        // encoding: [0x29,0x04,0x38,0xd5]
   4560 // CHECK: mrs      x9, id_aa64dfr0_el1        // encoding: [0x09,0x05,0x38,0xd5]
   4561 // CHECK: mrs      x9, id_aa64dfr1_el1        // encoding: [0x29,0x05,0x38,0xd5]
   4562 // CHECK: mrs      x9, id_aa64afr0_el1        // encoding: [0x89,0x05,0x38,0xd5]
   4563 // CHECK: mrs      x9, id_aa64afr1_el1        // encoding: [0xa9,0x05,0x38,0xd5]
   4564 // CHECK: mrs      x9, id_aa64isar0_el1       // encoding: [0x09,0x06,0x38,0xd5]
   4565 // CHECK: mrs      x9, id_aa64isar1_el1       // encoding: [0x29,0x06,0x38,0xd5]
   4566 // CHECK: mrs      x9, id_aa64mmfr0_el1       // encoding: [0x09,0x07,0x38,0xd5]
   4567 // CHECK: mrs      x9, id_aa64mmfr1_el1       // encoding: [0x29,0x07,0x38,0xd5]
   4568 // CHECK: mrs      x9, sctlr_el1              // encoding: [0x09,0x10,0x38,0xd5]
   4569 // CHECK: mrs      x9, sctlr_el2              // encoding: [0x09,0x10,0x3c,0xd5]
   4570 // CHECK: mrs      x9, sctlr_el3              // encoding: [0x09,0x10,0x3e,0xd5]
   4571 // CHECK: mrs      x9, actlr_el1              // encoding: [0x29,0x10,0x38,0xd5]
   4572 // CHECK: mrs      x9, actlr_el2              // encoding: [0x29,0x10,0x3c,0xd5]
   4573 // CHECK: mrs      x9, actlr_el3              // encoding: [0x29,0x10,0x3e,0xd5]
   4574 // CHECK: mrs      x9, cpacr_el1              // encoding: [0x49,0x10,0x38,0xd5]
   4575 // CHECK: mrs      x9, hcr_el2                // encoding: [0x09,0x11,0x3c,0xd5]
   4576 // CHECK: mrs      x9, scr_el3                // encoding: [0x09,0x11,0x3e,0xd5]
   4577 // CHECK: mrs      x9, mdcr_el2               // encoding: [0x29,0x11,0x3c,0xd5]
   4578 // CHECK: mrs      x9, sder32_el3             // encoding: [0x29,0x11,0x3e,0xd5]
   4579 // CHECK: mrs      x9, cptr_el2               // encoding: [0x49,0x11,0x3c,0xd5]
   4580 // CHECK: mrs      x9, cptr_el3               // encoding: [0x49,0x11,0x3e,0xd5]
   4581 // CHECK: mrs      x9, hstr_el2               // encoding: [0x69,0x11,0x3c,0xd5]
   4582 // CHECK: mrs      x9, hacr_el2               // encoding: [0xe9,0x11,0x3c,0xd5]
   4583 // CHECK: mrs      x9, mdcr_el3               // encoding: [0x29,0x13,0x3e,0xd5]
   4584 // CHECK: mrs      x9, ttbr0_el1              // encoding: [0x09,0x20,0x38,0xd5]
   4585 // CHECK: mrs      x9, ttbr0_el2              // encoding: [0x09,0x20,0x3c,0xd5]
   4586 // CHECK: mrs      x9, ttbr0_el3              // encoding: [0x09,0x20,0x3e,0xd5]
   4587 // CHECK: mrs      x9, ttbr1_el1              // encoding: [0x29,0x20,0x38,0xd5]
   4588 // CHECK: mrs      x9, tcr_el1                // encoding: [0x49,0x20,0x38,0xd5]
   4589 // CHECK: mrs      x9, tcr_el2                // encoding: [0x49,0x20,0x3c,0xd5]
   4590 // CHECK: mrs      x9, tcr_el3                // encoding: [0x49,0x20,0x3e,0xd5]
   4591 // CHECK: mrs      x9, vttbr_el2              // encoding: [0x09,0x21,0x3c,0xd5]
   4592 // CHECK: mrs      x9, vtcr_el2               // encoding: [0x49,0x21,0x3c,0xd5]
   4593 // CHECK: mrs      x9, dacr32_el2             // encoding: [0x09,0x30,0x3c,0xd5]
   4594 // CHECK: mrs      x9, spsr_el1               // encoding: [0x09,0x40,0x38,0xd5]
   4595 // CHECK: mrs      x9, spsr_el2               // encoding: [0x09,0x40,0x3c,0xd5]
   4596 // CHECK: mrs      x9, spsr_el3               // encoding: [0x09,0x40,0x3e,0xd5]
   4597 // CHECK: mrs      x9, elr_el1                // encoding: [0x29,0x40,0x38,0xd5]
   4598 // CHECK: mrs      x9, elr_el2                // encoding: [0x29,0x40,0x3c,0xd5]
   4599 // CHECK: mrs      x9, elr_el3                // encoding: [0x29,0x40,0x3e,0xd5]
   4600 // CHECK: mrs      x9, sp_el0                 // encoding: [0x09,0x41,0x38,0xd5]
   4601 // CHECK: mrs      x9, sp_el1                 // encoding: [0x09,0x41,0x3c,0xd5]
   4602 // CHECK: mrs      x9, sp_el2                 // encoding: [0x09,0x41,0x3e,0xd5]
   4603 // CHECK: mrs      x9, spsel                  // encoding: [0x09,0x42,0x38,0xd5]
   4604 // CHECK: mrs      x9, nzcv                   // encoding: [0x09,0x42,0x3b,0xd5]
   4605 // CHECK: mrs      x9, daif                   // encoding: [0x29,0x42,0x3b,0xd5]
   4606 // CHECK: mrs      x9, currentel              // encoding: [0x49,0x42,0x38,0xd5]
   4607 // CHECK: mrs      x9, spsr_irq               // encoding: [0x09,0x43,0x3c,0xd5]
   4608 // CHECK: mrs      x9, spsr_abt               // encoding: [0x29,0x43,0x3c,0xd5]
   4609 // CHECK: mrs      x9, spsr_und               // encoding: [0x49,0x43,0x3c,0xd5]
   4610 // CHECK: mrs      x9, spsr_fiq               // encoding: [0x69,0x43,0x3c,0xd5]
   4611 // CHECK: mrs      x9, fpcr                   // encoding: [0x09,0x44,0x3b,0xd5]
   4612 // CHECK: mrs      x9, fpsr                   // encoding: [0x29,0x44,0x3b,0xd5]
   4613 // CHECK: mrs      x9, dspsr_el0              // encoding: [0x09,0x45,0x3b,0xd5]
   4614 // CHECK: mrs      x9, dlr_el0                // encoding: [0x29,0x45,0x3b,0xd5]
   4615 // CHECK: mrs      x9, ifsr32_el2             // encoding: [0x29,0x50,0x3c,0xd5]
   4616 // CHECK: mrs      x9, afsr0_el1              // encoding: [0x09,0x51,0x38,0xd5]
   4617 // CHECK: mrs      x9, afsr0_el2              // encoding: [0x09,0x51,0x3c,0xd5]
   4618 // CHECK: mrs      x9, afsr0_el3              // encoding: [0x09,0x51,0x3e,0xd5]
   4619 // CHECK: mrs      x9, afsr1_el1              // encoding: [0x29,0x51,0x38,0xd5]
   4620 // CHECK: mrs      x9, afsr1_el2              // encoding: [0x29,0x51,0x3c,0xd5]
   4621 // CHECK: mrs      x9, afsr1_el3              // encoding: [0x29,0x51,0x3e,0xd5]
   4622 // CHECK: mrs      x9, esr_el1                // encoding: [0x09,0x52,0x38,0xd5]
   4623 // CHECK: mrs      x9, esr_el2                // encoding: [0x09,0x52,0x3c,0xd5]
   4624 // CHECK: mrs      x9, esr_el3                // encoding: [0x09,0x52,0x3e,0xd5]
   4625 // CHECK: mrs      x9, fpexc32_el2            // encoding: [0x09,0x53,0x3c,0xd5]
   4626 // CHECK: mrs      x9, far_el1                // encoding: [0x09,0x60,0x38,0xd5]
   4627 // CHECK: mrs      x9, far_el2                // encoding: [0x09,0x60,0x3c,0xd5]
   4628 // CHECK: mrs      x9, far_el3                // encoding: [0x09,0x60,0x3e,0xd5]
   4629 // CHECK: mrs      x9, hpfar_el2              // encoding: [0x89,0x60,0x3c,0xd5]
   4630 // CHECK: mrs      x9, par_el1                // encoding: [0x09,0x74,0x38,0xd5]
   4631 // CHECK: mrs      x9, pmcr_el0               // encoding: [0x09,0x9c,0x3b,0xd5]
   4632 // CHECK: mrs      x9, pmcntenset_el0         // encoding: [0x29,0x9c,0x3b,0xd5]
   4633 // CHECK: mrs      x9, pmcntenclr_el0         // encoding: [0x49,0x9c,0x3b,0xd5]
   4634 // CHECK: mrs      x9, pmovsclr_el0           // encoding: [0x69,0x9c,0x3b,0xd5]
   4635 // CHECK: mrs      x9, pmselr_el0             // encoding: [0xa9,0x9c,0x3b,0xd5]
   4636 // CHECK: mrs      x9, pmceid0_el0            // encoding: [0xc9,0x9c,0x3b,0xd5]
   4637 // CHECK: mrs      x9, pmceid1_el0            // encoding: [0xe9,0x9c,0x3b,0xd5]
   4638 // CHECK: mrs      x9, pmccntr_el0            // encoding: [0x09,0x9d,0x3b,0xd5]
   4639 // CHECK: mrs      x9, pmxevtyper_el0         // encoding: [0x29,0x9d,0x3b,0xd5]
   4640 // CHECK: mrs      x9, pmxevcntr_el0          // encoding: [0x49,0x9d,0x3b,0xd5]
   4641 // CHECK: mrs      x9, pmuserenr_el0          // encoding: [0x09,0x9e,0x3b,0xd5]
   4642 // CHECK: mrs      x9, pmintenset_el1         // encoding: [0x29,0x9e,0x38,0xd5]
   4643 // CHECK: mrs      x9, pmintenclr_el1         // encoding: [0x49,0x9e,0x38,0xd5]
   4644 // CHECK: mrs      x9, pmovsset_el0           // encoding: [0x69,0x9e,0x3b,0xd5]
   4645 // CHECK: mrs      x9, mair_el1               // encoding: [0x09,0xa2,0x38,0xd5]
   4646 // CHECK: mrs      x9, mair_el2               // encoding: [0x09,0xa2,0x3c,0xd5]
   4647 // CHECK: mrs      x9, mair_el3               // encoding: [0x09,0xa2,0x3e,0xd5]
   4648 // CHECK: mrs      x9, amair_el1              // encoding: [0x09,0xa3,0x38,0xd5]
   4649 // CHECK: mrs      x9, amair_el2              // encoding: [0x09,0xa3,0x3c,0xd5]
   4650 // CHECK: mrs      x9, amair_el3              // encoding: [0x09,0xa3,0x3e,0xd5]
   4651 // CHECK: mrs      x9, vbar_el1               // encoding: [0x09,0xc0,0x38,0xd5]
   4652 // CHECK: mrs      x9, vbar_el2               // encoding: [0x09,0xc0,0x3c,0xd5]
   4653 // CHECK: mrs      x9, vbar_el3               // encoding: [0x09,0xc0,0x3e,0xd5]
   4654 // CHECK: mrs      x9, rvbar_el1              // encoding: [0x29,0xc0,0x38,0xd5]
   4655 // CHECK: mrs      x9, rvbar_el2              // encoding: [0x29,0xc0,0x3c,0xd5]
   4656 // CHECK: mrs      x9, rvbar_el3              // encoding: [0x29,0xc0,0x3e,0xd5]
   4657 // CHECK: mrs      x9, rmr_el1                // encoding: [0x49,0xc0,0x38,0xd5]
   4658 // CHECK: mrs      x9, rmr_el2                // encoding: [0x49,0xc0,0x3c,0xd5]
   4659 // CHECK: mrs      x9, rmr_el3                // encoding: [0x49,0xc0,0x3e,0xd5]
   4660 // CHECK: mrs      x9, isr_el1                // encoding: [0x09,0xc1,0x38,0xd5]
   4661 // CHECK: mrs      x9, contextidr_el1         // encoding: [0x29,0xd0,0x38,0xd5]
   4662 // CHECK: mrs      x9, tpidr_el0              // encoding: [0x49,0xd0,0x3b,0xd5]
   4663 // CHECK: mrs      x9, tpidr_el2              // encoding: [0x49,0xd0,0x3c,0xd5]
   4664 // CHECK: mrs      x9, tpidr_el3              // encoding: [0x49,0xd0,0x3e,0xd5]
   4665 // CHECK: mrs      x9, tpidrro_el0            // encoding: [0x69,0xd0,0x3b,0xd5]
   4666 // CHECK: mrs      x9, tpidr_el1              // encoding: [0x89,0xd0,0x38,0xd5]
   4667 // CHECK: mrs      x9, cntfrq_el0             // encoding: [0x09,0xe0,0x3b,0xd5]
   4668 // CHECK: mrs      x9, cntpct_el0             // encoding: [0x29,0xe0,0x3b,0xd5]
   4669 // CHECK: mrs      x9, cntvct_el0             // encoding: [0x49,0xe0,0x3b,0xd5]
   4670 // CHECK: mrs      x9, cntvoff_el2            // encoding: [0x69,0xe0,0x3c,0xd5]
   4671 // CHECK: mrs      x9, cntkctl_el1            // encoding: [0x09,0xe1,0x38,0xd5]
   4672 // CHECK: mrs      x9, cnthctl_el2            // encoding: [0x09,0xe1,0x3c,0xd5]
   4673 // CHECK: mrs      x9, cntp_tval_el0          // encoding: [0x09,0xe2,0x3b,0xd5]
   4674 // CHECK: mrs      x9, cnthp_tval_el2         // encoding: [0x09,0xe2,0x3c,0xd5]
   4675 // CHECK: mrs      x9, cntps_tval_el1         // encoding: [0x09,0xe2,0x3f,0xd5]
   4676 // CHECK: mrs      x9, cntp_ctl_el0           // encoding: [0x29,0xe2,0x3b,0xd5]
   4677 // CHECK: mrs      x9, cnthp_ctl_el2          // encoding: [0x29,0xe2,0x3c,0xd5]
   4678 // CHECK: mrs      x9, cntps_ctl_el1          // encoding: [0x29,0xe2,0x3f,0xd5]
   4679 // CHECK: mrs      x9, cntp_cval_el0          // encoding: [0x49,0xe2,0x3b,0xd5]
   4680 // CHECK: mrs      x9, cnthp_cval_el2         // encoding: [0x49,0xe2,0x3c,0xd5]
   4681 // CHECK: mrs      x9, cntps_cval_el1         // encoding: [0x49,0xe2,0x3f,0xd5]
   4682 // CHECK: mrs      x9, cntv_tval_el0          // encoding: [0x09,0xe3,0x3b,0xd5]
   4683 // CHECK: mrs      x9, cntv_ctl_el0           // encoding: [0x29,0xe3,0x3b,0xd5]
   4684 // CHECK: mrs      x9, cntv_cval_el0          // encoding: [0x49,0xe3,0x3b,0xd5]
   4685 // CHECK: mrs      x9, pmevcntr0_el0          // encoding: [0x09,0xe8,0x3b,0xd5]
   4686 // CHECK: mrs      x9, pmevcntr1_el0          // encoding: [0x29,0xe8,0x3b,0xd5]
   4687 // CHECK: mrs      x9, pmevcntr2_el0          // encoding: [0x49,0xe8,0x3b,0xd5]
   4688 // CHECK: mrs      x9, pmevcntr3_el0          // encoding: [0x69,0xe8,0x3b,0xd5]
   4689 // CHECK: mrs      x9, pmevcntr4_el0          // encoding: [0x89,0xe8,0x3b,0xd5]
   4690 // CHECK: mrs      x9, pmevcntr5_el0          // encoding: [0xa9,0xe8,0x3b,0xd5]
   4691 // CHECK: mrs      x9, pmevcntr6_el0          // encoding: [0xc9,0xe8,0x3b,0xd5]
   4692 // CHECK: mrs      x9, pmevcntr7_el0          // encoding: [0xe9,0xe8,0x3b,0xd5]
   4693 // CHECK: mrs      x9, pmevcntr8_el0          // encoding: [0x09,0xe9,0x3b,0xd5]
   4694 // CHECK: mrs      x9, pmevcntr9_el0          // encoding: [0x29,0xe9,0x3b,0xd5]
   4695 // CHECK: mrs      x9, pmevcntr10_el0         // encoding: [0x49,0xe9,0x3b,0xd5]
   4696 // CHECK: mrs      x9, pmevcntr11_el0         // encoding: [0x69,0xe9,0x3b,0xd5]
   4697 // CHECK: mrs      x9, pmevcntr12_el0         // encoding: [0x89,0xe9,0x3b,0xd5]
   4698 // CHECK: mrs      x9, pmevcntr13_el0         // encoding: [0xa9,0xe9,0x3b,0xd5]
   4699 // CHECK: mrs      x9, pmevcntr14_el0         // encoding: [0xc9,0xe9,0x3b,0xd5]
   4700 // CHECK: mrs      x9, pmevcntr15_el0         // encoding: [0xe9,0xe9,0x3b,0xd5]
   4701 // CHECK: mrs      x9, pmevcntr16_el0         // encoding: [0x09,0xea,0x3b,0xd5]
   4702 // CHECK: mrs      x9, pmevcntr17_el0         // encoding: [0x29,0xea,0x3b,0xd5]
   4703 // CHECK: mrs      x9, pmevcntr18_el0         // encoding: [0x49,0xea,0x3b,0xd5]
   4704 // CHECK: mrs      x9, pmevcntr19_el0         // encoding: [0x69,0xea,0x3b,0xd5]
   4705 // CHECK: mrs      x9, pmevcntr20_el0         // encoding: [0x89,0xea,0x3b,0xd5]
   4706 // CHECK: mrs      x9, pmevcntr21_el0         // encoding: [0xa9,0xea,0x3b,0xd5]
   4707 // CHECK: mrs      x9, pmevcntr22_el0         // encoding: [0xc9,0xea,0x3b,0xd5]
   4708 // CHECK: mrs      x9, pmevcntr23_el0         // encoding: [0xe9,0xea,0x3b,0xd5]
   4709 // CHECK: mrs      x9, pmevcntr24_el0         // encoding: [0x09,0xeb,0x3b,0xd5]
   4710 // CHECK: mrs      x9, pmevcntr25_el0         // encoding: [0x29,0xeb,0x3b,0xd5]
   4711 // CHECK: mrs      x9, pmevcntr26_el0         // encoding: [0x49,0xeb,0x3b,0xd5]
   4712 // CHECK: mrs      x9, pmevcntr27_el0         // encoding: [0x69,0xeb,0x3b,0xd5]
   4713 // CHECK: mrs      x9, pmevcntr28_el0         // encoding: [0x89,0xeb,0x3b,0xd5]
   4714 // CHECK: mrs      x9, pmevcntr29_el0         // encoding: [0xa9,0xeb,0x3b,0xd5]
   4715 // CHECK: mrs      x9, pmevcntr30_el0         // encoding: [0xc9,0xeb,0x3b,0xd5]
   4716 // CHECK: mrs      x9, pmccfiltr_el0          // encoding: [0xe9,0xef,0x3b,0xd5]
   4717 // CHECK: mrs      x9, pmevtyper0_el0         // encoding: [0x09,0xec,0x3b,0xd5]
   4718 // CHECK: mrs      x9, pmevtyper1_el0         // encoding: [0x29,0xec,0x3b,0xd5]
   4719 // CHECK: mrs      x9, pmevtyper2_el0         // encoding: [0x49,0xec,0x3b,0xd5]
   4720 // CHECK: mrs      x9, pmevtyper3_el0         // encoding: [0x69,0xec,0x3b,0xd5]
   4721 // CHECK: mrs      x9, pmevtyper4_el0         // encoding: [0x89,0xec,0x3b,0xd5]
   4722 // CHECK: mrs      x9, pmevtyper5_el0         // encoding: [0xa9,0xec,0x3b,0xd5]
   4723 // CHECK: mrs      x9, pmevtyper6_el0         // encoding: [0xc9,0xec,0x3b,0xd5]
   4724 // CHECK: mrs      x9, pmevtyper7_el0         // encoding: [0xe9,0xec,0x3b,0xd5]
   4725 // CHECK: mrs      x9, pmevtyper8_el0         // encoding: [0x09,0xed,0x3b,0xd5]
   4726 // CHECK: mrs      x9, pmevtyper9_el0         // encoding: [0x29,0xed,0x3b,0xd5]
   4727 // CHECK: mrs      x9, pmevtyper10_el0        // encoding: [0x49,0xed,0x3b,0xd5]
   4728 // CHECK: mrs      x9, pmevtyper11_el0        // encoding: [0x69,0xed,0x3b,0xd5]
   4729 // CHECK: mrs      x9, pmevtyper12_el0        // encoding: [0x89,0xed,0x3b,0xd5]
   4730 // CHECK: mrs      x9, pmevtyper13_el0        // encoding: [0xa9,0xed,0x3b,0xd5]
   4731 // CHECK: mrs      x9, pmevtyper14_el0        // encoding: [0xc9,0xed,0x3b,0xd5]
   4732 // CHECK: mrs      x9, pmevtyper15_el0        // encoding: [0xe9,0xed,0x3b,0xd5]
   4733 // CHECK: mrs      x9, pmevtyper16_el0        // encoding: [0x09,0xee,0x3b,0xd5]
   4734 // CHECK: mrs      x9, pmevtyper17_el0        // encoding: [0x29,0xee,0x3b,0xd5]
   4735 // CHECK: mrs      x9, pmevtyper18_el0        // encoding: [0x49,0xee,0x3b,0xd5]
   4736 // CHECK: mrs      x9, pmevtyper19_el0        // encoding: [0x69,0xee,0x3b,0xd5]
   4737 // CHECK: mrs      x9, pmevtyper20_el0        // encoding: [0x89,0xee,0x3b,0xd5]
   4738 // CHECK: mrs      x9, pmevtyper21_el0        // encoding: [0xa9,0xee,0x3b,0xd5]
   4739 // CHECK: mrs      x9, pmevtyper22_el0        // encoding: [0xc9,0xee,0x3b,0xd5]
   4740 // CHECK: mrs      x9, pmevtyper23_el0        // encoding: [0xe9,0xee,0x3b,0xd5]
   4741 // CHECK: mrs      x9, pmevtyper24_el0        // encoding: [0x09,0xef,0x3b,0xd5]
   4742 // CHECK: mrs      x9, pmevtyper25_el0        // encoding: [0x29,0xef,0x3b,0xd5]
   4743 // CHECK: mrs      x9, pmevtyper26_el0        // encoding: [0x49,0xef,0x3b,0xd5]
   4744 // CHECK: mrs      x9, pmevtyper27_el0        // encoding: [0x69,0xef,0x3b,0xd5]
   4745 // CHECK: mrs      x9, pmevtyper28_el0        // encoding: [0x89,0xef,0x3b,0xd5]
   4746 // CHECK: mrs      x9, pmevtyper29_el0        // encoding: [0xa9,0xef,0x3b,0xd5]
   4747 // CHECK: mrs      x9, pmevtyper30_el0        // encoding: [0xc9,0xef,0x3b,0xd5]
   4748 
   4749         mrs x12, s3_7_c15_c1_5
   4750         mrs x13, s3_2_c11_c15_7
   4751         msr s3_0_c15_c0_0, x12
   4752         msr s3_7_c11_c13_7, x5
   4753 // CHECK: mrs     x12, s3_7_c15_c1_5      // encoding: [0xac,0xf1,0x3f,0xd5]
   4754 // CHECK: mrs     x13, s3_2_c11_c15_7     // encoding: [0xed,0xbf,0x3a,0xd5]
   4755 // CHECK: msr     s3_0_c15_c0_0, x12      // encoding: [0x0c,0xf0,0x18,0xd5]
   4756 // CHECK: msr     s3_7_c11_c13_7, x5      // encoding: [0xe5,0xbd,0x1f,0xd5]
   4757 
   4758 //------------------------------------------------------------------------------
   4759 // Unconditional branch (immediate)
   4760 //------------------------------------------------------------------------------
   4761 
   4762         tbz x5, #0, somewhere
   4763         tbz xzr, #63, elsewhere
   4764         tbnz x5, #45, nowhere
   4765 // CHECK: tbz     x5, #0, somewhere       // encoding: [0x05'A',A,A,0x36'A']
   4766 // CHECK:                                 //   fixup A - offset: 0, value: somewhere, kind: fixup_a64_tstbr
   4767 // CHECK: tbz     xzr, #63, elsewhere     // encoding: [0x1f'A',A,0xf8'A',0xb6'A']
   4768 // CHECK:                                 //   fixup A - offset: 0, value: elsewhere, kind: fixup_a64_tstbr
   4769 // CHECK: tbnz    x5, #45, nowhere        // encoding: [0x05'A',A,0x68'A',0xb7'A']
   4770 // CHECK:                                 //   fixup A - offset: 0, value: nowhere, kind: fixup_a64_tstbr
   4771 
   4772         tbnz w3, #2, there
   4773         tbnz wzr, #31, nowhere
   4774         tbz w5, #12, anywhere
   4775 // CHECK: tbnz    w3, #2, there           // encoding: [0x03'A',A,0x10'A',0x37'A']
   4776 // CHECK:                                 //   fixup A - offset: 0, value: there, kind: fixup_a64_tstbr
   4777 // CHECK: tbnz    wzr, #31, nowhere       // encoding: [0x1f'A',A,0xf8'A',0x37'A']
   4778 // CHECK:                                 //   fixup A - offset: 0, value: nowhere, kind: fixup_a64_tstbr
   4779 // CHECK: tbz     w5, #12, anywhere       // encoding: [0x05'A',A,0x60'A',0x36'A']
   4780 // CHECK:                                 //   fixup A - offset: 0, value: anywhere, kind: fixup_a64_tstbr
   4781 
   4782 //------------------------------------------------------------------------------
   4783 // Unconditional branch (immediate)
   4784 //------------------------------------------------------------------------------
   4785 
   4786         b somewhere
   4787         bl elsewhere
   4788 // CHECK: b       somewhere               // encoding: [A,A,A,0x14'A']
   4789 // CHECK:                                 //   fixup A - offset: 0, value: somewhere, kind: fixup_a64_uncondbr
   4790 // CHECK: bl      elsewhere               // encoding: [A,A,A,0x94'A']
   4791 // CHECK:                                 //   fixup A - offset: 0, value: elsewhere, kind: fixup_a64_call
   4792 
   4793         b #4
   4794         bl #0
   4795         b #134217724
   4796         bl #-134217728
   4797 // CHECK: b       #4                      // encoding: [0x01,0x00,0x00,0x14]
   4798 // CHECK: bl      #0                      // encoding: [0x00,0x00,0x00,0x94]
   4799 // CHECK: b       #134217724              // encoding: [0xff,0xff,0xff,0x15]
   4800 // CHECK: bl      #-134217728             // encoding: [0x00,0x00,0x00,0x96]
   4801 
   4802 //------------------------------------------------------------------------------
   4803 // Unconditional branch (register)
   4804 //------------------------------------------------------------------------------
   4805 
   4806         br x20
   4807         blr xzr
   4808         ret x10
   4809 // CHECK: br       x20                        // encoding: [0x80,0x02,0x1f,0xd6]
   4810 // CHECK: blr      xzr                        // encoding: [0xe0,0x03,0x3f,0xd6]
   4811 // CHECK: ret      x10                        // encoding: [0x40,0x01,0x5f,0xd6]
   4812 
   4813         ret
   4814         eret
   4815         drps
   4816 // CHECK: ret                                 // encoding: [0xc0,0x03,0x5f,0xd6]
   4817 // CHECK: eret                                // encoding: [0xe0,0x03,0x9f,0xd6]
   4818 // CHECK: drps                                // encoding: [0xe0,0x03,0xbf,0xd6]
   4819 
   4820