Home | History | Annotate | Download | only in ARM
      1 # RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -disassemble < %s | FileCheck %s
      2 
      3 #------------------------------------------------------------------------------
      4 # ADC (immediate)
      5 #------------------------------------------------------------------------------
      6 # CHECK: adc r0, r1, #4
      7 # CHECK: adcs r0, r1, #0
      8 # CHECK: adc r1, r2, #255
      9 # CHECK: adc r3, r7, #5570645
     10 # CHECK: adc r8, r12, #2852170240
     11 # CHECK: adc r9, r7, #2779096485
     12 # CHECK: adc r5, r3, #2264924160
     13 # CHECK: adc r4, r2, #2139095040
     14 # CHECK: adc r4, r2, #1664
     15 
     16 0x41 0xf1 0x04 0x00
     17 0x51 0xf1 0x00 0x00
     18 0x42 0xf1 0xff 0x01
     19 0x47 0xf1 0x55 0x13
     20 0x4c 0xf1 0xaa 0x28
     21 0x47 0xf1 0xa5 0x39
     22 0x43 0xf1 0x07 0x45
     23 0x42 0xf1 0xff 0x44
     24 0x42 0xf5 0xd0 0x64
     25 
     26 #------------------------------------------------------------------------------
     27 # ADC (register)
     28 #------------------------------------------------------------------------------
     29 # CHECK: adc.w r4, r5, r6
     30 # CHECK: adcs.w r4, r5, r6
     31 # CHECK: adc.w r9, r1, r3
     32 # CHECK: adcs.w r9, r1, r3
     33 # CHECK: adc.w r0, r1, r3, ror #4
     34 # CHECK: adcs.w  r0, r1, r3, lsl #7
     35 # CHECK: adc.w r0, r1, r3, lsr #31
     36 # CHECK: adcs.w  r0, r1, r3, asr #32
     37 
     38 0x45 0xeb 0x06 0x04
     39 0x55 0xeb 0x06 0x04
     40 0x41 0xeb 0x03 0x09
     41 0x51 0xeb 0x03 0x09
     42 0x41 0xeb 0x33 0x10
     43 0x51 0xeb 0xc3 0x10
     44 0x41 0xeb 0xd3 0x70
     45 0x51 0xeb 0x23 0x00
     46 
     47 
     48 #------------------------------------------------------------------------------
     49 # ADD (immediate)
     50 #------------------------------------------------------------------------------
     51 # CHECK: itet eq
     52 # CHECK: addeq r1, r2, #4
     53 # CHECK: addwne r5, r3, #1023
     54 # CHECK: addweq r4, r5, #293
     55 # CHECK: add.w r2, sp, #1024
     56 # CHECK: add.w r2, r8, #65280
     57 # CHECK: addw r2, r3, #257
     58 # CHECK: add.w r12, r6, #256
     59 # CHECK: addw r12, r6, #256
     60 # CHECK: adds.w r1, r2, #496
     61 
     62 0x0a 0xbf
     63 0x11 0x1d
     64 0x03 0xf2 0xff 0x35
     65 0x05 0xf2 0x25 0x14
     66 0x0d 0xf5 0x80 0x62
     67 0x08 0xf5 0x7f 0x42
     68 0x03 0xf2 0x01 0x12
     69 0x06 0xf5 0x80 0x7c
     70 0x06 0xf2 0x00 0x1c
     71 0x12 0xf5 0xf8 0x71
     72 
     73 
     74 #------------------------------------------------------------------------------
     75 # ADD (register)
     76 #------------------------------------------------------------------------------
     77 # CHECK: add.w r1, r2, r8
     78 # CHECK: add.w r5, r9, r2, asr #32
     79 # CHECK: adds.w r7, r3, r1, lsl #31
     80 # CHECK: adds.w r0, r3, r6, lsr #25
     81 # CHECK: add.w r4, r8, r1, ror #12
     82 
     83 0x02 0xeb 0x08 0x01
     84 0x09 0xeb 0x22 0x05
     85 0x13 0xeb 0xc1 0x77
     86 0x13 0xeb 0x56 0x60
     87 0x08 0xeb 0x31 0x34
     88 
     89 
     90 #------------------------------------------------------------------------------
     91 # ADR
     92 #------------------------------------------------------------------------------
     93 # CHECK: subw r11, pc, #3270
     94 # CHECK: subw r11, pc, #826
     95 # CHECK: subw r1, pc, #0
     96 
     97 0xaf 0xf6 0xc6 0x4b
     98 0xaf 0xf2 0x3a 0x3b
     99 0xaf 0xf2 0x00 0x01
    100 
    101 #------------------------------------------------------------------------------
    102 # AND (immediate)
    103 #------------------------------------------------------------------------------
    104 # CHECK: and r2, r5, #1044480
    105 # CHECK: ands r3, r12, #15
    106 # CHECK: and r1, r1, #255
    107 
    108 0x05 0xf4 0x7f 0x22
    109 0x1c 0xf0 0x0f 0x03
    110 0x01 0xf0 0xff 0x01
    111 
    112 
    113 #------------------------------------------------------------------------------
    114 # AND (register)
    115 #------------------------------------------------------------------------------
    116 # CHECK: and.w r4, r9, r8
    117 # CHECK: and.w r1, r4, r8, asr #3
    118 # CHECK: ands.w r2, r1, r7, lsl #1
    119 # CHECK: ands.w r4, r5, r2, lsr #20
    120 # CHECK: and.w r9, r12, r1, ror #17
    121 
    122 0x09 0xea 0x08 0x04
    123 0x04 0xea 0xe8 0x01
    124 0x11 0xea 0x47 0x02
    125 0x15 0xea 0x12 0x54
    126 0x0c 0xea 0x71 0x49
    127 
    128 #------------------------------------------------------------------------------
    129 # ASR (immediate)
    130 #------------------------------------------------------------------------------
    131 # CHECK: asr.w r2, r3, #12
    132 # CHECK: asrs.w r8, r3, #32
    133 # CHECK: asrs.w r2, r3, #1
    134 # CHECK: asr.w r2, r3, #4
    135 # CHECK: asrs.w r2, r12, #15
    136 
    137 # CHECK: asr.w r3, r3, #19
    138 # CHECK: asrs.w r8, r8, #2
    139 # CHECK: asrs.w r7, r7, #5
    140 # CHECK: asr.w r12, r12, #21
    141 
    142 0x4f 0xea 0x23 0x32
    143 0x5f 0xea 0x23 0x08
    144 0x5f 0xea 0x63 0x02
    145 0x4f 0xea 0x23 0x12
    146 0x5f 0xea 0xec 0x32
    147 
    148 0x4f 0xea 0xe3 0x43
    149 0x5f 0xea 0xa8 0x08
    150 0x5f 0xea 0x67 0x17
    151 0x4f 0xea 0x6c 0x5c
    152 
    153 
    154 #------------------------------------------------------------------------------
    155 # ASR (register)
    156 #------------------------------------------------------------------------------
    157 # CHECK: asr.w r3, r4, r2
    158 # CHECK: asr.w r1, r1, r2
    159 # CHECK: asrs.w r3, r4, r8
    160 
    161 0x44 0xfa 0x02 0xf3
    162 0x41 0xfa 0x02 0xf1
    163 0x54 0xfa 0x08 0xf3
    164 
    165 #------------------------------------------------------------------------------
    166 # B
    167 #------------------------------------------------------------------------------
    168 # CHECK: bmi.w   #-183396
    169 
    170 0x13 0xf5 0xce 0xa9
    171 
    172 # CHECK: b.w   #208962
    173 # CHECK: b.w   #-16777216
    174 
    175 0x33 0xf0 0x21 0xb8 # rdar://12585795
    176 0x00 0xf4 0x00 0x90
    177 
    178 #------------------------------------------------------------------------------
    179 # BFC
    180 #------------------------------------------------------------------------------
    181 # CHECK: bfc r5, #3, #17
    182 # CHECK: it lo
    183 # CHECK: bfclo r5, #3, #17
    184 
    185 0x6f 0xf3 0xd3 0x05
    186 0x38 0xbf
    187 0x6f 0xf3 0xd3 0x05
    188 
    189 
    190 #------------------------------------------------------------------------------
    191 # BFI
    192 #------------------------------------------------------------------------------
    193 # CHECK: bfi r5, r2, #3, #17
    194 # CHECK: it ne
    195 # CHECK: bfine r5, r2, #3, #17
    196 # CHECK: bfi r6, r0, #0, #32
    197 # CHECK: bfi r6, r0, #31, #1
    198 
    199 0x62 0xf3 0xd3 0x05
    200 0x18 0xbf
    201 0x62 0xf3 0xd3 0x05
    202 0x60 0xf3 0x1f 0x06
    203 0x60 0xf3 0xdf 0x76
    204 
    205 
    206 #------------------------------------------------------------------------------
    207 # BIC
    208 #------------------------------------------------------------------------------
    209 # CHECK: bic r10, r1, #15
    210 # CHECK: bic.w r12, r3, r6
    211 # CHECK: bic.w r11, r2, r6, lsl #12
    212 # CHECK: bic.w r8, r4, r1, lsr #11
    213 # CHECK: bic.w r7, r5, r7, lsr #15
    214 # CHECK: bic.w r6, r7, r9, asr #32
    215 # CHECK: bic.w r5, r6, r8, ror #1
    216 
    217 # CHECK: bic r1, r1, #15
    218 # CHECK: bic.w r1, r1, r1
    219 # CHECK: bic.w r4, r4, r2, lsl #31
    220 # CHECK: bic.w r6, r6, r3, lsr #12
    221 # CHECK: bic.w r7, r7, r4, lsr #7
    222 # CHECK: bic.w r8, r8, r5, asr #15
    223 # CHECK: bic.w r12, r12, r6, ror #29
    224 
    225 0x21 0xf0 0x0f 0x0a
    226 0x23 0xea 0x06 0x0c
    227 0x22 0xea 0x06 0x3b
    228 0x24 0xea 0xd1 0x28
    229 0x25 0xea 0xd7 0x37
    230 0x27 0xea 0x29 0x06
    231 0x26 0xea 0x78 0x05
    232 
    233 0x21 0xf0 0x0f 0x01
    234 0x21 0xea 0x01 0x01
    235 0x24 0xea 0xc2 0x74
    236 0x26 0xea 0x13 0x36
    237 0x27 0xea 0xd4 0x17
    238 0x28 0xea 0xe5 0x38
    239 0x2c 0xea 0x76 0x7c
    240 
    241 
    242 #------------------------------------------------------------------------------
    243 # BXJ
    244 #------------------------------------------------------------------------------
    245 # CHECK: bxj r5
    246 # CHECK: it ne
    247 # CHECK: bxjne r7
    248 
    249 0xc5 0xf3 0x00 0x8f
    250 0x18 0xbf
    251 0xc7 0xf3 0x00 0x8f
    252 
    253 
    254 #------------------------------------------------------------------------------
    255 # CBZ/CBNZ
    256 #------------------------------------------------------------------------------
    257 # CHECK: cbnz    r7, #6
    258 # CHECK: cbnz    r7, #12
    259 # CHECK: cbz     r4, #64
    260 
    261 0x1f 0xb9
    262 0x37 0xb9
    263 0x04 0xb3
    264 
    265 
    266 #------------------------------------------------------------------------------
    267 # CDP/CDP2
    268 #------------------------------------------------------------------------------
    269 # CHECK: cdp  p7, #1, c1, c1, c1, #4
    270 # CHECK: cdp2  p7, #1, c1, c1, c1, #4
    271 
    272 0x11 0xee 0x81 0x17
    273 0x11 0xfe 0x81 0x17
    274 
    275 
    276 #------------------------------------------------------------------------------
    277 # CLREX
    278 #------------------------------------------------------------------------------
    279 #CHECK: clrex
    280 #CHECK: it ne
    281 #CHECK: clrexne
    282 
    283 0xbf 0xf3 0x2f 0x8f
    284 0x18 0xbf
    285 0xbf 0xf3 0x2f 0x8f
    286 
    287 
    288 #------------------------------------------------------------------------------
    289 # CLZ
    290 #------------------------------------------------------------------------------
    291 #CHECK: clz r1, r2
    292 #CHECK: it eq
    293 #CHECK: clzeq r1, r2
    294 
    295 0xb2 0xfa 0x82 0xf1
    296 0x08 0xbf
    297 0xb2 0xfa 0x82 0xf1
    298 
    299 
    300 #------------------------------------------------------------------------------
    301 # CMN
    302 #------------------------------------------------------------------------------
    303 #CHECK: cmn.w r1, #15
    304 #CHECK: cmn.w r8, r6
    305 #CHECK: cmn.w r1, r6, lsl #10
    306 #CHECK: cmn.w r1, r6, lsr #10
    307 #CHECK: cmn.w sp, r6, lsr #10
    308 #CHECK: cmn.w r1, r6, asr #10
    309 #CHECK: cmn.w r1, r6, ror #10
    310 
    311 0x11 0xf1 0x0f 0x0f
    312 0x18 0xeb 0x06 0x0f
    313 0x11 0xeb 0x86 0x2f
    314 0x11 0xeb 0x96 0x2f
    315 0x1d 0xeb 0x96 0x2f
    316 0x11 0xeb 0xa6 0x2f
    317 0x11 0xeb 0xb6 0x2f
    318 
    319 
    320 #------------------------------------------------------------------------------
    321 # CMP
    322 #------------------------------------------------------------------------------
    323 #CHECK: cmp.w r5, #65280
    324 #CHECK: cmp.w r4, r12
    325 #CHECK: cmp.w r9, r6, lsl #12
    326 #CHECK: cmp.w r3, r7, lsr #31
    327 #CHECK: cmp.w sp, r6, lsr #1
    328 #CHECK: cmp.w r2, r5, asr #24
    329 #CHECK: cmp.w r1, r4, ror #15
    330 
    331 0xb5 0xf5 0x7f 0x4f
    332 0xb4 0xeb 0x0c 0x0f
    333 0xb9 0xeb 0x06 0x3f
    334 0xb3 0xeb 0xd7 0x7f
    335 0xbd 0xeb 0x56 0x0f
    336 0xb2 0xeb 0x25 0x6f
    337 0xb1 0xeb 0xf4 0x3f
    338 
    339 
    340 #------------------------------------------------------------------------------
    341 # DBG
    342 #------------------------------------------------------------------------------
    343 #CHECK: dbg #5
    344 #CHECK: dbg #0
    345 #CHECK: dbg #15
    346 
    347 0xaf 0xf3 0xf5 0x80
    348 0xaf 0xf3 0xf0 0x80
    349 0xaf 0xf3 0xff 0x80
    350 
    351 
    352 #------------------------------------------------------------------------------
    353 # DMB
    354 #------------------------------------------------------------------------------
    355 #CHECK: dmb sy
    356 #CHECK: dmb st
    357 #CHECK: dmb #0xd
    358 #CHECK: dmb #0xc
    359 #CHECK: dmb ish
    360 #CHECK: dmb ishst
    361 #CHECK: dmb #0x9
    362 #CHECK: dmb #0x8
    363 #CHECK: dmb nsh
    364 #CHECK: dmb nshst
    365 #CHECK: dmb #0x5
    366 #CHECK: dmb #0x4
    367 #CHECK: dmb osh
    368 #CHECK: dmb oshst
    369 #CHECK: dmb #0x1
    370 #CHECK: dmb #0x0
    371 
    372 0xbf 0xf3 0x5f 0x8f
    373 0xbf 0xf3 0x5e 0x8f
    374 0xbf 0xf3 0x5d 0x8f
    375 0xbf 0xf3 0x5c 0x8f
    376 0xbf 0xf3 0x5b 0x8f
    377 0xbf 0xf3 0x5a 0x8f
    378 0xbf 0xf3 0x59 0x8f
    379 0xbf 0xf3 0x58 0x8f
    380 0xbf 0xf3 0x57 0x8f
    381 0xbf 0xf3 0x56 0x8f
    382 0xbf 0xf3 0x55 0x8f
    383 0xbf 0xf3 0x54 0x8f
    384 0xbf 0xf3 0x53 0x8f
    385 0xbf 0xf3 0x52 0x8f
    386 0xbf 0xf3 0x51 0x8f
    387 0xbf 0xf3 0x50 0x8f
    388 
    389 
    390 #------------------------------------------------------------------------------
    391 # DSB
    392 #------------------------------------------------------------------------------
    393 #CHECK: dsb sy
    394 #CHECK: dsb st
    395 #CHECK: dsb #0xd
    396 #CHECK: dsb #0xc
    397 #CHECK: dsb ish
    398 #CHECK: dsb ishst
    399 #CHECK: dsb #0x9
    400 #CHECK: dsb #0x8
    401 #CHECK: dsb nsh
    402 #CHECK: dsb nshst
    403 #CHECK: dsb #0x5
    404 #CHECK: dsb #0x4
    405 #CHECK: dsb osh
    406 #CHECK: dsb oshst
    407 #CHECK: dsb #0x1
    408 #CHECK: dsb #0x0
    409 
    410 0xbf 0xf3 0x4f 0x8f
    411 0xbf 0xf3 0x4e 0x8f
    412 0xbf 0xf3 0x4d 0x8f
    413 0xbf 0xf3 0x4c 0x8f
    414 0xbf 0xf3 0x4b 0x8f
    415 0xbf 0xf3 0x4a 0x8f
    416 0xbf 0xf3 0x49 0x8f
    417 0xbf 0xf3 0x48 0x8f
    418 0xbf 0xf3 0x47 0x8f
    419 0xbf 0xf3 0x46 0x8f
    420 0xbf 0xf3 0x45 0x8f
    421 0xbf 0xf3 0x44 0x8f
    422 0xbf 0xf3 0x43 0x8f
    423 0xbf 0xf3 0x42 0x8f
    424 0xbf 0xf3 0x41 0x8f
    425 0xbf 0xf3 0x40 0x8f
    426 
    427 
    428 #------------------------------------------------------------------------------
    429 # EOR
    430 #------------------------------------------------------------------------------
    431 #CHECK: eor r4, r5, #61440
    432 #CHECK: eor.w r4, r5, r6
    433 #CHECK: eor.w r4, r5, r6, lsl #5
    434 #CHECK: eor.w r4, r5, r6, lsr #5
    435 #CHECK: eor.w r4, r5, r6, lsr #5
    436 #CHECK: eor.w r4, r5, r6, asr #5
    437 #CHECK: eor.w r4, r5, r6, ror #5
    438 
    439 0x85 0xf4 0x70 0x44
    440 0x85 0xea 0x06 0x04
    441 0x85 0xea 0x46 0x14
    442 0x85 0xea 0x56 0x14
    443 0x85 0xea 0x56 0x14
    444 0x85 0xea 0x66 0x14
    445 0x85 0xea 0x76 0x14
    446 
    447 
    448 #------------------------------------------------------------------------------
    449 # ISB
    450 #------------------------------------------------------------------------------
    451 #CHECK: isb sy
    452 #CHECK: isb #0xa
    453 
    454 0xbf 0xf3 0x6f 0x8f
    455 0xbf 0xf3 0x6a 0x8f
    456 
    457 #------------------------------------------------------------------------------
    458 # IT
    459 #------------------------------------------------------------------------------
    460 # Test encodings of a few full IT blocks, not just the IT instruction
    461 
    462 # CHECK: iteet eq
    463 # CHECK: addeq r0, r1, r2
    464 # CHECK: nopne
    465 # CHECK: subne r5, r6, r7
    466 # CHECK: addeq r1, r2, #4
    467 
    468 0x0d 0xbf
    469 0x88 0x18
    470 0x00 0xbf
    471 0xf5 0x1b
    472 0x11 0x1d
    473 
    474 # CHECK: ittee ls
    475 # CHECK: addls r0, r1, r2
    476 # CHECK: nopls
    477 # CHECK: subhi r5, r6, r7
    478 # CHECK: addhi r1, r2, #4
    479 
    480 0x99 0xbf
    481 0x88 0x18
    482 0x00 0xbf
    483 0xf5 0x1b
    484 0x11 0x1d
    485 
    486 
    487 #------------------------------------------------------------------------------
    488 # LDMIA
    489 #------------------------------------------------------------------------------
    490 # CHECK: ldm.w r4, {r4, r5, r8, r9}
    491 # CHECK: ldm.w r4, {r5, r6}
    492 # CHECK: ldm.w r5!, {r3, r8}
    493 # CHECK: ldm.w r4, {r4, r5, r8, r9}
    494 # CHECK: ldm.w r4, {r5, r6}
    495 # CHECK: ldm.w r5!, {r3, r8}
    496 # CHECK: ldm.w r5!, {r1, r2}
    497 # CHECK: ldm.w r2, {r1, r2}
    498 
    499 # CHECK: ldm.w r4, {r4, r5, r8, r9}
    500 # CHECK: ldm.w r4, {r5, r6}
    501 # CHECK: ldm.w r5!, {r3, r8}
    502 # CHECK: ldm.w r4, {r4, r5, r8, r9}
    503 # CHECK: ldm.w r4, {r5, r6}
    504 # CHECK: ldm.w r5!, {r3, r8}
    505 # CHECK: ldm.w r5!, {r3, r8}
    506 
    507 0x94 0xe8 0x30 0x03
    508 0x94 0xe8 0x60 0x00
    509 0xb5 0xe8 0x08 0x01
    510 0x94 0xe8 0x30 0x03
    511 0x94 0xe8 0x60 0x00
    512 0xb5 0xe8 0x08 0x01
    513 0xb5 0xe8 0x06 0x00
    514 0x92 0xe8 0x06 0x00
    515 
    516 0x94 0xe8 0x30 0x03
    517 0x94 0xe8 0x60 0x00
    518 0xb5 0xe8 0x08 0x01
    519 0x94 0xe8 0x30 0x03
    520 0x94 0xe8 0x60 0x00
    521 0xb5 0xe8 0x08 0x01
    522 0xb5 0xe8 0x08 0x01
    523 
    524 
    525 #------------------------------------------------------------------------------
    526 # LDMDB
    527 #------------------------------------------------------------------------------
    528 # CHECK: ldmdb r4, {r4, r5, r8, r9}
    529 # CHECK: ldmdb r4, {r5, r6}
    530 # CHECK: ldmdb r5!, {r3, r8}
    531 # CHECK: ldmdb r5!, {r3, r8}
    532 
    533 0x14 0xe9 0x30 0x03
    534 0x14 0xe9 0x60 0x00
    535 0x35 0xe9 0x08 0x01
    536 0x35 0xe9 0x08 0x01
    537 
    538 
    539 #------------------------------------------------------------------------------
    540 # LDR(immediate)
    541 #------------------------------------------------------------------------------
    542 # CHECK: ldr r5, [r5, #-4]
    543 # CHECK: ldr r5, [r6, #32]
    544 # CHECK: ldr.w r5, [r6, #33]
    545 # CHECK: ldr.w r5, [r6, #257]
    546 # CHECK: ldr.w pc, [r7, #257]
    547 
    548 0x55 0xf8 0x04 0x5c
    549 0x35 0x6a
    550 0xd6 0xf8 0x21 0x50
    551 0xd6 0xf8 0x01 0x51
    552 0xd7 0xf8 0x01 0xf1
    553 
    554 
    555 #------------------------------------------------------------------------------
    556 # LDR(literal)
    557 #------------------------------------------------------------------------------
    558 # CHECK: ldr.w r4, [pc, #-0]
    559 # CHECK: ldr.w r2, [pc, #-40]
    560 # CHECK: ldr.w r1, [pc, #1024]
    561 0x5f 0xf8 0x00 0x40
    562 0x5f 0xf8 0x28 0x20
    563 0xdf 0xf8 0x00 0x14
    564 
    565 
    566 #------------------------------------------------------------------------------
    567 # LDR(register)
    568 #------------------------------------------------------------------------------
    569 # CHECK: ldr.w r1, [r8, r1]
    570 # CHECK: ldr.w r4, [r5, r2]
    571 # CHECK: ldr.w r6, [r0, r2, lsl #3]
    572 # CHECK: ldr.w r8, [r8, r2, lsl #2]
    573 # CHECK: ldr.w r7, [sp, r2, lsl #1]
    574 # CHECK: ldr.w r7, [sp, r2]
    575 # CHECK: ldr pc, [sp], #12
    576 # CHECK: ldr r2, [r4, #255]!
    577 # CHECK: ldr r8, [sp, #4]!
    578 # CHECK: ldr lr, [sp, #-4]!
    579 # CHECK: ldr lr, [sp, #0]!
    580 # CHECK: ldr r2, [r4], #255
    581 # CHECK: ldr r8, [sp], #4
    582 # CHECK: ldr lr, [sp], #-4
    583 
    584 0x58 0xf8 0x01 0x10
    585 0x55 0xf8 0x02 0x40
    586 0x50 0xf8 0x32 0x60
    587 0x58 0xf8 0x22 0x80
    588 0x5d 0xf8 0x12 0x70
    589 0x5d 0xf8 0x02 0x70
    590 0x5d 0xf8 0x0c 0xfb
    591 0x54 0xf8 0xff 0x2f
    592 0x5d 0xf8 0x04 0x8f
    593 0x5d 0xf8 0x04 0xed
    594 0x5d 0xf8 0x00 0xef
    595 0x54 0xf8 0xff 0x2b
    596 0x5d 0xf8 0x04 0x8b
    597 0x5d 0xf8 0x04 0xe9
    598 
    599 
    600 #------------------------------------------------------------------------------
    601 # LDRB(immediate)
    602 #------------------------------------------------------------------------------
    603 # CHECK: ldrb r5, [r5, #-4]
    604 # CHECK: ldrb.w r5, [r6, #32]
    605 # CHECK: ldrb.w r5, [r6, #33]
    606 # CHECK: ldrb.w r5, [r6, #257]
    607 # CHECK: ldrb.w lr, [r7, #257]
    608 
    609 0x15 0xf8 0x04 0x5c
    610 0x96 0xf8 0x20 0x50
    611 0x96 0xf8 0x21 0x50
    612 0x96 0xf8 0x01 0x51
    613 0x97 0xf8 0x01 0xe1
    614 
    615 
    616 #------------------------------------------------------------------------------
    617 # LDRB(register)
    618 #------------------------------------------------------------------------------
    619 # CHECK: ldrb.w r1, [r8, r1]
    620 # CHECK: ldrb.w r4, [r5, r2]
    621 # CHECK: ldrb.w r6, [r0, r2, lsl #3]
    622 # CHECK: ldrb.w r8, [r8, r2, lsl #2]
    623 # CHECK: ldrb.w r7, [sp, r2, lsl #1]
    624 # CHECK: ldrb.w r7, [sp, r2]
    625 # CHECK: ldrb r5, [r8, #255]!
    626 # CHECK: ldrb r2, [r5, #4]!
    627 # CHECK: ldrb r1, [r4, #-4]!
    628 # CHECK: ldrb r1, [r4, #0]!
    629 # CHECK: ldrb lr, [r3], #255
    630 # CHECK: ldrb r9, [r2], #4
    631 # CHECK: ldrb r3, [sp], #-4
    632 
    633 0x18 0xf8 0x01 0x10
    634 0x15 0xf8 0x02 0x40
    635 0x10 0xf8 0x32 0x60
    636 0x18 0xf8 0x22 0x80
    637 0x1d 0xf8 0x12 0x70
    638 0x1d 0xf8 0x02 0x70
    639 0x18 0xf8 0xff 0x5f
    640 0x15 0xf8 0x04 0x2f
    641 0x14 0xf8 0x04 0x1d
    642 0x14 0xf8 0x00 0x1f
    643 0x13 0xf8 0xff 0xeb
    644 0x12 0xf8 0x04 0x9b
    645 0x1d 0xf8 0x04 0x39
    646 
    647 
    648 #------------------------------------------------------------------------------
    649 # LDRB(literal)
    650 #------------------------------------------------------------------------------
    651 # CHECK: ldrb.w r6, [pc, #-0]
    652 # CHECK: ldrb.w r10, [pc, #227]
    653 # CHECK: ldrb.w r5, [pc, #0]
    654 0x1f 0xf8 0x00 0x60
    655 0x9f 0xf8 0xe3 0xa0
    656 0x9f 0xf8 0x00 0x50
    657 
    658 
    659 #------------------------------------------------------------------------------
    660 # LDRBT
    661 #------------------------------------------------------------------------------
    662 # CHECK: ldrbt r1, [r2]
    663 # CHECK: ldrbt r1, [r8]
    664 # CHECK: ldrbt r1, [r8, #3]
    665 # CHECK: ldrbt r1, [r8, #255]
    666 
    667 0x12 0xf8 0x00 0x1e
    668 0x18 0xf8 0x00 0x1e
    669 0x18 0xf8 0x03 0x1e
    670 0x18 0xf8 0xff 0x1e
    671 
    672 
    673 #------------------------------------------------------------------------------
    674 # LDRD(immediate)
    675 #------------------------------------------------------------------------------
    676 # CHECK: ldrd r3, r5, [r6, #24]
    677 # CHECK: ldrd r3, r5, [r6, #24]!
    678 # CHECK: ldrd r3, r5, [r6], #4
    679 # CHECK: ldrd r3, r5, [r6], #-8
    680 # CHECK: ldrd r3, r5, [r6]
    681 # CHECK: ldrd r8, r1, [r3]
    682 # CHECK: ldrd r0, r1, [r2], #-0
    683 # CHECK: ldrd r0, r1, [r2, #-0]!
    684 # CHECK: ldrd r0, r1, [r2, #0]!
    685 # CHECK: ldrd r0, r1, [r2, #-0]
    686 # CHECK: ldrd r1, r1, [r0], #0
    687 
    688 0xd6 0xe9 0x06 0x35
    689 0xf6 0xe9 0x06 0x35
    690 0xf6 0xe8 0x01 0x35
    691 0x76 0xe8 0x02 0x35
    692 0xd6 0xe9 0x00 0x35
    693 0xd3 0xe9 0x00 0x81
    694 0x72 0xe8 0x00 0x01
    695 0x72 0xe9 0x00 0x01
    696 0xf2 0xe9 0x00 0x01
    697 0x52 0xe9 0x00 0x01
    698 0xf0 0xe8 0x00 0x11
    699 
    700 
    701 #------------------------------------------------------------------------------
    702 # FIXME: LDRD(literal)
    703 #------------------------------------------------------------------------------
    704 
    705 
    706 #------------------------------------------------------------------------------
    707 # LDREX/LDREXB/LDREXH/LDREXD
    708 #------------------------------------------------------------------------------
    709 # CHECK: ldrex r1, [r4]
    710 # CHECK: ldrex r8, [r4]
    711 # CHECK: ldrex r2, [sp, #128]
    712 # CHECK: ldrexb r5, [r7]
    713 # CHECK: ldrexh r9, [r12]
    714 # CHECK: ldrexd r9, r3, [r4]
    715 
    716 0x54 0xe8 0x00 0x1f
    717 0x54 0xe8 0x00 0x8f
    718 0x5d 0xe8 0x20 0x2f
    719 0xd7 0xe8 0x4f 0x5f
    720 0xdc 0xe8 0x5f 0x9f
    721 0xd4 0xe8 0x7f 0x93
    722 
    723 
    724 #------------------------------------------------------------------------------
    725 # LDRH(immediate)
    726 #------------------------------------------------------------------------------
    727 # CHECK: ldrh r5, [r5, #-4]
    728 # CHECK: ldrh r5, [r6, #32]
    729 # CHECK: ldrh.w r5, [r6, #33]
    730 # CHECK: ldrh.w r5, [r6, #257]
    731 # CHECK: ldrh.w lr, [r7, #257]
    732 
    733 0x35 0xf8 0x04 0x5c
    734 0x35 0x8c
    735 0xb6 0xf8 0x21 0x50
    736 0xb6 0xf8 0x01 0x51
    737 0xb7 0xf8 0x01 0xe1
    738 
    739 
    740 #------------------------------------------------------------------------------
    741 # LDRH(register)
    742 #------------------------------------------------------------------------------
    743 # CHECK: ldrh.w r1, [r8, r1]
    744 # CHECK: ldrh.w r4, [r5, r2]
    745 # CHECK: ldrh.w r6, [r0, r2, lsl #3]
    746 # CHECK: ldrh.w r8, [r8, r2, lsl #2]
    747 # CHECK: ldrh.w r7, [sp, r2, lsl #1]
    748 # CHECK: ldrh.w r7, [sp, r2]
    749 # CHECK: ldrh r5, [r8, #255]!
    750 # CHECK: ldrh r2, [r5, #4]!
    751 # CHECK: ldrh r1, [r4, #-4]!
    752 # CHECK: ldrh r1, [r4, #0]!
    753 # CHECK: ldrh lr, [r3], #255
    754 # CHECK: ldrh r9, [r2], #4
    755 # CHECK: ldrh r3, [sp], #-4
    756 
    757 0x38 0xf8 0x01 0x10
    758 0x35 0xf8 0x02 0x40
    759 0x30 0xf8 0x32 0x60
    760 0x38 0xf8 0x22 0x80
    761 0x3d 0xf8 0x12 0x70
    762 0x3d 0xf8 0x02 0x70
    763 0x38 0xf8 0xff 0x5f
    764 0x35 0xf8 0x04 0x2f
    765 0x34 0xf8 0x04 0x1d
    766 0x34 0xf8 0x00 0x1f
    767 0x33 0xf8 0xff 0xeb
    768 0x32 0xf8 0x04 0x9b
    769 0x3d 0xf8 0x04 0x39
    770 
    771 
    772 #------------------------------------------------------------------------------
    773 # LDRH(literal)
    774 #------------------------------------------------------------------------------
    775 # CHECK: ldrh.w r7, [pc, #-0]
    776 # CHECK: ldrh.w r5, [pc, #121]
    777 # CHECK: ldrh.w r4, [pc, #0]
    778 0x3f 0xf8 0x00 0x70
    779 0xbf 0xf8 0x79 0x50
    780 0xbf 0xf8 0x00 0x40
    781 
    782 
    783 #------------------------------------------------------------------------------
    784 # LDRSB(immediate)
    785 #------------------------------------------------------------------------------
    786 # CHECK: ldrsb r5, [r5, #-4]
    787 # CHECK: ldrsb.w r5, [r6, #32]
    788 # CHECK: ldrsb.w r5, [r6, #33]
    789 # CHECK: ldrsb.w r5, [r6, #257]
    790 # CHECK: ldrsb.w lr, [r7, #257]
    791 
    792 0x15 0xf9 0x04 0x5c
    793 0x96 0xf9 0x20 0x50
    794 0x96 0xf9 0x21 0x50
    795 0x96 0xf9 0x01 0x51
    796 0x97 0xf9 0x01 0xe1
    797 
    798 
    799 #------------------------------------------------------------------------------
    800 # LDRSB(register)
    801 #------------------------------------------------------------------------------
    802 # CHECK: ldrsb.w r1, [r8, r1]
    803 # CHECK: ldrsb.w r4, [r5, r2]
    804 # CHECK: ldrsb.w r6, [r0, r2, lsl #3]
    805 # CHECK: ldrsb.w r8, [r8, r2, lsl #2]
    806 # CHECK: ldrsb.w r7, [sp, r2, lsl #1]
    807 # CHECK: ldrsb.w r7, [sp, r2]
    808 # CHECK: ldrsb r5, [r8, #255]!
    809 # CHECK: ldrsb r2, [r5, #4]!
    810 # CHECK: ldrsb r1, [r4, #-4]!
    811 # CHECK: ldrsb r1, [r4, #0]!
    812 # CHECK: ldrsb lr, [r3], #255
    813 # CHECK: ldrsb r9, [r2], #4
    814 # CHECK: ldrsb r3, [sp], #-4
    815 
    816 0x18 0xf9 0x01 0x10
    817 0x15 0xf9 0x02 0x40
    818 0x10 0xf9 0x32 0x60
    819 0x18 0xf9 0x22 0x80
    820 0x1d 0xf9 0x12 0x70
    821 0x1d 0xf9 0x02 0x70
    822 0x18 0xf9 0xff 0x5f
    823 0x15 0xf9 0x04 0x2f
    824 0x14 0xf9 0x04 0x1d
    825 0x14 0xf9 0x00 0x1f
    826 0x13 0xf9 0xff 0xeb
    827 0x12 0xf9 0x04 0x9b
    828 0x1d 0xf9 0x04 0x39
    829 
    830 
    831 #------------------------------------------------------------------------------
    832 # LDRSB(literal)
    833 #------------------------------------------------------------------------------
    834 # CHECK: ldrsb.w r0, [pc, #-0]
    835 # CHECK: ldrsb.w r12, [pc, #80]
    836 # CHECK: ldrsb.w r3, [pc, #0]
    837 0x1f 0xf9 0x00 0x00
    838 0x9f 0xf9 0x50 0xc0
    839 0x9f 0xf9 0x00 0x30
    840 
    841 
    842 #------------------------------------------------------------------------------
    843 # LDRSBT
    844 #------------------------------------------------------------------------------
    845 # CHECK: ldrsbt r1, [r2]
    846 # CHECK: ldrsbt r1, [r8]
    847 # CHECK: ldrsbt r1, [r8, #3]
    848 # CHECK: ldrsbt r1, [r8, #255]
    849 
    850 0x12 0xf9 0x00 0x1e
    851 0x18 0xf9 0x00 0x1e
    852 0x18 0xf9 0x03 0x1e
    853 0x18 0xf9 0xff 0x1e
    854 
    855 
    856 #------------------------------------------------------------------------------
    857 # LDRSH(immediate)
    858 #------------------------------------------------------------------------------
    859 # CHECK: ldrsh r5, [r5, #-4]
    860 # CHECK: ldrsh.w r5, [r6, #32]
    861 # CHECK: ldrsh.w r5, [r6, #33]
    862 # CHECK: ldrsh.w r5, [r6, #257]
    863 # CHECK: ldrsh.w lr, [r7, #257]
    864 # CHECK: ldrsh r10, [r5, #-0]
    865 
    866 0x35 0xf9 0x04 0x5c
    867 0xb6 0xf9 0x20 0x50
    868 0xb6 0xf9 0x21 0x50
    869 0xb6 0xf9 0x01 0x51
    870 0xb7 0xf9 0x01 0xe1
    871 0x35 0xf9 0x00 0xac
    872 
    873 #------------------------------------------------------------------------------
    874 # LDRSH(register)
    875 #------------------------------------------------------------------------------
    876 # CHECK: ldrsh.w r1, [r8, r1]
    877 # CHECK: ldrsh.w r4, [r5, r2]
    878 # CHECK: ldrsh.w r6, [r0, r2, lsl #3]
    879 # CHECK: ldrsh.w r8, [r8, r2, lsl #2]
    880 # CHECK: ldrsh.w r7, [sp, r2, lsl #1]
    881 # CHECK: ldrsh.w r7, [sp, r2]
    882 # CHECK: ldrsh r5, [r8, #255]!
    883 # CHECK: ldrsh r2, [r5, #4]!
    884 # CHECK: ldrsh r1, [r4, #-4]!
    885 # CHECK: ldrsh r1, [r4, #0]!
    886 # CHECK: ldrsh lr, [r3], #255
    887 # CHECK: ldrsh r9, [r2], #4
    888 # CHECK: ldrsh r3, [sp], #-4
    889 
    890 0x38 0xf9 0x01 0x10
    891 0x35 0xf9 0x02 0x40
    892 0x30 0xf9 0x32 0x60
    893 0x38 0xf9 0x22 0x80
    894 0x3d 0xf9 0x12 0x70
    895 0x3d 0xf9 0x02 0x70
    896 0x38 0xf9 0xff 0x5f
    897 0x35 0xf9 0x04 0x2f
    898 0x34 0xf9 0x04 0x1d
    899 0x34 0xf9 0x00 0x1f
    900 0x33 0xf9 0xff 0xeb
    901 0x32 0xf9 0x04 0x9b
    902 0x3d 0xf9 0x04 0x39
    903 
    904 
    905 #------------------------------------------------------------------------------
    906 # LDRSH(literal)
    907 #------------------------------------------------------------------------------
    908 # CHECK: ldrsh.w r0, [pc, #-0]
    909 # CHECK: ldrsh.w r10, [pc, #-231]
    910 # CHECK: ldrsh.w r6, [pc, #0]
    911 0x3f 0xf9 0x00 0x00
    912 0x3f 0xf9 0xe7 0xa0
    913 0xbf 0xf9 0x00 0x60
    914 
    915 
    916 #------------------------------------------------------------------------------
    917 # LDRSHT
    918 #------------------------------------------------------------------------------
    919 # CHECK: ldrsht r1, [r2]
    920 # CHECK: ldrsht r1, [r8]
    921 # CHECK: ldrsht r1, [r8, #3]
    922 # CHECK: ldrsht r1, [r8, #255]
    923 
    924 0x32 0xf9 0x00 0x1e
    925 0x38 0xf9 0x00 0x1e
    926 0x38 0xf9 0x03 0x1e
    927 0x38 0xf9 0xff 0x1e
    928 
    929 
    930 #------------------------------------------------------------------------------
    931 # LDRT
    932 #------------------------------------------------------------------------------
    933 # CHECK: ldrt r1, [r2]
    934 # CHECK: ldrt r2, [r6]
    935 # CHECK: ldrt r3, [r7, #3]
    936 # CHECK: ldrt r4, [r9, #255]
    937 
    938 0x52 0xf8 0x00 0x1e
    939 0x56 0xf8 0x00 0x2e
    940 0x57 0xf8 0x03 0x3e
    941 0x59 0xf8 0xff 0x4e
    942 
    943 
    944 #------------------------------------------------------------------------------
    945 # LSL (immediate)
    946 #------------------------------------------------------------------------------
    947 # CHECK: lsl.w r2, r3, #12
    948 # CHECK: lsls.w r8, r3, #31
    949 # CHECK: lsls.w r2, r3, #1
    950 # CHECK: lsl.w r2, r3, #4
    951 # CHECK: lsls.w r2, r12, #15
    952 
    953 # CHECK: lsl.w r3, r3, #19
    954 # CHECK: lsls.w r8, r8, #2
    955 # CHECK: lsls.w r7, r7, #5
    956 # CHECK: lsl.w r12, r12, #21
    957 
    958 0x4f 0xea 0x03 0x32
    959 0x5f 0xea 0xc3 0x78
    960 0x5f 0xea 0x43 0x02
    961 0x4f 0xea 0x03 0x12
    962 0x5f 0xea 0xcc 0x32
    963 
    964 0x4f 0xea 0xc3 0x43
    965 0x5f 0xea 0x88 0x08
    966 0x5f 0xea 0x47 0x17
    967 0x4f 0xea 0x4c 0x5c
    968 
    969 
    970 #------------------------------------------------------------------------------
    971 # LSL (register)
    972 #------------------------------------------------------------------------------
    973 # CHECK: lsl.w r3, r4, r2
    974 # CHECK: lsl.w r1, r1, r2
    975 # CHECK: lsls.w r3, r4, r8
    976 
    977 0x04 0xfa 0x02 0xf3
    978 0x01 0xfa 0x02 0xf1
    979 0x14 0xfa 0x08 0xf3
    980 
    981 
    982 #------------------------------------------------------------------------------
    983 # LSR (immediate)
    984 #------------------------------------------------------------------------------
    985 # CHECK: lsr.w r2, r3, #12
    986 # CHECK: lsrs.w r8, r3, #32
    987 # CHECK: lsrs.w r2, r3, #1
    988 # CHECK: lsr.w r2, r3, #4
    989 # CHECK: lsrs.w r2, r12, #15
    990 
    991 # CHECK: lsr.w r3, r3, #19
    992 # CHECK: lsrs.w r8, r8, #2
    993 # CHECK: lsrs.w r7, r7, #5
    994 # CHECK: lsr.w r12, r12, #21
    995 
    996 0x4f 0xea 0x13 0x32
    997 0x5f 0xea 0x13 0x08
    998 0x5f 0xea 0x53 0x02
    999 0x4f 0xea 0x13 0x12
   1000 0x5f 0xea 0xdc 0x32
   1001 
   1002 0x4f 0xea 0xd3 0x43
   1003 0x5f 0xea 0x98 0x08
   1004 0x5f 0xea 0x57 0x17
   1005 0x4f 0xea 0x5c 0x5c
   1006 
   1007 
   1008 #------------------------------------------------------------------------------
   1009 # LSR (register)
   1010 #------------------------------------------------------------------------------
   1011 # CHECK: lsr.w r3, r4, r2
   1012 # CHECK: lsr.w r1, r1, r2
   1013 # CHECK: lsrs.w r3, r4, r8
   1014 
   1015 0x24 0xfa 0x02 0xf3
   1016 0x21 0xfa 0x02 0xf1
   1017 0x34 0xfa 0x08 0xf3
   1018 
   1019 #------------------------------------------------------------------------------
   1020 # MCR/MCR2
   1021 #------------------------------------------------------------------------------
   1022 # CHECK: mcr  p7, #1, r5, c1, c1, #4
   1023 # CHECK: mcr2  p7, #1, r5, c1, c1, #4
   1024 
   1025 0x21 0xee 0x91 0x57
   1026 0x21 0xfe 0x91 0x57
   1027 
   1028 
   1029 #------------------------------------------------------------------------------
   1030 # MCRR/MCRR2
   1031 #------------------------------------------------------------------------------
   1032 # CHECK: mcrr  p7, #15, r5, r4, c1
   1033 # CHECK: mcrr2  p7, #15, r5, r4, c1
   1034 
   1035 0x44 0xec 0xf1 0x57
   1036 0x44 0xfc 0xf1 0x57
   1037 
   1038 
   1039 #------------------------------------------------------------------------------
   1040 # MLA/MLS
   1041 #------------------------------------------------------------------------------
   1042 # CHECK: mla  r1, r2, r3, r4
   1043 # CHECK: mls  r1, r2, r3, r4
   1044 
   1045 0x02 0xfb 0x03 0x41
   1046 0x02 0xfb 0x13 0x41
   1047 
   1048 
   1049 #------------------------------------------------------------------------------
   1050 # MOV(immediate)
   1051 #------------------------------------------------------------------------------
   1052 # CHECK: movs r1, #21
   1053 # CHECK: movs.w r1, #21
   1054 # CHECK: movs.w r8, #21
   1055 # CHECK: movw r0, #65535
   1056 # CHECK: movw r1, #43777
   1057 # CHECK: movw r1, #43792
   1058 # CHECK: mov.w r0, #66846720
   1059 # CHECK: mov.w r0, #66846720
   1060 # CHECK: movs.w r0, #66846720
   1061 
   1062 0x15 0x21
   1063 0x5f 0xf0 0x15 0x01
   1064 0x5f 0xf0 0x15 0x08
   1065 0x4f 0xf6 0xff 0x70
   1066 0x4a 0xf6 0x01 0x31
   1067 0x4a 0xf6 0x10 0x31
   1068 0x4f 0xf0 0x7f 0x70
   1069 0x4f 0xf0 0x7f 0x70
   1070 0x5f 0xf0 0x7f 0x70
   1071 
   1072 #------------------------------------------------------------------------------
   1073 # MOVT
   1074 #------------------------------------------------------------------------------
   1075 # CHECK: movt r3, #7
   1076 # CHECK: movt r6, #65535
   1077 # CHECK: it eq
   1078 # CHECK: movteq r4, #4080
   1079 
   1080 0xc0 0xf2 0x07 0x03
   1081 0xcf 0xf6 0xff 0x76
   1082 0x08 0xbf
   1083 0xc0 0xf6 0xf0 0x74
   1084 
   1085 #------------------------------------------------------------------------------
   1086 # MRC/MRC2
   1087 #------------------------------------------------------------------------------
   1088 # CHECK: mrc  p14, #0, r1, c1, c2, #4
   1089 # CHECK: mrc2  p14, #0, r1, c1, c2, #4
   1090 
   1091 0x11 0xee 0x92 0x1e
   1092 0x11 0xfe 0x92 0x1e
   1093 
   1094 
   1095 #------------------------------------------------------------------------------
   1096 # MRRC/MRRC2
   1097 #------------------------------------------------------------------------------
   1098 # CHECK: mrrc  p7, #1, r5, r4, c1
   1099 # CHECK: mrrc2  p7, #1, r5, r4, c1
   1100 
   1101 0x54 0xec 0x11 0x57
   1102 0x54 0xfc 0x11 0x57
   1103 
   1104 
   1105 #------------------------------------------------------------------------------
   1106 # MRS
   1107 #------------------------------------------------------------------------------
   1108 # CHECK: mrs  r8, apsr
   1109 # CHECK: mrs  r8, spsr
   1110 
   1111 0xef 0xf3 0x00 0x88
   1112 0xff 0xf3 0x00 0x88
   1113 
   1114 
   1115 #------------------------------------------------------------------------------
   1116 # MSR
   1117 #------------------------------------------------------------------------------
   1118 # CHECK: msr  APSR_nzcvq, r1
   1119 # CHECK: msr  APSR_g, r2
   1120 # CHECK: msr  APSR_nzcvq, r3
   1121 # CHECK: msr  APSR_nzcvq, r4
   1122 # CHECK: msr  APSR_nzcvqg, r5
   1123 # CHECK: msr  CPSR_fc, r6
   1124 # CHECK: msr  CPSR_c, r7
   1125 # CHECK: msr  CPSR_x, r8
   1126 # CHECK: msr  CPSR_fc, r9
   1127 # CHECK: msr  CPSR_fc, r11
   1128 # CHECK: msr  CPSR_fsx, r12
   1129 # CHECK: msr  SPSR_fc, r0
   1130 # CHECK: msr  SPSR_fsxc, r5
   1131 # CHECK: msr  CPSR_fsxc, r8
   1132 
   1133 0x81 0xf3 0x00 0x88
   1134 0x82 0xf3 0x00 0x84
   1135 0x83 0xf3 0x00 0x88
   1136 0x84 0xf3 0x00 0x88
   1137 0x85 0xf3 0x00 0x8c
   1138 0x86 0xf3 0x00 0x89
   1139 0x87 0xf3 0x00 0x81
   1140 0x88 0xf3 0x00 0x82
   1141 0x89 0xf3 0x00 0x89
   1142 0x8b 0xf3 0x00 0x89
   1143 0x8c 0xf3 0x00 0x8e
   1144 0x90 0xf3 0x00 0x89
   1145 0x95 0xf3 0x00 0x8f
   1146 0x88 0xf3 0x00 0x8f
   1147 
   1148 
   1149 #------------------------------------------------------------------------------
   1150 # MUL
   1151 #------------------------------------------------------------------------------
   1152 # CHECK: muls r3, r4, r3
   1153 # CHECK: mul r3, r4, r3
   1154 # CHECK: mul r3, r4, r6
   1155 # CHECK: it eq
   1156 # CHECK: muleq r3, r4, r5
   1157 
   1158 0x63 0x43
   1159 0x04 0xfb 0x03 0xf3
   1160 0x04 0xfb 0x06 0xf3
   1161 0x08 0xbf
   1162 0x04 0xfb 0x05 0xf3
   1163 
   1164 
   1165 #------------------------------------------------------------------------------
   1166 # MVN(immediate)
   1167 #------------------------------------------------------------------------------
   1168 # CHECK: mvns r8, #21
   1169 # CHECK: mvn r0, #66846720
   1170 # CHECK: mvns r0, #66846720
   1171 # CHECK: itte eq
   1172 # CHECK: mvnseq r1, #12
   1173 # CHECK: mvneq r1, #12
   1174 # CHECK: mvnne r1, #12
   1175 
   1176 0x7f 0xf0 0x15 0x08
   1177 0x6f 0xf0 0x7f 0x70
   1178 0x7f 0xf0 0x7f 0x70
   1179 0x06 0xbf
   1180 0x7f 0xf0 0x0c 0x01
   1181 0x6f 0xf0 0x0c 0x01
   1182 0x6f 0xf0 0x0c 0x01
   1183 
   1184 
   1185 #------------------------------------------------------------------------------
   1186 # MVN(register)
   1187 #------------------------------------------------------------------------------
   1188 # CHECK: mvn.w r2, r3
   1189 # CHECK: mvns r2, r3
   1190 # CHECK: mvn.w r5, r6, lsl #19
   1191 # CHECK: mvn.w r5, r6, lsr #9
   1192 # CHECK: mvn.w r5, r6, asr #4
   1193 # CHECK: mvn.w r5, r6, ror #6
   1194 # CHECK: mvn.w r5, r6, rrx
   1195 # CHECK: it eq
   1196 # CHECK: mvneq r2, r3
   1197 
   1198 0x6f 0xea 0x03 0x02
   1199 0xda 0x43
   1200 0x6f 0xea 0xc6 0x45
   1201 0x6f 0xea 0x56 0x25
   1202 0x6f 0xea 0x26 0x15
   1203 0x6f 0xea 0xb6 0x15
   1204 0x6f 0xea 0x36 0x05
   1205 0x08 0xbf
   1206 0xda 0x43
   1207 
   1208 #------------------------------------------------------------------------------
   1209 # NOP
   1210 #------------------------------------------------------------------------------
   1211 # CHECK: nop.w
   1212 
   1213 0xaf 0xf3 0x00 0x80
   1214 
   1215 
   1216 #------------------------------------------------------------------------------
   1217 # ORN
   1218 #------------------------------------------------------------------------------
   1219 # CHECK: orn r4, r5, #61440
   1220 # CHECK: orn r4, r5, r6
   1221 # CHECK: orns r4, r5, r6
   1222 # CHECK: orn r4, r5, r6, lsl #5
   1223 # CHECK: orns r4, r5, r6, lsr #5
   1224 # CHECK: orn r4, r5, r6, lsr #5
   1225 # CHECK: orns r4, r5, r6, asr #5
   1226 # CHECK: orn r4, r5, r6, ror #5
   1227 
   1228 0x65 0xf4 0x70 0x44
   1229 0x65 0xea 0x06 0x04
   1230 0x75 0xea 0x06 0x04
   1231 0x65 0xea 0x46 0x14
   1232 0x75 0xea 0x56 0x14
   1233 0x65 0xea 0x56 0x14
   1234 0x75 0xea 0x66 0x14
   1235 0x65 0xea 0x76 0x14
   1236 
   1237 
   1238 #------------------------------------------------------------------------------
   1239 # ORR
   1240 #------------------------------------------------------------------------------
   1241 # CHECK: orr r4, r5, #61440
   1242 # CHECK: orr.w r4, r5, r6
   1243 # CHECK: orr.w r4, r5, r6, lsl #5
   1244 # CHECK: orrs.w r4, r5, r6, lsr #5
   1245 # CHECK: orr.w r4, r5, r6, lsr #5
   1246 # CHECK: orrs.w r4, r5, r6, asr #5
   1247 # CHECK: orr.w r4, r5, r6, ror #5
   1248 
   1249 0x45 0xf4 0x70 0x44
   1250 0x45 0xea 0x06 0x04
   1251 0x45 0xea 0x46 0x14
   1252 0x55 0xea 0x56 0x14
   1253 0x45 0xea 0x56 0x14
   1254 0x55 0xea 0x66 0x14
   1255 0x45 0xea 0x76 0x14
   1256 
   1257 
   1258 #------------------------------------------------------------------------------
   1259 # PKH
   1260 #------------------------------------------------------------------------------
   1261 # CHECK: pkhbt r2, r2, r3
   1262 # CHECK: pkhbt r2, r2, r3, lsl #31
   1263 # CHECK: pkhbt r2, r2, r3, lsl #15
   1264 
   1265 # CHECK: pkhtb r2, r2, r3, asr #31
   1266 # CHECK: pkhtb r2, r2, r3, asr #15
   1267 
   1268 0xc2 0xea 0x03 0x02
   1269 0xc2 0xea 0xc3 0x72
   1270 0xc2 0xea 0xc3 0x32
   1271 
   1272 0xc2 0xea 0xe3 0x72
   1273 0xc2 0xea 0xe3 0x32
   1274 
   1275 
   1276 #------------------------------------------------------------------------------
   1277 # PLD(immediate)
   1278 #------------------------------------------------------------------------------
   1279 # CHECK: pld [r5, #-4]
   1280 # CHECK: pld [r6, #32]
   1281 # CHECK: pld [r6, #33]
   1282 # CHECK: pld [r6, #257]
   1283 # CHECK: pld [r7, #257]
   1284 
   1285 0x15 0xf8 0x04 0xfc
   1286 0x96 0xf8 0x20 0xf0
   1287 0x96 0xf8 0x21 0xf0
   1288 0x96 0xf8 0x01 0xf1
   1289 0x97 0xf8 0x01 0xf1
   1290 
   1291 #------------------------------------------------------------------------------
   1292 # PLD(register)
   1293 #------------------------------------------------------------------------------
   1294 # CHECK: pld [r8, r1]
   1295 # CHECK: pld [r5, r2]
   1296 # CHECK: pld [r0, r2, lsl #3]
   1297 # CHECK: pld [r8, r2, lsl #2]
   1298 # CHECK: pld [sp, r2, lsl #1]
   1299 # CHECK: pld [sp, r2]
   1300 
   1301 0x18 0xf8 0x01 0xf0
   1302 0x15 0xf8 0x02 0xf0
   1303 0x10 0xf8 0x32 0xf0
   1304 0x18 0xf8 0x22 0xf0
   1305 0x1d 0xf8 0x12 0xf0
   1306 0x1d 0xf8 0x02 0xf0
   1307 
   1308 #------------------------------------------------------------------------------
   1309 # PLD(literal)
   1310 #------------------------------------------------------------------------------
   1311 # CHECK: pld [pc, #-0]
   1312 # CHECK: pld [pc, #455]
   1313 # CHECK: pld [pc, #0]
   1314 
   1315 0x1f 0xf8 0x00 0xf0
   1316 0x9f 0xf8 0xc7 0xf1
   1317 0x9f 0xf8 0x00 0xf0
   1318 
   1319 #------------------------------------------------------------------------------
   1320 # PLI(immediate)
   1321 #------------------------------------------------------------------------------
   1322 # CHECK: pli [r5, #-4]
   1323 # CHECK: pli [r6, #32]
   1324 # CHECK: pli [r6, #33]
   1325 # CHECK: pli [r6, #257]
   1326 # CHECK: pli [r7, #257]
   1327 
   1328 0x15 0xf9 0x04 0xfc
   1329 0x96 0xf9 0x20 0xf0
   1330 0x96 0xf9 0x21 0xf0
   1331 0x96 0xf9 0x01 0xf1
   1332 0x97 0xf9 0x01 0xf1
   1333 
   1334 #------------------------------------------------------------------------------
   1335 # PLI(register)
   1336 #------------------------------------------------------------------------------
   1337 # CHECK: pli [r8, r1]
   1338 # CHECK: pli [r5, r2]
   1339 # CHECK: pli [r0, r2, lsl #3]
   1340 # CHECK: pli [r8, r2, lsl #2]
   1341 # CHECK: pli [sp, r2, lsl #1]
   1342 # CHECK: pli [sp, r2]
   1343 
   1344 0x18 0xf9 0x01 0xf0
   1345 0x15 0xf9 0x02 0xf0
   1346 0x10 0xf9 0x32 0xf0
   1347 0x18 0xf9 0x22 0xf0
   1348 0x1d 0xf9 0x12 0xf0
   1349 0x1d 0xf9 0x02 0xf0
   1350 
   1351 #------------------------------------------------------------------------------
   1352 # PLI(literal)
   1353 #------------------------------------------------------------------------------
   1354 # CHECK: pli [pc, #-0]
   1355 # CHECK: pli [pc, #-328]
   1356 # CHECK: pli [pc, #0]
   1357 
   1358 0x1f 0xf9 0x00 0xf0
   1359 0x1f 0xf9 0x48 0xf1
   1360 0x9f 0xf9 0x00 0xf0
   1361 
   1362 
   1363 #------------------------------------------------------------------------------
   1364 # QADD/QADD16/QADD8
   1365 #------------------------------------------------------------------------------
   1366 # CHECK: qadd r1, r2, r3
   1367 # CHECK: qadd16 r1, r2, r3
   1368 # CHECK: qadd8 r1, r2, r3
   1369 # CHECK: itte gt
   1370 # CHECK: qaddgt r1, r2, r3
   1371 # CHECK: qadd16gt r1, r2, r3
   1372 # CHECK: qadd8le r1, r2, r3
   1373 
   1374 0x83 0xfa 0x82 0xf1
   1375 0x92 0xfa 0x13 0xf1
   1376 0x82 0xfa 0x13 0xf1
   1377 0xc6 0xbf
   1378 0x83 0xfa 0x82 0xf1
   1379 0x92 0xfa 0x13 0xf1
   1380 0x82 0xfa 0x13 0xf1
   1381 
   1382 
   1383 #------------------------------------------------------------------------------
   1384 # QDADD/QDSUB
   1385 #------------------------------------------------------------------------------
   1386 # CHECK: qdadd r6, r7, r8
   1387 # CHECK: qdsub r6, r7, r8
   1388 # CHECK: itt hi
   1389 # CHECK: qdaddhi r6, r7, r8
   1390 # CHECK: qdsubhi r6, r7, r8
   1391 
   1392 0x88 0xfa 0x97 0xf6
   1393 0x88 0xfa 0xb7 0xf6
   1394 0x84 0xbf
   1395 0x88 0xfa 0x97 0xf6
   1396 0x88 0xfa 0xb7 0xf6
   1397 
   1398 
   1399 #------------------------------------------------------------------------------
   1400 # QSAX
   1401 #------------------------------------------------------------------------------
   1402 # CHECK: qsax r9, r12, r0
   1403 # CHECK: it eq
   1404 # CHECK: qsaxeq r9, r12, r0
   1405 
   1406 0xec 0xfa 0x10 0xf9
   1407 0x08 0xbf
   1408 0xec 0xfa 0x10 0xf9
   1409 
   1410 
   1411 #------------------------------------------------------------------------------
   1412 # QSUB/QSUB16/QSUB8
   1413 #------------------------------------------------------------------------------
   1414 # CHECK: qsub r1, r2, r3
   1415 # CHECK: qsub16 r1, r2, r3
   1416 # CHECK: qsub8 r1, r2, r3
   1417 # CHECK: itet le
   1418 # CHECK: qsuble r1, r2, r3
   1419 # CHECK: qsub16gt r1, r2, r3
   1420 # CHECK: qsub8le r1, r2, r3
   1421 
   1422 0x83 0xfa 0xa2 0xf1
   1423 0xd2 0xfa 0x13 0xf1
   1424 0xc2 0xfa 0x13 0xf1
   1425 0xd6 0xbf
   1426 0x83 0xfa 0xa2 0xf1
   1427 0xd2 0xfa 0x13 0xf1
   1428 0xc2 0xfa 0x13 0xf1
   1429 
   1430 
   1431 #------------------------------------------------------------------------------
   1432 # RBIT
   1433 #------------------------------------------------------------------------------
   1434 # CHECK: rbit r1, r2
   1435 # CHECK: it ne
   1436 # CHECK: rbitne r1, r2
   1437 
   1438 0x92 0xfa 0xa2 0xf1
   1439 0x18 0xbf
   1440 0x92 0xfa 0xa2 0xf1
   1441 
   1442 
   1443 #------------------------------------------------------------------------------
   1444 # REV
   1445 #------------------------------------------------------------------------------
   1446 # CHECK: rev.w r1, r2
   1447 # CHECK: rev.w r2, r8
   1448 # CHECK: itt ne
   1449 # CHECK: revne r1, r2
   1450 # CHECK: revne.w r1, r8
   1451 
   1452 0x92 0xfa 0x82 0xf1
   1453 0x98 0xfa 0x88 0xf2
   1454 0x1c 0xbf
   1455 0x11 0xba
   1456 0x98 0xfa 0x88 0xf1
   1457 
   1458 
   1459 #------------------------------------------------------------------------------
   1460 # REV16
   1461 #------------------------------------------------------------------------------
   1462 # CHECK: rev16.w r1, r2
   1463 # CHECK: rev16.w r2, r8
   1464 # CHECK: itt ne
   1465 # CHECK: rev16ne r1, r2
   1466 # CHECK: rev16ne.w r1, r8
   1467 
   1468 0x92 0xfa 0x92 0xf1
   1469 0x98 0xfa 0x98 0xf2
   1470 0x1c 0xbf
   1471 0x51 0xba
   1472 0x98 0xfa 0x98 0xf1
   1473 
   1474 
   1475 #------------------------------------------------------------------------------
   1476 # REVSH
   1477 #------------------------------------------------------------------------------
   1478 # CHECK: revsh.w r1, r2
   1479 # CHECK: revsh.w r2, r8
   1480 # CHECK: itt ne
   1481 # CHECK: revshne r1, r2
   1482 # CHECK: revshne.w r1, r8
   1483 
   1484 0x92 0xfa 0xb2 0xf1
   1485 0x98 0xfa 0xb8 0xf2
   1486 0x1c 0xbf
   1487 0xd1 0xba
   1488 0x98 0xfa 0xb8 0xf1
   1489 
   1490 
   1491 #------------------------------------------------------------------------------
   1492 # ROR (immediate)
   1493 #------------------------------------------------------------------------------
   1494 # CHECK: ror.w r2, r3, #12
   1495 # CHECK: rors.w r8, r3, #31
   1496 # CHECK: rors.w r2, r3, #1
   1497 # CHECK: ror.w r2, r3, #4
   1498 # CHECK: rors.w r2, r12, #15
   1499 
   1500 # CHECK: ror.w r3, r3, #19
   1501 # CHECK: rors.w r8, r8, #2
   1502 # CHECK: rors.w r7, r7, #5
   1503 # CHECK: ror.w r12, r12, #21
   1504 
   1505 0x4f 0xea 0x33 0x32
   1506 0x5f 0xea 0xf3 0x78
   1507 0x5f 0xea 0x73 0x02
   1508 0x4f 0xea 0x33 0x12
   1509 0x5f 0xea 0xfc 0x32
   1510 
   1511 0x4f 0xea 0xf3 0x43
   1512 0x5f 0xea 0xb8 0x08
   1513 0x5f 0xea 0x77 0x17
   1514 0x4f 0xea 0x7c 0x5c
   1515 
   1516 
   1517 #------------------------------------------------------------------------------
   1518 # ROR (register)
   1519 #------------------------------------------------------------------------------
   1520 # CHECK: ror.w r3, r4, r2
   1521 # CHECK: ror.w r1, r1, r2
   1522 # CHECK: rors.w r3, r4, r8
   1523 
   1524 0x64 0xfa 0x02 0xf3
   1525 0x61 0xfa 0x02 0xf1
   1526 0x74 0xfa 0x08 0xf3
   1527 
   1528 
   1529 #------------------------------------------------------------------------------
   1530 # RRX
   1531 #------------------------------------------------------------------------------
   1532 # CHECK: rrx r1, r2
   1533 # CHECK: rrxs r1, r2
   1534 # CHECK: ite lt
   1535 # CHECK: rrxlt r9, r12
   1536 # CHECK: rrxsge r8, r3
   1537 
   1538 0x4f 0xea 0x32 0x01
   1539 0x5f 0xea 0x32 0x01
   1540 0xb4 0xbf
   1541 0x4f 0xea 0x3c 0x09
   1542 0x5f 0xea 0x33 0x08
   1543 
   1544 #------------------------------------------------------------------------------
   1545 # RSB (immediate)
   1546 #------------------------------------------------------------------------------
   1547 # CHECK: rsb.w r2, r5, #1044480
   1548 # CHECK: rsbs.w r3, r12, #15
   1549 # CHECK: rsb.w r1, r1, #255
   1550 
   1551 0xc5 0xf5 0x7f 0x22
   1552 0xdc 0xf1 0x0f 0x03
   1553 0xc1 0xf1 0xff 0x01
   1554 
   1555 
   1556 #------------------------------------------------------------------------------
   1557 # RSB (register)
   1558 #------------------------------------------------------------------------------
   1559 # CHECK: rsb r4, r4, r8
   1560 # CHECK: rsb r4, r9, r8
   1561 # CHECK: rsb r1, r4, r8, asr #3
   1562 # CHECK: rsbs r2, r1, r7, lsl #1
   1563 
   1564 0xc4 0xeb 0x08 0x04
   1565 0xc9 0xeb 0x08 0x04
   1566 0xc4 0xeb 0xe8 0x01
   1567 0xd1 0xeb 0x47 0x02
   1568 
   1569 
   1570 #------------------------------------------------------------------------------
   1571 # SADD16
   1572 #------------------------------------------------------------------------------
   1573 # CHECK: sadd16 r3, r4, r8
   1574 # CHECK: it ne
   1575 # CHECK: sadd16ne r3, r4, r8
   1576 
   1577 0x94 0xfa 0x08 0xf3
   1578 0x18 0xbf
   1579 0x94 0xfa 0x08 0xf3
   1580 
   1581 
   1582 #------------------------------------------------------------------------------
   1583 # SADD8
   1584 #------------------------------------------------------------------------------
   1585 # CHECK: sadd8 r3, r4, r8
   1586 # CHECK: it ne
   1587 # CHECK: sadd8ne r3, r4, r8
   1588 
   1589 0x84 0xfa 0x08 0xf3
   1590 0x18 0xbf
   1591 0x84 0xfa 0x08 0xf3
   1592 
   1593 
   1594 #------------------------------------------------------------------------------
   1595 # SASX
   1596 #------------------------------------------------------------------------------
   1597 # CHECK: sasx r9, r2, r7
   1598 # CHECK: it ne
   1599 # CHECK: sasxne r2, r5, r6
   1600 
   1601 0xa2 0xfa 0x07 0xf9
   1602 0x18 0xbf
   1603 0xa5 0xfa 0x06 0xf2
   1604 
   1605 
   1606 #------------------------------------------------------------------------------
   1607 # SBC (immediate)
   1608 #------------------------------------------------------------------------------
   1609 # CHECK: sbc r0, r1, #4
   1610 # CHECK: sbcs r0, r1, #0
   1611 # CHECK: sbc r1, r2, #255
   1612 # CHECK: sbc r3, r7, #5570645
   1613 # CHECK: sbc r8, r12, #2852170240
   1614 # CHECK: sbc r9, r7, #2779096485
   1615 # CHECK: sbc r5, r3, #2264924160
   1616 # CHECK: sbc r4, r2, #2139095040
   1617 # CHECK: sbc r4, r2, #1664
   1618 
   1619 0x61 0xf1 0x04 0x00
   1620 0x71 0xf1 0x00 0x00
   1621 0x62 0xf1 0xff 0x01
   1622 0x67 0xf1 0x55 0x13
   1623 0x6c 0xf1 0xaa 0x28
   1624 0x67 0xf1 0xa5 0x39
   1625 0x63 0xf1 0x07 0x45
   1626 0x62 0xf1 0xff 0x44
   1627 0x62 0xf5 0xd0 0x64
   1628 
   1629 
   1630 #------------------------------------------------------------------------------
   1631 # SBC (register)
   1632 #------------------------------------------------------------------------------
   1633 # CHECK: sbc.w r4, r5, r6
   1634 # CHECK: sbcs.w r4, r5, r6
   1635 # CHECK: sbc.w r9, r1, r3
   1636 # CHECK: sbcs.w r9, r1, r3
   1637 # CHECK: sbc.w r0, r1, r3, ror #4
   1638 # CHECK: sbcs.w r0, r1, r3, lsl #7
   1639 # CHECK: sbc.w r0, r1, r3, lsr #31
   1640 # CHECK: sbcs.w r0, r1, r3, asr #32
   1641 
   1642 0x65 0xeb 0x06 0x04
   1643 0x75 0xeb 0x06 0x04
   1644 0x61 0xeb 0x03 0x09
   1645 0x71 0xeb 0x03 0x09
   1646 0x61 0xeb 0x33 0x10
   1647 0x71 0xeb 0xc3 0x10
   1648 0x61 0xeb 0xd3 0x70
   1649 0x71 0xeb 0x23 0x00
   1650 
   1651 
   1652 #------------------------------------------------------------------------------
   1653 # SBFX
   1654 #------------------------------------------------------------------------------
   1655 # CHECK: sbfx r4, r5, #16, #1
   1656 # CHECK: it gt
   1657 # CHECK: sbfxgt r4, r5, #16, #16
   1658 
   1659 0x45 0xf3 0x00 0x44
   1660 0xc8 0xbf
   1661 0x45 0xf3 0x0f 0x44
   1662 
   1663 
   1664 #------------------------------------------------------------------------------
   1665 # SEL
   1666 #------------------------------------------------------------------------------
   1667 # CHECK: sel r5, r9, r2
   1668 # CHECK: it le
   1669 # CHECK: selle r5, r9, r2
   1670 
   1671 0xa9 0xfa 0x82 0xf5
   1672 0xd8 0xbf
   1673 0xa9 0xfa 0x82 0xf5
   1674 
   1675 
   1676 #------------------------------------------------------------------------------
   1677 # SEV
   1678 #------------------------------------------------------------------------------
   1679 # CHECK: sev.w
   1680 # CHECK: it eq
   1681 # CHECK: seveq.w
   1682 
   1683 0xaf 0xf3 0x04 0x80
   1684 0x08 0xbf
   1685 0xaf 0xf3 0x04 0x80
   1686 
   1687 
   1688 #------------------------------------------------------------------------------
   1689 # SADD16/SADD8
   1690 #------------------------------------------------------------------------------
   1691 # CHECK: sadd16 r1, r2, r3
   1692 # CHECK: sadd8 r1, r2, r3
   1693 # CHECK: ite gt
   1694 # CHECK: sadd16gt r1, r2, r3
   1695 # CHECK: sadd8le r1, r2, r3
   1696 
   1697 0x92 0xfa 0x03 0xf1
   1698 0x82 0xfa 0x03 0xf1
   1699 0xcc 0xbf
   1700 0x92 0xfa 0x03 0xf1
   1701 0x82 0xfa 0x03 0xf1
   1702 
   1703 
   1704 #------------------------------------------------------------------------------
   1705 # SHASX
   1706 #------------------------------------------------------------------------------
   1707 # CHECK: shasx r4, r8, r2
   1708 # CHECK: it gt
   1709 # CHECK: shasxgt r4, r8, r2
   1710 
   1711 0xa8 0xfa 0x22 0xf4
   1712 0xc8 0xbf
   1713 0xa8 0xfa 0x22 0xf4
   1714 
   1715 
   1716 #------------------------------------------------------------------------------
   1717 # SHASX
   1718 #------------------------------------------------------------------------------
   1719 # CHECK: shsax r4, r8, r2
   1720 # CHECK: it gt
   1721 # CHECK: shsaxgt r4, r8, r2
   1722 
   1723 0xe8 0xfa 0x22 0xf4
   1724 0xc8 0xbf
   1725 0xe8 0xfa 0x22 0xf4
   1726 
   1727 
   1728 #------------------------------------------------------------------------------
   1729 # SHSUB16/SHSUB8
   1730 #------------------------------------------------------------------------------
   1731 # CHECK: shsub16 r4, r8, r2
   1732 # CHECK: shsub8 r4, r8, r2
   1733 # CHECK: itt gt
   1734 # CHECK: shsub16gt r4, r8, r2
   1735 # CHECK: shsub8gt r4, r8, r2
   1736 
   1737 0xd8 0xfa 0x22 0xf4
   1738 0xc8 0xfa 0x22 0xf4
   1739 0xc4 0xbf
   1740 0xd8 0xfa 0x22 0xf4
   1741 0xc8 0xfa 0x22 0xf4
   1742 
   1743 
   1744 #------------------------------------------------------------------------------
   1745 # SMLABB/SMLABT/SMLATB/SMLATT
   1746 #------------------------------------------------------------------------------
   1747 # CHECK: smlabb r3, r1, r9, r0
   1748 # CHECK: smlabt r5, r6, r4, r1
   1749 # CHECK: smlatb r4, r2, r3, r2
   1750 # CHECK: smlatt r8, r3, r8, r4
   1751 # CHECK: itete gt
   1752 # CHECK: smlabbgt r3, r1, r9, r0
   1753 # CHECK: smlabtle r5, r6, r4, r1
   1754 # CHECK: smlatbgt r4, r2, r3, r2
   1755 # CHECK: smlattle r8, r3, r8, r4
   1756 
   1757 0x11 0xfb 0x09 0x03
   1758 0x16 0xfb 0x14 0x15
   1759 0x12 0xfb 0x23 0x24
   1760 0x13 0xfb 0x38 0x48
   1761 0xcb 0xbf
   1762 0x11 0xfb 0x09 0x03
   1763 0x16 0xfb 0x14 0x15
   1764 0x12 0xfb 0x23 0x24
   1765 0x13 0xfb 0x38 0x48
   1766 
   1767 
   1768 #------------------------------------------------------------------------------
   1769 # SMLAD/SMLADX
   1770 #------------------------------------------------------------------------------
   1771 # CHECK: smlad r2, r3, r5, r8
   1772 # CHECK: smladx r2, r3, r5, r8
   1773 # CHECK: itt hi
   1774 # CHECK: smladhi r2, r3, r5, r8
   1775 # CHECK: smladxhi r2, r3, r5, r8
   1776 
   1777 0x23 0xfb 0x05 0x82
   1778 0x23 0xfb 0x15 0x82
   1779 0x84 0xbf
   1780 0x23 0xfb 0x05 0x82
   1781 0x23 0xfb 0x15 0x82
   1782 
   1783 
   1784 #------------------------------------------------------------------------------
   1785 # SMLAL
   1786 #------------------------------------------------------------------------------
   1787 # CHECK: smlal r2, r3, r5, r8
   1788 # CHECK: it eq
   1789 # CHECK: smlaleq r2, r3, r5, r8
   1790 
   1791 0xc5 0xfb 0x08 0x23
   1792 0x08 0xbf
   1793 0xc5 0xfb 0x08 0x23
   1794 
   1795 
   1796 #------------------------------------------------------------------------------
   1797 # SMLALBB/SMLALBT/SMLALTB/SMLALTT
   1798 #------------------------------------------------------------------------------
   1799 # CHECK: smlalbb r3, r1, r9, r0
   1800 # CHECK: smlalbt r5, r6, r4, r1
   1801 # CHECK: smlaltb r4, r2, r3, r2
   1802 # CHECK: smlaltt r8, r3, r8, r4
   1803 # CHECK: iteet ge
   1804 # CHECK: smlalbbge r3, r1, r9, r0
   1805 # CHECK: smlalbtlt r5, r6, r4, r1
   1806 # CHECK: smlaltblt r4, r2, r3, r2
   1807 # CHECK: smlalttge r8, r3, r8, r4
   1808 
   1809 0xc9 0xfb 0x80 0x31
   1810 0xc4 0xfb 0x91 0x56
   1811 0xc3 0xfb 0xa2 0x42
   1812 0xc8 0xfb 0xb4 0x83
   1813 0xad 0xbf
   1814 0xc9 0xfb 0x80 0x31
   1815 0xc4 0xfb 0x91 0x56
   1816 0xc3 0xfb 0xa2 0x42
   1817 0xc8 0xfb 0xb4 0x83
   1818 
   1819 #------------------------------------------------------------------------------
   1820 # SMLALD/SMLALDX
   1821 #------------------------------------------------------------------------------
   1822 # CHECK: smlald r2, r3, r5, r8
   1823 # CHECK: smlaldx r2, r3, r5, r8
   1824 # CHECK: ite eq
   1825 # CHECK: smlaldeq r2, r3, r5, r8
   1826 # CHECK: smlaldxne r2, r3, r5, r8
   1827 
   1828 0xc5 0xfb 0xc8 0x23
   1829 0xc5 0xfb 0xd8 0x23
   1830 0x0c 0xbf
   1831 0xc5 0xfb 0xc8 0x23
   1832 0xc5 0xfb 0xd8 0x23
   1833 
   1834 
   1835 #------------------------------------------------------------------------------
   1836 # SMLAWB/SMLAWT
   1837 #------------------------------------------------------------------------------
   1838 # CHECK: smlawb r2, r3, r10, r8
   1839 # CHECK: smlawt r8, r3, r5, r9
   1840 # CHECK: ite eq
   1841 # CHECK: smlawbeq r2, r7, r5, r8
   1842 # CHECK: smlawtne r1, r3, r0, r8
   1843 
   1844 0x33 0xfb 0x0a 0x82
   1845 0x33 0xfb 0x15 0x98
   1846 0x0c 0xbf
   1847 0x37 0xfb 0x05 0x82
   1848 0x33 0xfb 0x10 0x81
   1849 
   1850 
   1851 #------------------------------------------------------------------------------
   1852 # SMLSD/SMLSDX
   1853 #------------------------------------------------------------------------------
   1854 # CHECK: smlsd r2, r3, r5, r8
   1855 # CHECK: smlsdx r2, r3, r5, r8
   1856 # CHECK: ite le
   1857 # CHECK: smlsdle r2, r3, r5, r8
   1858 # CHECK: smlsdxgt r2, r3, r5, r8
   1859 
   1860 0x43 0xfb 0x05 0x82
   1861 0x43 0xfb 0x15 0x82
   1862 0xd4 0xbf
   1863 0x43 0xfb 0x05 0x82
   1864 0x43 0xfb 0x15 0x82
   1865 
   1866 
   1867 #------------------------------------------------------------------------------
   1868 # SMLSLD/SMLSLDX
   1869 #------------------------------------------------------------------------------
   1870 # CHECK: smlsld r2, r9, r5, r1
   1871 # CHECK: smlsldx r4, r11, r2, r8
   1872 # CHECK: ite ge
   1873 # CHECK: smlsldge r8, r2, r5, r6
   1874 # CHECK: smlsldxlt r1, r0, r3, r8
   1875 
   1876 0xd5 0xfb 0xc1 0x29
   1877 0xd2 0xfb 0xd8 0x4b
   1878 0xac 0xbf
   1879 0xd5 0xfb 0xc6 0x82
   1880 0xd3 0xfb 0xd8 0x10
   1881 
   1882 
   1883 #------------------------------------------------------------------------------
   1884 # SMMLA/SMMLAR
   1885 #------------------------------------------------------------------------------
   1886 # CHECK: smmla r1, r2, r3, r4
   1887 # CHECK: smmlar r4, r3, r2, r1
   1888 # CHECK: ite lo
   1889 # CHECK: smmlalo r1, r2, r3, r4
   1890 # CHECK: smmlarhs r4, r3, r2, r1
   1891 
   1892 0x52 0xfb 0x03 0x41
   1893 0x53 0xfb 0x12 0x14
   1894 0x34 0xbf
   1895 0x52 0xfb 0x03 0x41
   1896 0x53 0xfb 0x12 0x14
   1897 
   1898 
   1899 #------------------------------------------------------------------------------
   1900 # SMMLS/SMMLSR
   1901 #------------------------------------------------------------------------------
   1902 # CHECK: smmls r1, r2, r3, r4
   1903 # CHECK: smmlsr r4, r3, r2, r1
   1904 # CHECK: ite lo
   1905 # CHECK: smmlslo r1, r2, r3, r4
   1906 # CHECK: smmlsrhs r4, r3, r2, r1
   1907 
   1908 0x62 0xfb 0x03 0x41
   1909 0x63 0xfb 0x12 0x14
   1910 0x34 0xbf
   1911 0x62 0xfb 0x03 0x41
   1912 0x63 0xfb 0x12 0x14
   1913 
   1914 #------------------------------------------------------------------------------
   1915 # SSAT
   1916 #------------------------------------------------------------------------------
   1917 # CHECK: ssat r9, #30, r0, asr #2
   1918 
   1919 0x20 0xf3 0x9d 0x09
   1920 
   1921 #------------------------------------------------------------------------------
   1922 # STR (immediate)
   1923 #------------------------------------------------------------------------------
   1924 # CHECK: str r10, [r11], #0
   1925 
   1926 0x4b 0xf8 0x00 0xab
   1927 
   1928 #------------------------------------------------------------------------------
   1929 # STRD (immediate)
   1930 #------------------------------------------------------------------------------
   1931 # CHECK: strd r1, r1, [r0], #0
   1932 # CHECK: strd r6, r3, [r5], #-8
   1933 # CHECK: strd r8, r5, [r5], #-0
   1934 # CHECK: strd r7, r4, [r5], #-4
   1935 # CHECK: strd r0, r1, [r2, #-0]!
   1936 # CHECK: strd r0, r1, [r2, #0]!
   1937 # CHECK: strd r0, r1, [r2, #-0]
   1938 
   1939 0xe0 0xe8 0x00 0x11
   1940 0x65 0xe8 0x02 0x63
   1941 0x65 0xe8 0x00 0x85
   1942 0x65 0xe8 0x01 0x74
   1943 0x62 0xe9 0x00 0x01
   1944 0xe2 0xe9 0x00 0x01
   1945 0x42 0xe9 0x00 0x01
   1946 
   1947 #------------------------------------------------------------------------------
   1948 # STREX/STREXB/STREXH/STREXD
   1949 #------------------------------------------------------------------------------
   1950 # CHECK: strex r1, r8, [r4]
   1951 # CHECK: strex r8, r2, [r4]
   1952 # CHECK: strex r2, r12, [sp, #128]
   1953 # CHECK: strexb r5, r1, [r7]
   1954 # CHECK: strexh r9, r7, [r12]
   1955 # CHECK: strexd r9, r3, r6, [r4]
   1956 
   1957 0x44 0xe8 0x00 0x81
   1958 0x44 0xe8 0x00 0x28
   1959 0x4d 0xe8 0x20 0xc2
   1960 0xc7 0xe8 0x45 0x1f
   1961 0xcc 0xe8 0x59 0x7f
   1962 0xc4 0xe8 0x79 0x36
   1963 
   1964 
   1965 #------------------------------------------------------------------------------
   1966 # STRH(immediate)
   1967 #------------------------------------------------------------------------------
   1968 # CHECK: strh r5, [r5, #-4]
   1969 # CHECK: strh r5, [r6, #32]
   1970 # CHECK: strh.w r5, [r6, #33]
   1971 # CHECK: strh.w r5, [r6, #257]
   1972 # CHECK: strh.w lr, [r7, #257]
   1973 # CHECK: strh r5, [r8, #255]!
   1974 # CHECK: strh r2, [r5, #4]!
   1975 # CHECK: strh r1, [r4, #-4]!
   1976 # CHECK: strh r1, [r4, #0]!
   1977 # CHECK: strh lr, [r3], #255
   1978 # CHECK: strh r9, [r2], #4
   1979 # CHECK: strh r3, [sp], #-4
   1980 
   1981 0x25 0xf8 0x04 0x5c
   1982 0x35 0x84
   1983 0xa6 0xf8 0x21 0x50
   1984 0xa6 0xf8 0x01 0x51
   1985 0xa7 0xf8 0x01 0xe1
   1986 0x28 0xf8 0xff 0x5f
   1987 0x25 0xf8 0x04 0x2f
   1988 0x24 0xf8 0x04 0x1d
   1989 0x24 0xf8 0x00 0x1f
   1990 0x23 0xf8 0xff 0xeb
   1991 0x22 0xf8 0x04 0x9b
   1992 0x2d 0xf8 0x04 0x39
   1993 
   1994 
   1995 #------------------------------------------------------------------------------
   1996 # STRH(register)
   1997 #------------------------------------------------------------------------------
   1998 # CHECK: strh.w r1, [r8, r1]
   1999 # CHECK: strh.w r4, [r5, r2]
   2000 # CHECK: strh.w r6, [r0, r2, lsl #3]
   2001 # CHECK: strh.w r8, [r8, r2, lsl #2]
   2002 # CHECK: strh.w r7, [sp, r2, lsl #1]
   2003 # CHECK: strh.w r7, [sp, r2]
   2004 
   2005 0x28 0xf8 0x01 0x10
   2006 0x25 0xf8 0x02 0x40
   2007 0x20 0xf8 0x32 0x60
   2008 0x28 0xf8 0x22 0x80
   2009 0x2d 0xf8 0x12 0x70
   2010 0x2d 0xf8 0x02 0x70
   2011 
   2012 
   2013 #------------------------------------------------------------------------------
   2014 # STRHT
   2015 #------------------------------------------------------------------------------
   2016 # CHECK: strht r1, [r2]
   2017 # CHECK: strht r1, [r8]
   2018 # CHECK: strht r1, [r8, #3]
   2019 # CHECK: strht r1, [r8, #255]
   2020 
   2021 0x22 0xf8 0x00 0x1e
   2022 0x28 0xf8 0x00 0x1e
   2023 0x28 0xf8 0x03 0x1e
   2024 0x28 0xf8 0xff 0x1e
   2025 
   2026 
   2027 #------------------------------------------------------------------------------
   2028 # STRT
   2029 #------------------------------------------------------------------------------
   2030 # CHECK: strt r1, [r2]
   2031 # CHECK: strt r1, [r8]
   2032 # CHECK: strt r1, [r8, #3]
   2033 # CHECK: strt r1, [r8, #255]
   2034 
   2035 0x42 0xf8 0x00 0x1e
   2036 0x48 0xf8 0x00 0x1e
   2037 0x48 0xf8 0x03 0x1e
   2038 0x48 0xf8 0xff 0x1e
   2039 
   2040 
   2041 #------------------------------------------------------------------------------
   2042 # SUB (immediate)
   2043 #------------------------------------------------------------------------------
   2044 # CHECK: itet eq
   2045 # CHECK: subeq r1, r2, #4
   2046 # CHECK: subwne r5, r3, #1023
   2047 # CHECK: subweq r4, r5, #293
   2048 # CHECK: sub.w r2, sp, #1024
   2049 # CHECK: sub.w r2, r8, #65280
   2050 # CHECK: subw r2, r3, #257
   2051 # CHECK: sub.w r12, r6, #256
   2052 # CHECK: subw r12, r6, #256
   2053 # CHECK: subs.w r1, r2, #496
   2054 # CHECK: subs pc, lr, #4
   2055 
   2056 0x0a 0xbf
   2057 0x11 0x1f
   2058 0xa3 0xf2 0xff 0x35
   2059 0xa5 0xf2 0x25 0x14
   2060 0xad 0xf5 0x80 0x62
   2061 0xa8 0xf5 0x7f 0x42
   2062 0xa3 0xf2 0x01 0x12
   2063 0xa6 0xf5 0x80 0x7c
   2064 0xa6 0xf2 0x00 0x1c
   2065 0xb2 0xf5 0xf8 0x71
   2066 0xde 0xf3 0x04 0x8f
   2067 
   2068 
   2069 #------------------------------------------------------------------------------
   2070 # SUB (register)
   2071 #------------------------------------------------------------------------------
   2072 # CHECK: sub.w r4, r5, r6
   2073 # CHECK: sub.w r4, r5, r6, lsl #5
   2074 # CHECK: sub.w r4, r5, r6, lsr #5
   2075 # CHECK: sub.w r4, r5, r6, lsr #5
   2076 # CHECK: sub.w r4, r5, r6, asr #5
   2077 # CHECK: sub.w r4, r5, r6, ror #5
   2078 # CHECK: sub.w r5, r2, r12, rrx
   2079 
   2080 0xa5 0xeb 0x06 0x04
   2081 0xa5 0xeb 0x46 0x14
   2082 0xa5 0xeb 0x56 0x14
   2083 0xa5 0xeb 0x56 0x14
   2084 0xa5 0xeb 0x66 0x14
   2085 0xa5 0xeb 0x76 0x14
   2086 0xa2 0xeb 0x3c 0x05
   2087 
   2088 
   2089 #------------------------------------------------------------------------------
   2090 # SVC
   2091 #------------------------------------------------------------------------------
   2092 # CHECK: svc #0
   2093 # CHECK: ite eq
   2094 # CHECK: svceq #255
   2095 # CHECK: svcne #33
   2096 
   2097 0x00 0xdf
   2098 0x0c 0xbf
   2099 0xff 0xdf
   2100 0x21 0xdf
   2101 
   2102 #------------------------------------------------------------------------------
   2103 # SXTAB
   2104 #------------------------------------------------------------------------------
   2105 # CHECK:  sxtab r2, r3, r4
   2106 # CHECK:  sxtab r4, r5, r6
   2107 # CHECK:  it lt
   2108 # CHECK:  sxtablt r6, r2, r9, ror #8
   2109 # CHECK:  sxtab r5, r1, r4, ror #16
   2110 # CHECK:  sxtab r7, r8, r3, ror #24
   2111 
   2112 0x43 0xfa 0x84 0xf2
   2113 0x45 0xfa 0x86 0xf4
   2114 0xb8 0xbf
   2115 0x42 0xfa 0x99 0xf6
   2116 0x41 0xfa 0xa4 0xf5
   2117 0x48 0xfa 0xb3 0xf7
   2118 
   2119 
   2120 #------------------------------------------------------------------------------
   2121 # SXTAB16
   2122 #------------------------------------------------------------------------------
   2123 # CHECK:  sxtab16 r6, r2, r7
   2124 # CHECK:  sxtab16 r3, r5, r8, ror #8
   2125 # CHECK:  sxtab16 r3, r2, r1, ror #16
   2126 # CHECK:  ite ne
   2127 # CHECK:  sxtab16ne r0, r1, r4
   2128 # CHECK:  sxtab16eq r1, r2, r3, ror #24
   2129 
   2130 0x22 0xfa 0x87 0xf6
   2131 0x25 0xfa 0x98 0xf3
   2132 0x22 0xfa 0xa1 0xf3
   2133 0x14 0xbf
   2134 0x21 0xfa 0x84 0xf0
   2135 0x22 0xfa 0xb3 0xf1
   2136 
   2137 
   2138 #------------------------------------------------------------------------------
   2139 # SXTAH
   2140 #------------------------------------------------------------------------------
   2141 # CHECK:  sxtah r1, r3, r9
   2142 # CHECK:  sxtah r3, r8, r3, ror #8
   2143 # CHECK:  sxtah r9, r3, r3, ror #24
   2144 # CHECK:  ite hi
   2145 # CHECK:  sxtahhi r6, r1, r6
   2146 # CHECK:  sxtahls r2, r2, r4, ror #16
   2147 
   2148 0x03 0xfa 0x89 0xf1
   2149 0x08 0xfa 0x93 0xf3
   2150 0x03 0xfa 0xb3 0xf9
   2151 0x8c 0xbf
   2152 0x01 0xfa 0x86 0xf6
   2153 0x02 0xfa 0xa4 0xf2
   2154 
   2155 
   2156 #------------------------------------------------------------------------------
   2157 # SXTB
   2158 #------------------------------------------------------------------------------
   2159 # CHECK:  sxtb r5, r6
   2160 # CHECK:  sxtb.w r6, r9, ror #8
   2161 # CHECK:  sxtb.w r8, r3, ror #24
   2162 # CHECK:  ite ge
   2163 # CHECK:  sxtbge r2, r4
   2164 # CHECK:  sxtblt.w r5, r1, ror #16
   2165 
   2166 0x75 0xb2
   2167 0x4f 0xfa 0x99 0xf6
   2168 0x4f 0xfa 0xb3 0xf8
   2169 0xac 0xbf
   2170 0x62 0xb2
   2171 0x4f 0xfa 0xa1 0xf5
   2172 
   2173 
   2174 #------------------------------------------------------------------------------
   2175 # SXTB16
   2176 #------------------------------------------------------------------------------
   2177 # CHECK:  sxtb16 r1, r4
   2178 # CHECK:  sxtb16 r6, r7
   2179 # CHECK:  sxtb16 r3, r1, ror #16
   2180 # CHECK:  ite hs
   2181 # CHECK:  sxtb16hs r3, r5, ror #8
   2182 # CHECK:  sxtb16lo r2, r3, ror #24
   2183 
   2184 0x2f 0xfa 0x84 0xf1
   2185 0x2f 0xfa 0x87 0xf6
   2186 0x2f 0xfa 0xa1 0xf3
   2187 0x2c 0xbf
   2188 0x2f 0xfa 0x95 0xf3
   2189 0x2f 0xfa 0xb3 0xf2
   2190 
   2191 
   2192 #------------------------------------------------------------------------------
   2193 # SXTH
   2194 #------------------------------------------------------------------------------
   2195 # CHECK:  sxth r1, r6
   2196 # CHECK:  sxth.w r3, r8, ror #8
   2197 # CHECK:  sxth.w r9, r3, ror #24
   2198 # CHECK:  itt ne
   2199 # CHECK:  sxthne.w r3, r9
   2200 # CHECK:  sxthne.w r2, r2, ror #16
   2201 
   2202 0x31 0xb2
   2203 0x0f 0xfa 0x98 0xf3
   2204 0x0f 0xfa 0xb3 0xf9
   2205 0x1c 0xbf
   2206 0x0f 0xfa 0x89 0xf3
   2207 0x0f 0xfa 0xa2 0xf2
   2208 
   2209 
   2210 #------------------------------------------------------------------------------
   2211 # SXTB
   2212 #------------------------------------------------------------------------------
   2213 # CHECK:  sxtb r5, r6
   2214 # CHECK:  sxtb.w r6, r9, ror #8
   2215 # CHECK:  sxtb.w r8, r3, ror #24
   2216 # CHECK:  ite ge
   2217 # CHECK:  sxtbge r2, r4
   2218 # CHECK:  sxtblt.w r5, r1, ror #16
   2219 
   2220 0x75 0xb2
   2221 0x4f 0xfa 0x99 0xf6
   2222 0x4f 0xfa 0xb3 0xf8
   2223 0xac 0xbf
   2224 0x62 0xb2
   2225 0x4f 0xfa 0xa1 0xf5
   2226 
   2227 
   2228 #------------------------------------------------------------------------------
   2229 # SXTB16
   2230 #------------------------------------------------------------------------------
   2231 # CHECK:  sxtb16 r1, r4
   2232 # CHECK:  sxtb16 r6, r7
   2233 # CHECK:  sxtb16 r3, r1, ror #16
   2234 # CHECK:  ite hs
   2235 # CHECK:  sxtb16hs r3, r5, ror #8
   2236 # CHECK:  sxtb16lo r2, r3, ror #24
   2237 
   2238 0x2f 0xfa 0x84 0xf1
   2239 0x2f 0xfa 0x87 0xf6
   2240 0x2f 0xfa 0xa1 0xf3
   2241 0x2c 0xbf
   2242 0x2f 0xfa 0x95 0xf3
   2243 0x2f 0xfa 0xb3 0xf2
   2244 
   2245 
   2246 #------------------------------------------------------------------------------
   2247 # SXTH
   2248 #------------------------------------------------------------------------------
   2249 # CHECK:  sxth r1, r6
   2250 # CHECK:  sxth.w r3, r8, ror #8
   2251 # CHECK:  sxth.w r9, r3, ror #24
   2252 # CHECK:  itt ne
   2253 # CHECK:  sxthne.w r3, r9
   2254 # CHECK:  sxthne.w r2, r2, ror #16
   2255 
   2256 0x31 0xb2
   2257 0x0f 0xfa 0x98 0xf3
   2258 0x0f 0xfa 0xb3 0xf9
   2259 0x1c 0xbf
   2260 0x0f 0xfa 0x89 0xf3
   2261 0x0f 0xfa 0xa2 0xf2
   2262 
   2263 
   2264 #------------------------------------------------------------------------------
   2265 # TBB/TBH
   2266 #------------------------------------------------------------------------------
   2267 # CHECK:  tbb [r3, r8]
   2268 # CHECK:  tbh [r3, r8, lsl #1]
   2269 # CHECK:  it eq
   2270 # CHECK:  tbbeq [r3, r8]
   2271 # CHECK:  it hs
   2272 # CHECK:  tbhhs [r3, r8, lsl #1]
   2273 
   2274 0xd3 0xe8 0x08 0xf0
   2275 0xd3 0xe8 0x18 0xf0
   2276 0x08 0xbf
   2277 0xd3 0xe8 0x08 0xf0
   2278 0x28 0xbf
   2279 0xd3 0xe8 0x18 0xf0
   2280 
   2281 
   2282 #------------------------------------------------------------------------------
   2283 # TEQ
   2284 #------------------------------------------------------------------------------
   2285 # CHECK:  teq.w r5, #61440
   2286 # CHECK:  teq.w r4, r5
   2287 # CHECK:  teq.w r4, r5, lsl #5
   2288 # CHECK:  teq.w r4, r5, lsr #5
   2289 # CHECK:  teq.w r4, r5, lsr #5
   2290 # CHECK:  teq.w r4, r5, asr #5
   2291 # CHECK:  teq.w r4, r5, ror #5
   2292 
   2293 0x95 0xf4 0x70 0x4f
   2294 0x94 0xea 0x05 0x0f
   2295 0x94 0xea 0x45 0x1f
   2296 0x94 0xea 0x55 0x1f
   2297 0x94 0xea 0x55 0x1f
   2298 0x94 0xea 0x65 0x1f
   2299 0x94 0xea 0x75 0x1f
   2300 
   2301 
   2302 #------------------------------------------------------------------------------
   2303 # TST
   2304 #------------------------------------------------------------------------------
   2305 # CHECK:  tst.w r5, #61440
   2306 # CHECK:  tst r2, r5
   2307 # CHECK:  tst.w r3, r12, lsl #5
   2308 # CHECK:  tst.w r4, r11, lsr #4
   2309 # CHECK:  tst.w r5, r10, lsr #12
   2310 # CHECK:  tst.w r6, r9, asr #30
   2311 # CHECK:  tst.w r7, r8, ror #2
   2312 
   2313 0x15 0xf4 0x70 0x4f
   2314 0x2a 0x42
   2315 0x13 0xea 0x4c 0x1f
   2316 0x14 0xea 0x1b 0x1f
   2317 0x15 0xea 0x1a 0x3f
   2318 0x16 0xea 0xa9 0x7f
   2319 0x17 0xea 0xb8 0x0f
   2320 
   2321 
   2322 #------------------------------------------------------------------------------
   2323 # UADD16/UADD8
   2324 #------------------------------------------------------------------------------
   2325 # CHECK:  uadd16 r1, r2, r3
   2326 # CHECK:  uadd8 r1, r2, r3
   2327 # CHECK:  ite gt
   2328 # CHECK:  uadd16gt r1, r2, r3
   2329 # CHECK:  uadd8le r1, r2, r3
   2330 
   2331 0x92 0xfa 0x43 0xf1
   2332 0x82 0xfa 0x43 0xf1
   2333 0xcc 0xbf
   2334 0x92 0xfa 0x43 0xf1
   2335 0x82 0xfa 0x43 0xf1
   2336 
   2337 
   2338 #------------------------------------------------------------------------------
   2339 # UASX
   2340 #------------------------------------------------------------------------------
   2341 # CHECK:  uasx r9, r12, r0
   2342 # CHECK:  it eq
   2343 # CHECK:  uasxeq r9, r12, r0
   2344 # CHECK:  uasx r9, r12, r0
   2345 # CHECK:  it eq
   2346 # CHECK:  uasxeq r9, r12, r0
   2347 
   2348 0xac 0xfa 0x40 0xf9
   2349 0x08 0xbf
   2350 0xac 0xfa 0x40 0xf9
   2351 0xac 0xfa 0x40 0xf9
   2352 0x08 0xbf
   2353 0xac 0xfa 0x40 0xf9
   2354 
   2355 
   2356 #------------------------------------------------------------------------------
   2357 # UBFX
   2358 #------------------------------------------------------------------------------
   2359 # CHECK:  ubfx r4, r5, #16, #1
   2360 # CHECK:  it gt
   2361 # CHECK:  ubfxgt r4, r5, #16, #16
   2362 
   2363 0xc5 0xf3 0x00 0x44
   2364 0xc8 0xbf
   2365 0xc5 0xf3 0x0f 0x44
   2366 
   2367 
   2368 #------------------------------------------------------------------------------
   2369 # UHADD16/UHADD8
   2370 #------------------------------------------------------------------------------
   2371 # CHECK:  uhadd16 r4, r8, r2
   2372 # CHECK:  uhadd8 r4, r8, r2
   2373 # CHECK:  itt gt
   2374 # CHECK:  uhadd16gt r4, r8, r2
   2375 # CHECK:  uhadd8gt r4, r8, r2
   2376 
   2377 0x98 0xfa 0x62 0xf4
   2378 0x88 0xfa 0x62 0xf4
   2379 0xc4 0xbf
   2380 0x98 0xfa 0x62 0xf4
   2381 0x88 0xfa 0x62 0xf4
   2382 
   2383 
   2384 #------------------------------------------------------------------------------
   2385 # UHASX/UHSAX
   2386 #------------------------------------------------------------------------------
   2387 # CHECK:  uhasx r4, r1, r5
   2388 # CHECK:  uhsax r5, r6, r6
   2389 # CHECK:  itt gt
   2390 # CHECK:  uhasxgt r6, r9, r8
   2391 # CHECK:  uhsaxgt r7, r8, r12
   2392 
   2393 0xa1 0xfa 0x65 0xf4
   2394 0xe6 0xfa 0x66 0xf5
   2395 0xc4 0xbf
   2396 0xa9 0xfa 0x68 0xf6
   2397 0xe8 0xfa 0x6c 0xf7
   2398 
   2399 #------------------------------------------------------------------------------
   2400 # UHSUB16/UHSUB8
   2401 #------------------------------------------------------------------------------
   2402 # CHECK:  uhsub16 r5, r8, r3
   2403 # CHECK:  uhsub8 r1, r7, r6
   2404 # CHECK:  itt lt
   2405 # CHECK:  uhsub16lt r4, r9, r12
   2406 # CHECK:  uhsub8lt r3, r1, r5
   2407 
   2408 0xd8 0xfa 0x63 0xf5
   2409 0xc7 0xfa 0x66 0xf1
   2410 0xbc 0xbf
   2411 0xd9 0xfa 0x6c 0xf4
   2412 0xc1 0xfa 0x65 0xf3
   2413 
   2414 
   2415 #------------------------------------------------------------------------------
   2416 # UMAAL
   2417 #------------------------------------------------------------------------------
   2418 # CHECK:  umaal r3, r4, r5, r6
   2419 # CHECK:  it lt
   2420 # CHECK:  umaallt r3, r4, r5, r6
   2421 
   2422 0xe5 0xfb 0x66 0x34
   2423 0xb8 0xbf
   2424 0xe5 0xfb 0x66 0x34
   2425 
   2426 
   2427 #------------------------------------------------------------------------------
   2428 # UMLAL
   2429 #------------------------------------------------------------------------------
   2430 # CHECK:  umlal r2, r4, r6, r8
   2431 # CHECK:  it gt
   2432 # CHECK:  umlalgt r6, r1, r2, r6
   2433 
   2434 0xe6 0xfb 0x08 0x24
   2435 0xc8 0xbf
   2436 0xe2 0xfb 0x06 0x61
   2437 
   2438 
   2439 #------------------------------------------------------------------------------
   2440 # UMULL
   2441 #------------------------------------------------------------------------------
   2442 # CHECK:  umull r2, r4, r6, r8
   2443 # CHECK:  it gt
   2444 # CHECK:  umullgt r6, r1, r2, r6
   2445 
   2446 0xa6 0xfb 0x08 0x24
   2447 0xc8 0xbf
   2448 0xa2 0xfb 0x06 0x61
   2449 
   2450 
   2451 #------------------------------------------------------------------------------
   2452 # UQADD16/UQADD8
   2453 #------------------------------------------------------------------------------
   2454 # CHECK:  uqadd16 r1, r2, r3
   2455 # CHECK:  uqadd8 r3, r4, r8
   2456 # CHECK:  ite gt
   2457 # CHECK:  uqadd16gt r4, r7, r9
   2458 # CHECK:  uqadd8le r8, r1, r2
   2459 
   2460 0x92 0xfa 0x53 0xf1
   2461 0x84 0xfa 0x58 0xf3
   2462 0xcc 0xbf
   2463 0x97 0xfa 0x59 0xf4
   2464 0x81 0xfa 0x52 0xf8
   2465 
   2466 
   2467 #------------------------------------------------------------------------------
   2468 # UQASX/UQSAX
   2469 #------------------------------------------------------------------------------
   2470 # CHECK:  uqasx r1, r2, r3
   2471 # CHECK:  uqsax r3, r4, r8
   2472 # CHECK:  ite gt
   2473 # CHECK:  uqasxgt r4, r7, r9
   2474 # CHECK:  uqsaxle r8, r1, r2
   2475 
   2476 0xa2 0xfa 0x53 0xf1
   2477 0xe4 0xfa 0x58 0xf3
   2478 0xcc 0xbf
   2479 0xa7 0xfa 0x59 0xf4
   2480 0xe1 0xfa 0x52 0xf8
   2481 
   2482 
   2483 #------------------------------------------------------------------------------
   2484 # UQSUB16/UQSUB8
   2485 #------------------------------------------------------------------------------
   2486 # CHECK:  uqsub8 r8, r2, r9
   2487 # CHECK:  uqsub16 r1, r9, r7
   2488 # CHECK:  ite gt
   2489 # CHECK:  uqsub8gt r3, r1, r6
   2490 # CHECK:  uqsub16le r4, r6, r4
   2491 
   2492 0xc2 0xfa 0x59 0xf8
   2493 0xd9 0xfa 0x57 0xf1
   2494 0xcc 0xbf
   2495 0xc1 0xfa 0x56 0xf3
   2496 0xd6 0xfa 0x54 0xf4
   2497 
   2498 
   2499 #------------------------------------------------------------------------------
   2500 # UQSUB16/UQSUB8
   2501 #------------------------------------------------------------------------------
   2502 # CHECK:  usad8 r1, r9, r7
   2503 # CHECK:  usada8 r8, r2, r9, r12
   2504 # CHECK:  ite gt
   2505 # CHECK:  usada8gt r3, r1, r6, r9
   2506 # CHECK:  usad8le r4, r6, r4
   2507 
   2508 0x79 0xfb 0x07 0xf1
   2509 0x72 0xfb 0x09 0xc8
   2510 0xcc 0xbf
   2511 0x71 0xfb 0x06 0x93
   2512 0x76 0xfb 0x04 0xf4
   2513 
   2514 
   2515 #------------------------------------------------------------------------------
   2516 # USAT
   2517 #------------------------------------------------------------------------------
   2518 # CHECK:  usat r8, #1, r10
   2519 # CHECK:  usat r8, #4, r10
   2520 # CHECK:  usat r8, #5, r10, lsl #31
   2521 # CHECK:  usat r8, #16, r10, asr #1
   2522 
   2523 0x8a 0xf3 0x01 0x08
   2524 0x8a 0xf3 0x04 0x08
   2525 0x8a 0xf3 0xc5 0x78
   2526 0xaa 0xf3 0x50 0x08
   2527 
   2528 
   2529 #------------------------------------------------------------------------------
   2530 # USAT16
   2531 #------------------------------------------------------------------------------
   2532 # CHECK:  usat16	r2, #2, r7
   2533 # CHECK:  usat16	r3, #15, r5
   2534 
   2535 0xa7 0xf3 0x02 0x02
   2536 0xa5 0xf3 0x0f 0x03
   2537 
   2538 
   2539 #------------------------------------------------------------------------------
   2540 # USAX
   2541 #------------------------------------------------------------------------------
   2542 # CHECK:  usax r2, r3, r4
   2543 # CHECK:  it ne
   2544 # CHECK:  usaxne r6, r1, r9
   2545 # CHECK:  usax r2, r3, r4
   2546 # CHECK:  it ne
   2547 # CHECK:  usaxne r6, r1, r9
   2548 
   2549 0xe3 0xfa 0x44 0xf2
   2550 0x18 0xbf
   2551 0xe1 0xfa 0x49 0xf6
   2552 0xe3 0xfa 0x44 0xf2
   2553 0x18 0xbf
   2554 0xe1 0xfa 0x49 0xf6
   2555 
   2556 
   2557 #------------------------------------------------------------------------------
   2558 # USUB16/USUB8
   2559 #------------------------------------------------------------------------------
   2560 # CHECK:  usub16 r4, r2, r7
   2561 # CHECK:  usub8 r1, r8, r5
   2562 # CHECK:  ite hi
   2563 # CHECK:  usub16hi r1, r1, r3
   2564 # CHECK:  usub8ls r9, r2, r3
   2565 
   2566 0xd2 0xfa 0x47 0xf4
   2567 0xc8 0xfa 0x45 0xf1
   2568 0x8c 0xbf
   2569 0xd1 0xfa 0x43 0xf1
   2570 0xc2 0xfa 0x43 0xf9
   2571 
   2572 
   2573 #------------------------------------------------------------------------------
   2574 # UXTAB
   2575 #------------------------------------------------------------------------------
   2576 # CHECK:  uxtab r2, r3, r4
   2577 # CHECK:  uxtab r4, r5, r6
   2578 # CHECK:  it lt
   2579 # CHECK:  uxtablt r6, r2, r9, ror #8
   2580 # CHECK:  uxtab r5, r1, r4, ror #16
   2581 # CHECK:  uxtab r7, r8, r3, ror #24
   2582 
   2583 0x53 0xfa 0x84 0xf2
   2584 0x55 0xfa 0x86 0xf4
   2585 0xb8 0xbf
   2586 0x52 0xfa 0x99 0xf6
   2587 0x51 0xfa 0xa4 0xf5
   2588 0x58 0xfa 0xb3 0xf7
   2589 
   2590 
   2591 #------------------------------------------------------------------------------
   2592 # UXTAB16
   2593 #------------------------------------------------------------------------------
   2594 # CHECK:  it ge
   2595 # CHECK:  uxtab16ge r0, r1, r4
   2596 # CHECK:  uxtab16 r6, r2, r7
   2597 # CHECK:  uxtab16 r3, r5, r8, ror #8
   2598 # CHECK:  uxtab16 r3, r2, r1, ror #16
   2599 # CHECK:  it eq
   2600 # CHECK:  uxtab16eq r1, r2, r3, ror #24
   2601 
   2602 0xa8 0xbf
   2603 0x31 0xfa 0x84 0xf0
   2604 0x32 0xfa 0x87 0xf6
   2605 0x35 0xfa 0x98 0xf3
   2606 0x32 0xfa 0xa1 0xf3
   2607 0x08 0xbf
   2608 0x32 0xfa 0xb3 0xf1
   2609 
   2610 
   2611 #------------------------------------------------------------------------------
   2612 # UXTAH
   2613 #------------------------------------------------------------------------------
   2614 # CHECK:  uxtah r1, r3, r9
   2615 # CHECK:  it hi
   2616 # CHECK:  uxtahhi r6, r1, r6
   2617 # CHECK:  uxtah r3, r8, r3, ror #8
   2618 # CHECK:  it lo
   2619 # CHECK:  uxtahlo r2, r2, r4, ror #16
   2620 # CHECK:  uxtah r9, r3, r3, ror #24
   2621 
   2622 0x13 0xfa 0x89 0xf1
   2623 0x88 0xbf
   2624 0x11 0xfa 0x86 0xf6
   2625 0x18 0xfa 0x93 0xf3
   2626 0x38 0xbf
   2627 0x12 0xfa 0xa4 0xf2
   2628 0x13 0xfa 0xb3 0xf9
   2629 
   2630 
   2631 #------------------------------------------------------------------------------
   2632 # UXTB
   2633 #------------------------------------------------------------------------------
   2634 # CHECK:  it ge
   2635 # CHECK:  uxtbge r2, r4
   2636 # CHECK:  uxtb r5, r6
   2637 # CHECK:  uxtb.w r6, r9, ror #8
   2638 # CHECK:  it lo
   2639 # CHECK:  uxtblo.w r5, r1, ror #16
   2640 # CHECK:  uxtb.w r8, r3, ror #24
   2641 
   2642 0xa8 0xbf
   2643 0xe2 0xb2
   2644 0xf5 0xb2
   2645 0x5f 0xfa 0x99 0xf6
   2646 0x38 0xbf
   2647 0x5f 0xfa 0xa1 0xf5
   2648 0x5f 0xfa 0xb3 0xf8
   2649 
   2650 
   2651 #------------------------------------------------------------------------------
   2652 # UXTB16
   2653 #------------------------------------------------------------------------------
   2654 # CHECK:  uxtb16 r1, r4
   2655 # CHECK:  uxtb16 r6, r7
   2656 # CHECK:  it hs
   2657 # CHECK:  uxtb16hs r3, r5, ror #8
   2658 # CHECK:  uxtb16 r3, r1, ror #16
   2659 # CHECK:  it ge
   2660 # CHECK:  uxtb16ge r2, r3, ror #24
   2661 
   2662 0x3f 0xfa 0x84 0xf1
   2663 0x3f 0xfa 0x87 0xf6
   2664 0x28 0xbf
   2665 0x3f 0xfa 0x95 0xf3
   2666 0x3f 0xfa 0xa1 0xf3
   2667 0xa8 0xbf
   2668 0x3f 0xfa 0xb3 0xf2
   2669 
   2670 
   2671 #------------------------------------------------------------------------------
   2672 # UXTH
   2673 #------------------------------------------------------------------------------
   2674 # CHECK:  it ne
   2675 # CHECK:  uxthne.w r3, r9
   2676 # CHECK:  uxth r1, r6
   2677 # CHECK:  uxth.w r3, r8, ror #8
   2678 # CHECK:  it le
   2679 # CHECK:  uxthle.w r2, r2, ror #16
   2680 # CHECK:  uxth.w r9, r3, ror #24
   2681 
   2682 0x18 0xbf
   2683 0x1f 0xfa 0x89 0xf3
   2684 0xb1 0xb2
   2685 0x1f 0xfa 0x98 0xf3
   2686 0xd8 0xbf
   2687 0x1f 0xfa 0xa2 0xf2
   2688 0x1f 0xfa 0xb3 0xf9
   2689 
   2690 
   2691 #------------------------------------------------------------------------------
   2692 # WFE/WFI/YIELD
   2693 #------------------------------------------------------------------------------
   2694 # CHECK:  wfe
   2695 # CHECK:  wfi
   2696 # CHECK:  yield
   2697 # CHECK:  itet lt
   2698 # CHECK:  wfelt
   2699 # CHECK:  wfige
   2700 # CHECK:  yieldlt
   2701 
   2702 0x20 0xbf
   2703 0x30 0xbf
   2704 0x10 0xbf
   2705 0xb6 0xbf
   2706 0x20 0xbf
   2707 0x30 0xbf
   2708 0x10 0xbf
   2709 
   2710 #------------------------------------------------------------------------------
   2711 # Unallocated hints (They execute as NOPs, but software must not use them.)
   2712 #------------------------------------------------------------------------------
   2713 # CHECK: hint #6
   2714 # CHECK: hint.w #6
   2715 # CHECK: hint.w #102
   2716 
   2717 0x60 0xbf
   2718 0xaf 0xf3 0x06 0x80
   2719 0xaf 0xf3 0x66 0x80
   2720 
   2721