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