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