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