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