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