Home | History | Annotate | Download | only in ARM
      1 @ RUN: llvm-mc -triple=armv7-apple-darwin -mcpu=cortex-a8 -show-encoding < %s | FileCheck %s
      2   .syntax unified
      3   .globl _func
      4 
      5 @ Check that the assembler can handle the documented syntax from the ARM ARM.
      6 @ For complex constructs like shifter operands, check more thoroughly for them
      7 @ once then spot check that following instructions accept the form generally.
      8 @ This gives us good coverage while keeping the overall size of the test
      9 @ more reasonable.
     10 
     11 _func:
     12 @ CHECK: _func
     13 
     14 @------------------------------------------------------------------------------
     15 @ ADC (immediate)
     16 @------------------------------------------------------------------------------
     17         adc r1, r2, #0xf
     18         adc r1, r2, #0xf0
     19         adc r1, r2, #0xf00
     20         adc r1, r2, #0xf000
     21         adc r1, r2, #0xf0000
     22         adc r1, r2, #0xf00000
     23         adc r1, r2, #0xf000000
     24         adc r1, r2, #0xf0000000
     25         adc r1, r2, #0xf000000f
     26         adcs r1, r2, #0xf00
     27         adcseq r1, r2, #0xf00
     28         adceq r1, r2, #0xf00
     29 
     30 @ CHECK: adc	r1, r2, #15             @ encoding: [0x0f,0x10,0xa2,0xe2]
     31 @ CHECK: adc	r1, r2, #240            @ encoding: [0xf0,0x10,0xa2,0xe2]
     32 @ CHECK: adc	r1, r2, #3840           @ encoding: [0x0f,0x1c,0xa2,0xe2]
     33 @ CHECK: adc	r1, r2, #61440          @ encoding: [0x0f,0x1a,0xa2,0xe2]
     34 @ CHECK: adc	r1, r2, #983040         @ encoding: [0x0f,0x18,0xa2,0xe2]
     35 @ CHECK: adc	r1, r2, #15728640       @ encoding: [0x0f,0x16,0xa2,0xe2]
     36 @ CHECK: adc	r1, r2, #251658240      @ encoding: [0x0f,0x14,0xa2,0xe2]
     37 @ CHECK: adc	r1, r2, #4026531840     @ encoding: [0x0f,0x12,0xa2,0xe2]
     38 @ CHECK: adc	r1, r2, #4026531855     @ encoding: [0xff,0x12,0xa2,0xe2]
     39 
     40 @ CHECK: adcs	r1, r2, #3840           @ encoding: [0x0f,0x1c,0xb2,0xe2]
     41 @ CHECK: adcseq	r1, r2, #3840           @ encoding: [0x0f,0x1c,0xb2,0x02]
     42 @ CHECK: adceq	r1, r2, #3840           @ encoding: [0x0f,0x1c,0xa2,0x02]
     43 
     44 @------------------------------------------------------------------------------
     45 @ ADC (register)
     46 @ ADC (shifted register)
     47 @------------------------------------------------------------------------------
     48         adc r4, r5, r6
     49         @ Constant shifts
     50         adc r4, r5, r6, lsl #1
     51         adc r4, r5, r6, lsl #31
     52         adc r4, r5, r6, lsr #1
     53         adc r4, r5, r6, lsr #31
     54         adc r4, r5, r6, lsr #32
     55         adc r4, r5, r6, asr #1
     56         adc r4, r5, r6, asr #31
     57         adc r4, r5, r6, asr #32
     58         adc r4, r5, r6, ror #1
     59         adc r4, r5, r6, ror #31
     60 
     61         @ Register shifts
     62         adc r6, r7, r8, lsl r9
     63         adc r6, r7, r8, lsr r9
     64         adc r6, r7, r8, asr r9
     65         adc r6, r7, r8, ror r9
     66         adc r4, r5, r6, rrx
     67 
     68         @ Destination register is optional
     69         adc r5, r6
     70         adc r4, r5, lsl #1
     71         adc r4, r5, lsl #31
     72         adc r4, r5, lsr #1
     73         adc r4, r5, lsr #31
     74         adc r4, r5, lsr #32
     75         adc r4, r5, asr #1
     76         adc r4, r5, asr #31
     77         adc r4, r5, asr #32
     78         adc r4, r5, ror #1
     79         adc r4, r5, ror #31
     80         adc r4, r5, rrx
     81         adc r6, r7, lsl r9
     82         adc r6, r7, lsr r9
     83         adc r6, r7, asr r9
     84         adc r6, r7, ror r9
     85         adc r4, r5, rrx
     86 
     87 @ CHECK: adc	r4, r5, r6              @ encoding: [0x06,0x40,0xa5,0xe0]
     88 
     89 @ CHECK: adc	r4, r5, r6, lsl #1      @ encoding: [0x86,0x40,0xa5,0xe0]
     90 @ CHECK: adc	r4, r5, r6, lsl #31     @ encoding: [0x86,0x4f,0xa5,0xe0]
     91 @ CHECK: adc	r4, r5, r6, lsr #1      @ encoding: [0xa6,0x40,0xa5,0xe0]
     92 @ CHECK: adc	r4, r5, r6, lsr #31     @ encoding: [0xa6,0x4f,0xa5,0xe0]
     93 @ CHECK: adc	r4, r5, r6, lsr #32     @ encoding: [0x26,0x40,0xa5,0xe0]
     94 @ CHECK: adc	r4, r5, r6, asr #1      @ encoding: [0xc6,0x40,0xa5,0xe0]
     95 @ CHECK: adc	r4, r5, r6, asr #31     @ encoding: [0xc6,0x4f,0xa5,0xe0]
     96 @ CHECK: adc	r4, r5, r6, asr #32     @ encoding: [0x46,0x40,0xa5,0xe0]
     97 @ CHECK: adc	r4, r5, r6, ror #1      @ encoding: [0xe6,0x40,0xa5,0xe0]
     98 @ CHECK: adc	r4, r5, r6, ror #31     @ encoding: [0xe6,0x4f,0xa5,0xe0]
     99 
    100 @ CHECK: adc	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xa7,0xe0]
    101 @ CHECK: adc	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xa7,0xe0]
    102 @ CHECK: adc	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xa7,0xe0]
    103 @ CHECK: adc	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xa7,0xe0]
    104 @ CHECK: adc	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0xa5,0xe0]
    105 
    106 @ CHECK: adc	r5, r5, r6              @ encoding: [0x06,0x50,0xa5,0xe0]
    107 @ CHECK: adc	r4, r4, r5, lsl #1      @ encoding: [0x85,0x40,0xa4,0xe0]
    108 @ CHECK: adc	r4, r4, r5, lsl #31     @ encoding: [0x85,0x4f,0xa4,0xe0]
    109 @ CHECK: adc	r4, r4, r5, lsr #1      @ encoding: [0xa5,0x40,0xa4,0xe0]
    110 @ CHECK: adc	r4, r4, r5, lsr #31     @ encoding: [0xa5,0x4f,0xa4,0xe0]
    111 @ CHECK: adc	r4, r4, r5, lsr #32     @ encoding: [0x25,0x40,0xa4,0xe0]
    112 @ CHECK: adc	r4, r4, r5, asr #1      @ encoding: [0xc5,0x40,0xa4,0xe0]
    113 @ CHECK: adc	r4, r4, r5, asr #31     @ encoding: [0xc5,0x4f,0xa4,0xe0]
    114 @ CHECK: adc	r4, r4, r5, asr #32     @ encoding: [0x45,0x40,0xa4,0xe0]
    115 @ CHECK: adc	r4, r4, r5, ror #1      @ encoding: [0xe5,0x40,0xa4,0xe0]
    116 @ CHECK: adc	r4, r4, r5, ror #31     @ encoding: [0xe5,0x4f,0xa4,0xe0]
    117 @ CHECK: adc	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0xa4,0xe0]
    118 @ CHECK: adc	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xa6,0xe0]
    119 @ CHECK: adc	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xa6,0xe0]
    120 @ CHECK: adc	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xa6,0xe0]
    121 @ CHECK: adc	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xa6,0xe0]
    122 @ CHECK: adc	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0xa4,0xe0]
    123 
    124 
    125 @------------------------------------------------------------------------------
    126 @ ADR
    127 @------------------------------------------------------------------------------
    128 Lback:
    129         adr r2, Lback
    130         adr r3, Lforward
    131 Lforward:
    132         adr	r2, #3
    133         adr	r2, #-3
    134 
    135 @ CHECK: Lback:
    136 @ CHECK: adr	r2, Lback    @ encoding: [A,0x20'A',0x0f'A',0xe2'A']
    137 @ CHECK:  @   fixup A - offset: 0, value: Lback, kind: fixup_arm_adr_pcrel_12
    138 @ CHECK: adr	r3, Lforward @ encoding: [A,0x30'A',0x0f'A',0xe2'A']
    139 @ CHECK:  @   fixup A - offset: 0, value: Lforward, kind: fixup_arm_adr_pcrel_12
    140 @ CHECK: Lforward:
    141 @ CHECK: adr	r2, #3                  @ encoding: [0x03,0x20,0x8f,0xe2]
    142 @ CHECK: adr	r2, #-3                 @ encoding: [0x03,0x20,0x4f,0xe2]
    143 
    144         adr r1, #-0x0
    145         adr r1, #-0x12000000
    146         adr r1, #-0x80000001
    147         adr r1, #0x12000000
    148         adr r1, #0x80000001
    149 
    150 @ CHECK: adr	r1, #-0                 @ encoding: [0x00,0x10,0x4f,0xe2]
    151 @ CHECK: adr	r1, #-301989888         @ encoding: [0x12,0x14,0x4f,0xe2]
    152 @ CHECK: adr	r1, #2147483647         @ encoding: [0x06,0x11,0x4f,0xe2]
    153 @ CHECK: adr	r1, #301989888          @ encoding: [0x12,0x14,0x8f,0xe2]
    154 @ CHECK: adr	r1, #-2147483647        @ encoding: [0x06,0x11,0x8f,0xe2]
    155 
    156 
    157 @------------------------------------------------------------------------------
    158 @ ADD
    159 @------------------------------------------------------------------------------
    160         add r4, r5, #0xf000
    161         add r4, r5, r6
    162         add r4, r5, r6, lsl #5
    163         add r4, r5, r6, lsr #5
    164         add r4, r5, r6, lsr #5
    165         add r4, r5, r6, asr #5
    166         add r4, r5, r6, ror #5
    167         add r6, r7, r8, lsl r9
    168         add r4, r4, r3, asl r9
    169         add r6, r7, r8, lsr r9
    170         add r6, r7, r8, asr r9
    171         add r6, r7, r8, ror r9
    172         add r4, r5, r6, rrx
    173 
    174         @ destination register is optional
    175         add r5, #0xf000
    176         add r4, r5
    177         add r4, r5, lsl #5
    178         add r4, r5, lsr #5
    179         add r4, r5, lsr #5
    180         add r4, r5, asr #5
    181         add r4, r5, ror #5
    182         add r6, r7, lsl r9
    183         add r6, r7, lsr r9
    184         add r6, r7, asr r9
    185         add r6, r7, ror r9
    186         add r4, r5, rrx
    187 
    188 	add r0, #-4
    189 	add r4, r5, #-21
    190 
    191 @ CHECK: add	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe2]
    192 @ CHECK: add	r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe0]
    193 @ CHECK: add	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe0]
    194 @ CHECK: add	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe0]
    195 @ CHECK: add	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe0]
    196 @ CHECK: add	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe0]
    197 @ CHECK: add	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe0]
    198 @ CHECK: add	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe0]
    199 @ CHECK: add	r4, r4, r3, lsl r9      @ encoding: [0x13,0x49,0x84,0xe0]
    200 @ CHECK: add	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe0]
    201 @ CHECK: add	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe0]
    202 @ CHECK: add	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe0]
    203 @ CHECK: add	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe0]
    204 
    205 @ CHECK: add	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe2]
    206 @ CHECK: add	r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe0]
    207 @ CHECK: add	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe0]
    208 @ CHECK: add	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe0]
    209 @ CHECK: add	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe0]
    210 @ CHECK: add	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe0]
    211 @ CHECK: add	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe0]
    212 @ CHECK: add	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe0]
    213 @ CHECK: add	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe0]
    214 @ CHECK: add	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe0]
    215 @ CHECK: add	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe0]
    216 @ CHECK: add	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe0]
    217 
    218 @ CHECK: sub	r0, r0, #4              @ encoding: [0x04,0x00,0x40,0xe2]
    219 @ CHECK: sub	r4, r5, #21             @ encoding: [0x15,0x40,0x45,0xe2]
    220 
    221     @ Test right shift by 32, which is encoded as 0
    222     add r3, r1, r2, lsr #32
    223     add r3, r1, r2, asr #32
    224 @ CHECK: add	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x81,0xe0]
    225 @ CHECK: add	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x81,0xe0]
    226 
    227 @------------------------------------------------------------------------------
    228 @ AND
    229 @------------------------------------------------------------------------------
    230     and r10, r1, #0xf
    231     and r10, r1, r6
    232     and r10, r1, r6, lsl #10
    233     and r10, r1, r6, lsr #10
    234     and r10, r1, r6, lsr #10
    235     and r10, r1, r6, asr #10
    236     and r10, r1, r6, ror #10
    237     and r6, r7, r8, lsl r2
    238     and r6, r7, r8, lsr r2
    239     and r6, r7, r8, asr r2
    240     and r6, r7, r8, ror r2
    241     and r10, r1, r6, rrx
    242     and r2, r3, #0x7fffffff
    243 
    244     @ destination register is optional
    245     and r1, #0xf
    246     and r10, r1
    247     and r10, r1, lsl #10
    248     and r10, r1, lsr #10
    249     and r10, r1, lsr #10
    250     and r10, r1, asr #10
    251     and r10, r1, ror #10
    252     and r6, r7, lsl r2
    253     and r6, r7, lsr r2
    254     and r6, r7, asr r2
    255     and r6, r7, ror r2
    256     and r10, r1, rrx
    257 
    258 @ CHECK: and	r10, r1, #15            @ encoding: [0x0f,0xa0,0x01,0xe2]
    259 @ CHECK: and	r10, r1, r6             @ encoding: [0x06,0xa0,0x01,0xe0]
    260 @ CHECK: and	r10, r1, r6, lsl #10    @ encoding: [0x06,0xa5,0x01,0xe0]
    261 @ CHECK: and	r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0x01,0xe0]
    262 @ CHECK: and	r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0x01,0xe0]
    263 @ CHECK: and	r10, r1, r6, asr #10    @ encoding: [0x46,0xa5,0x01,0xe0]
    264 @ CHECK: and	r10, r1, r6, ror #10    @ encoding: [0x66,0xa5,0x01,0xe0]
    265 @ CHECK: and	r6, r7, r8, lsl r2      @ encoding: [0x18,0x62,0x07,0xe0]
    266 @ CHECK: and	r6, r7, r8, lsr r2      @ encoding: [0x38,0x62,0x07,0xe0]
    267 @ CHECK: and	r6, r7, r8, asr r2      @ encoding: [0x58,0x62,0x07,0xe0]
    268 @ CHECK: and	r6, r7, r8, ror r2      @ encoding: [0x78,0x62,0x07,0xe0]
    269 @ CHECK: and	r10, r1, r6, rrx        @ encoding: [0x66,0xa0,0x01,0xe0]
    270 @ CHECK: bic	r2, r3, #-2147483648    @ encoding: [0x02,0x21,0xc3,0xe3]
    271 
    272 @ CHECK: and	r1, r1, #15             @ encoding: [0x0f,0x10,0x01,0xe2]
    273 @ CHECK: and	r10, r10, r1            @ encoding: [0x01,0xa0,0x0a,0xe0]
    274 @ CHECK: and	r10, r10, r1, lsl #10   @ encoding: [0x01,0xa5,0x0a,0xe0]
    275 @ CHECK: and	r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0x0a,0xe0]
    276 @ CHECK: and	r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0x0a,0xe0]
    277 @ CHECK: and	r10, r10, r1, asr #10   @ encoding: [0x41,0xa5,0x0a,0xe0]
    278 @ CHECK: and	r10, r10, r1, ror #10   @ encoding: [0x61,0xa5,0x0a,0xe0]
    279 @ CHECK: and	r6, r6, r7, lsl r2      @ encoding: [0x17,0x62,0x06,0xe0]
    280 @ CHECK: and	r6, r6, r7, lsr r2      @ encoding: [0x37,0x62,0x06,0xe0]
    281 @ CHECK: and	r6, r6, r7, asr r2      @ encoding: [0x57,0x62,0x06,0xe0]
    282 @ CHECK: and	r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0x06,0xe0]
    283 @ CHECK: and	r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0x0a,0xe0]
    284 
    285     @ Test right shift by 32, which is encoded as 0
    286     and r3, r1, r2, lsr #32
    287     and r3, r1, r2, asr #32
    288 @ CHECK: and	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x01,0xe0]
    289 @ CHECK: and	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x01,0xe0]
    290 
    291 @------------------------------------------------------------------------------
    292 @ ASR
    293 @------------------------------------------------------------------------------
    294 	asr r2, r4, #32
    295 	asr r2, r4, #2
    296 	asr r2, r4, #0
    297 	asr r4, #2
    298 
    299 @ CHECK: asr	r2, r4, #32             @ encoding: [0x44,0x20,0xa0,0xe1]
    300 @ CHECK: asr	r2, r4, #2              @ encoding: [0x44,0x21,0xa0,0xe1]
    301 @ CHECK: mov	r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
    302 @ CHECK: asr	r4, r4, #2              @ encoding: [0x44,0x41,0xa0,0xe1]
    303 
    304 
    305 @------------------------------------------------------------------------------
    306 @ B
    307 @------------------------------------------------------------------------------
    308         b _bar
    309         beq _baz
    310 
    311 @ CHECK: b	_bar                    @ encoding: [A,A,A,0xea]
    312              @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbranch
    313 @ CHECK: beq	_baz                    @ encoding: [A,A,A,0x0a]
    314              @   fixup A - offset: 0, value: _baz, kind: fixup_arm_condbranch
    315 
    316 
    317 @------------------------------------------------------------------------------
    318 @ BFC
    319 @------------------------------------------------------------------------------
    320         bfc r5, #3, #17
    321         bfccc r5, #3, #17
    322 
    323 @ CHECK: bfc	r5, #3, #17             @ encoding: [0x9f,0x51,0xd3,0xe7]
    324 @ CHECK: bfclo	r5, #3, #17             @ encoding: [0x9f,0x51,0xd3,0x37]
    325 
    326 
    327 @------------------------------------------------------------------------------
    328 @ BFI
    329 @------------------------------------------------------------------------------
    330         bfi r5, r2, #3, #17
    331         bfine r5, r2, #3, #17
    332 
    333 @ CHECK: bfi	r5, r2, #3, #17         @ encoding: [0x92,0x51,0xd3,0xe7]
    334 @ CHECK: bfine	r5, r2, #3, #17         @ encoding: [0x92,0x51,0xd3,0x17]
    335 
    336 
    337 @------------------------------------------------------------------------------
    338 @ BIC
    339 @------------------------------------------------------------------------------
    340         bic r10, r1, #0xf
    341         bic r10, r1, r6
    342         bic r10, r1, r6, lsl #10
    343         bic r10, r1, r6, lsr #10
    344         bic r10, r1, r6, lsr #10
    345         bic r10, r1, r6, asr #10
    346         bic r10, r1, r6, ror #10
    347         bic r6, r7, r8, lsl r2
    348         bic r6, r7, r8, lsr r2
    349         bic r6, r7, r8, asr r2
    350         bic r6, r7, r8, ror r2
    351         bic r10, r1, r6, rrx
    352 
    353         @ destination register is optional
    354         bic r1, #0xf
    355         bic r10, r1
    356         bic r10, r1, lsl #10
    357         bic r10, r1, lsr #10
    358         bic r10, r1, lsr #10
    359         bic r10, r1, asr #10
    360         bic r10, r1, ror #10
    361         bic r6, r7, lsl r2
    362         bic r6, r7, lsr r2
    363         bic r6, r7, asr r2
    364         bic r6, r7, ror r2
    365         bic r10, r1, rrx
    366 
    367 @ CHECK: bic	r10, r1, #15            @ encoding: [0x0f,0xa0,0xc1,0xe3]
    368 @ CHECK: bic	r10, r1, r6             @ encoding: [0x06,0xa0,0xc1,0xe1]
    369 @ CHECK: bic	r10, r1, r6, lsl #10    @ encoding: [0x06,0xa5,0xc1,0xe1]
    370 @ CHECK: bic	r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0xc1,0xe1]
    371 @ CHECK: bic	r10, r1, r6, lsr #10    @ encoding: [0x26,0xa5,0xc1,0xe1]
    372 @ CHECK: bic	r10, r1, r6, asr #10    @ encoding: [0x46,0xa5,0xc1,0xe1]
    373 @ CHECK: bic	r10, r1, r6, ror #10    @ encoding: [0x66,0xa5,0xc1,0xe1]
    374 @ CHECK: bic	r6, r7, r8, lsl r2      @ encoding: [0x18,0x62,0xc7,0xe1]
    375 @ CHECK: bic	r6, r7, r8, lsr r2      @ encoding: [0x38,0x62,0xc7,0xe1]
    376 @ CHECK: bic	r6, r7, r8, asr r2      @ encoding: [0x58,0x62,0xc7,0xe1]
    377 @ CHECK: bic	r6, r7, r8, ror r2      @ encoding: [0x78,0x62,0xc7,0xe1]
    378 @ CHECK: bic	r10, r1, r6, rrx        @ encoding: [0x66,0xa0,0xc1,0xe1]
    379 
    380 
    381 @ CHECK: bic	r1, r1, #15             @ encoding: [0x0f,0x10,0xc1,0xe3]
    382 @ CHECK: bic	r10, r10, r1            @ encoding: [0x01,0xa0,0xca,0xe1]
    383 @ CHECK: bic	r10, r10, r1, lsl #10   @ encoding: [0x01,0xa5,0xca,0xe1]
    384 @ CHECK: bic	r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0xca,0xe1]
    385 @ CHECK: bic	r10, r10, r1, lsr #10   @ encoding: [0x21,0xa5,0xca,0xe1]
    386 @ CHECK: bic	r10, r10, r1, asr #10   @ encoding: [0x41,0xa5,0xca,0xe1]
    387 @ CHECK: bic	r10, r10, r1, ror #10   @ encoding: [0x61,0xa5,0xca,0xe1]
    388 @ CHECK: bic	r6, r6, r7, lsl r2      @ encoding: [0x17,0x62,0xc6,0xe1]
    389 @ CHECK: bic	r6, r6, r7, lsr r2      @ encoding: [0x37,0x62,0xc6,0xe1]
    390 @ CHECK: bic	r6, r6, r7, asr r2      @ encoding: [0x57,0x62,0xc6,0xe1]
    391 @ CHECK: bic	r6, r6, r7, ror r2      @ encoding: [0x77,0x62,0xc6,0xe1]
    392 @ CHECK: bic	r10, r10, r1, rrx       @ encoding: [0x61,0xa0,0xca,0xe1]
    393 
    394     @ Test right shift by 32, which is encoded as 0
    395     bic r3, r1, r2, lsr #32
    396     bic r3, r1, r2, asr #32
    397 @ CHECK: bic	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0xc1,0xe1]
    398 @ CHECK: bic	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0xc1,0xe1]
    399 
    400 @------------------------------------------------------------------------------
    401 @ BKPT
    402 @------------------------------------------------------------------------------
    403         bkpt #10
    404         bkpt #65535
    405 
    406 @ CHECK: bkpt  #10                      @ encoding: [0x7a,0x00,0x20,0xe1]
    407 @ CHECK: bkpt  #65535                   @ encoding: [0x7f,0xff,0x2f,0xe1]
    408 
    409 @------------------------------------------------------------------------------
    410 @ BL/BLX (immediate)
    411 @------------------------------------------------------------------------------
    412 
    413         bl _bar
    414         bleq _bar
    415         blx _bar
    416         blls #28634268
    417         blx	#32424576
    418         blx	#16212288
    419 
    420 @ CHECK: bl  _bar @ encoding: [A,A,A,0xeb]
    421 @ CHECK:   @   fixup A - offset: 0, value: _bar, kind: fixup_arm_uncondbl
    422 @ CHECK: bleq  _bar @ encoding: [A,A,A,0x0b]
    423 @ CHECK:   @   fixup A - offset: 0, value: _bar, kind: fixup_arm_condbl
    424 @ CHECK: blx	_bar @ encoding: [A,A,A,0xfa]
    425            @   fixup A - offset: 0, value: _bar, kind: fixup_arm_blx
    426 @ CHECK: blls	#28634268               @ encoding: [0x27,0x3b,0x6d,0x9b]
    427 @ CHECK: blx	#32424576               @ encoding: [0xa0,0xb0,0x7b,0xfa]
    428 @ CHECK: blx	#16212288               @ encoding: [0x50,0xd8,0x3d,0xfa]
    429 @------------------------------------------------------------------------------
    430 @ BLX (register)
    431 @------------------------------------------------------------------------------
    432         blx r2
    433         blxne r2
    434 
    435 @ CHECK: blx r2                         @ encoding: [0x32,0xff,0x2f,0xe1]
    436 @ CHECK: blxne r2                       @ encoding: [0x32,0xff,0x2f,0x11]
    437 
    438 @------------------------------------------------------------------------------
    439 @ BX
    440 @------------------------------------------------------------------------------
    441         bx r2
    442         bxne r2
    443 
    444 @ CHECK: bx	r2                      @ encoding: [0x12,0xff,0x2f,0xe1]
    445 @ CHECK: bxne	r2                      @ encoding: [0x12,0xff,0x2f,0x11]
    446 
    447 @------------------------------------------------------------------------------
    448 @ BXJ
    449 @------------------------------------------------------------------------------
    450         bxj r2
    451         bxjne r2
    452 
    453 @ CHECK: bxj	r2                      @ encoding: [0x22,0xff,0x2f,0xe1]
    454 @ CHECK: bxjne	r2                      @ encoding: [0x22,0xff,0x2f,0x11]
    455 
    456 
    457 @------------------------------------------------------------------------------
    458 @ CDP/CDP2
    459 @------------------------------------------------------------------------------
    460         cdp  p7, #1, c1, c1, c1, #4
    461         cdp2  p7, #1, c1, c1, c1, #4
    462         cdp2   p10, #0, c6, c12, c0, #7
    463 
    464 @ CHECK: cdp  p7, #1, c1, c1, c1, #4     @ encoding: [0x81,0x17,0x11,0xee]
    465 @ CHECK: cdp2  p7, #1, c1, c1, c1, #4    @ encoding: [0x81,0x17,0x11,0xfe]
    466 @ CHECK: cdp2  p10, #0, c6, c12, c0, #7   @ encoding: [0xe0,0x6a,0x0c,0xfe]
    467 
    468         cdpne  p7, #1, c1, c1, c1, #4
    469 @ CHECK: cdpne  p7, #1, c1, c1, c1, #4     @ encoding: [0x81,0x17,0x11,0x1e]
    470 
    471 @------------------------------------------------------------------------------
    472 @ CLREX
    473 @------------------------------------------------------------------------------
    474         clrex
    475 
    476 @ CHECK: clrex                           @ encoding: [0x1f,0xf0,0x7f,0xf5]
    477 
    478 
    479 @------------------------------------------------------------------------------
    480 @ CLZ
    481 @------------------------------------------------------------------------------
    482     clz r1, r2
    483     clzeq r1, r2
    484 
    485 @ CHECK: clz r1, r2                      @ encoding: [0x12,0x1f,0x6f,0xe1]
    486 @ CHECK: clzeq r1, r2                    @ encoding: [0x12,0x1f,0x6f,0x01]
    487 
    488 @------------------------------------------------------------------------------
    489 @ CMN
    490 @------------------------------------------------------------------------------
    491         cmn r1, #0xf
    492         cmn r1, r6
    493         cmn r1, r6, lsl #10
    494         cmn r1, r6, lsr #10
    495         cmn sp, r6, lsr #10
    496         cmn r1, r6, asr #10
    497         cmn r1, r6, ror #10
    498         cmn r7, r8, lsl r2
    499         cmn sp, r8, lsr r2
    500         cmn r7, r8, asr r2
    501         cmn r7, r8, ror r2
    502         cmn r1, r6, rrx
    503 
    504 @ CHECK: cmn	r1, #15                 @ encoding: [0x0f,0x00,0x71,0xe3]
    505 @ CHECK: cmn	r1, r6                  @ encoding: [0x06,0x00,0x71,0xe1]
    506 @ CHECK: cmn	r1, r6, lsl #10         @ encoding: [0x06,0x05,0x71,0xe1]
    507 @ CHECK: cmn	r1, r6, lsr #10         @ encoding: [0x26,0x05,0x71,0xe1]
    508 @ CHECK: cmn	sp, r6, lsr #10         @ encoding: [0x26,0x05,0x7d,0xe1]
    509 @ CHECK: cmn	r1, r6, asr #10         @ encoding: [0x46,0x05,0x71,0xe1]
    510 @ CHECK: cmn	r1, r6, ror #10         @ encoding: [0x66,0x05,0x71,0xe1]
    511 @ CHECK: cmn	r7, r8, lsl r2          @ encoding: [0x18,0x02,0x77,0xe1]
    512 @ CHECK: cmn	sp, r8, lsr r2          @ encoding: [0x38,0x02,0x7d,0xe1]
    513 @ CHECK: cmn	r7, r8, asr r2          @ encoding: [0x58,0x02,0x77,0xe1]
    514 @ CHECK: cmn	r7, r8, ror r2          @ encoding: [0x78,0x02,0x77,0xe1]
    515 @ CHECK: cmn	r1, r6, rrx             @ encoding: [0x66,0x00,0x71,0xe1]
    516 
    517 @------------------------------------------------------------------------------
    518 @ CMP
    519 @------------------------------------------------------------------------------
    520         cmp r1, #0xf
    521         cmp r1, r6
    522         cmp r1, r6, lsl #10
    523         cmp r1, r6, lsr #10
    524         cmp sp, r6, lsr #10
    525         cmp r1, r6, asr #10
    526         cmp r1, r6, ror #10
    527         cmp r7, r8, lsl r2
    528         cmp sp, r8, lsr r2
    529         cmp r7, r8, asr r2
    530         cmp r7, r8, ror r2
    531         cmp r1, r6, rrx
    532         cmp r0, #-2
    533         cmp lr, #0
    534 
    535 @ CHECK: cmp	r1, #15                 @ encoding: [0x0f,0x00,0x51,0xe3]
    536 @ CHECK: cmp	r1, r6                  @ encoding: [0x06,0x00,0x51,0xe1]
    537 @ CHECK: cmp	r1, r6, lsl #10         @ encoding: [0x06,0x05,0x51,0xe1]
    538 @ CHECK: cmp	r1, r6, lsr #10         @ encoding: [0x26,0x05,0x51,0xe1]
    539 @ CHECK: cmp	sp, r6, lsr #10         @ encoding: [0x26,0x05,0x5d,0xe1]
    540 @ CHECK: cmp	r1, r6, asr #10         @ encoding: [0x46,0x05,0x51,0xe1]
    541 @ CHECK: cmp	r1, r6, ror #10         @ encoding: [0x66,0x05,0x51,0xe1]
    542 @ CHECK: cmp	r7, r8, lsl r2          @ encoding: [0x18,0x02,0x57,0xe1]
    543 @ CHECK: cmp	sp, r8, lsr r2          @ encoding: [0x38,0x02,0x5d,0xe1]
    544 @ CHECK: cmp	r7, r8, asr r2          @ encoding: [0x58,0x02,0x57,0xe1]
    545 @ CHECK: cmp	r7, r8, ror r2          @ encoding: [0x78,0x02,0x57,0xe1]
    546 @ CHECK: cmp	r1, r6, rrx             @ encoding: [0x66,0x00,0x51,0xe1]
    547 @ CHECK: cmn	r0, #2                  @ encoding: [0x02,0x00,0x70,0xe3]
    548 @ CHECK: cmp  lr, #0                    @ encoding: [0x00,0x00,0x5e,0xe3]
    549 
    550 
    551 @------------------------------------------------------------------------------
    552 @ CPS
    553 @------------------------------------------------------------------------------
    554         cpsie  aif
    555         cps  #15
    556         cpsid  if, #10
    557 
    558 @ CHECK: cpsie  aif @ encoding: [0xc0,0x01,0x08,0xf1]
    559 @ CHECK: cps  #15 @ encoding: [0x0f,0x00,0x02,0xf1]
    560 @ CHECK: cpsid  if, #10 @ encoding: [0xca,0x00,0x0e,0xf1]
    561 
    562 
    563 @------------------------------------------------------------------------------
    564 @ DBG
    565 @------------------------------------------------------------------------------
    566         dbg #0
    567         dbg #5
    568         dbg #15
    569 
    570 @ CHECK: dbg #0                         @ encoding: [0xf0,0xf0,0x20,0xe3]
    571 @ CHECK: dbg #5                         @ encoding: [0xf5,0xf0,0x20,0xe3]
    572 @ CHECK: dbg #15                        @ encoding: [0xff,0xf0,0x20,0xe3]
    573 
    574 
    575 @------------------------------------------------------------------------------
    576 @ DMB
    577 @------------------------------------------------------------------------------
    578         dmb #0xf
    579         dmb #0xe
    580         dmb #0xd
    581         dmb #0xc
    582         dmb #0xb
    583         dmb #0xa
    584         dmb #0x9
    585         dmb #0x8
    586         dmb #0x7
    587         dmb #0x6
    588         dmb #0x5
    589         dmb #0x4
    590         dmb #0x3
    591         dmb #0x2
    592         dmb #0x1
    593         dmb #0x0
    594 
    595         dmb sy
    596         dmb st
    597         dmb sh
    598         dmb ish
    599         dmb shst
    600         dmb ishst
    601         dmb un
    602         dmb nsh
    603         dmb unst
    604         dmb nshst
    605         dmb osh
    606         dmb oshst
    607         dmb
    608 
    609 @ CHECK: dmb	sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
    610 @ CHECK: dmb	st                      @ encoding: [0x5e,0xf0,0x7f,0xf5]
    611 @ CHECK: dmb	#0xd                    @ encoding: [0x5d,0xf0,0x7f,0xf5]
    612 @ CHECK: dmb	#0xc                    @ encoding: [0x5c,0xf0,0x7f,0xf5]
    613 @ CHECK: dmb	ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
    614 @ CHECK: dmb	ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
    615 @ CHECK: dmb	#0x9                    @ encoding: [0x59,0xf0,0x7f,0xf5]
    616 @ CHECK: dmb	#0x8                    @ encoding: [0x58,0xf0,0x7f,0xf5]
    617 @ CHECK: dmb	nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
    618 @ CHECK: dmb	nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
    619 @ CHECK: dmb	#0x5                    @ encoding: [0x55,0xf0,0x7f,0xf5]
    620 @ CHECK: dmb	#0x4                    @ encoding: [0x54,0xf0,0x7f,0xf5]
    621 @ CHECK: dmb	osh                     @ encoding: [0x53,0xf0,0x7f,0xf5]
    622 @ CHECK: dmb	oshst                   @ encoding: [0x52,0xf0,0x7f,0xf5]
    623 @ CHECK: dmb	#0x1                    @ encoding: [0x51,0xf0,0x7f,0xf5]
    624 @ CHECK: dmb	#0x0                    @ encoding: [0x50,0xf0,0x7f,0xf5]
    625 
    626 @ CHECK: dmb	sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
    627 @ CHECK: dmb	st                      @ encoding: [0x5e,0xf0,0x7f,0xf5]
    628 @ CHECK: dmb	ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
    629 @ CHECK: dmb	ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
    630 @ CHECK: dmb	ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
    631 @ CHECK: dmb	ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
    632 @ CHECK: dmb	nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
    633 @ CHECK: dmb	nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
    634 @ CHECK: dmb	nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
    635 @ CHECK: dmb	nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
    636 @ CHECK: dmb	osh                     @ encoding: [0x53,0xf0,0x7f,0xf5]
    637 @ CHECK: dmb	oshst                   @ encoding: [0x52,0xf0,0x7f,0xf5]
    638 @ CHECK: dmb	sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
    639 
    640 @------------------------------------------------------------------------------
    641 @ DSB
    642 @------------------------------------------------------------------------------
    643         dsb #0xf
    644         dsb #0xe
    645         dsb #0xd
    646         dsb #0xc
    647         dsb #0xb
    648         dsb #0xa
    649         dsb #0x9
    650         dsb #0x8
    651         dsb #0x7
    652         dsb #0x6
    653         dsb #0x5
    654         dsb #0x4
    655         dsb #0x3
    656         dsb #0x2
    657         dsb #0x1
    658         dsb #0x0
    659 
    660         dsb 8
    661         dsb 7
    662 
    663         dsb sy
    664         dsb st
    665         dsb sh
    666         dsb ish
    667         dsb shst
    668         dsb ishst
    669         dsb un
    670         dsb nsh
    671         dsb unst
    672         dsb nshst
    673         dsb osh
    674         dsb oshst
    675         dsb
    676 
    677 @ CHECK: dsb	sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
    678 @ CHECK: dsb	st                      @ encoding: [0x4e,0xf0,0x7f,0xf5]
    679 @ CHECK: dsb	#0xd                    @ encoding: [0x4d,0xf0,0x7f,0xf5]
    680 @ CHECK: dsb	#0xc                    @ encoding: [0x4c,0xf0,0x7f,0xf5]
    681 @ CHECK: dsb	ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
    682 @ CHECK: dsb	ishst                   @ encoding: [0x4a,0xf0,0x7f,0xf5]
    683 @ CHECK: dsb	#0x9                    @ encoding: [0x49,0xf0,0x7f,0xf5]
    684 @ CHECK: dsb	#0x8                    @ encoding: [0x48,0xf0,0x7f,0xf5]
    685 @ CHECK: dsb	nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
    686 @ CHECK: dsb	nshst                   @ encoding: [0x46,0xf0,0x7f,0xf5]
    687 @ CHECK: dsb	#0x5                    @ encoding: [0x45,0xf0,0x7f,0xf5]
    688 @ CHECK: dsb	#0x4                    @ encoding: [0x44,0xf0,0x7f,0xf5]
    689 @ CHECK: dsb	osh                     @ encoding: [0x43,0xf0,0x7f,0xf5]
    690 @ CHECK: dsb	oshst                   @ encoding: [0x42,0xf0,0x7f,0xf5]
    691 @ CHECK: dsb	#0x1                    @ encoding: [0x41,0xf0,0x7f,0xf5]
    692 @ CHECK: dsb	#0x0                    @ encoding: [0x40,0xf0,0x7f,0xf5]
    693 
    694 @ CHECK: dsb	#0x8                    @ encoding: [0x48,0xf0,0x7f,0xf5]
    695 @ CHECK: dsb	nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
    696 
    697 @ CHECK: dsb	sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
    698 @ CHECK: dsb	st                      @ encoding: [0x4e,0xf0,0x7f,0xf5]
    699 @ CHECK: dsb	ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
    700 @ CHECK: dsb	ish                     @ encoding: [0x4b,0xf0,0x7f,0xf5]
    701 @ CHECK: dsb	ishst                   @ encoding: [0x4a,0xf0,0x7f,0xf5]
    702 @ CHECK: dsb	ishst                   @ encoding: [0x4a,0xf0,0x7f,0xf5]
    703 @ CHECK: dsb	nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
    704 @ CHECK: dsb	nsh                     @ encoding: [0x47,0xf0,0x7f,0xf5]
    705 @ CHECK: dsb	nshst                   @ encoding: [0x46,0xf0,0x7f,0xf5]
    706 @ CHECK: dsb	nshst                   @ encoding: [0x46,0xf0,0x7f,0xf5]
    707 @ CHECK: dsb	osh                     @ encoding: [0x43,0xf0,0x7f,0xf5]
    708 @ CHECK: dsb	oshst                   @ encoding: [0x42,0xf0,0x7f,0xf5]
    709 @ CHECK: dsb	sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
    710 
    711 @ With capitals
    712         dsb SY
    713         dsb OSHST
    714 
    715 @ CHECK: dsb	sy                      @ encoding: [0x4f,0xf0,0x7f,0xf5]
    716 @ CHECK: dsb	oshst                   @ encoding: [0x42,0xf0,0x7f,0xf5]
    717 @------------------------------------------------------------------------------
    718 @ EOR
    719 @------------------------------------------------------------------------------
    720         eor r4, r5, #0xf000
    721         eor r4, r5, r6
    722         eor r4, r5, r6, lsl #5
    723         eor r4, r5, r6, lsr #5
    724         eor r4, r5, r6, lsr #5
    725         eor r4, r5, r6, asr #5
    726         eor r4, r5, r6, ror #5
    727         eor r6, r7, r8, lsl r9
    728         eor r6, r7, r8, lsr r9
    729         eor r6, r7, r8, asr r9
    730         eor r6, r7, r8, ror r9
    731         eor r4, r5, r6, rrx
    732 
    733         @ destination register is optional
    734         eor r5, #0xf000
    735         eor r4, r5
    736         eor r4, r5, lsl #5
    737         eor r4, r5, lsr #5
    738         eor r4, r5, lsr #5
    739         eor r4, r5, asr #5
    740         eor r4, r5, ror #5
    741         eor r6, r7, lsl r9
    742         eor r6, r7, lsr r9
    743         eor r6, r7, asr r9
    744         eor r6, r7, ror r9
    745         eor r4, r5, rrx
    746 
    747 @ CHECK: eor	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x25,0xe2]
    748 @ CHECK: eor	r4, r5, r6              @ encoding: [0x06,0x40,0x25,0xe0]
    749 @ CHECK: eor	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x25,0xe0]
    750 @ CHECK: eor	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x25,0xe0]
    751 @ CHECK: eor	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x25,0xe0]
    752 @ CHECK: eor	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x25,0xe0]
    753 @ CHECK: eor	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x25,0xe0]
    754 @ CHECK: eor	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x27,0xe0]
    755 @ CHECK: eor	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x27,0xe0]
    756 @ CHECK: eor	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x27,0xe0]
    757 @ CHECK: eor	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x27,0xe0]
    758 @ CHECK: eor	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x25,0xe0]
    759 
    760 
    761 @ CHECK: eor	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x25,0xe2]
    762 @ CHECK: eor	r4, r4, r5              @ encoding: [0x05,0x40,0x24,0xe0]
    763 @ CHECK: eor	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x24,0xe0]
    764 @ CHECK: eor	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x24,0xe0]
    765 @ CHECK: eor	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x24,0xe0]
    766 @ CHECK: eor	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x24,0xe0]
    767 @ CHECK: eor	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x24,0xe0]
    768 @ CHECK: eor	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x26,0xe0]
    769 @ CHECK: eor	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x26,0xe0]
    770 @ CHECK: eor	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x26,0xe0]
    771 @ CHECK: eor	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x26,0xe0]
    772 @ CHECK: eor	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x24,0xe0]
    773 
    774     @ Test right shift by 32, which is encoded as 0
    775     eor r3, r1, r2, lsr #32
    776     eor r3, r1, r2, asr #32
    777 @ CHECK: eor	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x21,0xe0]
    778 @ CHECK: eor	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x21,0xe0]
    779 
    780 @------------------------------------------------------------------------------
    781 @ ISB
    782 @------------------------------------------------------------------------------
    783         isb sy
    784         isb
    785         isb #15
    786         isb #1
    787 
    788 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
    789 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
    790 @ CHECK: isb sy                         @ encoding: [0x6f,0xf0,0x7f,0xf5]
    791 @ CHECK: isb #0x1                       @ encoding: [0x61,0xf0,0x7f,0xf5]
    792 
    793 
    794 @------------------------------------------------------------------------------
    795 @ LDC{L}/LDC2{L}
    796 @------------------------------------------------------------------------------
    797         ldc2 p0, c8, [r1, #4]
    798         ldc2 p1, c7, [r2]
    799         ldc2 p2, c6, [r3, #-224]
    800         ldc2 p3, c5, [r4, #-120]!
    801         ldc2 p4, c4, [r5], #16
    802         ldc2 p5, c3, [r6], #-72
    803         ldc2l p6, c2, [r7, #4]
    804         ldc2l p7, c1, [r8]
    805         ldc2l p8, c0, [r9, #-224]
    806         ldc2l p9, c1, [r10, #-120]!
    807         ldc2l p10, c2, [r11], #16
    808         ldc2l p11, c3, [r12], #-72
    809 
    810         ldc p12, c4, [r0, #4]
    811         ldc p13, c5, [r1]
    812         ldc p14, c6, [r2, #-224]
    813         ldc p15, c7, [r3, #-120]!
    814         ldc p5, c8, [r4], #16
    815         ldc p4, c9, [r5], #-72
    816         ldcl p3, c10, [r6, #4]
    817         ldcl p2, c11, [r7]
    818         ldcl p1, c12, [r8, #-224]
    819         ldcl p0, c13, [r9, #-120]!
    820         ldcl p6, c14, [r10], #16
    821         ldcl p7, c15, [r11], #-72
    822 
    823         ldclo p12, c4, [r0, #4]
    824         ldchi p13, c5, [r1]
    825         ldccs p14, c6, [r2, #-224]
    826         ldccc p15, c7, [r3, #-120]!
    827         ldceq p5, c8, [r4], #16
    828         ldcgt p4, c9, [r5], #-72
    829         ldcllt p3, c10, [r6, #4]
    830         ldclge p2, c11, [r7]
    831         ldclle p1, c12, [r8, #-224]
    832         ldclne p0, c13, [r9, #-120]!
    833         ldcleq p6, c14, [r10], #16
    834         ldclhi p7, c15, [r11], #-72
    835 
    836         ldc2 p2, c8, [r1], { 25 }
    837 
    838 @ CHECK: ldc2	p0, c8, [r1, #4]        @ encoding: [0x01,0x80,0x91,0xfd]
    839 @ CHECK: ldc2	p1, c7, [r2]            @ encoding: [0x00,0x71,0x92,0xfd]
    840 @ CHECK: ldc2	p2, c6, [r3, #-224]     @ encoding: [0x38,0x62,0x13,0xfd]
    841 @ CHECK: ldc2	p3, c5, [r4, #-120]!    @ encoding: [0x1e,0x53,0x34,0xfd]
    842 @ CHECK: ldc2	p4, c4, [r5], #16       @ encoding: [0x04,0x44,0xb5,0xfc]
    843 @ CHECK: ldc2	p5, c3, [r6], #-72      @ encoding: [0x12,0x35,0x36,0xfc]
    844 @ CHECK: ldc2l	p6, c2, [r7, #4]        @ encoding: [0x01,0x26,0xd7,0xfd]
    845 @ CHECK: ldc2l	p7, c1, [r8]            @ encoding: [0x00,0x17,0xd8,0xfd]
    846 @ CHECK: ldc2l	p8, c0, [r9, #-224]     @ encoding: [0x38,0x08,0x59,0xfd]
    847 @ CHECK: ldc2l	p9, c1, [r10, #-120]!   @ encoding: [0x1e,0x19,0x7a,0xfd]
    848 @ CHECK: ldc2l	p10, c2, [r11], #16     @ encoding: [0x04,0x2a,0xfb,0xfc]
    849 @ CHECK: ldc2l	p11, c3, [r12], #-72    @ encoding: [0x12,0x3b,0x7c,0xfc]
    850 
    851 @ CHECK: ldc	p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x90,0xed]
    852 @ CHECK: ldc	p13, c5, [r1]           @ encoding: [0x00,0x5d,0x91,0xed]
    853 @ CHECK: ldc	p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x12,0xed]
    854 @ CHECK: ldc	p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x33,0xed]
    855 @ CHECK: ldc	p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xb4,0xec]
    856 @ CHECK: ldc	p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x35,0xec]
    857 @ CHECK: ldcl	p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xd6,0xed]
    858 @ CHECK: ldcl	p2, c11, [r7]           @ encoding: [0x00,0xb2,0xd7,0xed]
    859 @ CHECK: ldcl	p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x58,0xed]
    860 @ CHECK: ldcl	p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x79,0xed]
    861 @ CHECK: ldcl	p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xfa,0xec]
    862 @ CHECK: ldcl	p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x7b,0xec]
    863 
    864 @ CHECK: ldclo	p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x90,0x3d]
    865 @ CHECK: ldchi	p13, c5, [r1]           @ encoding: [0x00,0x5d,0x91,0x8d]
    866 @ CHECK: ldchs	p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x12,0x2d]
    867 @ CHECK: ldclo	p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x33,0x3d]
    868 @ CHECK: ldceq	p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xb4,0x0c]
    869 @ CHECK: ldcgt	p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x35,0xcc]
    870 @ CHECK: ldcllt	p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xd6,0xbd]
    871 @ CHECK: ldclge	p2, c11, [r7]           @ encoding: [0x00,0xb2,0xd7,0xad]
    872 @ CHECK: ldclle	p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x58,0xdd]
    873 @ CHECK: ldclne	p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x79,0x1d]
    874 @ CHECK: ldcleq	p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xfa,0x0c]
    875 @ CHECK: ldclhi	p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x7b,0x8c]
    876 
    877 @ CHECK: ldc2	p2, c8, [r1], {25}      @ encoding: [0x19,0x82,0x91,0xfc]
    878 
    879 
    880 @------------------------------------------------------------------------------
    881 @ LDM*
    882 @------------------------------------------------------------------------------
    883         ldm       r2, {r1,r3-r6,sp}
    884         ldmia     r2, {r1,r3-r6,sp}
    885         ldmib     r2, {r1,r3-r6,sp}
    886         ldmda     r2, {r1,r3-r6,sp}
    887         ldmdb     r2, {r1,r3-r6,sp}
    888         ldmfd     r2, {r1,r3-r6,sp}
    889 
    890         @ with update
    891         ldm       r2!, {r1,r3-r6,sp}
    892         ldmib     r2!, {r1,r3-r6,sp}
    893         ldmda     r2!, {r1,r3-r6,sp}
    894         ldmdb     r2!, {r1,r3-r6,sp}
    895 
    896         @ system version
    897         ldm r0, {r0, r2, lr}^
    898         ldm sp!, {r0-r3, pc}^
    899 
    900 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
    901 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
    902 @ CHECK: ldmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe9]
    903 @ CHECK: ldmda r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe8]
    904 @ CHECK: ldmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe9]
    905 @ CHECK: ldm   r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
    906 
    907 @ CHECK: ldm   r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe8]
    908 @ CHECK: ldmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe9]
    909 @ CHECK: ldmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe8]
    910 @ CHECK: ldmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe9]
    911 @ CHECK: ldm	r0, {r0, r2, lr} ^          @ encoding: [0x05,0x40,0xd0,0xe8]
    912 @ CHECK: ldm	sp!, {r0, r1, r2, r3, pc} ^ @ encoding: [0x0f,0x80,0xfd,0xe8]
    913 
    914 
    915 @------------------------------------------------------------------------------
    916 @ LDREX/LDREXB/LDREXH/LDREXD
    917 @------------------------------------------------------------------------------
    918         ldrexb  r3, [r4]
    919         ldrexh  r2, [r5]
    920         ldrex  r1, [r7]
    921         ldrexd  r6, r7, [r8]
    922 
    923 @ CHECK: ldrexb	r3, [r4]                @ encoding: [0x9f,0x3f,0xd4,0xe1]
    924 @ CHECK: ldrexh	r2, [r5]                @ encoding: [0x9f,0x2f,0xf5,0xe1]
    925 @ CHECK: ldrex	r1, [r7]                @ encoding: [0x9f,0x1f,0x97,0xe1]
    926 @ CHECK: ldrexd	r6, r7, [r8]            @ encoding: [0x9f,0x6f,0xb8,0xe1]
    927 
    928 @------------------------------------------------------------------------------
    929 @ LDRHT
    930 @------------------------------------------------------------------------------
    931         ldrhthi	r8, [r11], #-0
    932         ldrhthi	r8, [r11], #0
    933 
    934 @ CHECK: ldrhthi r8, [r11], #-0         @ encoding: [0xb0,0x80,0x7b,0x80]
    935 @ CHECK: ldrhthi r8, [r11], #0          @ encoding: [0xb0,0x80,0xfb,0x80]
    936 
    937 @------------------------------------------------------------------------------
    938 @ LSL
    939 @------------------------------------------------------------------------------
    940 	lsl r2, r4, #31
    941 	lsl r2, r4, #1
    942 	lsl r2, r4, #0
    943 	lsl r4, #1
    944 
    945 @ CHECK: lsl	r2, r4, #31             @ encoding: [0x84,0x2f,0xa0,0xe1]
    946 @ CHECK: lsl	r2, r4, #1              @ encoding: [0x84,0x20,0xa0,0xe1]
    947 @ CHECK: mov	r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
    948 @ CHECK: lsl	r4, r4, #1              @ encoding: [0x84,0x40,0xa0,0xe1]
    949 
    950 
    951 @------------------------------------------------------------------------------
    952 @ LSR
    953 @------------------------------------------------------------------------------
    954 	lsr r2, r4, #32
    955 	lsr r2, r4, #2
    956 	lsr r2, r4, #0
    957 	lsr r4, #2
    958 
    959 @ CHECK: lsr	r2, r4, #32             @ encoding: [0x24,0x20,0xa0,0xe1]
    960 @ CHECK: lsr	r2, r4, #2              @ encoding: [0x24,0x21,0xa0,0xe1]
    961 @ CHECK: mov	r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
    962 @ CHECK: lsr	r4, r4, #2              @ encoding: [0x24,0x41,0xa0,0xe1]
    963 
    964 
    965 @------------------------------------------------------------------------------
    966 @ MCR/MCR2
    967 @------------------------------------------------------------------------------
    968         mcr  p7, #1, r5, c1, c1, #4
    969         mcr2  p7, #1, r5, c1, c1, #4
    970 
    971 @ CHECK: mcr  p7, #1, r5, c1, c1, #4    @ encoding: [0x91,0x57,0x21,0xee]
    972 @ CHECK: mcr2  p7, #1, r5, c1, c1, #4   @ encoding: [0x91,0x57,0x21,0xfe]
    973 
    974         mcrls  p7, #1, r5, c1, c1, #4
    975 @ CHECK: mcrls  p7, #1, r5, c1, c1, #4   @ encoding: [0x91,0x57,0x21,0x9e]
    976 
    977 @------------------------------------------------------------------------------
    978 @ MCRR/MCRR2
    979 @------------------------------------------------------------------------------
    980         mcrr  p7, #15, r5, r4, c1
    981         mcrr2  p7, #15, r5, r4, c1
    982 
    983 @ CHECK: mcrr  p7, #15, r5, r4, c1      @ encoding: [0xf1,0x57,0x44,0xec]
    984 @ CHECK: mcrr2  p7, #15, r5, r4, c1     @ encoding: [0xf1,0x57,0x44,0xfc]
    985 
    986         mcrrgt  p7, #15, r5, r4, c1
    987 @ CHECK: mcrrgt  p7, #15, r5, r4, c1     @ encoding: [0xf1,0x57,0x44,0xcc]
    988 
    989 @------------------------------------------------------------------------------
    990 @ MLA
    991 @------------------------------------------------------------------------------
    992         mla  r1,r2,r3,r4
    993         mlas r1,r2,r3,r4
    994         mlane  r1,r2,r3,r4
    995         mlasne r1,r2,r3,r4
    996 
    997 @ CHECK: mla 	r1, r2, r3, r4          @ encoding: [0x92,0x43,0x21,0xe0]
    998 @ CHECK: mlas	r1, r2, r3, r4          @ encoding: [0x92,0x43,0x31,0xe0]
    999 @ CHECK: mlane 	r1, r2, r3, r4          @ encoding: [0x92,0x43,0x21,0x10]
   1000 @ CHECK: mlasne	r1, r2, r3, r4          @ encoding: [0x92,0x43,0x31,0x10]
   1001 
   1002 @------------------------------------------------------------------------------
   1003 @ MLS
   1004 @------------------------------------------------------------------------------
   1005         mls  r2,r5,r6,r3
   1006         mlsne  r2,r5,r6,r3
   1007 
   1008 @ CHECK: mls	r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0xe0]
   1009 @ CHECK: mlsne	r2, r5, r6, r3          @ encoding: [0x95,0x36,0x62,0x10]
   1010 
   1011 @------------------------------------------------------------------------------
   1012 @ MOV (immediate)
   1013 @------------------------------------------------------------------------------
   1014         mov r3, #7
   1015         mov r4, #0xff0
   1016         mov r5, #0xff0000
   1017         mov r6, #0xffff
   1018         movw r9, #0xffff
   1019         movs r3, #7
   1020         moveq r4, #0xff0
   1021         movseq r5, #0xff0000
   1022 
   1023 @ CHECK: mov	r3, #7                  @ encoding: [0x07,0x30,0xa0,0xe3]
   1024 @ CHECK: mov	r4, #4080               @ encoding: [0xff,0x4e,0xa0,0xe3]
   1025 @ CHECK: mov	r5, #16711680           @ encoding: [0xff,0x58,0xa0,0xe3]
   1026 @ CHECK: movw	r6, #65535              @ encoding: [0xff,0x6f,0x0f,0xe3]
   1027 @ CHECK: movw	r9, #65535              @ encoding: [0xff,0x9f,0x0f,0xe3]
   1028 @ CHECK: movs	r3, #7                  @ encoding: [0x07,0x30,0xb0,0xe3]
   1029 @ CHECK: moveq	r4, #4080               @ encoding: [0xff,0x4e,0xa0,0x03]
   1030 @ CHECK: movseq	r5, #16711680           @ encoding: [0xff,0x58,0xb0,0x03]
   1031 
   1032 @------------------------------------------------------------------------------
   1033 @ MOV (register)
   1034 @------------------------------------------------------------------------------
   1035         mov r2, r3
   1036         movs r2, r3
   1037         moveq r2, r3
   1038         movseq r2, r3
   1039         mov r12, r8, lsl #(2 - 2)
   1040         lsl r2, r3, #(2 - 2)
   1041         mov r12, r8, lsr #(2 - 2)
   1042         lsr r2, r3, #(2 - 2)
   1043         mov r12, r8, asr #(2 - 2)
   1044         asr r2, r3, #(2 - 2)
   1045         mov r12, r8, ror #(2 - 2)
   1046         ror r2, r3, #(2 - 2)
   1047 
   1048 @ CHECK: mov	r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
   1049 @ CHECK: movs	r2, r3                  @ encoding: [0x03,0x20,0xb0,0xe1]
   1050 @ CHECK: moveq	r2, r3                  @ encoding: [0x03,0x20,0xa0,0x01]
   1051 @ CHECK: movseq	r2, r3                  @ encoding: [0x03,0x20,0xb0,0x01]
   1052 @ CHECK: mov	r12, r8                 @ encoding: [0x08,0xc0,0xa0,0xe1]
   1053 @ CHECK: mov	r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
   1054 @ CHECK: mov	r12, r8                 @ encoding: [0x08,0xc0,0xa0,0xe1]
   1055 @ CHECK: mov	r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
   1056 @ CHECK: mov	r12, r8                 @ encoding: [0x08,0xc0,0xa0,0xe1]
   1057 @ CHECK: mov	r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
   1058 @ CHECK: mov	r12, r8                 @ encoding: [0x08,0xc0,0xa0,0xe1]
   1059 @ CHECK: mov	r2, r3                  @ encoding: [0x03,0x20,0xa0,0xe1]
   1060 
   1061 
   1062 @------------------------------------------------------------------------------
   1063 @ MOVT
   1064 @------------------------------------------------------------------------------
   1065         movt r3, #7
   1066         movt r6, #0xffff
   1067         movteq r4, #0xff0
   1068 
   1069 @ CHECK: movt	r3, #7                  @ encoding: [0x07,0x30,0x40,0xe3]
   1070 @ CHECK: movt	r6, #65535              @ encoding: [0xff,0x6f,0x4f,0xe3]
   1071 @ CHECK: movteq	r4, #4080               @ encoding: [0xf0,0x4f,0x40,0x03]
   1072 
   1073 
   1074 @------------------------------------------------------------------------------
   1075 @ MRC/MRC2
   1076 @------------------------------------------------------------------------------
   1077         mrc  p14, #0, r1, c1, c2, #4
   1078         mrc  p15, #7, apsr_nzcv, c15, c6, #6
   1079         mrc2  p14, #0, r1, c1, c2, #4
   1080         mrc2  p10, #7, apsr_nzcv, c15, c0, #1
   1081 
   1082 @ CHECK: mrc  p14, #0, r1, c1, c2, #4             @ encoding: [0x92,0x1e,0x11,0xee]
   1083 @ CHECK: mrc  p15, #7, apsr_nzcv, c15, c6, #6     @ encoding: [0xd6,0xff,0xff,0xee]
   1084 @ CHECK: mrc2  p14, #0, r1, c1, c2, #4            @ encoding: [0x92,0x1e,0x11,0xfe]
   1085 @ CHECK: mrc2  p10, #7, apsr_nzcv, c15, c0, #1    @ encoding: [0x30,0xfa,0xff,0xfe]
   1086 
   1087          mrceq  p15, #7, apsr_nzcv, c15, c6, #6
   1088 @ CHECK: mrceq  p15, #7, apsr_nzcv, c15, c6, #6   @ encoding: [0xd6,0xff,0xff,0x0e]
   1089 
   1090 @------------------------------------------------------------------------------
   1091 @ MRRC/MRRC2
   1092 @------------------------------------------------------------------------------
   1093         mrrc  p7, #1, r5, r4, c1
   1094         mrrc2  p7, #1, r5, r4, c1
   1095 
   1096 @ CHECK: mrrc  p7, #1, r5, r4, c1       @ encoding: [0x11,0x57,0x54,0xec]
   1097 @ CHECK: mrrc2  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0xfc]
   1098 
   1099         mrrclo  p7, #1, r5, r4, c1
   1100 @ CHECK: mrrclo  p7, #1, r5, r4, c1      @ encoding: [0x11,0x57,0x54,0x3c]
   1101 
   1102 @------------------------------------------------------------------------------
   1103 @ MRS
   1104 @------------------------------------------------------------------------------
   1105         mrs  r8, apsr
   1106         mrs  r8, cpsr
   1107         mrs  r8, spsr
   1108 @ CHECK: mrs  r8, apsr                  @ encoding: [0x00,0x80,0x0f,0xe1]
   1109 @ CHECK: mrs  r8, apsr                  @ encoding: [0x00,0x80,0x0f,0xe1]
   1110 @ CHECK: mrs  r8, spsr                  @ encoding: [0x00,0x80,0x4f,0xe1]
   1111 
   1112 
   1113 
   1114 @------------------------------------------------------------------------------
   1115 @ MSR
   1116 @------------------------------------------------------------------------------
   1117 
   1118         msr  apsr, #5
   1119         msr  apsr_g, #5
   1120         msr  apsr_nzcvq, #5
   1121         msr  APSR_nzcvq, #5
   1122         msr  apsr_nzcvqg, #5
   1123         msr  cpsr_fc, #5
   1124         msr  cpsr_c, #5
   1125         msr  cpsr_x, #5
   1126         msr  cpsr_fc, #5
   1127         msr  cpsr_all, #5
   1128         msr  cpsr_fsx, #5
   1129         msr  spsr_fc, #5
   1130         msr  SPSR_fsxc, #5
   1131         msr  cpsr_fsxc, #5
   1132 
   1133 @ CHECK: msr	APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
   1134 @ CHECK: msr	APSR_g, #5              @ encoding: [0x05,0xf0,0x24,0xe3]
   1135 @ CHECK: msr	APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
   1136 @ CHECK: msr	APSR_nzcvq, #5          @ encoding: [0x05,0xf0,0x28,0xe3]
   1137 @ CHECK: msr	APSR_nzcvqg, #5         @ encoding: [0x05,0xf0,0x2c,0xe3]
   1138 @ CHECK: msr	CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
   1139 @ CHECK: msr	CPSR_c, #5              @ encoding: [0x05,0xf0,0x21,0xe3]
   1140 @ CHECK: msr	CPSR_x, #5              @ encoding: [0x05,0xf0,0x22,0xe3]
   1141 @ CHECK: msr	CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
   1142 @ CHECK: msr	CPSR_fc, #5             @ encoding: [0x05,0xf0,0x29,0xe3]
   1143 @ CHECK: msr	CPSR_fsx, #5            @ encoding: [0x05,0xf0,0x2e,0xe3]
   1144 @ CHECK: msr	SPSR_fc, #5             @ encoding: [0x05,0xf0,0x69,0xe3]
   1145 @ CHECK: msr	SPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x6f,0xe3]
   1146 @ CHECK: msr	CPSR_fsxc, #5           @ encoding: [0x05,0xf0,0x2f,0xe3]
   1147 
   1148         msr  apsr, r0
   1149         msr  apsr_g, r0
   1150         msr  apsr_nzcvq, r0
   1151         msr  APSR_nzcvq, r0
   1152         msr  apsr_nzcvqg, r0
   1153         msr  cpsr_fc, r0
   1154         msr  cpsr_c, r0
   1155         msr  cpsr_x, r0
   1156         msr  cpsr_fc, r0
   1157         msr  cpsr_all, r0
   1158         msr  cpsr_fsx, r0
   1159         msr  spsr_fc, r0
   1160         msr  SPSR_fsxc, r0
   1161         msr  cpsr_fsxc, r0
   1162 
   1163 @ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
   1164 @ CHECK: msr  APSR_g, r0                @ encoding: [0x00,0xf0,0x24,0xe1]
   1165 @ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
   1166 @ CHECK: msr  APSR_nzcvq, r0            @ encoding: [0x00,0xf0,0x28,0xe1]
   1167 @ CHECK: msr  APSR_nzcvqg, r0           @ encoding: [0x00,0xf0,0x2c,0xe1]
   1168 @ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
   1169 @ CHECK: msr  CPSR_c, r0                @ encoding: [0x00,0xf0,0x21,0xe1]
   1170 @ CHECK: msr  CPSR_x, r0                @ encoding: [0x00,0xf0,0x22,0xe1]
   1171 @ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
   1172 @ CHECK: msr  CPSR_fc, r0               @ encoding: [0x00,0xf0,0x29,0xe1]
   1173 @ CHECK: msr  CPSR_fsx, r0              @ encoding: [0x00,0xf0,0x2e,0xe1]
   1174 @ CHECK: msr  SPSR_fc, r0               @ encoding: [0x00,0xf0,0x69,0xe1]
   1175 @ CHECK: msr  SPSR_fsxc, r0             @ encoding: [0x00,0xf0,0x6f,0xe1]
   1176 @ CHECK: msr  CPSR_fsxc, r0             @ encoding: [0x00,0xf0,0x2f,0xe1]
   1177 
   1178 @------------------------------------------------------------------------------
   1179 @ MUL
   1180 @------------------------------------------------------------------------------
   1181         mul r5, r6, r7
   1182         muls r5, r6, r7
   1183         mulgt r5, r6, r7
   1184         mulsle r5, r6, r7
   1185         mul r11, r5
   1186 
   1187 @ CHECK: mul	r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xe0]
   1188 @ CHECK: muls	r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xe0]
   1189 @ CHECK: mulgt	r5, r6, r7              @ encoding: [0x96,0x07,0x05,0xc0]
   1190 @ CHECK: mulsle	r5, r6, r7              @ encoding: [0x96,0x07,0x15,0xd0]
   1191 
   1192 
   1193 @------------------------------------------------------------------------------
   1194 @ MVN (immediate)
   1195 @------------------------------------------------------------------------------
   1196         mvn r3, #7
   1197         mvn r4, #0xff0
   1198         mvn r5, #0xff0000
   1199         mvns r3, #7
   1200         mvneq r4, #0xff0
   1201         mvnseq r5, #0xff0000
   1202 
   1203 @ CHECK: mvn	r3, #7                  @ encoding: [0x07,0x30,0xe0,0xe3]
   1204 @ CHECK: mvn	r4, #4080               @ encoding: [0xff,0x4e,0xe0,0xe3]
   1205 @ CHECK: mvn	r5, #16711680           @ encoding: [0xff,0x58,0xe0,0xe3]
   1206 @ CHECK: mvns	r3, #7                  @ encoding: [0x07,0x30,0xf0,0xe3]
   1207 @ CHECK: mvneq	r4, #4080               @ encoding: [0xff,0x4e,0xe0,0x03]
   1208 @ CHECK: mvnseq	r5, #16711680           @ encoding: [0xff,0x58,0xf0,0x03]
   1209 
   1210 
   1211 @------------------------------------------------------------------------------
   1212 @ MVN (register)
   1213 @------------------------------------------------------------------------------
   1214         mvn r2, r3
   1215         mvns r2, r3
   1216         mvn r5, r6, lsl #19
   1217         mvn r5, r6, lsr #9
   1218         mvn r5, r6, asr #4
   1219         mvn r5, r6, ror #6
   1220         mvn r5, r6, rrx
   1221         mvneq r2, r3
   1222         mvnseq r2, r3, lsl #10
   1223 
   1224 @ CHECK: mvn	r2, r3                  @ encoding: [0x03,0x20,0xe0,0xe1]
   1225 @ CHECK: mvns	r2, r3                  @ encoding: [0x03,0x20,0xf0,0xe1]
   1226 @ CHECK: mvn	r5, r6, lsl #19         @ encoding: [0x86,0x59,0xe0,0xe1]
   1227 @ CHECK: mvn	r5, r6, lsr #9          @ encoding: [0xa6,0x54,0xe0,0xe1]
   1228 @ CHECK: mvn	r5, r6, asr #4          @ encoding: [0x46,0x52,0xe0,0xe1]
   1229 @ CHECK: mvn	r5, r6, ror #6          @ encoding: [0x66,0x53,0xe0,0xe1]
   1230 @ CHECK: mvn	r5, r6, rrx             @ encoding: [0x66,0x50,0xe0,0xe1]
   1231 @ CHECK: mvneq	r2, r3                  @ encoding: [0x03,0x20,0xe0,0x01]
   1232 @ CHECK: mvnseq	r2, r3, lsl #10         @ encoding: [0x03,0x25,0xf0,0x01]
   1233 
   1234 
   1235 @------------------------------------------------------------------------------
   1236 @ MVN (shifted register)
   1237 @------------------------------------------------------------------------------
   1238         mvn r5, r6, lsl r7
   1239         mvns r5, r6, lsr r7
   1240         mvngt r5, r6, asr r7
   1241         mvnslt r5, r6, ror r7
   1242 
   1243 @ CHECK: mvn	r5, r6, lsl r7          @ encoding: [0x16,0x57,0xe0,0xe1]
   1244 @ CHECK: mvns	r5, r6, lsr r7          @ encoding: [0x36,0x57,0xf0,0xe1]
   1245 @ CHECK: mvngt	r5, r6, asr r7          @ encoding: [0x56,0x57,0xe0,0xc1]
   1246 @ CHECK: mvnslt	r5, r6, ror r7          @ encoding: [0x76,0x57,0xf0,0xb1]
   1247 
   1248 @------------------------------------------------------------------------------
   1249 @ NEG
   1250 @------------------------------------------------------------------------------
   1251         neg r5, r8
   1252 
   1253 @ CHECK: rsb	r5, r8, #0              @ encoding: [0x00,0x50,0x68,0xe2]
   1254 
   1255 
   1256 @------------------------------------------------------------------------------
   1257 @ NOP
   1258 @------------------------------------------------------------------------------
   1259         nop
   1260         nop.w
   1261         nopgt
   1262 
   1263 @ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
   1264 @ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
   1265 @ CHECK: nopgt @ encoding: [0x00,0xf0,0x20,0xc3]
   1266 
   1267 
   1268 @------------------------------------------------------------------------------
   1269 @ ORR
   1270 @------------------------------------------------------------------------------
   1271         orr r4, r5, #0xf000
   1272         orr r4, r5, r6
   1273         orr r4, r5, r6, lsl #5
   1274         orr r4, r5, r6, lsr #5
   1275         orr r4, r5, r6, lsr #5
   1276         orr r4, r5, r6, asr #5
   1277         orr r4, r5, r6, ror #5
   1278         orr r6, r7, r8, lsl r9
   1279         orr r6, r7, r8, lsr r9
   1280         orr r6, r7, r8, asr r9
   1281         orr r6, r7, r8, ror r9
   1282         orr r4, r5, r6, rrx
   1283 
   1284         @ destination register is optional
   1285         orr r5, #0xf000
   1286         orr r4, r5
   1287         orr r4, r5, lsl #5
   1288         orr r4, r5, lsr #5
   1289         orr r4, r5, lsr #5
   1290         orr r4, r5, asr #5
   1291         orr r4, r5, ror #5
   1292         orr r6, r7, lsl r9
   1293         orr r6, r7, lsr r9
   1294         orr r6, r7, asr r9
   1295         orr r6, r7, ror r9
   1296         orr r4, r5, rrx
   1297 
   1298 @ CHECK: orr	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x85,0xe3]
   1299 @ CHECK: orr	r4, r5, r6              @ encoding: [0x06,0x40,0x85,0xe1]
   1300 @ CHECK: orr	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x85,0xe1]
   1301 @ CHECK: orr	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
   1302 @ CHECK: orr	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x85,0xe1]
   1303 @ CHECK: orr	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x85,0xe1]
   1304 @ CHECK: orr	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x85,0xe1]
   1305 @ CHECK: orr	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x87,0xe1]
   1306 @ CHECK: orr	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x87,0xe1]
   1307 @ CHECK: orr	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x87,0xe1]
   1308 @ CHECK: orr	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0xe1]
   1309 @ CHECK: orr	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x85,0xe1]
   1310 
   1311 @ CHECK: orr	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0xe3]
   1312 @ CHECK: orr	r4, r4, r5              @ encoding: [0x05,0x40,0x84,0xe1]
   1313 @ CHECK: orr	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x84,0xe1]
   1314 @ CHECK: orr	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
   1315 @ CHECK: orr	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x84,0xe1]
   1316 @ CHECK: orr	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x84,0xe1]
   1317 @ CHECK: orr	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x84,0xe1]
   1318 @ CHECK: orr	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x86,0xe1]
   1319 @ CHECK: orr	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x86,0xe1]
   1320 @ CHECK: orr	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0xe1]
   1321 @ CHECK: orr	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x86,0xe1]
   1322 @ CHECK: orr	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x84,0xe1]
   1323 
   1324         orrseq r4, r5, #0xf000
   1325         orrne r4, r5, r6
   1326         orrseq r4, r5, r6, lsl #5
   1327         orrlo r6, r7, r8, ror r9
   1328         orrshi r4, r5, r6, rrx
   1329         orrcs r5, #0xf000
   1330         orrseq r4, r5
   1331         orrne r6, r7, asr r9
   1332         orrslt r6, r7, ror r9
   1333         orrsgt r4, r5, rrx
   1334 
   1335 @ CHECK: orrseq	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x95,0x03]
   1336 @ CHECK: orrne	r4, r5, r6              @ encoding: [0x06,0x40,0x85,0x11]
   1337 @ CHECK: orrseq	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x95,0x01]
   1338 @ CHECK: orrlo	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x87,0x31]
   1339 @ CHECK: orrshi	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x95,0x81]
   1340 @ CHECK: orrhs	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x85,0x23]
   1341 @ CHECK: orrseq	r4, r4, r5              @ encoding: [0x05,0x40,0x94,0x01]
   1342 @ CHECK: orrne	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x86,0x11]
   1343 @ CHECK: orrslt	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x96,0xb1]
   1344 @ CHECK: orrsgt	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x94,0xc1]
   1345 
   1346     @ Test right shift by 32, which is encoded as 0
   1347     orr r3, r1, r2, lsr #32
   1348     orr r3, r1, r2, asr #32
   1349 @ CHECK: orr	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x81,0xe1]
   1350 @ CHECK: orr	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x81,0xe1]
   1351 
   1352 @------------------------------------------------------------------------------
   1353 @ PKH
   1354 @------------------------------------------------------------------------------
   1355         pkhbt r2, r2, r3
   1356         pkhbt r2, r2, r3, lsl #31
   1357         pkhbt r2, r2, r3, lsl #0
   1358         pkhbt r2, r2, r3, lsl #15
   1359 
   1360         pkhtb r2, r2, r3
   1361         pkhtb r2, r2, r3, asr #31
   1362         pkhtb r2, r2, r3, asr #15
   1363 
   1364 @ CHECK: pkhbt	r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
   1365 @ CHECK: pkhbt	r2, r2, r3, lsl #31     @ encoding: [0x93,0x2f,0x82,0xe6]
   1366 @ CHECK: pkhbt	r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
   1367 @ CHECK: pkhbt	r2, r2, r3, lsl #15     @ encoding: [0x93,0x27,0x82,0xe6]
   1368 
   1369 @ CHECK: pkhbt	r2, r2, r3              @ encoding: [0x13,0x20,0x82,0xe6]
   1370 @ CHECK: pkhtb	r2, r2, r3, asr #31     @ encoding: [0xd3,0x2f,0x82,0xe6]
   1371 @ CHECK: pkhtb	r2, r2, r3, asr #15     @ encoding: [0xd3,0x27,0x82,0xe6]
   1372 
   1373 @------------------------------------------------------------------------------
   1374 @ FIXME: PLD
   1375 @------------------------------------------------------------------------------
   1376 @------------------------------------------------------------------------------
   1377 @ FIXME: PLI
   1378 @------------------------------------------------------------------------------
   1379 
   1380 
   1381 @------------------------------------------------------------------------------
   1382 @ POP
   1383 @------------------------------------------------------------------------------
   1384         pop {r7}
   1385         pop {r7, r8, r9, r10}
   1386 
   1387 @ CHECK: pop	{r7}                    @ encoding: [0x04,0x70,0x9d,0xe4]
   1388 @ CHECK: pop	{r7, r8, r9, r10}       @ encoding: [0x80,0x07,0xbd,0xe8]
   1389 
   1390 
   1391 @------------------------------------------------------------------------------
   1392 @ PUSH
   1393 @------------------------------------------------------------------------------
   1394         push {r7}
   1395         push {r7, r8, r9, r10}
   1396 
   1397 @ CHECK: push	{r7}                    @ encoding: [0x04,0x70,0x2d,0xe5]
   1398 @ CHECK: push	{r7, r8, r9, r10}       @ encoding: [0x80,0x07,0x2d,0xe9]
   1399 
   1400 
   1401 @------------------------------------------------------------------------------
   1402 @ QADD/QADD16/QADD8
   1403 @------------------------------------------------------------------------------
   1404         qadd r1, r2, r3
   1405         qaddne r1, r2, r3
   1406         qadd16 r1, r2, r3
   1407         qadd16gt r1, r2, r3
   1408         qadd8 r1, r2, r3
   1409         qadd8le r1, r2, r3
   1410 
   1411 @ CHECK: qadd	r1, r2, r3              @ encoding: [0x52,0x10,0x03,0xe1]
   1412 @ CHECK: qaddne	r1, r2, r3              @ encoding: [0x52,0x10,0x03,0x11]
   1413 @ CHECK: qadd16	r1, r2, r3              @ encoding: [0x13,0x1f,0x22,0xe6]
   1414 @ CHECK: qadd16gt	r1, r2, r3      @ encoding: [0x13,0x1f,0x22,0xc6]
   1415 @ CHECK: qadd8	r1, r2, r3              @ encoding: [0x93,0x1f,0x22,0xe6]
   1416 @ CHECK: qadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x22,0xd6]
   1417 
   1418 
   1419 @------------------------------------------------------------------------------
   1420 @ QDADD/QDSUB
   1421 @------------------------------------------------------------------------------
   1422         qdadd r6, r7, r8
   1423         qdaddhi r6, r7, r8
   1424         qdsub r6, r7, r8
   1425         qdsubhi r6, r7, r8
   1426 
   1427 @ CHECK: qdadd	r6, r7, r8              @ encoding: [0x57,0x60,0x48,0xe1]
   1428 @ CHECK: qdaddhi r6, r7, r8             @ encoding: [0x57,0x60,0x48,0x81]
   1429 @ CHECK: qdsub	r6, r7, r8              @ encoding: [0x57,0x60,0x68,0xe1]
   1430 @ CHECK: qdsubhi r6, r7, r8             @ encoding: [0x57,0x60,0x68,0x81]
   1431 
   1432 
   1433 @------------------------------------------------------------------------------
   1434 @ QSAX
   1435 @------------------------------------------------------------------------------
   1436         qsax r9, r12, r0
   1437         qsaxeq r9, r12, r0
   1438 
   1439 @ CHECK: qsax	r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0xe6]
   1440 @ CHECK: qsaxeq	r9, r12, r0             @ encoding: [0x50,0x9f,0x2c,0x06]
   1441 
   1442 
   1443 @------------------------------------------------------------------------------
   1444 @ QSUB/QSUB16/QSUB8
   1445 @------------------------------------------------------------------------------
   1446         qsub r1, r2, r3
   1447         qsubne r1, r2, r3
   1448         qsub16 r1, r2, r3
   1449         qsub16gt r1, r2, r3
   1450         qsub8 r1, r2, r3
   1451         qsub8le r1, r2, r3
   1452 
   1453 @ CHECK: qsub	r1, r2, r3              @ encoding: [0x52,0x10,0x23,0xe1]
   1454 @ CHECK: qsubne	r1, r2, r3              @ encoding: [0x52,0x10,0x23,0x11]
   1455 @ CHECK: qsub16	r1, r2, r3              @ encoding: [0x73,0x1f,0x22,0xe6]
   1456 @ CHECK: qsub16gt	r1, r2, r3      @ encoding: [0x73,0x1f,0x22,0xc6]
   1457 @ CHECK: qsub8	r1, r2, r3              @ encoding: [0xf3,0x1f,0x22,0xe6]
   1458 @ CHECK: qsub8le r1, r2, r3             @ encoding: [0xf3,0x1f,0x22,0xd6]
   1459 
   1460 
   1461 @------------------------------------------------------------------------------
   1462 @ RBIT
   1463 @------------------------------------------------------------------------------
   1464         rbit r1, r2
   1465         rbitne r1, r2
   1466 
   1467 @ CHECK: rbit	r1, r2                  @ encoding: [0x32,0x1f,0xff,0xe6]
   1468 @ CHECK: rbitne	r1, r2                  @ encoding: [0x32,0x1f,0xff,0x16]
   1469 
   1470 
   1471 @------------------------------------------------------------------------------
   1472 @ REV/REV16/REVSH
   1473 @------------------------------------------------------------------------------
   1474         rev r1, r9
   1475         revne r1, r5
   1476         rev16 r8, r3
   1477         rev16ne r12, r4
   1478         revsh r4, r9
   1479         revshne r9, r1
   1480 
   1481 @ CHECK: rev	r1, r9                  @ encoding: [0x39,0x1f,0xbf,0xe6]
   1482 @ CHECK: revne	r1, r5                  @ encoding: [0x35,0x1f,0xbf,0x16]
   1483 @ CHECK: rev16	r8, r3                  @ encoding: [0xb3,0x8f,0xbf,0xe6]
   1484 @ CHECK: rev16ne r12, r4                @ encoding: [0xb4,0xcf,0xbf,0x16]
   1485 @ CHECK: revsh	r4, r9                  @ encoding: [0xb9,0x4f,0xff,0xe6]
   1486 @ CHECK: revshne r9, r1                 @ encoding: [0xb1,0x9f,0xff,0x16]
   1487 
   1488 
   1489 @------------------------------------------------------------------------------
   1490 @ RFE
   1491 @------------------------------------------------------------------------------
   1492         rfeda r2
   1493         rfedb r3
   1494         rfeia r5
   1495         rfeib r6
   1496 
   1497         rfeda r4!
   1498         rfedb r7!
   1499         rfeia r9!
   1500         rfeib r8!
   1501 
   1502         rfefa r2
   1503         rfeea r3
   1504         rfefd r5
   1505         rfeed r6
   1506 
   1507         rfefa r4!
   1508         rfeea r7!
   1509         rfefd r9!
   1510         rfeed r8!
   1511 
   1512         rfe r1
   1513         rfe r1!
   1514 
   1515 @ CHECK: rfeda	r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
   1516 @ CHECK: rfedb	r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
   1517 @ CHECK: rfeia	r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
   1518 @ CHECK: rfeib	r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
   1519 
   1520 @ CHECK: rfeda	r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
   1521 @ CHECK: rfedb	r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
   1522 @ CHECK: rfeia	r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
   1523 @ CHECK: rfeib	r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
   1524 
   1525 @ CHECK: rfeda	r2                      @ encoding: [0x00,0x0a,0x12,0xf8]
   1526 @ CHECK: rfedb	r3                      @ encoding: [0x00,0x0a,0x13,0xf9]
   1527 @ CHECK: rfeia	r5                      @ encoding: [0x00,0x0a,0x95,0xf8]
   1528 @ CHECK: rfeib	r6                      @ encoding: [0x00,0x0a,0x96,0xf9]
   1529 
   1530 @ CHECK: rfeda	r4!                     @ encoding: [0x00,0x0a,0x34,0xf8]
   1531 @ CHECK: rfedb	r7!                     @ encoding: [0x00,0x0a,0x37,0xf9]
   1532 @ CHECK: rfeia	r9!                     @ encoding: [0x00,0x0a,0xb9,0xf8]
   1533 @ CHECK: rfeib	r8!                     @ encoding: [0x00,0x0a,0xb8,0xf9]
   1534 
   1535 @ CHECK: rfeia	r1                      @ encoding: [0x00,0x0a,0x91,0xf8]
   1536 @ CHECK: rfeia	r1!                     @ encoding: [0x00,0x0a,0xb1,0xf8]
   1537 
   1538 
   1539 @------------------------------------------------------------------------------
   1540 @ ROR
   1541 @------------------------------------------------------------------------------
   1542 	ror r2, r4, #31
   1543 	ror r2, r4, #1
   1544 	ror r2, r4, #0
   1545 	ror r4, #1
   1546 
   1547 @ CHECK: ror	r2, r4, #31             @ encoding: [0xe4,0x2f,0xa0,0xe1]
   1548 @ CHECK: ror	r2, r4, #1              @ encoding: [0xe4,0x20,0xa0,0xe1]
   1549 @ CHECK: mov	r2, r4                  @ encoding: [0x04,0x20,0xa0,0xe1]
   1550 @ CHECK: ror	r4, r4, #1              @ encoding: [0xe4,0x40,0xa0,0xe1]
   1551 
   1552 
   1553 @------------------------------------------------------------------------------
   1554 @ RSB
   1555 @------------------------------------------------------------------------------
   1556         rsb r4, r5, #0xf000
   1557         rsb r4, r5, r6
   1558         rsb r4, r5, r6, lsl #5
   1559         rsblo r4, r5, r6, lsr #5
   1560         rsb r4, r5, r6, lsr #5
   1561         rsb r4, r5, r6, asr #5
   1562         rsb r4, r5, r6, ror #5
   1563         rsb r6, r7, r8, lsl r9
   1564         rsb r6, r7, r8, lsr r9
   1565         rsb r6, r7, r8, asr r9
   1566         rsble r6, r7, r8, ror r9
   1567         rsb r4, r5, r6, rrx
   1568 
   1569         @ destination register is optional
   1570         rsb r5, #0xf000
   1571         rsb r4, r5
   1572         rsb r4, r5, lsl #5
   1573         rsb r4, r5, lsr #5
   1574         rsbne r4, r5, lsr #5
   1575         rsb r4, r5, asr #5
   1576         rsb r4, r5, ror #5
   1577         rsbgt r6, r7, lsl r9
   1578         rsb r6, r7, lsr r9
   1579         rsb r6, r7, asr r9
   1580         rsb r6, r7, ror r9
   1581         rsb r4, r5, rrx
   1582 
   1583 @ CHECK: rsb	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x65,0xe2]
   1584 @ CHECK: rsb	r4, r5, r6              @ encoding: [0x06,0x40,0x65,0xe0]
   1585 @ CHECK: rsb	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x65,0xe0]
   1586 @ CHECK: rsblo	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0x30]
   1587 @ CHECK: rsb	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x65,0xe0]
   1588 @ CHECK: rsb	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x65,0xe0]
   1589 @ CHECK: rsb	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x65,0xe0]
   1590 @ CHECK: rsb	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x67,0xe0]
   1591 @ CHECK: rsb	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x67,0xe0]
   1592 @ CHECK: rsb	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x67,0xe0]
   1593 @ CHECK: rsble	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x67,0xd0]
   1594 @ CHECK: rsb	r4, r5, r6, rrx         @ encoding: [0x66,0x40,0x65,0xe0]
   1595 
   1596 @ CHECK: rsb	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x65,0xe2]
   1597 @ CHECK: rsb	r4, r4, r5              @ encoding: [0x05,0x40,0x64,0xe0]
   1598 @ CHECK: rsb	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x64,0xe0]
   1599 @ CHECK: rsb	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0xe0]
   1600 @ CHECK: rsbne	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x64,0x10]
   1601 @ CHECK: rsb	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x64,0xe0]
   1602 @ CHECK: rsb	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x64,0xe0]
   1603 @ CHECK: rsbgt	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x66,0xc0]
   1604 @ CHECK: rsb	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x66,0xe0]
   1605 @ CHECK: rsb	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x66,0xe0]
   1606 @ CHECK: rsb	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x66,0xe0]
   1607 @ CHECK: rsb	r4, r4, r5, rrx         @ encoding: [0x65,0x40,0x64,0xe0]
   1608 
   1609 @------------------------------------------------------------------------------
   1610 @ RSC
   1611 @------------------------------------------------------------------------------
   1612         rsc r4, r5, #0xf000
   1613         rsc r4, r5, r6
   1614         rsc r4, r5, r6, lsl #5
   1615         rsclo r4, r5, r6, lsr #5
   1616         rsc r4, r5, r6, lsr #5
   1617         rsc r4, r5, r6, asr #5
   1618         rsc r4, r5, r6, ror #5
   1619         rsc r6, r7, r8, lsl r9
   1620         rsc r6, r7, r8, lsr r9
   1621         rsc r6, r7, r8, asr r9
   1622         rscle r6, r7, r8, ror r9
   1623         rscs r1, r8, #4064
   1624 
   1625         @ destination register is optional
   1626         rsc r5, #0xf000
   1627         rsc r4, r5
   1628         rsc r4, r5, lsl #5
   1629         rsc r4, r5, lsr #5
   1630         rscne r4, r5, lsr #5
   1631         rsc r4, r5, asr #5
   1632         rsc r4, r5, ror #5
   1633         rscgt r6, r7, lsl r9
   1634         rsc r6, r7, lsr r9
   1635         rsc r6, r7, asr r9
   1636         rsc r6, r7, ror r9
   1637 
   1638 @ CHECK: rsc	r4, r5, #61440          @ encoding: [0x0f,0x4a,0xe5,0xe2]
   1639 @ CHECK: rsc	r4, r5, r6              @ encoding: [0x06,0x40,0xe5,0xe0]
   1640 @ CHECK: rsc	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xe5,0xe0]
   1641 @ CHECK: rsclo	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0x30]
   1642 @ CHECK: rsc	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xe5,0xe0]
   1643 @ CHECK: rsc	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xe5,0xe0]
   1644 @ CHECK: rsc	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xe5,0xe0]
   1645 @ CHECK: rsc	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xe7,0xe0]
   1646 @ CHECK: rsc	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xe7,0xe0]
   1647 @ CHECK: rsc	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xe7,0xe0]
   1648 @ CHECK: rscle	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xe7,0xd0]
   1649 @ CHECK: rscs	r1, r8, #4064           @ encoding: [0xfe,0x1e,0xf8,0xe2]
   1650 
   1651 @ CHECK: rsc	r5, r5, #61440          @ encoding: [0x0f,0x5a,0xe5,0xe2]
   1652 @ CHECK: rsc	r4, r4, r5              @ encoding: [0x05,0x40,0xe4,0xe0]
   1653 @ CHECK: rsc	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xe4,0xe0]
   1654 @ CHECK: rsc	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0xe0]
   1655 @ CHECK: rscne	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xe4,0x10]
   1656 @ CHECK: rsc	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xe4,0xe0]
   1657 @ CHECK: rsc	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xe4,0xe0]
   1658 @ CHECK: rscgt	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xe6,0xc0]
   1659 @ CHECK: rsc	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xe6,0xe0]
   1660 @ CHECK: rsc	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xe6,0xe0]
   1661 @ CHECK: rsc	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xe6,0xe0]
   1662 
   1663 @------------------------------------------------------------------------------
   1664 @ RRX/RRXS
   1665 @------------------------------------------------------------------------------
   1666 
   1667          rrx r0, r1
   1668 	 rrx sp, pc
   1669 	 rrx pc, lr
   1670 	 rrx lr, sp
   1671 
   1672 @ CHECK: rrx	r0, r1                  @ encoding: [0x61,0x00,0xa0,0xe1]
   1673 @ CHECK: rrx	sp, pc                  @ encoding: [0x6f,0xd0,0xa0,0xe1]
   1674 @ CHECK: rrx	pc, lr                  @ encoding: [0x6e,0xf0,0xa0,0xe1]
   1675 @ CHECK: rrx	lr, sp                  @ encoding: [0x6d,0xe0,0xa0,0xe1]
   1676 
   1677          rrxs r0, r1
   1678 	 rrxs sp, pc
   1679 	 rrxs pc, lr
   1680 	 rrxs lr, sp
   1681 
   1682 @CHECK: rrxs	r0, r1                  @ encoding: [0x61,0x00,0xb0,0xe1]
   1683 @CHECK: rrxs	sp, pc                  @ encoding: [0x6f,0xd0,0xb0,0xe1]
   1684 @CHECK: rrxs	pc, lr                  @ encoding: [0x6e,0xf0,0xb0,0xe1]
   1685 @CHECK: rrxs	lr, sp                  @ encoding: [0x6d,0xe0,0xb0,0xe1]
   1686 
   1687 @ ------------------------------------------------------------------------------
   1688 @ SADD16/SADD8
   1689 @------------------------------------------------------------------------------
   1690         sadd16 r1, r2, r3
   1691         sadd16gt r1, r2, r3
   1692         sadd8 r1, r2, r3
   1693         sadd8le r1, r2, r3
   1694 
   1695 @ CHECK: sadd16	r1, r2, r3              @ encoding: [0x13,0x1f,0x12,0xe6]
   1696 @ CHECK: sadd16gt	r1, r2, r3      @ encoding: [0x13,0x1f,0x12,0xc6]
   1697 @ CHECK: sadd8	r1, r2, r3              @ encoding: [0x93,0x1f,0x12,0xe6]
   1698 @ CHECK: sadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x12,0xd6]
   1699 
   1700 
   1701 @------------------------------------------------------------------------------
   1702 @ SASX
   1703 @------------------------------------------------------------------------------
   1704         sasx r9, r12, r0
   1705         sasxeq r9, r12, r0
   1706 
   1707 @ CHECK: sasx	r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0xe6]
   1708 @ CHECK: sasxeq	r9, r12, r0             @ encoding: [0x30,0x9f,0x1c,0x06]
   1709 
   1710 
   1711 @------------------------------------------------------------------------------
   1712 @ SBC
   1713 @------------------------------------------------------------------------------
   1714         sbc r4, r5, #0xf000
   1715         sbc r4, r5, r6
   1716         sbc r4, r5, r6, lsl #5
   1717         sbc r4, r5, r6, lsr #5
   1718         sbc r4, r5, r6, lsr #5
   1719         sbc r4, r5, r6, asr #5
   1720         sbc r4, r5, r6, ror #5
   1721         sbc r6, r7, r8, lsl r9
   1722         sbc r6, r7, r8, lsr r9
   1723         sbc r6, r7, r8, asr r9
   1724         sbc r6, r7, r8, ror r9
   1725 
   1726         @ destination register is optional
   1727         sbc r5, #0xf000
   1728         sbc r4, r5
   1729         sbc r4, r5, lsl #5
   1730         sbc r4, r5, lsr #5
   1731         sbc r4, r5, lsr #5
   1732         sbc r4, r5, asr #5
   1733         sbc r4, r5, ror #5
   1734         sbc r6, r7, lsl r9
   1735         sbc r6, r7, lsr r9
   1736         sbc r6, r7, asr r9
   1737         sbc r6, r7, ror r9
   1738 
   1739 @ CHECK: sbc	r4, r5, #61440          @ encoding: [0x0f,0x4a,0xc5,0xe2]
   1740 @ CHECK: sbc	r4, r5, r6              @ encoding: [0x06,0x40,0xc5,0xe0]
   1741 @ CHECK: sbc	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0xc5,0xe0]
   1742 @ CHECK: sbc	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
   1743 @ CHECK: sbc	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0xc5,0xe0]
   1744 @ CHECK: sbc	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0xc5,0xe0]
   1745 @ CHECK: sbc	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0xc5,0xe0]
   1746 @ CHECK: sbc	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0xc7,0xe0]
   1747 @ CHECK: sbc	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0xc7,0xe0]
   1748 @ CHECK: sbc	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0xc7,0xe0]
   1749 @ CHECK: sbc	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0xc7,0xe0]
   1750 
   1751 @ CHECK: sbc	r5, r5, #61440          @ encoding: [0x0f,0x5a,0xc5,0xe2]
   1752 @ CHECK: sbc	r4, r4, r5              @ encoding: [0x05,0x40,0xc4,0xe0]
   1753 @ CHECK: sbc	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0xc4,0xe0]
   1754 @ CHECK: sbc	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
   1755 @ CHECK: sbc	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0xc4,0xe0]
   1756 @ CHECK: sbc	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0xc4,0xe0]
   1757 @ CHECK: sbc	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0xc4,0xe0]
   1758 @ CHECK: sbc	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0xc6,0xe0]
   1759 @ CHECK: sbc	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0xc6,0xe0]
   1760 @ CHECK: sbc	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0xc6,0xe0]
   1761 @ CHECK: sbc	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0xc6,0xe0]
   1762 
   1763 
   1764 @------------------------------------------------------------------------------
   1765 @ SBFX
   1766 @------------------------------------------------------------------------------
   1767         sbfx r4, r5, #16, #1
   1768         sbfxgt r4, r5, #16, #16
   1769 
   1770 @ CHECK: sbfx	r4, r5, #16, #1         @ encoding: [0x55,0x48,0xa0,0xe7]
   1771 @ CHECK: sbfxgt	r4, r5, #16, #16        @ encoding: [0x55,0x48,0xaf,0xc7]
   1772 
   1773 
   1774 @------------------------------------------------------------------------------
   1775 @ SEL
   1776 @------------------------------------------------------------------------------
   1777         sel r9, r2, r1
   1778         selne r9, r2, r1
   1779 
   1780 @ CHECK: sel	r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0xe6]
   1781 @ CHECK: selne	r9, r2, r1              @ encoding: [0xb1,0x9f,0x82,0x16]
   1782 
   1783 
   1784 @------------------------------------------------------------------------------
   1785 @ SETEND
   1786 @------------------------------------------------------------------------------
   1787         setend be
   1788         setend BE
   1789         setend le
   1790         setend LE
   1791 
   1792 @ CHECK: setend	be                      @ encoding: [0x00,0x02,0x01,0xf1]
   1793 @ CHECK: setend	be                      @ encoding: [0x00,0x02,0x01,0xf1]
   1794 @ CHECK: setend	le                      @ encoding: [0x00,0x00,0x01,0xf1]
   1795 @ CHECK: setend	le                      @ encoding: [0x00,0x00,0x01,0xf1]
   1796 
   1797 
   1798 @------------------------------------------------------------------------------
   1799 @ SEV
   1800 @------------------------------------------------------------------------------
   1801         sev
   1802         seveq
   1803 
   1804 @ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
   1805 @ CHECK: seveq                          @ encoding: [0x04,0xf0,0x20,0x03]
   1806 
   1807 
   1808 @------------------------------------------------------------------------------
   1809 @ SHADD16/SHADD8
   1810 @------------------------------------------------------------------------------
   1811         shadd16 r4, r8, r2
   1812         shadd16gt r4, r8, r2
   1813         shadd8 r4, r8, r2
   1814         shadd8gt r4, r8, r2
   1815 
   1816 @ CHECK: shadd16	r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xe6]
   1817 @ CHECK: shadd16gt	r4, r8, r2      @ encoding: [0x12,0x4f,0x38,0xc6]
   1818 @ CHECK: shadd8	r4, r8, r2              @ encoding: [0x92,0x4f,0x38,0xe6]
   1819 @ CHECK: shadd8gt	r4, r8, r2      @ encoding: [0x92,0x4f,0x38,0xc6]
   1820 
   1821 
   1822 @------------------------------------------------------------------------------
   1823 @ SHASX
   1824 @------------------------------------------------------------------------------
   1825         shasx r4, r8, r2
   1826         shasxgt r4, r8, r2
   1827 
   1828 @ CHECK: shasx	r4, r8, r2              @ encoding: [0x32,0x4f,0x38,0xe6]
   1829 @ CHECK: shasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x38,0xc6]
   1830 
   1831 
   1832 @------------------------------------------------------------------------------
   1833 @ SHSUB16/SHSUB8
   1834 @------------------------------------------------------------------------------
   1835         shsub16 r4, r8, r2
   1836         shsub16gt r4, r8, r2
   1837         shsub8 r4, r8, r2
   1838         shsub8gt r4, r8, r2
   1839 
   1840 @ CHECK: shsub16	r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xe6]
   1841 @ CHECK: shsub16gt	r4, r8, r2      @ encoding: [0x72,0x4f,0x38,0xc6]
   1842 @ CHECK: shsub8	r4, r8, r2              @ encoding: [0xf2,0x4f,0x38,0xe6]
   1843 @ CHECK: shsub8gt	r4, r8, r2      @ encoding: [0xf2,0x4f,0x38,0xc6]
   1844 
   1845 @------------------------------------------------------------------------------
   1846 @ SMLABB/SMLABT/SMLATB/SMLATT
   1847 @------------------------------------------------------------------------------
   1848         smlabb r3, r1, r9, r0
   1849         smlabt r5, r6, r4, r1
   1850         smlatb r4, r2, r3, r2
   1851         smlatt r8, r3, r8, r4
   1852         smlabbge r3, r1, r9, r0
   1853         smlabtle r5, r6, r4, r1
   1854         smlatbne r4, r2, r3, r2
   1855         smlatteq r8, r3, r8, r4
   1856 
   1857 @ CHECK: smlabb	r3, r1, r9, r0          @ encoding: [0x81,0x09,0x03,0xe1]
   1858 @ CHECK: smlabt	r5, r6, r4, r1          @ encoding: [0xc6,0x14,0x05,0xe1]
   1859 @ CHECK: smlatb	r4, r2, r3, r2          @ encoding: [0xa2,0x23,0x04,0xe1]
   1860 @ CHECK: smlatt	r8, r3, r8, r4          @ encoding: [0xe3,0x48,0x08,0xe1]
   1861 @ CHECK: smlabbge	r3, r1, r9, r0  @ encoding: [0x81,0x09,0x03,0xa1]
   1862 @ CHECK: smlabtle	r5, r6, r4, r1  @ encoding: [0xc6,0x14,0x05,0xd1]
   1863 @ CHECK: smlatbne	r4, r2, r3, r2  @ encoding: [0xa2,0x23,0x04,0x11]
   1864 @ CHECK: smlatteq	r8, r3, r8, r4  @ encoding: [0xe3,0x48,0x08,0x01]
   1865 
   1866 @------------------------------------------------------------------------------
   1867 @ SMLAD/SMLADX
   1868 @------------------------------------------------------------------------------
   1869         smlad r2, r3, r5, r8
   1870         smladx r2, r3, r5, r8
   1871         smladeq r2, r3, r5, r8
   1872         smladxhi r2, r3, r5, r8
   1873 
   1874 @ CHECK: smlad	r2, r3, r5, r8          @ encoding: [0x13,0x85,0x02,0xe7]
   1875 @ CHECK: smladx	r2, r3, r5, r8          @ encoding: [0x33,0x85,0x02,0xe7]
   1876 @ CHECK: smladeq	r2, r3, r5, r8  @ encoding: [0x13,0x85,0x02,0x07]
   1877 @ CHECK: smladxhi	r2, r3, r5, r8  @ encoding: [0x33,0x85,0x02,0x87]
   1878 
   1879 
   1880 @------------------------------------------------------------------------------
   1881 @ SMLAL
   1882 @------------------------------------------------------------------------------
   1883         smlal r2, r3, r5, r8
   1884         smlals r2, r3, r5, r8
   1885         smlaleq r2, r3, r5, r8
   1886         smlalshi r2, r3, r5, r8
   1887 
   1888 @ CHECK: smlal	r2, r3, r5, r8          @ encoding: [0x95,0x28,0xe3,0xe0]
   1889 @ CHECK: smlals	r2, r3, r5, r8          @ encoding: [0x95,0x28,0xf3,0xe0]
   1890 @ CHECK: smlaleq	r2, r3, r5, r8  @ encoding: [0x95,0x28,0xe3,0x00]
   1891 @ CHECK: smlalshi	r2, r3, r5, r8  @ encoding: [0x95,0x28,0xf3,0x80]
   1892 
   1893 
   1894 @------------------------------------------------------------------------------
   1895 @ SMLALBB/SMLALBT/SMLALTB/SMLALTT
   1896 @------------------------------------------------------------------------------
   1897         smlalbb r3, r1, r9, r0
   1898         smlalbt r5, r6, r4, r1
   1899         smlaltb r4, r2, r3, r2
   1900         smlaltt r8, r3, r8, r4
   1901         smlalbbge r3, r1, r9, r0
   1902         smlalbtle r5, r6, r4, r1
   1903         smlaltbne r4, r2, r3, r2
   1904         smlaltteq r8, r3, r8, r4
   1905 
   1906 @ CHECK: smlalbb	r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xe1]
   1907 @ CHECK: smlalbt	r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xe1]
   1908 @ CHECK: smlaltb	r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0xe1]
   1909 @ CHECK: smlaltt	r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0xe1]
   1910 @ CHECK: smlalbbge	r3, r1, r9, r0  @ encoding: [0x89,0x30,0x41,0xa1]
   1911 @ CHECK: smlalbtle	r5, r6, r4, r1  @ encoding: [0xc4,0x51,0x46,0xd1]
   1912 @ CHECK: smlaltbne	r4, r2, r3, r2  @ encoding: [0xa3,0x42,0x42,0x11]
   1913 @ CHECK: smlaltteq	r8, r3, r8, r4  @ encoding: [0xe8,0x84,0x43,0x01]
   1914 
   1915 
   1916 @------------------------------------------------------------------------------
   1917 @ SMLALD/SMLALDX
   1918 @------------------------------------------------------------------------------
   1919         smlald r2, r3, r5, r8
   1920         smlaldx r2, r3, r5, r8
   1921         smlaldeq r2, r3, r5, r8
   1922         smlaldxhi r2, r3, r5, r8
   1923 
   1924 @ CHECK: smlald	r2, r3, r5, r8          @ encoding: [0x15,0x28,0x43,0xe7]
   1925 @ CHECK: smlaldx	r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0xe7]
   1926 @ CHECK: smlaldeq	r2, r3, r5, r8  @ encoding: [0x15,0x28,0x43,0x07]
   1927 @ CHECK: smlaldxhi	r2, r3, r5, r8  @ encoding: [0x35,0x28,0x43,0x87]
   1928 
   1929 
   1930 @------------------------------------------------------------------------------
   1931 @ SMLAWB/SMLAWT
   1932 @------------------------------------------------------------------------------
   1933         smlawb r2, r3, r10, r8
   1934         smlawt r8, r3, r5, r9
   1935         smlawbeq r2, r7, r5, r8
   1936         smlawthi r1, r3, r0, r8
   1937 
   1938 @ CHECK: smlawb	r2, r3, r10, r8         @ encoding: [0x83,0x8a,0x22,0xe1]
   1939 @ CHECK: smlawt	r8, r3, r5, r9          @ encoding: [0xc3,0x95,0x28,0xe1]
   1940 @ CHECK: smlawbeq	r2, r7, r5, r8  @ encoding: [0x87,0x85,0x22,0x01]
   1941 @ CHECK: smlawthi	r1, r3, r0, r8  @ encoding: [0xc3,0x80,0x21,0x81]
   1942 
   1943 
   1944 @------------------------------------------------------------------------------
   1945 @ SMLSD/SMLSDX
   1946 @------------------------------------------------------------------------------
   1947         smlsd r2, r3, r5, r8
   1948         smlsdx r2, r3, r5, r8
   1949         smlsdeq r2, r3, r5, r8
   1950         smlsdxhi r2, r3, r5, r8
   1951 
   1952 @ CHECK: smlsd	r2, r3, r5, r8          @ encoding: [0x53,0x85,0x02,0xe7]
   1953 @ CHECK: smlsdx	r2, r3, r5, r8          @ encoding: [0x73,0x85,0x02,0xe7]
   1954 @ CHECK: smlsdeq	r2, r3, r5, r8  @ encoding: [0x53,0x85,0x02,0x07]
   1955 @ CHECK: smlsdxhi	r2, r3, r5, r8  @ encoding: [0x73,0x85,0x02,0x87]
   1956 
   1957 
   1958 @------------------------------------------------------------------------------
   1959 @ SMLSLD/SMLSLDX
   1960 @------------------------------------------------------------------------------
   1961         smlsld r2, r9, r5, r1
   1962         smlsldx r4, r11, r2, r8
   1963         smlsldeq r8, r2, r5, r6
   1964         smlsldxhi r1, r0, r3, r8
   1965 
   1966 @ CHECK: smlsld	r2, r9, r5, r1          @ encoding: [0x55,0x21,0x49,0xe7]
   1967 @ CHECK: smlsldx	r4, r11, r2, r8 @ encoding: [0x72,0x48,0x4b,0xe7]
   1968 @ CHECK: smlsldeq	r8, r2, r5, r6  @ encoding: [0x55,0x86,0x42,0x07]
   1969 @ CHECK: smlsldxhi	r1, r0, r3, r8  @ encoding: [0x73,0x18,0x40,0x87]
   1970 
   1971 
   1972 @------------------------------------------------------------------------------
   1973 @ SMMLA/SMMLAR
   1974 @------------------------------------------------------------------------------
   1975         smmla r1, r2, r3, r4
   1976         smmlar r4, r3, r2, r1
   1977         smmlalo r1, r2, r3, r4
   1978         smmlarcs r4, r3, r2, r1
   1979 
   1980 @ CHECK: smmla	r1, r2, r3, r4          @ encoding: [0x12,0x43,0x51,0xe7]
   1981 @ CHECK: smmlar	r4, r3, r2, r1          @ encoding: [0x33,0x12,0x54,0xe7]
   1982 @ CHECK: smmlalo	r1, r2, r3, r4  @ encoding: [0x12,0x43,0x51,0x37]
   1983 @ CHECK: smmlarhs	r4, r3, r2, r1  @ encoding: [0x33,0x12,0x54,0x27]
   1984 
   1985 
   1986 @------------------------------------------------------------------------------
   1987 @ SMMLS/SMMLSR
   1988 @------------------------------------------------------------------------------
   1989         smmls r1, r2, r3, r4
   1990         smmlsr r4, r3, r2, r1
   1991         smmlslo r1, r2, r3, r4
   1992         smmlsrcs r4, r3, r2, r1
   1993 
   1994 @ CHECK: smmls	r1, r2, r3, r4          @ encoding: [0xd2,0x43,0x51,0xe7]
   1995 @ CHECK: smmlsr	r4, r3, r2, r1          @ encoding: [0xf3,0x12,0x54,0xe7]
   1996 @ CHECK: smmlslo	r1, r2, r3, r4  @ encoding: [0xd2,0x43,0x51,0x37]
   1997 @ CHECK: smmlsrhs	r4, r3, r2, r1  @ encoding: [0xf3,0x12,0x54,0x27]
   1998 
   1999 
   2000 @------------------------------------------------------------------------------
   2001 @ SMMUL/SMMULR
   2002 @------------------------------------------------------------------------------
   2003         smmul r2, r3, r4
   2004         smmulr r3, r2, r1
   2005         smmulcc r2, r3, r4
   2006         smmulrhs r3, r2, r1
   2007 
   2008 @ CHECK: smmul	r2, r3, r4              @ encoding: [0x13,0xf4,0x52,0xe7]
   2009 @ CHECK: smmulr	r3, r2, r1              @ encoding: [0x32,0xf1,0x53,0xe7]
   2010 @ CHECK: smmullo	r2, r3, r4      @ encoding: [0x13,0xf4,0x52,0x37]
   2011 @ CHECK: smmulrhs	r3, r2, r1      @ encoding: [0x32,0xf1,0x53,0x27]
   2012 
   2013 
   2014 @------------------------------------------------------------------------------
   2015 @ SMUAD/SMUADX
   2016 @------------------------------------------------------------------------------
   2017         smuad r2, r3, r4
   2018         smuadx r3, r2, r1
   2019         smuadlt r2, r3, r4
   2020         smuadxge r3, r2, r1
   2021 
   2022 @ CHECK: smuad	r2, r3, r4              @ encoding: [0x13,0xf4,0x02,0xe7]
   2023 @ CHECK: smuadx	r3, r2, r1              @ encoding: [0x32,0xf1,0x03,0xe7]
   2024 @ CHECK: smuadlt	r2, r3, r4      @ encoding: [0x13,0xf4,0x02,0xb7]
   2025 @ CHECK: smuadxge	r3, r2, r1      @ encoding: [0x32,0xf1,0x03,0xa7]
   2026 
   2027 
   2028 @------------------------------------------------------------------------------
   2029 @ SMULBB/SMULBT/SMULTB/SMULTT
   2030 @------------------------------------------------------------------------------
   2031         smulbb r3, r9, r0
   2032         smulbt r5, r4, r1
   2033         smultb r4, r2, r2
   2034         smultt r8, r3, r4
   2035         smulbbge r1, r9, r0
   2036         smulbtle r5, r6, r4
   2037         smultbne r2, r3, r2
   2038         smultteq r8, r3, r4
   2039 
   2040 @ CHECK: smulbb	r3, r9, r0              @ encoding: [0x89,0x00,0x63,0xe1]
   2041 @ CHECK: smulbt	r5, r4, r1              @ encoding: [0xc4,0x01,0x65,0xe1]
   2042 @ CHECK: smultb	r4, r2, r2              @ encoding: [0xa2,0x02,0x64,0xe1]
   2043 @ CHECK: smultt	r8, r3, r4              @ encoding: [0xe3,0x04,0x68,0xe1]
   2044 @ CHECK: smulbbge	r1, r9, r0      @ encoding: [0x89,0x00,0x61,0xa1]
   2045 @ CHECK: smulbtle	r5, r6, r4      @ encoding: [0xc6,0x04,0x65,0xd1]
   2046 @ CHECK: smultbne	r2, r3, r2      @ encoding: [0xa3,0x02,0x62,0x11]
   2047 @ CHECK: smultteq	r8, r3, r4      @ encoding: [0xe3,0x04,0x68,0x01]
   2048 
   2049 
   2050 @------------------------------------------------------------------------------
   2051 @ SMULL
   2052 @------------------------------------------------------------------------------
   2053         smull r3, r9, r0, r1
   2054         smulls r3, r9, r0, r2
   2055         smulleq r8, r3, r4, r5
   2056         smullseq r8, r3, r4, r3
   2057 
   2058 @ CHECK: smull	r3, r9, r0, r1          @ encoding: [0x90,0x31,0xc9,0xe0]
   2059 @ CHECK: smulls	r3, r9, r0, r2          @ encoding: [0x90,0x32,0xd9,0xe0]
   2060 @ CHECK: smulleq	r8, r3, r4, r5  @ encoding: [0x94,0x85,0xc3,0x00]
   2061 @ CHECK: smullseq	r8, r3, r4, r3  @ encoding: [0x94,0x83,0xd3,0x00]
   2062 
   2063 
   2064 @------------------------------------------------------------------------------
   2065 @ SMULWB/SMULWT
   2066 @------------------------------------------------------------------------------
   2067         smulwb r3, r9, r0
   2068         smulwt r3, r9, r2
   2069 
   2070 @ CHECK: smulwb	r3, r9, r0              @ encoding: [0xa9,0x00,0x23,0xe1]
   2071 @ CHECK: smulwt	r3, r9, r2              @ encoding: [0xe9,0x02,0x23,0xe1]
   2072 
   2073 
   2074 @------------------------------------------------------------------------------
   2075 @ SMUSD/SMUSDX
   2076 @------------------------------------------------------------------------------
   2077         smusd r3, r0, r1
   2078         smusdx r3, r9, r2
   2079         smusdeq r8, r3, r2
   2080         smusdxne r7, r4, r3
   2081 
   2082 @ CHECK: smusd	r3, r0, r1              @ encoding: [0x50,0xf1,0x03,0xe7]
   2083 @ CHECK: smusdx	r3, r9, r2              @ encoding: [0x79,0xf2,0x03,0xe7]
   2084 @ CHECK: smusdeq	r8, r3, r2      @ encoding: [0x53,0xf2,0x08,0x07]
   2085 @ CHECK: smusdxne	r7, r4, r3      @ encoding: [0x74,0xf3,0x07,0x17]
   2086 
   2087 
   2088 @------------------------------------------------------------------------------
   2089 @ SRS
   2090 @------------------------------------------------------------------------------
   2091         srsda sp, #5
   2092         srsdb sp, #1
   2093         srsia sp, #0
   2094         srsib sp, #15
   2095 
   2096         srsda sp!, #31
   2097         srsdb sp!, #19
   2098         srsia sp!, #2
   2099         srsib sp!, #14
   2100 
   2101         srsfa sp, #11
   2102         srsea sp, #10
   2103         srsfd sp, #9
   2104         srsed sp, #5
   2105 
   2106         srsfa sp!, #5
   2107         srsea sp!, #5
   2108         srsfd sp!, #5
   2109         srsed sp!, #5
   2110 
   2111         srs sp, #5
   2112         srs sp!, #5
   2113 
   2114 @ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
   2115 @ CHECK: srsdb	sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
   2116 @ CHECK: srsia	sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
   2117 @ CHECK: srsib	sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
   2118 
   2119 @ CHECK: srsda	sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
   2120 @ CHECK: srsdb	sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
   2121 @ CHECK: srsia	sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
   2122 @ CHECK: srsib	sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
   2123 
   2124 @ CHECK: srsib	sp, #11                 @ encoding: [0x0b,0x05,0xcd,0xf9]
   2125 @ CHECK: srsia	sp, #10                 @ encoding: [0x0a,0x05,0xcd,0xf8]
   2126 @ CHECK: srsdb	sp, #9                  @ encoding: [0x09,0x05,0x4d,0xf9]
   2127 @ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
   2128 
   2129 @ CHECK: srsib	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
   2130 @ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
   2131 @ CHECK: srsdb	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
   2132 @ CHECK: srsda	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
   2133 
   2134 @ CHECK: srsia	sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
   2135 @ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
   2136 
   2137 @ Compatibility aliases.
   2138         srsda #5
   2139         srsdb #1
   2140         srsia #0
   2141         srsib #15
   2142 
   2143         srsda #31!
   2144         srsdb #19!
   2145         srsia #2!
   2146         srsib #14!
   2147 
   2148         srsfa #11
   2149         srsea #10
   2150         srsfd #9
   2151         srsed #5
   2152 
   2153         srsfa #5!
   2154         srsea #5!
   2155         srsfd #5!
   2156         srsed #5!
   2157 
   2158         srs #5
   2159         srs #5!
   2160 
   2161 @ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
   2162 @ CHECK: srsdb	sp, #1                  @ encoding: [0x01,0x05,0x4d,0xf9]
   2163 @ CHECK: srsia	sp, #0                  @ encoding: [0x00,0x05,0xcd,0xf8]
   2164 @ CHECK: srsib	sp, #15                 @ encoding: [0x0f,0x05,0xcd,0xf9]
   2165 @ CHECK: srsda	sp!, #31                @ encoding: [0x1f,0x05,0x6d,0xf8]
   2166 @ CHECK: srsdb	sp!, #19                @ encoding: [0x13,0x05,0x6d,0xf9]
   2167 @ CHECK: srsia	sp!, #2                 @ encoding: [0x02,0x05,0xed,0xf8]
   2168 @ CHECK: srsib	sp!, #14                @ encoding: [0x0e,0x05,0xed,0xf9]
   2169 @ CHECK: srsib	sp, #11                 @ encoding: [0x0b,0x05,0xcd,0xf9]
   2170 @ CHECK: srsia	sp, #10                 @ encoding: [0x0a,0x05,0xcd,0xf8]
   2171 @ CHECK: srsdb	sp, #9                  @ encoding: [0x09,0x05,0x4d,0xf9]
   2172 @ CHECK: srsda	sp, #5                  @ encoding: [0x05,0x05,0x4d,0xf8]
   2173 @ CHECK: srsib	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf9]
   2174 @ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
   2175 @ CHECK: srsdb	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf9]
   2176 @ CHECK: srsda	sp!, #5                 @ encoding: [0x05,0x05,0x6d,0xf8]
   2177 @ CHECK: srsia	sp, #5                  @ encoding: [0x05,0x05,0xcd,0xf8]
   2178 @ CHECK: srsia	sp!, #5                 @ encoding: [0x05,0x05,0xed,0xf8]
   2179 
   2180 
   2181 @------------------------------------------------------------------------------
   2182 @ SSAT
   2183 @------------------------------------------------------------------------------
   2184         ssat	r8, #1, r10
   2185         ssat	r8, #1, r10, lsl #0
   2186         ssat	r8, #1, r10, lsl #31
   2187         ssat	r8, #1, r10, asr #32
   2188         ssat	r8, #1, r10, asr #1
   2189 
   2190 @ CHECK: ssat	r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
   2191 @ CHECK: ssat	r8, #1, r10             @ encoding: [0x1a,0x80,0xa0,0xe6]
   2192 @ CHECK: ssat	r8, #1, r10, lsl #31    @ encoding: [0x9a,0x8f,0xa0,0xe6]
   2193 @ CHECK: ssat	r8, #1, r10, asr #32    @ encoding: [0x5a,0x80,0xa0,0xe6]
   2194 @ CHECK: ssat	r8, #1, r10, asr #1     @ encoding: [0xda,0x80,0xa0,0xe6]
   2195 
   2196 
   2197 @------------------------------------------------------------------------------
   2198 @ SSAT16
   2199 @------------------------------------------------------------------------------
   2200         ssat16	r2, #1, r7
   2201         ssat16	r3, #16, r5
   2202 
   2203 @ CHECK: ssat16	r2, #1, r7              @ encoding: [0x37,0x2f,0xa0,0xe6]
   2204 @ CHECK: ssat16	r3, #16, r5             @ encoding: [0x35,0x3f,0xaf,0xe6]
   2205 
   2206 
   2207 @------------------------------------------------------------------------------
   2208 @ SSAX
   2209 @------------------------------------------------------------------------------
   2210         ssax r2, r3, r4
   2211         ssaxlt r2, r3, r4
   2212 
   2213 @ CHECK: ssax	r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xe6]
   2214 @ CHECK: ssaxlt	r2, r3, r4              @ encoding: [0x54,0x2f,0x13,0xb6]
   2215 
   2216 @------------------------------------------------------------------------------
   2217 @ SSUB16/SSUB8
   2218 @------------------------------------------------------------------------------
   2219         ssub16 r1, r0, r6
   2220         ssub16ne r5, r3, r2
   2221         ssub8 r9, r2, r4
   2222         ssub8eq r5, r1, r2
   2223 
   2224 @ CHECK: ssub16	r1, r0, r6              @ encoding: [0x76,0x1f,0x10,0xe6]
   2225 @ CHECK: ssub16ne	r5, r3, r2      @ encoding: [0x72,0x5f,0x13,0x16]
   2226 @ CHECK: ssub8	r9, r2, r4              @ encoding: [0xf4,0x9f,0x12,0xe6]
   2227 @ CHECK: ssub8eq	r5, r1, r2      @ encoding: [0xf2,0x5f,0x11,0x06]
   2228 
   2229 @------------------------------------------------------------------------------
   2230 @ STC{L}/STC2{L}
   2231 @------------------------------------------------------------------------------
   2232         stc2 p0, c8, [r1, #4]
   2233         stc2 p1, c7, [r2]
   2234         stc2 p2, c6, [r3, #-224]
   2235         stc2 p3, c5, [r4, #-120]!
   2236         stc2 p4, c4, [r5], #16
   2237         stc2 p5, c3, [r6], #-72
   2238         stc2l p6, c2, [r7, #4]
   2239         stc2l p7, c1, [r8]
   2240         stc2l p8, c0, [r9, #-224]
   2241         stc2l p9, c1, [r10, #-120]!
   2242         stc2l p10, c2, [r11], #16
   2243         stc2l p11, c3, [r12], #-72
   2244 
   2245         stc p12, c4, [r0, #4]
   2246         stc p13, c5, [r1]
   2247         stc p14, c6, [r2, #-224]
   2248         stc p15, c7, [r3, #-120]!
   2249         stc p5, c8, [r4], #16
   2250         stc p4, c9, [r5], #-72
   2251         stcl p3, c10, [r6, #4]
   2252         stcl p2, c11, [r7]
   2253         stcl p1, c12, [r8, #-224]
   2254         stcl p0, c13, [r9, #-120]!
   2255         stcl p6, c14, [r10], #16
   2256         stcl p7, c15, [r11], #-72
   2257 
   2258         stclo p12, c4, [r0, #4]
   2259         stchi p13, c5, [r1]
   2260         stccs p14, c6, [r2, #-224]
   2261         stccc p15, c7, [r3, #-120]!
   2262         stceq p5, c8, [r4], #16
   2263         stcgt p4, c9, [r5], #-72
   2264         stcllt p3, c10, [r6, #4]
   2265         stclge p2, c11, [r7]
   2266         stclle p1, c12, [r8, #-224]
   2267         stclne p0, c13, [r9, #-120]!
   2268         stcleq p6, c14, [r10], #16
   2269         stclhi p7, c15, [r11], #-72
   2270 
   2271         stc2 p2, c8, [r1], { 25 }
   2272 
   2273 @ CHECK: stc2	p0, c8, [r1, #4]        @ encoding: [0x01,0x80,0x81,0xfd]
   2274 @ CHECK: stc2	p1, c7, [r2]            @ encoding: [0x00,0x71,0x82,0xfd]
   2275 @ CHECK: stc2	p2, c6, [r3, #-224]     @ encoding: [0x38,0x62,0x03,0xfd]
   2276 @ CHECK: stc2	p3, c5, [r4, #-120]!    @ encoding: [0x1e,0x53,0x24,0xfd]
   2277 @ CHECK: stc2	p4, c4, [r5], #16       @ encoding: [0x04,0x44,0xa5,0xfc]
   2278 @ CHECK: stc2	p5, c3, [r6], #-72      @ encoding: [0x12,0x35,0x26,0xfc]
   2279 @ CHECK: stc2l	p6, c2, [r7, #4]        @ encoding: [0x01,0x26,0xc7,0xfd]
   2280 @ CHECK: stc2l	p7, c1, [r8]            @ encoding: [0x00,0x17,0xc8,0xfd]
   2281 @ CHECK: stc2l	p8, c0, [r9, #-224]     @ encoding: [0x38,0x08,0x49,0xfd]
   2282 @ CHECK: stc2l	p9, c1, [r10, #-120]!   @ encoding: [0x1e,0x19,0x6a,0xfd]
   2283 @ CHECK: stc2l	p10, c2, [r11], #16     @ encoding: [0x04,0x2a,0xeb,0xfc]
   2284 @ CHECK: stc2l	p11, c3, [r12], #-72    @ encoding: [0x12,0x3b,0x6c,0xfc]
   2285 
   2286 @ CHECK: stc	p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0xed]
   2287 @ CHECK: stc	p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0xed]
   2288 @ CHECK: stc	p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0xed]
   2289 @ CHECK: stc	p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0xed]
   2290 @ CHECK: stc	p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0xec]
   2291 @ CHECK: stc	p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xec]
   2292 @ CHECK: stcl	p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xed]
   2293 @ CHECK: stcl	p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xed]
   2294 @ CHECK: stcl	p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xed]
   2295 @ CHECK: stcl	p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0xed]
   2296 @ CHECK: stcl	p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0xec]
   2297 @ CHECK: stcl	p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0xec]
   2298 
   2299 @ CHECK: stclo	p12, c4, [r0, #4]       @ encoding: [0x01,0x4c,0x80,0x3d]
   2300 @ CHECK: stchi	p13, c5, [r1]           @ encoding: [0x00,0x5d,0x81,0x8d]
   2301 @ CHECK: stchs	p14, c6, [r2, #-224]    @ encoding: [0x38,0x6e,0x02,0x2d]
   2302 @ CHECK: stclo	p15, c7, [r3, #-120]!   @ encoding: [0x1e,0x7f,0x23,0x3d]
   2303 @ CHECK: stceq	p5, c8, [r4], #16       @ encoding: [0x04,0x85,0xa4,0x0c]
   2304 @ CHECK: stcgt	p4, c9, [r5], #-72      @ encoding: [0x12,0x94,0x25,0xcc]
   2305 @ CHECK: stcllt	p3, c10, [r6, #4]       @ encoding: [0x01,0xa3,0xc6,0xbd]
   2306 @ CHECK: stclge	p2, c11, [r7]           @ encoding: [0x00,0xb2,0xc7,0xad]
   2307 @ CHECK: stclle	p1, c12, [r8, #-224]    @ encoding: [0x38,0xc1,0x48,0xdd]
   2308 @ CHECK: stclne	p0, c13, [r9, #-120]!   @ encoding: [0x1e,0xd0,0x69,0x1d]
   2309 @ CHECK: stcleq	p6, c14, [r10], #16     @ encoding: [0x04,0xe6,0xea,0x0c]
   2310 @ CHECK: stclhi	p7, c15, [r11], #-72    @ encoding: [0x12,0xf7,0x6b,0x8c]
   2311 
   2312 @ CHECK: stc2	p2, c8, [r1], {25}      @ encoding: [0x19,0x82,0x81,0xfc]
   2313 
   2314 
   2315 @------------------------------------------------------------------------------
   2316 @ STM*
   2317 @------------------------------------------------------------------------------
   2318         stm       r2, {r1,r3-r6,sp}
   2319         stmia     r3, {r1,r3-r6,lr}
   2320         stmib     r4, {r1,r3-r6,sp}
   2321         stmda     r5, {r1,r3-r6,sp}
   2322         stmdb     r6, {r1,r3-r6,r8}
   2323         stmfd     sp, {r1,r3-r6,sp}
   2324 
   2325         @ with update
   2326         stm       r8!, {r1,r3-r6,sp}
   2327         stmib     r9!, {r1,r3-r6,sp}
   2328         stmda     sp!, {r1,r3-r6}
   2329         stmdb     r0!, {r1,r5,r7,sp}
   2330 
   2331 @ CHECK: stm	r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
   2332 @ CHECK: stm	r3, {r1, r3, r4, r5, r6, lr} @ encoding: [0x7a,0x40,0x83,0xe8]
   2333 @ CHECK: stmib	r4, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x84,0xe9]
   2334 @ CHECK: stmda	r5, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x05,0xe8]
   2335 @ CHECK: stmdb	r6, {r1, r3, r4, r5, r6, r8} @ encoding: [0x7a,0x01,0x06,0xe9]
   2336 @ CHECK: stmdb	sp, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x0d,0xe9]
   2337 
   2338 @ CHECK: stm	r8!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa8,0xe8]
   2339 @ CHECK: stmib	r9!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa9,0xe9]
   2340 @ CHECK: stmda	sp!, {r1, r3, r4, r5, r6}     @ encoding: [0x7a,0x00,0x2d,0xe8]
   2341 @ CHECK: stmdb	r0!, {r1, r5, r7, sp}         @ encoding: [0xa2,0x20,0x20,0xe9]
   2342 
   2343 
   2344 @------------------------------------------------------------------------------
   2345 @ STREX/STREXB/STREXH/STREXD
   2346 @------------------------------------------------------------------------------
   2347         strexb  r1, r3, [r4]
   2348         strexh  r4, r2, [r5]
   2349         strex  r2, r1, [r7]
   2350         strexd  r6, r2, r3, [r8]
   2351 
   2352 @ CHECK: strexb	r1, r3, [r4]            @ encoding: [0x93,0x1f,0xc4,0xe1]
   2353 @ CHECK: strexh	r4, r2, [r5]            @ encoding: [0x92,0x4f,0xe5,0xe1]
   2354 @ CHECK: strex	r2, r1, [r7]            @ encoding: [0x91,0x2f,0x87,0xe1]
   2355 @ CHECK: strexd	r6, r2, r3, [r8]        @ encoding: [0x92,0x6f,0xa8,0xe1]
   2356 
   2357 @------------------------------------------------------------------------------
   2358 @ STR
   2359 @------------------------------------------------------------------------------
   2360         strpl	r3, [r10, #-0]!
   2361         strpl	r3, [r10, #0]!
   2362 
   2363 @ CHECK: strpl	r3, [r10, #-0]!         @ encoding: [0x00,0x30,0x2a,0x55]
   2364 @ CHECK: strpl	r3, [r10, #0]!          @ encoding: [0x00,0x30,0xaa,0x55]
   2365 
   2366 @------------------------------------------------------------------------------
   2367 @ SUB
   2368 @------------------------------------------------------------------------------
   2369         sub r4, r5, #0xf000
   2370         sub r4, r5, r6
   2371         sub r4, r5, r6, lsl #5
   2372         sub r4, r5, r6, lsr #5
   2373         sub r4, r5, r6, lsr #5
   2374         sub r4, r5, r6, asr #5
   2375         sub r4, r5, r6, ror #5
   2376         sub r6, r7, r8, lsl r9
   2377         sub r6, r7, r8, lsr r9
   2378         sub r6, r7, r8, asr r9
   2379         sub r6, r7, r8, ror r9
   2380 
   2381         @ destination register is optional
   2382         sub r5, #0xf000
   2383         sub r4, r5
   2384         sub r4, r5, lsl #5
   2385         sub r4, r5, lsr #5
   2386         sub r4, r5, lsr #5
   2387         sub r4, r5, asr #5
   2388         sub r4, r5, ror #5
   2389         sub r6, r7, lsl r9
   2390         sub r6, r7, lsr r9
   2391         sub r6, r7, asr r9
   2392         sub r6, r7, ror r9
   2393 
   2394 @ CHECK: sub	r4, r5, #61440          @ encoding: [0x0f,0x4a,0x45,0xe2]
   2395 @ CHECK: sub	r4, r5, r6              @ encoding: [0x06,0x40,0x45,0xe0]
   2396 @ CHECK: sub	r4, r5, r6, lsl #5      @ encoding: [0x86,0x42,0x45,0xe0]
   2397 @ CHECK: sub	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
   2398 @ CHECK: sub	r4, r5, r6, lsr #5      @ encoding: [0xa6,0x42,0x45,0xe0]
   2399 @ CHECK: sub	r4, r5, r6, asr #5      @ encoding: [0xc6,0x42,0x45,0xe0]
   2400 @ CHECK: sub	r4, r5, r6, ror #5      @ encoding: [0xe6,0x42,0x45,0xe0]
   2401 @ CHECK: sub	r6, r7, r8, lsl r9      @ encoding: [0x18,0x69,0x47,0xe0]
   2402 @ CHECK: sub	r6, r7, r8, lsr r9      @ encoding: [0x38,0x69,0x47,0xe0]
   2403 @ CHECK: sub	r6, r7, r8, asr r9      @ encoding: [0x58,0x69,0x47,0xe0]
   2404 @ CHECK: sub	r6, r7, r8, ror r9      @ encoding: [0x78,0x69,0x47,0xe0]
   2405 
   2406 
   2407 @ CHECK: sub	r5, r5, #61440          @ encoding: [0x0f,0x5a,0x45,0xe2]
   2408 @ CHECK: sub	r4, r4, r5              @ encoding: [0x05,0x40,0x44,0xe0]
   2409 @ CHECK: sub	r4, r4, r5, lsl #5      @ encoding: [0x85,0x42,0x44,0xe0]
   2410 @ CHECK: sub	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
   2411 @ CHECK: sub	r4, r4, r5, lsr #5      @ encoding: [0xa5,0x42,0x44,0xe0]
   2412 @ CHECK: sub	r4, r4, r5, asr #5      @ encoding: [0xc5,0x42,0x44,0xe0]
   2413 @ CHECK: sub	r4, r4, r5, ror #5      @ encoding: [0xe5,0x42,0x44,0xe0]
   2414 @ CHECK: sub	r6, r6, r7, lsl r9      @ encoding: [0x17,0x69,0x46,0xe0]
   2415 @ CHECK: sub	r6, r6, r7, lsr r9      @ encoding: [0x37,0x69,0x46,0xe0]
   2416 @ CHECK: sub	r6, r6, r7, asr r9      @ encoding: [0x57,0x69,0x46,0xe0]
   2417 @ CHECK: sub	r6, r6, r7, ror r9      @ encoding: [0x77,0x69,0x46,0xe0]
   2418 
   2419     @ Test right shift by 32, which is encoded as 0
   2420     sub r3, r1, r2, lsr #32
   2421     sub r3, r1, r2, asr #32
   2422 @ CHECK: sub	r3, r1, r2, lsr #32     @ encoding: [0x22,0x30,0x41,0xe0]
   2423 @ CHECK: sub	r3, r1, r2, asr #32     @ encoding: [0x42,0x30,0x41,0xe0]
   2424 
   2425 @------------------------------------------------------------------------------
   2426 @ SVC
   2427 @------------------------------------------------------------------------------
   2428         svc #16
   2429         svc #0
   2430         svc #0xffffff
   2431 
   2432 @ CHECK: svc	#16                     @ encoding: [0x10,0x00,0x00,0xef]
   2433 @ CHECK: svc	#0                      @ encoding: [0x00,0x00,0x00,0xef]
   2434 @ CHECK: svc	#16777215               @ encoding: [0xff,0xff,0xff,0xef]
   2435 
   2436 
   2437 @------------------------------------------------------------------------------
   2438 @ SWP/SWPB
   2439 @------------------------------------------------------------------------------
   2440         swp r1, r2, [r3]
   2441         swp r4, r4, [r6]
   2442         swpb r5, r1, [r9]
   2443 
   2444 @ CHECK: swp	r1, r2, [r3]            @ encoding: [0x92,0x10,0x03,0xe1]
   2445 @ CHECK: swp	r4, r4, [r6]            @ encoding: [0x94,0x40,0x06,0xe1]
   2446 @ CHECK: swpb	r5, r1, [r9]            @ encoding: [0x91,0x50,0x49,0xe1]
   2447 
   2448 
   2449 @------------------------------------------------------------------------------
   2450 @ SXTAB
   2451 @------------------------------------------------------------------------------
   2452         sxtab r2, r3, r4
   2453         sxtab r4, r5, r6, ror #0
   2454         sxtablt r6, r2, r9, ror #8
   2455         sxtab r5, r1, r4, ror #16
   2456         sxtab r7, r8, r3, ror #24
   2457 
   2458 @ CHECK: sxtab	r2, r3, r4              @ encoding: [0x74,0x20,0xa3,0xe6]
   2459 @ CHECK: sxtab	r4, r5, r6              @ encoding: [0x76,0x40,0xa5,0xe6]
   2460 @ CHECK: sxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xa2,0xb6]
   2461 @ CHECK: sxtab	r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xa1,0xe6]
   2462 @ CHECK: sxtab	r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xa8,0xe6]
   2463 
   2464 
   2465 @------------------------------------------------------------------------------
   2466 @ SXTAB16
   2467 @------------------------------------------------------------------------------
   2468         sxtab16ge r0, r1, r4
   2469         sxtab16 r6, r2, r7, ror #0
   2470         sxtab16 r3, r5, r8, ror #8
   2471         sxtab16 r3, r2, r1, ror #16
   2472         sxtab16eq r1, r2, r3, ror #24
   2473 
   2474 @ CHECK: sxtab16ge	r0, r1, r4      @ encoding: [0x74,0x00,0x81,0xa6]
   2475 @ CHECK: sxtab16	r6, r2, r7      @ encoding: [0x77,0x60,0x82,0xe6]
   2476 @ CHECK: sxtab16 r3, r5, r8, ror #8     @ encoding: [0x78,0x34,0x85,0xe6]
   2477 @ CHECK: sxtab16 r3, r2, r1, ror #16    @ encoding: [0x71,0x38,0x82,0xe6]
   2478 @ CHECK: sxtab16eq r1, r2, r3, ror #24  @ encoding: [0x73,0x1c,0x82,0x06]
   2479 
   2480 @------------------------------------------------------------------------------
   2481 @ SXTAH
   2482 @------------------------------------------------------------------------------
   2483         sxtah r1, r3, r9
   2484         sxtahhi r6, r1, r6, ror #0
   2485         sxtah r3, r8, r3, ror #8
   2486         sxtahlo r2, r2, r4, ror #16
   2487         sxtah r9, r3, r3, ror #24
   2488 
   2489 @ CHECK: sxtah	r1, r3, r9              @ encoding: [0x79,0x10,0xb3,0xe6]
   2490 @ CHECK: sxtahhi	r6, r1, r6      @ encoding: [0x76,0x60,0xb1,0x86]
   2491 @ CHECK: sxtah	r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xb8,0xe6]
   2492 @ CHECK: sxtahlo r2, r2, r4, ror #16    @ encoding: [0x74,0x28,0xb2,0x36]
   2493 @ CHECK: sxtah	r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xb3,0xe6]
   2494 
   2495 @------------------------------------------------------------------------------
   2496 @ SXTB
   2497 @------------------------------------------------------------------------------
   2498         sxtbge r2, r4
   2499         sxtb r5, r6, ror #0
   2500         sxtb r6, r9, ror #8
   2501         sxtbcc r5, r1, ror #16
   2502         sxtb r8, r3, ror #24
   2503 
   2504 @ CHECK: sxtbge	r2, r4                  @ encoding: [0x74,0x20,0xaf,0xa6]
   2505 @ CHECK: sxtb	r5, r6                  @ encoding: [0x76,0x50,0xaf,0xe6]
   2506 @ CHECK: sxtb	r6, r9, ror #8          @ encoding: [0x79,0x64,0xaf,0xe6]
   2507 @ CHECK: sxtblo	r5, r1, ror #16         @ encoding: [0x71,0x58,0xaf,0x36]
   2508 @ CHECK: sxtb	r8, r3, ror #24         @ encoding: [0x73,0x8c,0xaf,0xe6]
   2509 
   2510 
   2511 @------------------------------------------------------------------------------
   2512 @ SXTB16
   2513 @------------------------------------------------------------------------------
   2514         sxtb16 r1, r4
   2515         sxtb16 r6, r7, ror #0
   2516         sxtb16cs r3, r5, ror #8
   2517         sxtb16 r3, r1, ror #16
   2518         sxtb16ge r2, r3, ror #24
   2519 
   2520 @ CHECK: sxtb16	r1, r4                  @ encoding: [0x74,0x10,0x8f,0xe6]
   2521 @ CHECK: sxtb16	r6, r7                  @ encoding: [0x77,0x60,0x8f,0xe6]
   2522 @ CHECK: sxtb16hs	r3, r5, ror #8  @ encoding: [0x75,0x34,0x8f,0x26]
   2523 @ CHECK: sxtb16	r3, r1, ror #16         @ encoding: [0x71,0x38,0x8f,0xe6]
   2524 @ CHECK: sxtb16ge	r2, r3, ror #24 @ encoding: [0x73,0x2c,0x8f,0xa6]
   2525 
   2526 
   2527 @------------------------------------------------------------------------------
   2528 @ SXTH
   2529 @------------------------------------------------------------------------------
   2530         sxthne r3, r9
   2531         sxth r1, r6, ror #0
   2532         sxth r3, r8, ror #8
   2533         sxthle r2, r2, ror #16
   2534         sxth r9, r3, ror #24
   2535 
   2536 @ CHECK: sxthne	r3, r9                  @ encoding: [0x79,0x30,0xbf,0x16]
   2537 @ CHECK: sxth	r1, r6                  @ encoding: [0x76,0x10,0xbf,0xe6]
   2538 @ CHECK: sxth	r3, r8, ror #8          @ encoding: [0x78,0x34,0xbf,0xe6]
   2539 @ CHECK: sxthle	r2, r2, ror #16         @ encoding: [0x72,0x28,0xbf,0xd6]
   2540 @ CHECK: sxth	r9, r3, ror #24         @ encoding: [0x73,0x9c,0xbf,0xe6]
   2541 
   2542 
   2543 @------------------------------------------------------------------------------
   2544 @ TEQ
   2545 @------------------------------------------------------------------------------
   2546         teq r5, #0xf000
   2547         teq r4, r5
   2548         teq r4, r5, lsl #5
   2549         teq r4, r5, lsr #5
   2550         teq r4, r5, lsr #5
   2551         teq r4, r5, asr #5
   2552         teq r4, r5, ror #5
   2553         teq r6, r7, lsl r9
   2554         teq r6, r7, lsr r9
   2555         teq r6, r7, asr r9
   2556         teq r6, r7, ror r9
   2557 
   2558 @ CHECK: teq	r5, #61440              @ encoding: [0x0f,0x0a,0x35,0xe3]
   2559 @ CHECK: teq	r4, r5                  @ encoding: [0x05,0x00,0x34,0xe1]
   2560 @ CHECK: teq	r4, r5, lsl #5          @ encoding: [0x85,0x02,0x34,0xe1]
   2561 @ CHECK: teq	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
   2562 @ CHECK: teq	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x34,0xe1]
   2563 @ CHECK: teq	r4, r5, asr #5          @ encoding: [0xc5,0x02,0x34,0xe1]
   2564 @ CHECK: teq	r4, r5, ror #5          @ encoding: [0xe5,0x02,0x34,0xe1]
   2565 @ CHECK: teq	r6, r7, lsl r9          @ encoding: [0x17,0x09,0x36,0xe1]
   2566 @ CHECK: teq	r6, r7, lsr r9          @ encoding: [0x37,0x09,0x36,0xe1]
   2567 @ CHECK: teq	r6, r7, asr r9          @ encoding: [0x57,0x09,0x36,0xe1]
   2568 @ CHECK: teq	r6, r7, ror r9          @ encoding: [0x77,0x09,0x36,0xe1]
   2569 
   2570 
   2571 @------------------------------------------------------------------------------
   2572 @ TST
   2573 @------------------------------------------------------------------------------
   2574         tst r5, #0xf000
   2575         tst r4, r5
   2576         tst r4, r5, lsl #5
   2577         tst r4, r5, lsr #5
   2578         tst r4, r5, lsr #5
   2579         tst r4, r5, asr #5
   2580         tst r4, r5, ror #5
   2581         tst r6, r7, lsl r9
   2582         tst r6, r7, lsr r9
   2583         tst r6, r7, asr r9
   2584         tst r6, r7, ror r9
   2585 
   2586 @ CHECK: tst	r5, #61440              @ encoding: [0x0f,0x0a,0x15,0xe3]
   2587 @ CHECK: tst	r4, r5                  @ encoding: [0x05,0x00,0x14,0xe1]
   2588 @ CHECK: tst	r4, r5, lsl #5          @ encoding: [0x85,0x02,0x14,0xe1]
   2589 @ CHECK: tst	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
   2590 @ CHECK: tst	r4, r5, lsr #5          @ encoding: [0xa5,0x02,0x14,0xe1]
   2591 @ CHECK: tst	r4, r5, asr #5          @ encoding: [0xc5,0x02,0x14,0xe1]
   2592 @ CHECK: tst	r4, r5, ror #5          @ encoding: [0xe5,0x02,0x14,0xe1]
   2593 @ CHECK: tst	r6, r7, lsl r9          @ encoding: [0x17,0x09,0x16,0xe1]
   2594 @ CHECK: tst	r6, r7, lsr r9          @ encoding: [0x37,0x09,0x16,0xe1]
   2595 @ CHECK: tst	r6, r7, asr r9          @ encoding: [0x57,0x09,0x16,0xe1]
   2596 @ CHECK: tst	r6, r7, ror r9          @ encoding: [0x77,0x09,0x16,0xe1]
   2597 
   2598 
   2599 @------------------------------------------------------------------------------
   2600 @ UADD16/UADD8
   2601 @------------------------------------------------------------------------------
   2602         uadd16 r1, r2, r3
   2603         uadd16gt r1, r2, r3
   2604         uadd8 r1, r2, r3
   2605         uadd8le r1, r2, r3
   2606 
   2607 @ CHECK: uadd16	r1, r2, r3              @ encoding: [0x13,0x1f,0x52,0xe6]
   2608 @ CHECK: uadd16gt	r1, r2, r3      @ encoding: [0x13,0x1f,0x52,0xc6]
   2609 @ CHECK: uadd8	r1, r2, r3              @ encoding: [0x93,0x1f,0x52,0xe6]
   2610 @ CHECK: uadd8le r1, r2, r3             @ encoding: [0x93,0x1f,0x52,0xd6]
   2611 
   2612 
   2613 @------------------------------------------------------------------------------
   2614 @ UASX
   2615 @------------------------------------------------------------------------------
   2616         uasx r9, r12, r0
   2617         uasxeq r9, r12, r0
   2618 
   2619 @ CHECK: uasx	r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0xe6]
   2620 @ CHECK: uasxeq	r9, r12, r0             @ encoding: [0x30,0x9f,0x5c,0x06]
   2621 
   2622 
   2623 @------------------------------------------------------------------------------
   2624 @ UBFX
   2625 @------------------------------------------------------------------------------
   2626         ubfx r4, r5, #16, #1
   2627         ubfxgt r4, r5, #16, #16
   2628 
   2629 @ CHECK: ubfx	r4, r5, #16, #1         @ encoding: [0x55,0x48,0xe0,0xe7]
   2630 @ CHECK: ubfxgt	r4, r5, #16, #16        @ encoding: [0x55,0x48,0xef,0xc7]
   2631 
   2632 
   2633 @------------------------------------------------------------------------------
   2634 @ UHADD16/UHADD8
   2635 @------------------------------------------------------------------------------
   2636         uhadd16 r4, r8, r2
   2637         uhadd16gt r4, r8, r2
   2638         uhadd8 r4, r8, r2
   2639         uhadd8gt r4, r8, r2
   2640 
   2641 @ CHECK: uhadd16	r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xe6]
   2642 @ CHECK: uhadd16gt	r4, r8, r2      @ encoding: [0x12,0x4f,0x78,0xc6]
   2643 @ CHECK: uhadd8	r4, r8, r2              @ encoding: [0x92,0x4f,0x78,0xe6]
   2644 @ CHECK: uhadd8gt	r4, r8, r2      @ encoding: [0x92,0x4f,0x78,0xc6]
   2645 
   2646 
   2647 @------------------------------------------------------------------------------
   2648 @ UHASX
   2649 @------------------------------------------------------------------------------
   2650         uhasx r4, r8, r2
   2651         uhasxgt r4, r8, r2
   2652 
   2653 @ CHECK: uhasx	r4, r8, r2              @ encoding: [0x32,0x4f,0x78,0xe6]
   2654 @ CHECK: uhasxgt r4, r8, r2             @ encoding: [0x32,0x4f,0x78,0xc6]
   2655 
   2656 
   2657 @------------------------------------------------------------------------------
   2658 @ UHSUB16/UHSUB8
   2659 @------------------------------------------------------------------------------
   2660         uhsub16 r4, r8, r2
   2661         uhsub16gt r4, r8, r2
   2662         uhsub8 r4, r8, r2
   2663         uhsub8gt r4, r8, r2
   2664 
   2665 @ CHECK: uhsub16	r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xe6]
   2666 @ CHECK: uhsub16gt	r4, r8, r2      @ encoding: [0x72,0x4f,0x78,0xc6]
   2667 @ CHECK: uhsub8	r4, r8, r2              @ encoding: [0xf2,0x4f,0x78,0xe6]
   2668 @ CHECK: uhsub8gt	r4, r8, r2      @ encoding: [0xf2,0x4f,0x78,0xc6]
   2669 
   2670 
   2671 @------------------------------------------------------------------------------
   2672 @ UMAAL
   2673 @------------------------------------------------------------------------------
   2674         umaal r3, r4, r5, r6
   2675         umaallt r3, r4, r5, r6
   2676 
   2677 @ CHECK: umaal	r3, r4, r5, r6          @ encoding: [0x95,0x36,0x44,0xe0]
   2678 @ CHECK: umaallt	r3, r4, r5, r6  @ encoding: [0x95,0x36,0x44,0xb0]
   2679 
   2680 
   2681 @------------------------------------------------------------------------------
   2682 @ UMLAL
   2683 @------------------------------------------------------------------------------
   2684         umlal r2, r4, r6, r8
   2685         umlalgt r6, r1, r2, r6
   2686         umlals r2, r9, r2, r3
   2687         umlalseq r3, r5, r1, r2
   2688 
   2689 @ CHECK: umlal	r2, r4, r6, r8          @ encoding: [0x96,0x28,0xa4,0xe0]
   2690 @ CHECK: umlalgt	r6, r1, r2, r6  @ encoding: [0x92,0x66,0xa1,0xc0]
   2691 @ CHECK: umlals	r2, r9, r2, r3          @ encoding: [0x92,0x23,0xb9,0xe0]
   2692 @ CHECK: umlalseq	r3, r5, r1, r2  @ encoding: [0x91,0x32,0xb5,0x00]
   2693 
   2694 
   2695 @------------------------------------------------------------------------------
   2696 @ UMULL
   2697 @------------------------------------------------------------------------------
   2698         umull r2, r4, r6, r8
   2699         umullgt r6, r1, r2, r6
   2700         umulls r2, r9, r2, r3
   2701         umullseq r3, r5, r1, r2
   2702 
   2703 @ CHECK: umull	r2, r4, r6, r8          @ encoding: [0x96,0x28,0x84,0xe0]
   2704 @ CHECK: umullgt	r6, r1, r2, r6  @ encoding: [0x92,0x66,0x81,0xc0]
   2705 @ CHECK: umulls	r2, r9, r2, r3          @ encoding: [0x92,0x23,0x99,0xe0]
   2706 @ CHECK: umullseq	r3, r5, r1, r2  @ encoding: [0x91,0x32,0x95,0x00]
   2707 
   2708 
   2709 @------------------------------------------------------------------------------
   2710 @ UQADD16/UQADD8
   2711 @------------------------------------------------------------------------------
   2712         uqadd16 r1, r2, r3
   2713         uqadd16gt r4, r7, r9
   2714         uqadd8 r3, r4, r8
   2715         uqadd8le r8, r1, r2
   2716 
   2717 
   2718 @ CHECK: uqadd16	r1, r2, r3      @ encoding: [0x13,0x1f,0x62,0xe6]
   2719 @ CHECK: uqadd16gt	r4, r7, r9      @ encoding: [0x19,0x4f,0x67,0xc6]
   2720 @ CHECK: uqadd8	r3, r4, r8              @ encoding: [0x98,0x3f,0x64,0xe6]
   2721 @ CHECK: uqadd8le	r8, r1, r2      @ encoding: [0x92,0x8f,0x61,0xd6]
   2722 
   2723 
   2724 @------------------------------------------------------------------------------
   2725 @ UQASX
   2726 @------------------------------------------------------------------------------
   2727         uqasx r2, r4, r1
   2728         uqasxhi r5, r2, r9
   2729 
   2730 @ CHECK: uqasx	r2, r4, r1              @ encoding: [0x31,0x2f,0x64,0xe6]
   2731 @ CHECK: uqasxhi	r5, r2, r9      @ encoding: [0x39,0x5f,0x62,0x86]
   2732 
   2733 
   2734 @------------------------------------------------------------------------------
   2735 @ UQSAX
   2736 @------------------------------------------------------------------------------
   2737         uqsax r1, r3, r7
   2738         uqsaxal r3, r6, r2
   2739 
   2740 @ CHECK: uqsax	r1, r3, r7              @ encoding: [0x57,0x1f,0x63,0xe6]
   2741 @ CHECK: uqsax	r3, r6, r2              @ encoding: [0x52,0x3f,0x66,0xe6]
   2742 
   2743 
   2744 @------------------------------------------------------------------------------
   2745 @ UQSUB16/UQSUB8
   2746 @------------------------------------------------------------------------------
   2747         uqsub16 r1, r5, r3
   2748         uqsub16gt r3, r2, r5
   2749         uqsub8 r2, r1, r4
   2750         uqsub8le r4, r6, r9
   2751 
   2752 @ CHECK: uqsub16	r1, r5, r3      @ encoding: [0x73,0x1f,0x65,0xe6]
   2753 @ CHECK: uqsub16gt	r3, r2, r5      @ encoding: [0x75,0x3f,0x62,0xc6]
   2754 @ CHECK: uqsub8	r2, r1, r4              @ encoding: [0xf4,0x2f,0x61,0xe6]
   2755 @ CHECK: uqsub8le	r4, r6, r9      @ encoding: [0xf9,0x4f,0x66,0xd6]
   2756 
   2757 
   2758 @------------------------------------------------------------------------------
   2759 @ USADA8/USAD8
   2760 @------------------------------------------------------------------------------
   2761         usad8 r2, r1, r4
   2762         usad8le r4, r6, r9
   2763         usada8 r1, r5, r3, r7
   2764         usada8gt r3, r2, r5, r1
   2765 
   2766 @ CHECK: usad8	r2, r1, r4              @ encoding: [0x11,0xf4,0x82,0xe7]
   2767 @ CHECK: usad8le	r4, r6, r9      @ encoding: [0x16,0xf9,0x84,0xd7]
   2768 @ CHECK: usada8	r1, r5, r3, r7          @ encoding: [0x15,0x73,0x81,0xe7]
   2769 @ CHECK: usada8gt	r3, r2, r5, r1  @ encoding: [0x12,0x15,0x83,0xc7]
   2770 
   2771 
   2772 @------------------------------------------------------------------------------
   2773 @ USAT
   2774 @------------------------------------------------------------------------------
   2775         usat	r8, #1, r10
   2776         usat	r8, #4, r10, lsl #0
   2777         usat	r8, #5, r10, lsl #31
   2778         usat	r8, #31, r10, asr #32
   2779         usat	r8, #16, r10, asr #1
   2780 
   2781 @ CHECK: usat	r8, #1, r10             @ encoding: [0x1a,0x80,0xe1,0xe6]
   2782 @ CHECK: usat	r8, #4, r10             @ encoding: [0x1a,0x80,0xe4,0xe6]
   2783 @ CHECK: usat	r8, #5, r10, lsl #31    @ encoding: [0x9a,0x8f,0xe5,0xe6]
   2784 @ CHECK: usat	r8, #31, r10, asr #32   @ encoding: [0x5a,0x80,0xff,0xe6]
   2785 @ CHECK: usat	r8, #16, r10, asr #1    @ encoding: [0xda,0x80,0xf0,0xe6]
   2786 
   2787 
   2788 @------------------------------------------------------------------------------
   2789 @ USAT16
   2790 @------------------------------------------------------------------------------
   2791         usat16	r2, #2, r7
   2792         usat16	r3, #15, r5
   2793 
   2794 @ CHECK: usat16	r2, #2, r7              @ encoding: [0x37,0x2f,0xe2,0xe6]
   2795 @ CHECK: usat16	r3, #15, r5             @ encoding: [0x35,0x3f,0xef,0xe6]
   2796 
   2797 
   2798 @------------------------------------------------------------------------------
   2799 @ USAX
   2800 @------------------------------------------------------------------------------
   2801         usax r2, r3, r4
   2802         usaxne r2, r3, r4
   2803 
   2804 @ CHECK: usax	r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0xe6]
   2805 @ CHECK: usaxne	r2, r3, r4              @ encoding: [0x54,0x2f,0x53,0x16]
   2806 
   2807 @------------------------------------------------------------------------------
   2808 @ USUB16/USUB8
   2809 @------------------------------------------------------------------------------
   2810         usub16 r4, r2, r7
   2811         usub16hi r1, r1, r3
   2812         usub8 r1, r8, r5
   2813         usub8le r9, r2, r3
   2814 
   2815 @ CHECK: usub16	r4, r2, r7              @ encoding: [0x77,0x4f,0x52,0xe6]
   2816 @ CHECK: usub16hi	r1, r1, r3      @ encoding: [0x73,0x1f,0x51,0x86]
   2817 @ CHECK: usub8	r1, r8, r5              @ encoding: [0xf5,0x1f,0x58,0xe6]
   2818 @ CHECK: usub8le	r9, r2, r3      @ encoding: [0xf3,0x9f,0x52,0xd6]
   2819 
   2820 
   2821 @------------------------------------------------------------------------------
   2822 @ UXTAB
   2823 @------------------------------------------------------------------------------
   2824         uxtab r2, r3, r4
   2825         uxtab r4, r5, r6, ror #0
   2826         uxtablt r6, r2, r9, ror #8
   2827         uxtab r5, r1, r4, ror #16
   2828         uxtab r7, r8, r3, ror #24
   2829 
   2830 @ CHECK: uxtab	r2, r3, r4              @ encoding: [0x74,0x20,0xe3,0xe6]
   2831 @ CHECK: uxtab	r4, r5, r6              @ encoding: [0x76,0x40,0xe5,0xe6]
   2832 @ CHECK: uxtablt r6, r2, r9, ror #8     @ encoding: [0x79,0x64,0xe2,0xb6]
   2833 @ CHECK: uxtab	r5, r1, r4, ror #16     @ encoding: [0x74,0x58,0xe1,0xe6]
   2834 @ CHECK: uxtab	r7, r8, r3, ror #24     @ encoding: [0x73,0x7c,0xe8,0xe6]
   2835 
   2836 
   2837 @------------------------------------------------------------------------------
   2838 @ UXTAB16
   2839 @------------------------------------------------------------------------------
   2840         uxtab16ge r0, r1, r4
   2841         uxtab16 r6, r2, r7, ror #0
   2842         uxtab16 r3, r5, r8, ror #8
   2843         uxtab16 r3, r2, r1, ror #16
   2844         uxtab16eq r1, r2, r3, ror #24
   2845 
   2846 @ CHECK: uxtab16ge	r0, r1, r4      @ encoding: [0x74,0x00,0xc1,0xa6]
   2847 @ CHECK: uxtab16	r6, r2, r7      @ encoding: [0x77,0x60,0xc2,0xe6]
   2848 @ CHECK: uxtab16	r3, r5, r8, ror #8 @ encoding: [0x78,0x34,0xc5,0xe6]
   2849 @ CHECK: uxtab16	r3, r2, r1, ror #16 @ encoding: [0x71,0x38,0xc2,0xe6]
   2850 @ CHECK: uxtab16eq	r1, r2, r3, ror #24 @ encoding: [0x73,0x1c,0xc2,0x06]
   2851 
   2852 
   2853 @------------------------------------------------------------------------------
   2854 @ UXTAH
   2855 @------------------------------------------------------------------------------
   2856         uxtah r1, r3, r9
   2857         uxtahhi r6, r1, r6, ror #0
   2858         uxtah r3, r8, r3, ror #8
   2859         uxtahlo r2, r2, r4, ror #16
   2860         uxtah r9, r3, r3, ror #24
   2861 
   2862 @ CHECK: uxtah	r1, r3, r9              @ encoding: [0x79,0x10,0xf3,0xe6]
   2863 @ CHECK: uxtahhi	r6, r1, r6      @ encoding: [0x76,0x60,0xf1,0x86]
   2864 @ CHECK: uxtah	r3, r8, r3, ror #8      @ encoding: [0x73,0x34,0xf8,0xe6]
   2865 @ CHECK: uxtahlo	r2, r2, r4, ror #16 @ encoding: [0x74,0x28,0xf2,0x36]
   2866 @ CHECK: uxtah	r9, r3, r3, ror #24     @ encoding: [0x73,0x9c,0xf3,0xe6]
   2867 
   2868 @------------------------------------------------------------------------------
   2869 @ UXTB
   2870 @------------------------------------------------------------------------------
   2871         uxtbge r2, r4
   2872         uxtb r5, r6, ror #0
   2873         uxtb r6, r9, ror #8
   2874         uxtbcc r5, r1, ror #16
   2875         uxtb r8, r3, ror #24
   2876 
   2877 @ CHECK: uxtbge	r2, r4                  @ encoding: [0x74,0x20,0xef,0xa6]
   2878 @ CHECK: uxtb	r5, r6                  @ encoding: [0x76,0x50,0xef,0xe6]
   2879 @ CHECK: uxtb	r6, r9, ror #8          @ encoding: [0x79,0x64,0xef,0xe6]
   2880 @ CHECK: uxtblo	r5, r1, ror #16         @ encoding: [0x71,0x58,0xef,0x36]
   2881 @ CHECK: uxtb	r8, r3, ror #24         @ encoding: [0x73,0x8c,0xef,0xe6]
   2882 
   2883 
   2884 @------------------------------------------------------------------------------
   2885 @ UXTB16
   2886 @------------------------------------------------------------------------------
   2887         uxtb16 r1, r4
   2888         uxtb16 r6, r7, ror #0
   2889         uxtb16cs r3, r5, ror #8
   2890         uxtb16 r3, r1, ror #16
   2891         uxtb16ge r2, r3, ror #24
   2892 
   2893 @ CHECK: uxtb16	r1, r4                  @ encoding: [0x74,0x10,0xcf,0xe6]
   2894 @ CHECK: uxtb16	r6, r7                  @ encoding: [0x77,0x60,0xcf,0xe6]
   2895 @ CHECK: uxtb16hs	r3, r5, ror #8  @ encoding: [0x75,0x34,0xcf,0x26]
   2896 @ CHECK: uxtb16	r3, r1, ror #16         @ encoding: [0x71,0x38,0xcf,0xe6]
   2897 @ CHECK: uxtb16ge	r2, r3, ror #24 @ encoding: [0x73,0x2c,0xcf,0xa6]
   2898 
   2899 
   2900 @------------------------------------------------------------------------------
   2901 @ UXTH
   2902 @------------------------------------------------------------------------------
   2903         uxthne r3, r9
   2904         uxth r1, r6, ror #0
   2905         uxth r3, r8, ror #8
   2906         uxthle r2, r2, ror #16
   2907         uxth r9, r3, ror #24
   2908 
   2909 @ CHECK: uxthne	r3, r9                  @ encoding: [0x79,0x30,0xff,0x16]
   2910 @ CHECK: uxth	r1, r6                  @ encoding: [0x76,0x10,0xff,0xe6]
   2911 @ CHECK: uxth	r3, r8, ror #8          @ encoding: [0x78,0x34,0xff,0xe6]
   2912 @ CHECK: uxthle	r2, r2, ror #16         @ encoding: [0x72,0x28,0xff,0xd6]
   2913 @ CHECK: uxth	r9, r3, ror #24         @ encoding: [0x73,0x9c,0xff,0xe6]
   2914 
   2915 
   2916 @------------------------------------------------------------------------------
   2917 @ WFE/WFI/YIELD
   2918 @------------------------------------------------------------------------------
   2919         wfe
   2920         wfehi
   2921         wfi
   2922         wfilt
   2923         yield
   2924         yieldne
   2925         hint #4
   2926         hint #3
   2927         hint #2
   2928         hint #1
   2929         hint #0
   2930 
   2931 @ CHECK: wfe                            @ encoding: [0x02,0xf0,0x20,0xe3]
   2932 @ CHECK: wfehi                          @ encoding: [0x02,0xf0,0x20,0x83]
   2933 @ CHECK: wfi                            @ encoding: [0x03,0xf0,0x20,0xe3]
   2934 @ CHECK: wfilt                          @ encoding: [0x03,0xf0,0x20,0xb3]
   2935 @ CHECK: yield                          @ encoding: [0x01,0xf0,0x20,0xe3]
   2936 @ CHECK: yieldne                        @ encoding: [0x01,0xf0,0x20,0x13]
   2937 @ CHECK: sev                            @ encoding: [0x04,0xf0,0x20,0xe3]
   2938 @ CHECK: wfi                            @ encoding: [0x03,0xf0,0x20,0xe3]
   2939 @ CHECK: wfe                            @ encoding: [0x02,0xf0,0x20,0xe3]
   2940 @ CHECK: yield                          @ encoding: [0x01,0xf0,0x20,0xe3]
   2941 @ CHECK: nop                            @ encoding: [0x00,0xf0,0x20,0xe3]
   2942