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