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