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