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