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