mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
b161955ffb
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193238 91177308-0d34-0410-b5e6-96231b3b80d8
2721 lines
67 KiB
Plaintext
2721 lines
67 KiB
Plaintext
# RUN: llvm-mc -triple=thumbv7-apple-darwin -mcpu=cortex-a8 -disassemble < %s | FileCheck %s
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ADC (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: adc r0, r1, #4
|
|
# CHECK: adcs r0, r1, #0
|
|
# CHECK: adc r1, r2, #255
|
|
# CHECK: adc r3, r7, #5570645
|
|
# CHECK: adc r8, r12, #2852170240
|
|
# CHECK: adc r9, r7, #2779096485
|
|
# CHECK: adc r5, r3, #2264924160
|
|
# CHECK: adc r4, r2, #2139095040
|
|
# CHECK: adc r4, r2, #1664
|
|
|
|
0x41 0xf1 0x04 0x00
|
|
0x51 0xf1 0x00 0x00
|
|
0x42 0xf1 0xff 0x01
|
|
0x47 0xf1 0x55 0x13
|
|
0x4c 0xf1 0xaa 0x28
|
|
0x47 0xf1 0xa5 0x39
|
|
0x43 0xf1 0x07 0x45
|
|
0x42 0xf1 0xff 0x44
|
|
0x42 0xf5 0xd0 0x64
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ADC (register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: adc.w r4, r5, r6
|
|
# CHECK: adcs.w r4, r5, r6
|
|
# CHECK: adc.w r9, r1, r3
|
|
# CHECK: adcs.w r9, r1, r3
|
|
# CHECK: adc.w r0, r1, r3, ror #4
|
|
# CHECK: adcs.w r0, r1, r3, lsl #7
|
|
# CHECK: adc.w r0, r1, r3, lsr #31
|
|
# CHECK: adcs.w r0, r1, r3, asr #32
|
|
|
|
0x45 0xeb 0x06 0x04
|
|
0x55 0xeb 0x06 0x04
|
|
0x41 0xeb 0x03 0x09
|
|
0x51 0xeb 0x03 0x09
|
|
0x41 0xeb 0x33 0x10
|
|
0x51 0xeb 0xc3 0x10
|
|
0x41 0xeb 0xd3 0x70
|
|
0x51 0xeb 0x23 0x00
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ADD (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: itet eq
|
|
# CHECK: addeq r1, r2, #4
|
|
# CHECK: addwne r5, r3, #1023
|
|
# CHECK: addweq r4, r5, #293
|
|
# CHECK: add.w r2, sp, #1024
|
|
# CHECK: add.w r2, r8, #65280
|
|
# CHECK: addw r2, r3, #257
|
|
# CHECK: add.w r12, r6, #256
|
|
# CHECK: addw r12, r6, #256
|
|
# CHECK: adds.w r1, r2, #496
|
|
|
|
0x0a 0xbf
|
|
0x11 0x1d
|
|
0x03 0xf2 0xff 0x35
|
|
0x05 0xf2 0x25 0x14
|
|
0x0d 0xf5 0x80 0x62
|
|
0x08 0xf5 0x7f 0x42
|
|
0x03 0xf2 0x01 0x12
|
|
0x06 0xf5 0x80 0x7c
|
|
0x06 0xf2 0x00 0x1c
|
|
0x12 0xf5 0xf8 0x71
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ADD (register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: add.w r1, r2, r8
|
|
# CHECK: add.w r5, r9, r2, asr #32
|
|
# CHECK: adds.w r7, r3, r1, lsl #31
|
|
# CHECK: adds.w r0, r3, r6, lsr #25
|
|
# CHECK: add.w r4, r8, r1, ror #12
|
|
|
|
0x02 0xeb 0x08 0x01
|
|
0x09 0xeb 0x22 0x05
|
|
0x13 0xeb 0xc1 0x77
|
|
0x13 0xeb 0x56 0x60
|
|
0x08 0xeb 0x31 0x34
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ADR
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: subw r11, pc, #3270
|
|
# CHECK: subw r11, pc, #826
|
|
# CHECK: subw r1, pc, #0
|
|
|
|
0xaf 0xf6 0xc6 0x4b
|
|
0xaf 0xf2 0x3a 0x3b
|
|
0xaf 0xf2 0x00 0x01
|
|
|
|
#------------------------------------------------------------------------------
|
|
# AND (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: and r2, r5, #1044480
|
|
# CHECK: ands r3, r12, #15
|
|
# CHECK: and r1, r1, #255
|
|
|
|
0x05 0xf4 0x7f 0x22
|
|
0x1c 0xf0 0x0f 0x03
|
|
0x01 0xf0 0xff 0x01
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# AND (register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: and.w r4, r9, r8
|
|
# CHECK: and.w r1, r4, r8, asr #3
|
|
# CHECK: ands.w r2, r1, r7, lsl #1
|
|
# CHECK: ands.w r4, r5, r2, lsr #20
|
|
# CHECK: and.w r9, r12, r1, ror #17
|
|
|
|
0x09 0xea 0x08 0x04
|
|
0x04 0xea 0xe8 0x01
|
|
0x11 0xea 0x47 0x02
|
|
0x15 0xea 0x12 0x54
|
|
0x0c 0xea 0x71 0x49
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ASR (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: asr.w r2, r3, #12
|
|
# CHECK: asrs.w r8, r3, #32
|
|
# CHECK: asrs.w r2, r3, #1
|
|
# CHECK: asr.w r2, r3, #4
|
|
# CHECK: asrs.w r2, r12, #15
|
|
|
|
# CHECK: asr.w r3, r3, #19
|
|
# CHECK: asrs.w r8, r8, #2
|
|
# CHECK: asrs.w r7, r7, #5
|
|
# CHECK: asr.w r12, r12, #21
|
|
|
|
0x4f 0xea 0x23 0x32
|
|
0x5f 0xea 0x23 0x08
|
|
0x5f 0xea 0x63 0x02
|
|
0x4f 0xea 0x23 0x12
|
|
0x5f 0xea 0xec 0x32
|
|
|
|
0x4f 0xea 0xe3 0x43
|
|
0x5f 0xea 0xa8 0x08
|
|
0x5f 0xea 0x67 0x17
|
|
0x4f 0xea 0x6c 0x5c
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ASR (register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: asr.w r3, r4, r2
|
|
# CHECK: asr.w r1, r1, r2
|
|
# CHECK: asrs.w r3, r4, r8
|
|
|
|
0x44 0xfa 0x02 0xf3
|
|
0x41 0xfa 0x02 0xf1
|
|
0x54 0xfa 0x08 0xf3
|
|
|
|
#------------------------------------------------------------------------------
|
|
# B
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: bmi.w #-183396
|
|
|
|
0x13 0xf5 0xce 0xa9
|
|
|
|
# CHECK: b.w #208962
|
|
# CHECK: b.w #-16777216
|
|
|
|
0x33 0xf0 0x21 0xb8 # rdar://12585795
|
|
0x00 0xf4 0x00 0x90
|
|
|
|
#------------------------------------------------------------------------------
|
|
# BFC
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: bfc r5, #3, #17
|
|
# CHECK: it lo
|
|
# CHECK: bfclo r5, #3, #17
|
|
|
|
0x6f 0xf3 0xd3 0x05
|
|
0x38 0xbf
|
|
0x6f 0xf3 0xd3 0x05
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# BFI
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: bfi r5, r2, #3, #17
|
|
# CHECK: it ne
|
|
# CHECK: bfine r5, r2, #3, #17
|
|
# CHECK: bfi r6, r0, #0, #32
|
|
# CHECK: bfi r6, r0, #31, #1
|
|
|
|
0x62 0xf3 0xd3 0x05
|
|
0x18 0xbf
|
|
0x62 0xf3 0xd3 0x05
|
|
0x60 0xf3 0x1f 0x06
|
|
0x60 0xf3 0xdf 0x76
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# BIC
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: bic r10, r1, #15
|
|
# CHECK: bic.w r12, r3, r6
|
|
# CHECK: bic.w r11, r2, r6, lsl #12
|
|
# CHECK: bic.w r8, r4, r1, lsr #11
|
|
# CHECK: bic.w r7, r5, r7, lsr #15
|
|
# CHECK: bic.w r6, r7, r9, asr #32
|
|
# CHECK: bic.w r5, r6, r8, ror #1
|
|
|
|
# CHECK: bic r1, r1, #15
|
|
# CHECK: bic.w r1, r1, r1
|
|
# CHECK: bic.w r4, r4, r2, lsl #31
|
|
# CHECK: bic.w r6, r6, r3, lsr #12
|
|
# CHECK: bic.w r7, r7, r4, lsr #7
|
|
# CHECK: bic.w r8, r8, r5, asr #15
|
|
# CHECK: bic.w r12, r12, r6, ror #29
|
|
|
|
0x21 0xf0 0x0f 0x0a
|
|
0x23 0xea 0x06 0x0c
|
|
0x22 0xea 0x06 0x3b
|
|
0x24 0xea 0xd1 0x28
|
|
0x25 0xea 0xd7 0x37
|
|
0x27 0xea 0x29 0x06
|
|
0x26 0xea 0x78 0x05
|
|
|
|
0x21 0xf0 0x0f 0x01
|
|
0x21 0xea 0x01 0x01
|
|
0x24 0xea 0xc2 0x74
|
|
0x26 0xea 0x13 0x36
|
|
0x27 0xea 0xd4 0x17
|
|
0x28 0xea 0xe5 0x38
|
|
0x2c 0xea 0x76 0x7c
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# BXJ
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: bxj r5
|
|
# CHECK: it ne
|
|
# CHECK: bxjne r7
|
|
|
|
0xc5 0xf3 0x00 0x8f
|
|
0x18 0xbf
|
|
0xc7 0xf3 0x00 0x8f
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# CBZ/CBNZ
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: cbnz r7, #6
|
|
# CHECK: cbnz r7, #12
|
|
# CHECK: cbz r4, #64
|
|
|
|
0x1f 0xb9
|
|
0x37 0xb9
|
|
0x04 0xb3
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# CDP/CDP2
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: cdp p7, #1, c1, c1, c1, #4
|
|
# CHECK: cdp2 p7, #1, c1, c1, c1, #4
|
|
|
|
0x11 0xee 0x81 0x17
|
|
0x11 0xfe 0x81 0x17
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# CLREX
|
|
#------------------------------------------------------------------------------
|
|
#CHECK: clrex
|
|
#CHECK: it ne
|
|
#CHECK: clrexne
|
|
|
|
0xbf 0xf3 0x2f 0x8f
|
|
0x18 0xbf
|
|
0xbf 0xf3 0x2f 0x8f
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# CLZ
|
|
#------------------------------------------------------------------------------
|
|
#CHECK: clz r1, r2
|
|
#CHECK: it eq
|
|
#CHECK: clzeq r1, r2
|
|
|
|
0xb2 0xfa 0x82 0xf1
|
|
0x08 0xbf
|
|
0xb2 0xfa 0x82 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# CMN
|
|
#------------------------------------------------------------------------------
|
|
#CHECK: cmn.w r1, #15
|
|
#CHECK: cmn.w r8, r6
|
|
#CHECK: cmn.w r1, r6, lsl #10
|
|
#CHECK: cmn.w r1, r6, lsr #10
|
|
#CHECK: cmn.w sp, r6, lsr #10
|
|
#CHECK: cmn.w r1, r6, asr #10
|
|
#CHECK: cmn.w r1, r6, ror #10
|
|
|
|
0x11 0xf1 0x0f 0x0f
|
|
0x18 0xeb 0x06 0x0f
|
|
0x11 0xeb 0x86 0x2f
|
|
0x11 0xeb 0x96 0x2f
|
|
0x1d 0xeb 0x96 0x2f
|
|
0x11 0xeb 0xa6 0x2f
|
|
0x11 0xeb 0xb6 0x2f
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# CMP
|
|
#------------------------------------------------------------------------------
|
|
#CHECK: cmp.w r5, #65280
|
|
#CHECK: cmp.w r4, r12
|
|
#CHECK: cmp.w r9, r6, lsl #12
|
|
#CHECK: cmp.w r3, r7, lsr #31
|
|
#CHECK: cmp.w sp, r6, lsr #1
|
|
#CHECK: cmp.w r2, r5, asr #24
|
|
#CHECK: cmp.w r1, r4, ror #15
|
|
|
|
0xb5 0xf5 0x7f 0x4f
|
|
0xb4 0xeb 0x0c 0x0f
|
|
0xb9 0xeb 0x06 0x3f
|
|
0xb3 0xeb 0xd7 0x7f
|
|
0xbd 0xeb 0x56 0x0f
|
|
0xb2 0xeb 0x25 0x6f
|
|
0xb1 0xeb 0xf4 0x3f
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# DBG
|
|
#------------------------------------------------------------------------------
|
|
#CHECK: dbg #5
|
|
#CHECK: dbg #0
|
|
#CHECK: dbg #15
|
|
|
|
0xaf 0xf3 0xf5 0x80
|
|
0xaf 0xf3 0xf0 0x80
|
|
0xaf 0xf3 0xff 0x80
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# DMB
|
|
#------------------------------------------------------------------------------
|
|
#CHECK: dmb sy
|
|
#CHECK: dmb st
|
|
#CHECK: dmb #0xd
|
|
#CHECK: dmb #0xc
|
|
#CHECK: dmb ish
|
|
#CHECK: dmb ishst
|
|
#CHECK: dmb #0x9
|
|
#CHECK: dmb #0x8
|
|
#CHECK: dmb nsh
|
|
#CHECK: dmb nshst
|
|
#CHECK: dmb #0x5
|
|
#CHECK: dmb #0x4
|
|
#CHECK: dmb osh
|
|
#CHECK: dmb oshst
|
|
#CHECK: dmb #0x1
|
|
#CHECK: dmb #0x0
|
|
|
|
0xbf 0xf3 0x5f 0x8f
|
|
0xbf 0xf3 0x5e 0x8f
|
|
0xbf 0xf3 0x5d 0x8f
|
|
0xbf 0xf3 0x5c 0x8f
|
|
0xbf 0xf3 0x5b 0x8f
|
|
0xbf 0xf3 0x5a 0x8f
|
|
0xbf 0xf3 0x59 0x8f
|
|
0xbf 0xf3 0x58 0x8f
|
|
0xbf 0xf3 0x57 0x8f
|
|
0xbf 0xf3 0x56 0x8f
|
|
0xbf 0xf3 0x55 0x8f
|
|
0xbf 0xf3 0x54 0x8f
|
|
0xbf 0xf3 0x53 0x8f
|
|
0xbf 0xf3 0x52 0x8f
|
|
0xbf 0xf3 0x51 0x8f
|
|
0xbf 0xf3 0x50 0x8f
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# DSB
|
|
#------------------------------------------------------------------------------
|
|
#CHECK: dsb sy
|
|
#CHECK: dsb st
|
|
#CHECK: dsb #0xd
|
|
#CHECK: dsb #0xc
|
|
#CHECK: dsb ish
|
|
#CHECK: dsb ishst
|
|
#CHECK: dsb #0x9
|
|
#CHECK: dsb #0x8
|
|
#CHECK: dsb nsh
|
|
#CHECK: dsb nshst
|
|
#CHECK: dsb #0x5
|
|
#CHECK: dsb #0x4
|
|
#CHECK: dsb osh
|
|
#CHECK: dsb oshst
|
|
#CHECK: dsb #0x1
|
|
#CHECK: dsb #0x0
|
|
|
|
0xbf 0xf3 0x4f 0x8f
|
|
0xbf 0xf3 0x4e 0x8f
|
|
0xbf 0xf3 0x4d 0x8f
|
|
0xbf 0xf3 0x4c 0x8f
|
|
0xbf 0xf3 0x4b 0x8f
|
|
0xbf 0xf3 0x4a 0x8f
|
|
0xbf 0xf3 0x49 0x8f
|
|
0xbf 0xf3 0x48 0x8f
|
|
0xbf 0xf3 0x47 0x8f
|
|
0xbf 0xf3 0x46 0x8f
|
|
0xbf 0xf3 0x45 0x8f
|
|
0xbf 0xf3 0x44 0x8f
|
|
0xbf 0xf3 0x43 0x8f
|
|
0xbf 0xf3 0x42 0x8f
|
|
0xbf 0xf3 0x41 0x8f
|
|
0xbf 0xf3 0x40 0x8f
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# EOR
|
|
#------------------------------------------------------------------------------
|
|
#CHECK: eor r4, r5, #61440
|
|
#CHECK: eor.w r4, r5, r6
|
|
#CHECK: eor.w r4, r5, r6, lsl #5
|
|
#CHECK: eor.w r4, r5, r6, lsr #5
|
|
#CHECK: eor.w r4, r5, r6, lsr #5
|
|
#CHECK: eor.w r4, r5, r6, asr #5
|
|
#CHECK: eor.w r4, r5, r6, ror #5
|
|
|
|
0x85 0xf4 0x70 0x44
|
|
0x85 0xea 0x06 0x04
|
|
0x85 0xea 0x46 0x14
|
|
0x85 0xea 0x56 0x14
|
|
0x85 0xea 0x56 0x14
|
|
0x85 0xea 0x66 0x14
|
|
0x85 0xea 0x76 0x14
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ISB
|
|
#------------------------------------------------------------------------------
|
|
#CHECK: isb sy
|
|
#CHECK: isb #0xa
|
|
|
|
0xbf 0xf3 0x6f 0x8f
|
|
0xbf 0xf3 0x6a 0x8f
|
|
|
|
#------------------------------------------------------------------------------
|
|
# IT
|
|
#------------------------------------------------------------------------------
|
|
# Test encodings of a few full IT blocks, not just the IT instruction
|
|
|
|
# CHECK: iteet eq
|
|
# CHECK: addeq r0, r1, r2
|
|
# CHECK: nopne
|
|
# CHECK: subne r5, r6, r7
|
|
# CHECK: addeq r1, r2, #4
|
|
|
|
0x0d 0xbf
|
|
0x88 0x18
|
|
0x00 0xbf
|
|
0xf5 0x1b
|
|
0x11 0x1d
|
|
|
|
# CHECK: ittee ls
|
|
# CHECK: addls r0, r1, r2
|
|
# CHECK: nopls
|
|
# CHECK: subhi r5, r6, r7
|
|
# CHECK: addhi r1, r2, #4
|
|
|
|
0x99 0xbf
|
|
0x88 0x18
|
|
0x00 0xbf
|
|
0xf5 0x1b
|
|
0x11 0x1d
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDMIA
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldm.w r4, {r4, r5, r8, r9}
|
|
# CHECK: ldm.w r4, {r5, r6}
|
|
# CHECK: ldm.w r5!, {r3, r8}
|
|
# CHECK: ldm.w r4, {r4, r5, r8, r9}
|
|
# CHECK: ldm.w r4, {r5, r6}
|
|
# CHECK: ldm.w r5!, {r3, r8}
|
|
# CHECK: ldm.w r5!, {r1, r2}
|
|
# CHECK: ldm.w r2, {r1, r2}
|
|
|
|
# CHECK: ldm.w r4, {r4, r5, r8, r9}
|
|
# CHECK: ldm.w r4, {r5, r6}
|
|
# CHECK: ldm.w r5!, {r3, r8}
|
|
# CHECK: ldm.w r4, {r4, r5, r8, r9}
|
|
# CHECK: ldm.w r4, {r5, r6}
|
|
# CHECK: ldm.w r5!, {r3, r8}
|
|
# CHECK: ldm.w r5!, {r3, r8}
|
|
|
|
0x94 0xe8 0x30 0x03
|
|
0x94 0xe8 0x60 0x00
|
|
0xb5 0xe8 0x08 0x01
|
|
0x94 0xe8 0x30 0x03
|
|
0x94 0xe8 0x60 0x00
|
|
0xb5 0xe8 0x08 0x01
|
|
0xb5 0xe8 0x06 0x00
|
|
0x92 0xe8 0x06 0x00
|
|
|
|
0x94 0xe8 0x30 0x03
|
|
0x94 0xe8 0x60 0x00
|
|
0xb5 0xe8 0x08 0x01
|
|
0x94 0xe8 0x30 0x03
|
|
0x94 0xe8 0x60 0x00
|
|
0xb5 0xe8 0x08 0x01
|
|
0xb5 0xe8 0x08 0x01
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDMDB
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldmdb r4, {r4, r5, r8, r9}
|
|
# CHECK: ldmdb r4, {r5, r6}
|
|
# CHECK: ldmdb r5!, {r3, r8}
|
|
# CHECK: ldmdb r5!, {r3, r8}
|
|
|
|
0x14 0xe9 0x30 0x03
|
|
0x14 0xe9 0x60 0x00
|
|
0x35 0xe9 0x08 0x01
|
|
0x35 0xe9 0x08 0x01
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDR(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldr r5, [r5, #-4]
|
|
# CHECK: ldr r5, [r6, #32]
|
|
# CHECK: ldr.w r5, [r6, #33]
|
|
# CHECK: ldr.w r5, [r6, #257]
|
|
# CHECK: ldr.w pc, [r7, #257]
|
|
|
|
0x55 0xf8 0x04 0x5c
|
|
0x35 0x6a
|
|
0xd6 0xf8 0x21 0x50
|
|
0xd6 0xf8 0x01 0x51
|
|
0xd7 0xf8 0x01 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDR(literal)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldr.w r4, [pc, #-0]
|
|
# CHECK: ldr.w r2, [pc, #-40]
|
|
# CHECK: ldr.w r1, [pc, #1024]
|
|
0x5f 0xf8 0x00 0x40
|
|
0x5f 0xf8 0x28 0x20
|
|
0xdf 0xf8 0x00 0x14
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDR(register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldr.w r1, [r8, r1]
|
|
# CHECK: ldr.w r4, [r5, r2]
|
|
# CHECK: ldr.w r6, [r0, r2, lsl #3]
|
|
# CHECK: ldr.w r8, [r8, r2, lsl #2]
|
|
# CHECK: ldr.w r7, [sp, r2, lsl #1]
|
|
# CHECK: ldr.w r7, [sp, r2]
|
|
# CHECK: ldr pc, [sp], #12
|
|
# CHECK: ldr r2, [r4, #255]!
|
|
# CHECK: ldr r8, [sp, #4]!
|
|
# CHECK: ldr lr, [sp, #-4]!
|
|
# CHECK: ldr lr, [sp, #0]!
|
|
# CHECK: ldr r2, [r4], #255
|
|
# CHECK: ldr r8, [sp], #4
|
|
# CHECK: ldr lr, [sp], #-4
|
|
|
|
0x58 0xf8 0x01 0x10
|
|
0x55 0xf8 0x02 0x40
|
|
0x50 0xf8 0x32 0x60
|
|
0x58 0xf8 0x22 0x80
|
|
0x5d 0xf8 0x12 0x70
|
|
0x5d 0xf8 0x02 0x70
|
|
0x5d 0xf8 0x0c 0xfb
|
|
0x54 0xf8 0xff 0x2f
|
|
0x5d 0xf8 0x04 0x8f
|
|
0x5d 0xf8 0x04 0xed
|
|
0x5d 0xf8 0x00 0xef
|
|
0x54 0xf8 0xff 0x2b
|
|
0x5d 0xf8 0x04 0x8b
|
|
0x5d 0xf8 0x04 0xe9
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRB(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrb r5, [r5, #-4]
|
|
# CHECK: ldrb.w r5, [r6, #32]
|
|
# CHECK: ldrb.w r5, [r6, #33]
|
|
# CHECK: ldrb.w r5, [r6, #257]
|
|
# CHECK: ldrb.w lr, [r7, #257]
|
|
|
|
0x15 0xf8 0x04 0x5c
|
|
0x96 0xf8 0x20 0x50
|
|
0x96 0xf8 0x21 0x50
|
|
0x96 0xf8 0x01 0x51
|
|
0x97 0xf8 0x01 0xe1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRB(register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrb.w r1, [r8, r1]
|
|
# CHECK: ldrb.w r4, [r5, r2]
|
|
# CHECK: ldrb.w r6, [r0, r2, lsl #3]
|
|
# CHECK: ldrb.w r8, [r8, r2, lsl #2]
|
|
# CHECK: ldrb.w r7, [sp, r2, lsl #1]
|
|
# CHECK: ldrb.w r7, [sp, r2]
|
|
# CHECK: ldrb r5, [r8, #255]!
|
|
# CHECK: ldrb r2, [r5, #4]!
|
|
# CHECK: ldrb r1, [r4, #-4]!
|
|
# CHECK: ldrb r1, [r4, #0]!
|
|
# CHECK: ldrb lr, [r3], #255
|
|
# CHECK: ldrb r9, [r2], #4
|
|
# CHECK: ldrb r3, [sp], #-4
|
|
|
|
0x18 0xf8 0x01 0x10
|
|
0x15 0xf8 0x02 0x40
|
|
0x10 0xf8 0x32 0x60
|
|
0x18 0xf8 0x22 0x80
|
|
0x1d 0xf8 0x12 0x70
|
|
0x1d 0xf8 0x02 0x70
|
|
0x18 0xf8 0xff 0x5f
|
|
0x15 0xf8 0x04 0x2f
|
|
0x14 0xf8 0x04 0x1d
|
|
0x14 0xf8 0x00 0x1f
|
|
0x13 0xf8 0xff 0xeb
|
|
0x12 0xf8 0x04 0x9b
|
|
0x1d 0xf8 0x04 0x39
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRB(literal)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrb.w r6, [pc, #-0]
|
|
# CHECK: ldrb.w r10, [pc, #227]
|
|
# CHECK: ldrb.w r5, [pc, #0]
|
|
0x1f 0xf8 0x00 0x60
|
|
0x9f 0xf8 0xe3 0xa0
|
|
0x9f 0xf8 0x00 0x50
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRBT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrbt r1, [r2]
|
|
# CHECK: ldrbt r1, [r8]
|
|
# CHECK: ldrbt r1, [r8, #3]
|
|
# CHECK: ldrbt r1, [r8, #255]
|
|
|
|
0x12 0xf8 0x00 0x1e
|
|
0x18 0xf8 0x00 0x1e
|
|
0x18 0xf8 0x03 0x1e
|
|
0x18 0xf8 0xff 0x1e
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRD(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrd r3, r5, [r6, #24]
|
|
# CHECK: ldrd r3, r5, [r6, #24]!
|
|
# CHECK: ldrd r3, r5, [r6], #4
|
|
# CHECK: ldrd r3, r5, [r6], #-8
|
|
# CHECK: ldrd r3, r5, [r6]
|
|
# CHECK: ldrd r8, r1, [r3]
|
|
# CHECK: ldrd r0, r1, [r2], #-0
|
|
# CHECK: ldrd r0, r1, [r2, #-0]!
|
|
# CHECK: ldrd r0, r1, [r2, #0]!
|
|
# CHECK: ldrd r0, r1, [r2, #-0]
|
|
# CHECK: ldrd r1, r1, [r0], #0
|
|
|
|
0xd6 0xe9 0x06 0x35
|
|
0xf6 0xe9 0x06 0x35
|
|
0xf6 0xe8 0x01 0x35
|
|
0x76 0xe8 0x02 0x35
|
|
0xd6 0xe9 0x00 0x35
|
|
0xd3 0xe9 0x00 0x81
|
|
0x72 0xe8 0x00 0x01
|
|
0x72 0xe9 0x00 0x01
|
|
0xf2 0xe9 0x00 0x01
|
|
0x52 0xe9 0x00 0x01
|
|
0xf0 0xe8 0x00 0x11
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# FIXME: LDRD(literal)
|
|
#------------------------------------------------------------------------------
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDREX/LDREXB/LDREXH/LDREXD
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrex r1, [r4]
|
|
# CHECK: ldrex r8, [r4]
|
|
# CHECK: ldrex r2, [sp, #128]
|
|
# CHECK: ldrexb r5, [r7]
|
|
# CHECK: ldrexh r9, [r12]
|
|
# CHECK: ldrexd r9, r3, [r4]
|
|
|
|
0x54 0xe8 0x00 0x1f
|
|
0x54 0xe8 0x00 0x8f
|
|
0x5d 0xe8 0x20 0x2f
|
|
0xd7 0xe8 0x4f 0x5f
|
|
0xdc 0xe8 0x5f 0x9f
|
|
0xd4 0xe8 0x7f 0x93
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRH(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrh r5, [r5, #-4]
|
|
# CHECK: ldrh r5, [r6, #32]
|
|
# CHECK: ldrh.w r5, [r6, #33]
|
|
# CHECK: ldrh.w r5, [r6, #257]
|
|
# CHECK: ldrh.w lr, [r7, #257]
|
|
|
|
0x35 0xf8 0x04 0x5c
|
|
0x35 0x8c
|
|
0xb6 0xf8 0x21 0x50
|
|
0xb6 0xf8 0x01 0x51
|
|
0xb7 0xf8 0x01 0xe1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRH(register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrh.w r1, [r8, r1]
|
|
# CHECK: ldrh.w r4, [r5, r2]
|
|
# CHECK: ldrh.w r6, [r0, r2, lsl #3]
|
|
# CHECK: ldrh.w r8, [r8, r2, lsl #2]
|
|
# CHECK: ldrh.w r7, [sp, r2, lsl #1]
|
|
# CHECK: ldrh.w r7, [sp, r2]
|
|
# CHECK: ldrh r5, [r8, #255]!
|
|
# CHECK: ldrh r2, [r5, #4]!
|
|
# CHECK: ldrh r1, [r4, #-4]!
|
|
# CHECK: ldrh r1, [r4, #0]!
|
|
# CHECK: ldrh lr, [r3], #255
|
|
# CHECK: ldrh r9, [r2], #4
|
|
# CHECK: ldrh r3, [sp], #-4
|
|
|
|
0x38 0xf8 0x01 0x10
|
|
0x35 0xf8 0x02 0x40
|
|
0x30 0xf8 0x32 0x60
|
|
0x38 0xf8 0x22 0x80
|
|
0x3d 0xf8 0x12 0x70
|
|
0x3d 0xf8 0x02 0x70
|
|
0x38 0xf8 0xff 0x5f
|
|
0x35 0xf8 0x04 0x2f
|
|
0x34 0xf8 0x04 0x1d
|
|
0x34 0xf8 0x00 0x1f
|
|
0x33 0xf8 0xff 0xeb
|
|
0x32 0xf8 0x04 0x9b
|
|
0x3d 0xf8 0x04 0x39
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRH(literal)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrh.w r7, [pc, #-0]
|
|
# CHECK: ldrh.w r5, [pc, #121]
|
|
# CHECK: ldrh.w r4, [pc, #0]
|
|
0x3f 0xf8 0x00 0x70
|
|
0xbf 0xf8 0x79 0x50
|
|
0xbf 0xf8 0x00 0x40
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRSB(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrsb r5, [r5, #-4]
|
|
# CHECK: ldrsb.w r5, [r6, #32]
|
|
# CHECK: ldrsb.w r5, [r6, #33]
|
|
# CHECK: ldrsb.w r5, [r6, #257]
|
|
# CHECK: ldrsb.w lr, [r7, #257]
|
|
|
|
0x15 0xf9 0x04 0x5c
|
|
0x96 0xf9 0x20 0x50
|
|
0x96 0xf9 0x21 0x50
|
|
0x96 0xf9 0x01 0x51
|
|
0x97 0xf9 0x01 0xe1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRSB(register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrsb.w r1, [r8, r1]
|
|
# CHECK: ldrsb.w r4, [r5, r2]
|
|
# CHECK: ldrsb.w r6, [r0, r2, lsl #3]
|
|
# CHECK: ldrsb.w r8, [r8, r2, lsl #2]
|
|
# CHECK: ldrsb.w r7, [sp, r2, lsl #1]
|
|
# CHECK: ldrsb.w r7, [sp, r2]
|
|
# CHECK: ldrsb r5, [r8, #255]!
|
|
# CHECK: ldrsb r2, [r5, #4]!
|
|
# CHECK: ldrsb r1, [r4, #-4]!
|
|
# CHECK: ldrsb r1, [r4, #0]!
|
|
# CHECK: ldrsb lr, [r3], #255
|
|
# CHECK: ldrsb r9, [r2], #4
|
|
# CHECK: ldrsb r3, [sp], #-4
|
|
|
|
0x18 0xf9 0x01 0x10
|
|
0x15 0xf9 0x02 0x40
|
|
0x10 0xf9 0x32 0x60
|
|
0x18 0xf9 0x22 0x80
|
|
0x1d 0xf9 0x12 0x70
|
|
0x1d 0xf9 0x02 0x70
|
|
0x18 0xf9 0xff 0x5f
|
|
0x15 0xf9 0x04 0x2f
|
|
0x14 0xf9 0x04 0x1d
|
|
0x14 0xf9 0x00 0x1f
|
|
0x13 0xf9 0xff 0xeb
|
|
0x12 0xf9 0x04 0x9b
|
|
0x1d 0xf9 0x04 0x39
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRSB(literal)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrsb.w r0, [pc, #-0]
|
|
# CHECK: ldrsb.w r12, [pc, #80]
|
|
# CHECK: ldrsb.w r3, [pc, #0]
|
|
0x1f 0xf9 0x00 0x00
|
|
0x9f 0xf9 0x50 0xc0
|
|
0x9f 0xf9 0x00 0x30
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRSBT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrsbt r1, [r2]
|
|
# CHECK: ldrsbt r1, [r8]
|
|
# CHECK: ldrsbt r1, [r8, #3]
|
|
# CHECK: ldrsbt r1, [r8, #255]
|
|
|
|
0x12 0xf9 0x00 0x1e
|
|
0x18 0xf9 0x00 0x1e
|
|
0x18 0xf9 0x03 0x1e
|
|
0x18 0xf9 0xff 0x1e
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRSH(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrsh r5, [r5, #-4]
|
|
# CHECK: ldrsh.w r5, [r6, #32]
|
|
# CHECK: ldrsh.w r5, [r6, #33]
|
|
# CHECK: ldrsh.w r5, [r6, #257]
|
|
# CHECK: ldrsh.w lr, [r7, #257]
|
|
# CHECK: ldrsh r10, [r5, #-0]
|
|
|
|
0x35 0xf9 0x04 0x5c
|
|
0xb6 0xf9 0x20 0x50
|
|
0xb6 0xf9 0x21 0x50
|
|
0xb6 0xf9 0x01 0x51
|
|
0xb7 0xf9 0x01 0xe1
|
|
0x35 0xf9 0x00 0xac
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRSH(register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrsh.w r1, [r8, r1]
|
|
# CHECK: ldrsh.w r4, [r5, r2]
|
|
# CHECK: ldrsh.w r6, [r0, r2, lsl #3]
|
|
# CHECK: ldrsh.w r8, [r8, r2, lsl #2]
|
|
# CHECK: ldrsh.w r7, [sp, r2, lsl #1]
|
|
# CHECK: ldrsh.w r7, [sp, r2]
|
|
# CHECK: ldrsh r5, [r8, #255]!
|
|
# CHECK: ldrsh r2, [r5, #4]!
|
|
# CHECK: ldrsh r1, [r4, #-4]!
|
|
# CHECK: ldrsh r1, [r4, #0]!
|
|
# CHECK: ldrsh lr, [r3], #255
|
|
# CHECK: ldrsh r9, [r2], #4
|
|
# CHECK: ldrsh r3, [sp], #-4
|
|
|
|
0x38 0xf9 0x01 0x10
|
|
0x35 0xf9 0x02 0x40
|
|
0x30 0xf9 0x32 0x60
|
|
0x38 0xf9 0x22 0x80
|
|
0x3d 0xf9 0x12 0x70
|
|
0x3d 0xf9 0x02 0x70
|
|
0x38 0xf9 0xff 0x5f
|
|
0x35 0xf9 0x04 0x2f
|
|
0x34 0xf9 0x04 0x1d
|
|
0x34 0xf9 0x00 0x1f
|
|
0x33 0xf9 0xff 0xeb
|
|
0x32 0xf9 0x04 0x9b
|
|
0x3d 0xf9 0x04 0x39
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRSH(literal)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrsh.w r0, [pc, #-0]
|
|
# CHECK: ldrsh.w r10, [pc, #-231]
|
|
# CHECK: ldrsh.w r6, [pc, #0]
|
|
0x3f 0xf9 0x00 0x00
|
|
0x3f 0xf9 0xe7 0xa0
|
|
0xbf 0xf9 0x00 0x60
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRSHT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrsht r1, [r2]
|
|
# CHECK: ldrsht r1, [r8]
|
|
# CHECK: ldrsht r1, [r8, #3]
|
|
# CHECK: ldrsht r1, [r8, #255]
|
|
|
|
0x32 0xf9 0x00 0x1e
|
|
0x38 0xf9 0x00 0x1e
|
|
0x38 0xf9 0x03 0x1e
|
|
0x38 0xf9 0xff 0x1e
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LDRT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ldrt r1, [r2]
|
|
# CHECK: ldrt r2, [r6]
|
|
# CHECK: ldrt r3, [r7, #3]
|
|
# CHECK: ldrt r4, [r9, #255]
|
|
|
|
0x52 0xf8 0x00 0x1e
|
|
0x56 0xf8 0x00 0x2e
|
|
0x57 0xf8 0x03 0x3e
|
|
0x59 0xf8 0xff 0x4e
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LSL (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: lsl.w r2, r3, #12
|
|
# CHECK: lsls.w r8, r3, #31
|
|
# CHECK: lsls.w r2, r3, #1
|
|
# CHECK: lsl.w r2, r3, #4
|
|
# CHECK: lsls.w r2, r12, #15
|
|
|
|
# CHECK: lsl.w r3, r3, #19
|
|
# CHECK: lsls.w r8, r8, #2
|
|
# CHECK: lsls.w r7, r7, #5
|
|
# CHECK: lsl.w r12, r12, #21
|
|
|
|
0x4f 0xea 0x03 0x32
|
|
0x5f 0xea 0xc3 0x78
|
|
0x5f 0xea 0x43 0x02
|
|
0x4f 0xea 0x03 0x12
|
|
0x5f 0xea 0xcc 0x32
|
|
|
|
0x4f 0xea 0xc3 0x43
|
|
0x5f 0xea 0x88 0x08
|
|
0x5f 0xea 0x47 0x17
|
|
0x4f 0xea 0x4c 0x5c
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LSL (register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: lsl.w r3, r4, r2
|
|
# CHECK: lsl.w r1, r1, r2
|
|
# CHECK: lsls.w r3, r4, r8
|
|
|
|
0x04 0xfa 0x02 0xf3
|
|
0x01 0xfa 0x02 0xf1
|
|
0x14 0xfa 0x08 0xf3
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LSR (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: lsr.w r2, r3, #12
|
|
# CHECK: lsrs.w r8, r3, #32
|
|
# CHECK: lsrs.w r2, r3, #1
|
|
# CHECK: lsr.w r2, r3, #4
|
|
# CHECK: lsrs.w r2, r12, #15
|
|
|
|
# CHECK: lsr.w r3, r3, #19
|
|
# CHECK: lsrs.w r8, r8, #2
|
|
# CHECK: lsrs.w r7, r7, #5
|
|
# CHECK: lsr.w r12, r12, #21
|
|
|
|
0x4f 0xea 0x13 0x32
|
|
0x5f 0xea 0x13 0x08
|
|
0x5f 0xea 0x53 0x02
|
|
0x4f 0xea 0x13 0x12
|
|
0x5f 0xea 0xdc 0x32
|
|
|
|
0x4f 0xea 0xd3 0x43
|
|
0x5f 0xea 0x98 0x08
|
|
0x5f 0xea 0x57 0x17
|
|
0x4f 0xea 0x5c 0x5c
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# LSR (register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: lsr.w r3, r4, r2
|
|
# CHECK: lsr.w r1, r1, r2
|
|
# CHECK: lsrs.w r3, r4, r8
|
|
|
|
0x24 0xfa 0x02 0xf3
|
|
0x21 0xfa 0x02 0xf1
|
|
0x34 0xfa 0x08 0xf3
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MCR/MCR2
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: mcr p7, #1, r5, c1, c1, #4
|
|
# CHECK: mcr2 p7, #1, r5, c1, c1, #4
|
|
|
|
0x21 0xee 0x91 0x57
|
|
0x21 0xfe 0x91 0x57
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MCRR/MCRR2
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: mcrr p7, #15, r5, r4, c1
|
|
# CHECK: mcrr2 p7, #15, r5, r4, c1
|
|
|
|
0x44 0xec 0xf1 0x57
|
|
0x44 0xfc 0xf1 0x57
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MLA/MLS
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: mla r1, r2, r3, r4
|
|
# CHECK: mls r1, r2, r3, r4
|
|
|
|
0x02 0xfb 0x03 0x41
|
|
0x02 0xfb 0x13 0x41
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MOV(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: movs r1, #21
|
|
# CHECK: movs.w r1, #21
|
|
# CHECK: movs.w r8, #21
|
|
# CHECK: movw r0, #65535
|
|
# CHECK: movw r1, #43777
|
|
# CHECK: movw r1, #43792
|
|
# CHECK: mov.w r0, #66846720
|
|
# CHECK: mov.w r0, #66846720
|
|
# CHECK: movs.w r0, #66846720
|
|
|
|
0x15 0x21
|
|
0x5f 0xf0 0x15 0x01
|
|
0x5f 0xf0 0x15 0x08
|
|
0x4f 0xf6 0xff 0x70
|
|
0x4a 0xf6 0x01 0x31
|
|
0x4a 0xf6 0x10 0x31
|
|
0x4f 0xf0 0x7f 0x70
|
|
0x4f 0xf0 0x7f 0x70
|
|
0x5f 0xf0 0x7f 0x70
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MOVT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: movt r3, #7
|
|
# CHECK: movt r6, #65535
|
|
# CHECK: it eq
|
|
# CHECK: movteq r4, #4080
|
|
|
|
0xc0 0xf2 0x07 0x03
|
|
0xcf 0xf6 0xff 0x76
|
|
0x08 0xbf
|
|
0xc0 0xf6 0xf0 0x74
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MRC/MRC2
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: mrc p14, #0, r1, c1, c2, #4
|
|
# CHECK: mrc2 p14, #0, r1, c1, c2, #4
|
|
|
|
0x11 0xee 0x92 0x1e
|
|
0x11 0xfe 0x92 0x1e
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MRRC/MRRC2
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: mrrc p7, #1, r5, r4, c1
|
|
# CHECK: mrrc2 p7, #1, r5, r4, c1
|
|
|
|
0x54 0xec 0x11 0x57
|
|
0x54 0xfc 0x11 0x57
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MRS
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: mrs r8, apsr
|
|
# CHECK: mrs r8, spsr
|
|
|
|
0xef 0xf3 0x00 0x88
|
|
0xff 0xf3 0x00 0x88
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MSR
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: msr APSR_nzcvq, r1
|
|
# CHECK: msr APSR_g, r2
|
|
# CHECK: msr APSR_nzcvq, r3
|
|
# CHECK: msr APSR_nzcvq, r4
|
|
# CHECK: msr APSR_nzcvqg, r5
|
|
# CHECK: msr CPSR_fc, r6
|
|
# CHECK: msr CPSR_c, r7
|
|
# CHECK: msr CPSR_x, r8
|
|
# CHECK: msr CPSR_fc, r9
|
|
# CHECK: msr CPSR_fc, r11
|
|
# CHECK: msr CPSR_fsx, r12
|
|
# CHECK: msr SPSR_fc, r0
|
|
# CHECK: msr SPSR_fsxc, r5
|
|
# CHECK: msr CPSR_fsxc, r8
|
|
|
|
0x81 0xf3 0x00 0x88
|
|
0x82 0xf3 0x00 0x84
|
|
0x83 0xf3 0x00 0x88
|
|
0x84 0xf3 0x00 0x88
|
|
0x85 0xf3 0x00 0x8c
|
|
0x86 0xf3 0x00 0x89
|
|
0x87 0xf3 0x00 0x81
|
|
0x88 0xf3 0x00 0x82
|
|
0x89 0xf3 0x00 0x89
|
|
0x8b 0xf3 0x00 0x89
|
|
0x8c 0xf3 0x00 0x8e
|
|
0x90 0xf3 0x00 0x89
|
|
0x95 0xf3 0x00 0x8f
|
|
0x88 0xf3 0x00 0x8f
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MUL
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: muls r3, r4, r3
|
|
# CHECK: mul r3, r4, r3
|
|
# CHECK: mul r3, r4, r6
|
|
# CHECK: it eq
|
|
# CHECK: muleq r3, r4, r5
|
|
|
|
0x63 0x43
|
|
0x04 0xfb 0x03 0xf3
|
|
0x04 0xfb 0x06 0xf3
|
|
0x08 0xbf
|
|
0x04 0xfb 0x05 0xf3
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MVN(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: mvns r8, #21
|
|
# CHECK: mvn r0, #66846720
|
|
# CHECK: mvns r0, #66846720
|
|
# CHECK: itte eq
|
|
# CHECK: mvnseq r1, #12
|
|
# CHECK: mvneq r1, #12
|
|
# CHECK: mvnne r1, #12
|
|
|
|
0x7f 0xf0 0x15 0x08
|
|
0x6f 0xf0 0x7f 0x70
|
|
0x7f 0xf0 0x7f 0x70
|
|
0x06 0xbf
|
|
0x7f 0xf0 0x0c 0x01
|
|
0x6f 0xf0 0x0c 0x01
|
|
0x6f 0xf0 0x0c 0x01
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# MVN(register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: mvn.w r2, r3
|
|
# CHECK: mvns r2, r3
|
|
# CHECK: mvn.w r5, r6, lsl #19
|
|
# CHECK: mvn.w r5, r6, lsr #9
|
|
# CHECK: mvn.w r5, r6, asr #4
|
|
# CHECK: mvn.w r5, r6, ror #6
|
|
# CHECK: mvn.w r5, r6, rrx
|
|
# CHECK: it eq
|
|
# CHECK: mvneq r2, r3
|
|
|
|
0x6f 0xea 0x03 0x02
|
|
0xda 0x43
|
|
0x6f 0xea 0xc6 0x45
|
|
0x6f 0xea 0x56 0x25
|
|
0x6f 0xea 0x26 0x15
|
|
0x6f 0xea 0xb6 0x15
|
|
0x6f 0xea 0x36 0x05
|
|
0x08 0xbf
|
|
0xda 0x43
|
|
|
|
#------------------------------------------------------------------------------
|
|
# NOP
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: nop.w
|
|
|
|
0xaf 0xf3 0x00 0x80
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ORN
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: orn r4, r5, #61440
|
|
# CHECK: orn r4, r5, r6
|
|
# CHECK: orns r4, r5, r6
|
|
# CHECK: orn r4, r5, r6, lsl #5
|
|
# CHECK: orns r4, r5, r6, lsr #5
|
|
# CHECK: orn r4, r5, r6, lsr #5
|
|
# CHECK: orns r4, r5, r6, asr #5
|
|
# CHECK: orn r4, r5, r6, ror #5
|
|
|
|
0x65 0xf4 0x70 0x44
|
|
0x65 0xea 0x06 0x04
|
|
0x75 0xea 0x06 0x04
|
|
0x65 0xea 0x46 0x14
|
|
0x75 0xea 0x56 0x14
|
|
0x65 0xea 0x56 0x14
|
|
0x75 0xea 0x66 0x14
|
|
0x65 0xea 0x76 0x14
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ORR
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: orr r4, r5, #61440
|
|
# CHECK: orr.w r4, r5, r6
|
|
# CHECK: orr.w r4, r5, r6, lsl #5
|
|
# CHECK: orrs.w r4, r5, r6, lsr #5
|
|
# CHECK: orr.w r4, r5, r6, lsr #5
|
|
# CHECK: orrs.w r4, r5, r6, asr #5
|
|
# CHECK: orr.w r4, r5, r6, ror #5
|
|
|
|
0x45 0xf4 0x70 0x44
|
|
0x45 0xea 0x06 0x04
|
|
0x45 0xea 0x46 0x14
|
|
0x55 0xea 0x56 0x14
|
|
0x45 0xea 0x56 0x14
|
|
0x55 0xea 0x66 0x14
|
|
0x45 0xea 0x76 0x14
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# PKH
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: pkhbt r2, r2, r3
|
|
# CHECK: pkhbt r2, r2, r3, lsl #31
|
|
# CHECK: pkhbt r2, r2, r3, lsl #15
|
|
|
|
# CHECK: pkhtb r2, r2, r3, asr #31
|
|
# CHECK: pkhtb r2, r2, r3, asr #15
|
|
|
|
0xc2 0xea 0x03 0x02
|
|
0xc2 0xea 0xc3 0x72
|
|
0xc2 0xea 0xc3 0x32
|
|
|
|
0xc2 0xea 0xe3 0x72
|
|
0xc2 0xea 0xe3 0x32
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# PLD(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: pld [r5, #-4]
|
|
# CHECK: pld [r6, #32]
|
|
# CHECK: pld [r6, #33]
|
|
# CHECK: pld [r6, #257]
|
|
# CHECK: pld [r7, #257]
|
|
|
|
0x15 0xf8 0x04 0xfc
|
|
0x96 0xf8 0x20 0xf0
|
|
0x96 0xf8 0x21 0xf0
|
|
0x96 0xf8 0x01 0xf1
|
|
0x97 0xf8 0x01 0xf1
|
|
|
|
#------------------------------------------------------------------------------
|
|
# PLD(register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: pld [r8, r1]
|
|
# CHECK: pld [r5, r2]
|
|
# CHECK: pld [r0, r2, lsl #3]
|
|
# CHECK: pld [r8, r2, lsl #2]
|
|
# CHECK: pld [sp, r2, lsl #1]
|
|
# CHECK: pld [sp, r2]
|
|
|
|
0x18 0xf8 0x01 0xf0
|
|
0x15 0xf8 0x02 0xf0
|
|
0x10 0xf8 0x32 0xf0
|
|
0x18 0xf8 0x22 0xf0
|
|
0x1d 0xf8 0x12 0xf0
|
|
0x1d 0xf8 0x02 0xf0
|
|
|
|
#------------------------------------------------------------------------------
|
|
# PLD(literal)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: pld [pc, #-0]
|
|
# CHECK: pld [pc, #455]
|
|
# CHECK: pld [pc, #0]
|
|
|
|
0x1f 0xf8 0x00 0xf0
|
|
0x9f 0xf8 0xc7 0xf1
|
|
0x9f 0xf8 0x00 0xf0
|
|
|
|
#------------------------------------------------------------------------------
|
|
# PLI(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: pli [r5, #-4]
|
|
# CHECK: pli [r6, #32]
|
|
# CHECK: pli [r6, #33]
|
|
# CHECK: pli [r6, #257]
|
|
# CHECK: pli [r7, #257]
|
|
|
|
0x15 0xf9 0x04 0xfc
|
|
0x96 0xf9 0x20 0xf0
|
|
0x96 0xf9 0x21 0xf0
|
|
0x96 0xf9 0x01 0xf1
|
|
0x97 0xf9 0x01 0xf1
|
|
|
|
#------------------------------------------------------------------------------
|
|
# PLI(register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: pli [r8, r1]
|
|
# CHECK: pli [r5, r2]
|
|
# CHECK: pli [r0, r2, lsl #3]
|
|
# CHECK: pli [r8, r2, lsl #2]
|
|
# CHECK: pli [sp, r2, lsl #1]
|
|
# CHECK: pli [sp, r2]
|
|
|
|
0x18 0xf9 0x01 0xf0
|
|
0x15 0xf9 0x02 0xf0
|
|
0x10 0xf9 0x32 0xf0
|
|
0x18 0xf9 0x22 0xf0
|
|
0x1d 0xf9 0x12 0xf0
|
|
0x1d 0xf9 0x02 0xf0
|
|
|
|
#------------------------------------------------------------------------------
|
|
# PLI(literal)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: pli [pc, #-0]
|
|
# CHECK: pli [pc, #-328]
|
|
# CHECK: pli [pc, #0]
|
|
|
|
0x1f 0xf9 0x00 0xf0
|
|
0x1f 0xf9 0x48 0xf1
|
|
0x9f 0xf9 0x00 0xf0
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# QADD/QADD16/QADD8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: qadd r1, r2, r3
|
|
# CHECK: qadd16 r1, r2, r3
|
|
# CHECK: qadd8 r1, r2, r3
|
|
# CHECK: itte gt
|
|
# CHECK: qaddgt r1, r2, r3
|
|
# CHECK: qadd16gt r1, r2, r3
|
|
# CHECK: qadd8le r1, r2, r3
|
|
|
|
0x83 0xfa 0x82 0xf1
|
|
0x92 0xfa 0x13 0xf1
|
|
0x82 0xfa 0x13 0xf1
|
|
0xc6 0xbf
|
|
0x83 0xfa 0x82 0xf1
|
|
0x92 0xfa 0x13 0xf1
|
|
0x82 0xfa 0x13 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# QDADD/QDSUB
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: qdadd r6, r7, r8
|
|
# CHECK: qdsub r6, r7, r8
|
|
# CHECK: itt hi
|
|
# CHECK: qdaddhi r6, r7, r8
|
|
# CHECK: qdsubhi r6, r7, r8
|
|
|
|
0x88 0xfa 0x97 0xf6
|
|
0x88 0xfa 0xb7 0xf6
|
|
0x84 0xbf
|
|
0x88 0xfa 0x97 0xf6
|
|
0x88 0xfa 0xb7 0xf6
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# QSAX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: qsax r9, r12, r0
|
|
# CHECK: it eq
|
|
# CHECK: qsaxeq r9, r12, r0
|
|
|
|
0xec 0xfa 0x10 0xf9
|
|
0x08 0xbf
|
|
0xec 0xfa 0x10 0xf9
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# QSUB/QSUB16/QSUB8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: qsub r1, r2, r3
|
|
# CHECK: qsub16 r1, r2, r3
|
|
# CHECK: qsub8 r1, r2, r3
|
|
# CHECK: itet le
|
|
# CHECK: qsuble r1, r2, r3
|
|
# CHECK: qsub16gt r1, r2, r3
|
|
# CHECK: qsub8le r1, r2, r3
|
|
|
|
0x83 0xfa 0xa2 0xf1
|
|
0xd2 0xfa 0x13 0xf1
|
|
0xc2 0xfa 0x13 0xf1
|
|
0xd6 0xbf
|
|
0x83 0xfa 0xa2 0xf1
|
|
0xd2 0xfa 0x13 0xf1
|
|
0xc2 0xfa 0x13 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# RBIT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: rbit r1, r2
|
|
# CHECK: it ne
|
|
# CHECK: rbitne r1, r2
|
|
|
|
0x92 0xfa 0xa2 0xf1
|
|
0x18 0xbf
|
|
0x92 0xfa 0xa2 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# REV
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: rev.w r1, r2
|
|
# CHECK: rev.w r2, r8
|
|
# CHECK: itt ne
|
|
# CHECK: revne r1, r2
|
|
# CHECK: revne.w r1, r8
|
|
|
|
0x92 0xfa 0x82 0xf1
|
|
0x98 0xfa 0x88 0xf2
|
|
0x1c 0xbf
|
|
0x11 0xba
|
|
0x98 0xfa 0x88 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# REV16
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: rev16.w r1, r2
|
|
# CHECK: rev16.w r2, r8
|
|
# CHECK: itt ne
|
|
# CHECK: rev16ne r1, r2
|
|
# CHECK: rev16ne.w r1, r8
|
|
|
|
0x92 0xfa 0x92 0xf1
|
|
0x98 0xfa 0x98 0xf2
|
|
0x1c 0xbf
|
|
0x51 0xba
|
|
0x98 0xfa 0x98 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# REVSH
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: revsh.w r1, r2
|
|
# CHECK: revsh.w r2, r8
|
|
# CHECK: itt ne
|
|
# CHECK: revshne r1, r2
|
|
# CHECK: revshne.w r1, r8
|
|
|
|
0x92 0xfa 0xb2 0xf1
|
|
0x98 0xfa 0xb8 0xf2
|
|
0x1c 0xbf
|
|
0xd1 0xba
|
|
0x98 0xfa 0xb8 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ROR (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ror.w r2, r3, #12
|
|
# CHECK: rors.w r8, r3, #31
|
|
# CHECK: rors.w r2, r3, #1
|
|
# CHECK: ror.w r2, r3, #4
|
|
# CHECK: rors.w r2, r12, #15
|
|
|
|
# CHECK: ror.w r3, r3, #19
|
|
# CHECK: rors.w r8, r8, #2
|
|
# CHECK: rors.w r7, r7, #5
|
|
# CHECK: ror.w r12, r12, #21
|
|
|
|
0x4f 0xea 0x33 0x32
|
|
0x5f 0xea 0xf3 0x78
|
|
0x5f 0xea 0x73 0x02
|
|
0x4f 0xea 0x33 0x12
|
|
0x5f 0xea 0xfc 0x32
|
|
|
|
0x4f 0xea 0xf3 0x43
|
|
0x5f 0xea 0xb8 0x08
|
|
0x5f 0xea 0x77 0x17
|
|
0x4f 0xea 0x7c 0x5c
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# ROR (register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ror.w r3, r4, r2
|
|
# CHECK: ror.w r1, r1, r2
|
|
# CHECK: rors.w r3, r4, r8
|
|
|
|
0x64 0xfa 0x02 0xf3
|
|
0x61 0xfa 0x02 0xf1
|
|
0x74 0xfa 0x08 0xf3
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# RRX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: rrx r1, r2
|
|
# CHECK: rrxs r1, r2
|
|
# CHECK: ite lt
|
|
# CHECK: rrxlt r9, r12
|
|
# CHECK: rrxsge r8, r3
|
|
|
|
0x4f 0xea 0x32 0x01
|
|
0x5f 0xea 0x32 0x01
|
|
0xb4 0xbf
|
|
0x4f 0xea 0x3c 0x09
|
|
0x5f 0xea 0x33 0x08
|
|
|
|
#------------------------------------------------------------------------------
|
|
# RSB (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: rsb.w r2, r5, #1044480
|
|
# CHECK: rsbs.w r3, r12, #15
|
|
# CHECK: rsb.w r1, r1, #255
|
|
|
|
0xc5 0xf5 0x7f 0x22
|
|
0xdc 0xf1 0x0f 0x03
|
|
0xc1 0xf1 0xff 0x01
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# RSB (register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: rsb r4, r4, r8
|
|
# CHECK: rsb r4, r9, r8
|
|
# CHECK: rsb r1, r4, r8, asr #3
|
|
# CHECK: rsbs r2, r1, r7, lsl #1
|
|
|
|
0xc4 0xeb 0x08 0x04
|
|
0xc9 0xeb 0x08 0x04
|
|
0xc4 0xeb 0xe8 0x01
|
|
0xd1 0xeb 0x47 0x02
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SADD16
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sadd16 r3, r4, r8
|
|
# CHECK: it ne
|
|
# CHECK: sadd16ne r3, r4, r8
|
|
|
|
0x94 0xfa 0x08 0xf3
|
|
0x18 0xbf
|
|
0x94 0xfa 0x08 0xf3
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SADD8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sadd8 r3, r4, r8
|
|
# CHECK: it ne
|
|
# CHECK: sadd8ne r3, r4, r8
|
|
|
|
0x84 0xfa 0x08 0xf3
|
|
0x18 0xbf
|
|
0x84 0xfa 0x08 0xf3
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SASX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sasx r9, r2, r7
|
|
# CHECK: it ne
|
|
# CHECK: sasxne r2, r5, r6
|
|
|
|
0xa2 0xfa 0x07 0xf9
|
|
0x18 0xbf
|
|
0xa5 0xfa 0x06 0xf2
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SBC (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sbc r0, r1, #4
|
|
# CHECK: sbcs r0, r1, #0
|
|
# CHECK: sbc r1, r2, #255
|
|
# CHECK: sbc r3, r7, #5570645
|
|
# CHECK: sbc r8, r12, #2852170240
|
|
# CHECK: sbc r9, r7, #2779096485
|
|
# CHECK: sbc r5, r3, #2264924160
|
|
# CHECK: sbc r4, r2, #2139095040
|
|
# CHECK: sbc r4, r2, #1664
|
|
|
|
0x61 0xf1 0x04 0x00
|
|
0x71 0xf1 0x00 0x00
|
|
0x62 0xf1 0xff 0x01
|
|
0x67 0xf1 0x55 0x13
|
|
0x6c 0xf1 0xaa 0x28
|
|
0x67 0xf1 0xa5 0x39
|
|
0x63 0xf1 0x07 0x45
|
|
0x62 0xf1 0xff 0x44
|
|
0x62 0xf5 0xd0 0x64
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SBC (register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sbc.w r4, r5, r6
|
|
# CHECK: sbcs.w r4, r5, r6
|
|
# CHECK: sbc.w r9, r1, r3
|
|
# CHECK: sbcs.w r9, r1, r3
|
|
# CHECK: sbc.w r0, r1, r3, ror #4
|
|
# CHECK: sbcs.w r0, r1, r3, lsl #7
|
|
# CHECK: sbc.w r0, r1, r3, lsr #31
|
|
# CHECK: sbcs.w r0, r1, r3, asr #32
|
|
|
|
0x65 0xeb 0x06 0x04
|
|
0x75 0xeb 0x06 0x04
|
|
0x61 0xeb 0x03 0x09
|
|
0x71 0xeb 0x03 0x09
|
|
0x61 0xeb 0x33 0x10
|
|
0x71 0xeb 0xc3 0x10
|
|
0x61 0xeb 0xd3 0x70
|
|
0x71 0xeb 0x23 0x00
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SBFX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sbfx r4, r5, #16, #1
|
|
# CHECK: it gt
|
|
# CHECK: sbfxgt r4, r5, #16, #16
|
|
|
|
0x45 0xf3 0x00 0x44
|
|
0xc8 0xbf
|
|
0x45 0xf3 0x0f 0x44
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SEL
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sel r5, r9, r2
|
|
# CHECK: it le
|
|
# CHECK: selle r5, r9, r2
|
|
|
|
0xa9 0xfa 0x82 0xf5
|
|
0xd8 0xbf
|
|
0xa9 0xfa 0x82 0xf5
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SEV
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sev.w
|
|
# CHECK: it eq
|
|
# CHECK: seveq.w
|
|
|
|
0xaf 0xf3 0x04 0x80
|
|
0x08 0xbf
|
|
0xaf 0xf3 0x04 0x80
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SADD16/SADD8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sadd16 r1, r2, r3
|
|
# CHECK: sadd8 r1, r2, r3
|
|
# CHECK: ite gt
|
|
# CHECK: sadd16gt r1, r2, r3
|
|
# CHECK: sadd8le r1, r2, r3
|
|
|
|
0x92 0xfa 0x03 0xf1
|
|
0x82 0xfa 0x03 0xf1
|
|
0xcc 0xbf
|
|
0x92 0xfa 0x03 0xf1
|
|
0x82 0xfa 0x03 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SHASX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: shasx r4, r8, r2
|
|
# CHECK: it gt
|
|
# CHECK: shasxgt r4, r8, r2
|
|
|
|
0xa8 0xfa 0x22 0xf4
|
|
0xc8 0xbf
|
|
0xa8 0xfa 0x22 0xf4
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SHASX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: shsax r4, r8, r2
|
|
# CHECK: it gt
|
|
# CHECK: shsaxgt r4, r8, r2
|
|
|
|
0xe8 0xfa 0x22 0xf4
|
|
0xc8 0xbf
|
|
0xe8 0xfa 0x22 0xf4
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SHSUB16/SHSUB8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: shsub16 r4, r8, r2
|
|
# CHECK: shsub8 r4, r8, r2
|
|
# CHECK: itt gt
|
|
# CHECK: shsub16gt r4, r8, r2
|
|
# CHECK: shsub8gt r4, r8, r2
|
|
|
|
0xd8 0xfa 0x22 0xf4
|
|
0xc8 0xfa 0x22 0xf4
|
|
0xc4 0xbf
|
|
0xd8 0xfa 0x22 0xf4
|
|
0xc8 0xfa 0x22 0xf4
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SMLABB/SMLABT/SMLATB/SMLATT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: smlabb r3, r1, r9, r0
|
|
# CHECK: smlabt r5, r6, r4, r1
|
|
# CHECK: smlatb r4, r2, r3, r2
|
|
# CHECK: smlatt r8, r3, r8, r4
|
|
# CHECK: itete gt
|
|
# CHECK: smlabbgt r3, r1, r9, r0
|
|
# CHECK: smlabtle r5, r6, r4, r1
|
|
# CHECK: smlatbgt r4, r2, r3, r2
|
|
# CHECK: smlattle r8, r3, r8, r4
|
|
|
|
0x11 0xfb 0x09 0x03
|
|
0x16 0xfb 0x14 0x15
|
|
0x12 0xfb 0x23 0x24
|
|
0x13 0xfb 0x38 0x48
|
|
0xcb 0xbf
|
|
0x11 0xfb 0x09 0x03
|
|
0x16 0xfb 0x14 0x15
|
|
0x12 0xfb 0x23 0x24
|
|
0x13 0xfb 0x38 0x48
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SMLAD/SMLADX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: smlad r2, r3, r5, r8
|
|
# CHECK: smladx r2, r3, r5, r8
|
|
# CHECK: itt hi
|
|
# CHECK: smladhi r2, r3, r5, r8
|
|
# CHECK: smladxhi r2, r3, r5, r8
|
|
|
|
0x23 0xfb 0x05 0x82
|
|
0x23 0xfb 0x15 0x82
|
|
0x84 0xbf
|
|
0x23 0xfb 0x05 0x82
|
|
0x23 0xfb 0x15 0x82
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SMLAL
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: smlal r2, r3, r5, r8
|
|
# CHECK: it eq
|
|
# CHECK: smlaleq r2, r3, r5, r8
|
|
|
|
0xc5 0xfb 0x08 0x23
|
|
0x08 0xbf
|
|
0xc5 0xfb 0x08 0x23
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SMLALBB/SMLALBT/SMLALTB/SMLALTT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: smlalbb r3, r1, r9, r0
|
|
# CHECK: smlalbt r5, r6, r4, r1
|
|
# CHECK: smlaltb r4, r2, r3, r2
|
|
# CHECK: smlaltt r8, r3, r8, r4
|
|
# CHECK: iteet ge
|
|
# CHECK: smlalbbge r3, r1, r9, r0
|
|
# CHECK: smlalbtlt r5, r6, r4, r1
|
|
# CHECK: smlaltblt r4, r2, r3, r2
|
|
# CHECK: smlalttge r8, r3, r8, r4
|
|
|
|
0xc9 0xfb 0x80 0x31
|
|
0xc4 0xfb 0x91 0x56
|
|
0xc3 0xfb 0xa2 0x42
|
|
0xc8 0xfb 0xb4 0x83
|
|
0xad 0xbf
|
|
0xc9 0xfb 0x80 0x31
|
|
0xc4 0xfb 0x91 0x56
|
|
0xc3 0xfb 0xa2 0x42
|
|
0xc8 0xfb 0xb4 0x83
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SMLALD/SMLALDX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: smlald r2, r3, r5, r8
|
|
# CHECK: smlaldx r2, r3, r5, r8
|
|
# CHECK: ite eq
|
|
# CHECK: smlaldeq r2, r3, r5, r8
|
|
# CHECK: smlaldxne r2, r3, r5, r8
|
|
|
|
0xc5 0xfb 0xc8 0x23
|
|
0xc5 0xfb 0xd8 0x23
|
|
0x0c 0xbf
|
|
0xc5 0xfb 0xc8 0x23
|
|
0xc5 0xfb 0xd8 0x23
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SMLAWB/SMLAWT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: smlawb r2, r3, r10, r8
|
|
# CHECK: smlawt r8, r3, r5, r9
|
|
# CHECK: ite eq
|
|
# CHECK: smlawbeq r2, r7, r5, r8
|
|
# CHECK: smlawtne r1, r3, r0, r8
|
|
|
|
0x33 0xfb 0x0a 0x82
|
|
0x33 0xfb 0x15 0x98
|
|
0x0c 0xbf
|
|
0x37 0xfb 0x05 0x82
|
|
0x33 0xfb 0x10 0x81
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SMLSD/SMLSDX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: smlsd r2, r3, r5, r8
|
|
# CHECK: smlsdx r2, r3, r5, r8
|
|
# CHECK: ite le
|
|
# CHECK: smlsdle r2, r3, r5, r8
|
|
# CHECK: smlsdxgt r2, r3, r5, r8
|
|
|
|
0x43 0xfb 0x05 0x82
|
|
0x43 0xfb 0x15 0x82
|
|
0xd4 0xbf
|
|
0x43 0xfb 0x05 0x82
|
|
0x43 0xfb 0x15 0x82
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SMLSLD/SMLSLDX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: smlsld r2, r9, r5, r1
|
|
# CHECK: smlsldx r4, r11, r2, r8
|
|
# CHECK: ite ge
|
|
# CHECK: smlsldge r8, r2, r5, r6
|
|
# CHECK: smlsldxlt r1, r0, r3, r8
|
|
|
|
0xd5 0xfb 0xc1 0x29
|
|
0xd2 0xfb 0xd8 0x4b
|
|
0xac 0xbf
|
|
0xd5 0xfb 0xc6 0x82
|
|
0xd3 0xfb 0xd8 0x10
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SMMLA/SMMLAR
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: smmla r1, r2, r3, r4
|
|
# CHECK: smmlar r4, r3, r2, r1
|
|
# CHECK: ite lo
|
|
# CHECK: smmlalo r1, r2, r3, r4
|
|
# CHECK: smmlarhs r4, r3, r2, r1
|
|
|
|
0x52 0xfb 0x03 0x41
|
|
0x53 0xfb 0x12 0x14
|
|
0x34 0xbf
|
|
0x52 0xfb 0x03 0x41
|
|
0x53 0xfb 0x12 0x14
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SMMLS/SMMLSR
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: smmls r1, r2, r3, r4
|
|
# CHECK: smmlsr r4, r3, r2, r1
|
|
# CHECK: ite lo
|
|
# CHECK: smmlslo r1, r2, r3, r4
|
|
# CHECK: smmlsrhs r4, r3, r2, r1
|
|
|
|
0x62 0xfb 0x03 0x41
|
|
0x63 0xfb 0x12 0x14
|
|
0x34 0xbf
|
|
0x62 0xfb 0x03 0x41
|
|
0x63 0xfb 0x12 0x14
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SSAT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ssat r9, #30, r0, asr #2
|
|
|
|
0x20 0xf3 0x9d 0x09
|
|
|
|
#------------------------------------------------------------------------------
|
|
# STR (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: str r10, [r11], #0
|
|
|
|
0x4b 0xf8 0x00 0xab
|
|
|
|
#------------------------------------------------------------------------------
|
|
# STRD (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: strd r1, r1, [r0], #0
|
|
# CHECK: strd r6, r3, [r5], #-8
|
|
# CHECK: strd r8, r5, [r5], #-0
|
|
# CHECK: strd r7, r4, [r5], #-4
|
|
# CHECK: strd r0, r1, [r2, #-0]!
|
|
# CHECK: strd r0, r1, [r2, #0]!
|
|
# CHECK: strd r0, r1, [r2, #-0]
|
|
|
|
0xe0 0xe8 0x00 0x11
|
|
0x65 0xe8 0x02 0x63
|
|
0x65 0xe8 0x00 0x85
|
|
0x65 0xe8 0x01 0x74
|
|
0x62 0xe9 0x00 0x01
|
|
0xe2 0xe9 0x00 0x01
|
|
0x42 0xe9 0x00 0x01
|
|
|
|
#------------------------------------------------------------------------------
|
|
# STREX/STREXB/STREXH/STREXD
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: strex r1, r8, [r4]
|
|
# CHECK: strex r8, r2, [r4]
|
|
# CHECK: strex r2, r12, [sp, #128]
|
|
# CHECK: strexb r5, r1, [r7]
|
|
# CHECK: strexh r9, r7, [r12]
|
|
# CHECK: strexd r9, r3, r6, [r4]
|
|
|
|
0x44 0xe8 0x00 0x81
|
|
0x44 0xe8 0x00 0x28
|
|
0x4d 0xe8 0x20 0xc2
|
|
0xc7 0xe8 0x45 0x1f
|
|
0xcc 0xe8 0x59 0x7f
|
|
0xc4 0xe8 0x79 0x36
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# STRH(immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: strh r5, [r5, #-4]
|
|
# CHECK: strh r5, [r6, #32]
|
|
# CHECK: strh.w r5, [r6, #33]
|
|
# CHECK: strh.w r5, [r6, #257]
|
|
# CHECK: strh.w lr, [r7, #257]
|
|
# CHECK: strh r5, [r8, #255]!
|
|
# CHECK: strh r2, [r5, #4]!
|
|
# CHECK: strh r1, [r4, #-4]!
|
|
# CHECK: strh r1, [r4, #0]!
|
|
# CHECK: strh lr, [r3], #255
|
|
# CHECK: strh r9, [r2], #4
|
|
# CHECK: strh r3, [sp], #-4
|
|
|
|
0x25 0xf8 0x04 0x5c
|
|
0x35 0x84
|
|
0xa6 0xf8 0x21 0x50
|
|
0xa6 0xf8 0x01 0x51
|
|
0xa7 0xf8 0x01 0xe1
|
|
0x28 0xf8 0xff 0x5f
|
|
0x25 0xf8 0x04 0x2f
|
|
0x24 0xf8 0x04 0x1d
|
|
0x24 0xf8 0x00 0x1f
|
|
0x23 0xf8 0xff 0xeb
|
|
0x22 0xf8 0x04 0x9b
|
|
0x2d 0xf8 0x04 0x39
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# STRH(register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: strh.w r1, [r8, r1]
|
|
# CHECK: strh.w r4, [r5, r2]
|
|
# CHECK: strh.w r6, [r0, r2, lsl #3]
|
|
# CHECK: strh.w r8, [r8, r2, lsl #2]
|
|
# CHECK: strh.w r7, [sp, r2, lsl #1]
|
|
# CHECK: strh.w r7, [sp, r2]
|
|
|
|
0x28 0xf8 0x01 0x10
|
|
0x25 0xf8 0x02 0x40
|
|
0x20 0xf8 0x32 0x60
|
|
0x28 0xf8 0x22 0x80
|
|
0x2d 0xf8 0x12 0x70
|
|
0x2d 0xf8 0x02 0x70
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# STRHT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: strht r1, [r2]
|
|
# CHECK: strht r1, [r8]
|
|
# CHECK: strht r1, [r8, #3]
|
|
# CHECK: strht r1, [r8, #255]
|
|
|
|
0x22 0xf8 0x00 0x1e
|
|
0x28 0xf8 0x00 0x1e
|
|
0x28 0xf8 0x03 0x1e
|
|
0x28 0xf8 0xff 0x1e
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# STRT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: strt r1, [r2]
|
|
# CHECK: strt r1, [r8]
|
|
# CHECK: strt r1, [r8, #3]
|
|
# CHECK: strt r1, [r8, #255]
|
|
|
|
0x42 0xf8 0x00 0x1e
|
|
0x48 0xf8 0x00 0x1e
|
|
0x48 0xf8 0x03 0x1e
|
|
0x48 0xf8 0xff 0x1e
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SUB (immediate)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: itet eq
|
|
# CHECK: subeq r1, r2, #4
|
|
# CHECK: subwne r5, r3, #1023
|
|
# CHECK: subweq r4, r5, #293
|
|
# CHECK: sub.w r2, sp, #1024
|
|
# CHECK: sub.w r2, r8, #65280
|
|
# CHECK: subw r2, r3, #257
|
|
# CHECK: sub.w r12, r6, #256
|
|
# CHECK: subw r12, r6, #256
|
|
# CHECK: subs.w r1, r2, #496
|
|
# CHECK: subs pc, lr, #4
|
|
|
|
0x0a 0xbf
|
|
0x11 0x1f
|
|
0xa3 0xf2 0xff 0x35
|
|
0xa5 0xf2 0x25 0x14
|
|
0xad 0xf5 0x80 0x62
|
|
0xa8 0xf5 0x7f 0x42
|
|
0xa3 0xf2 0x01 0x12
|
|
0xa6 0xf5 0x80 0x7c
|
|
0xa6 0xf2 0x00 0x1c
|
|
0xb2 0xf5 0xf8 0x71
|
|
0xde 0xf3 0x04 0x8f
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SUB (register)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sub.w r4, r5, r6
|
|
# CHECK: sub.w r4, r5, r6, lsl #5
|
|
# CHECK: sub.w r4, r5, r6, lsr #5
|
|
# CHECK: sub.w r4, r5, r6, lsr #5
|
|
# CHECK: sub.w r4, r5, r6, asr #5
|
|
# CHECK: sub.w r4, r5, r6, ror #5
|
|
# CHECK: sub.w r5, r2, r12, rrx
|
|
|
|
0xa5 0xeb 0x06 0x04
|
|
0xa5 0xeb 0x46 0x14
|
|
0xa5 0xeb 0x56 0x14
|
|
0xa5 0xeb 0x56 0x14
|
|
0xa5 0xeb 0x66 0x14
|
|
0xa5 0xeb 0x76 0x14
|
|
0xa2 0xeb 0x3c 0x05
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SVC
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: svc #0
|
|
# CHECK: ite eq
|
|
# CHECK: svceq #255
|
|
# CHECK: svcne #33
|
|
|
|
0x00 0xdf
|
|
0x0c 0xbf
|
|
0xff 0xdf
|
|
0x21 0xdf
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SXTAB
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sxtab r2, r3, r4
|
|
# CHECK: sxtab r4, r5, r6
|
|
# CHECK: it lt
|
|
# CHECK: sxtablt r6, r2, r9, ror #8
|
|
# CHECK: sxtab r5, r1, r4, ror #16
|
|
# CHECK: sxtab r7, r8, r3, ror #24
|
|
|
|
0x43 0xfa 0x84 0xf2
|
|
0x45 0xfa 0x86 0xf4
|
|
0xb8 0xbf
|
|
0x42 0xfa 0x99 0xf6
|
|
0x41 0xfa 0xa4 0xf5
|
|
0x48 0xfa 0xb3 0xf7
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SXTAB16
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sxtab16 r6, r2, r7
|
|
# CHECK: sxtab16 r3, r5, r8, ror #8
|
|
# CHECK: sxtab16 r3, r2, r1, ror #16
|
|
# CHECK: ite ne
|
|
# CHECK: sxtab16ne r0, r1, r4
|
|
# CHECK: sxtab16eq r1, r2, r3, ror #24
|
|
|
|
0x22 0xfa 0x87 0xf6
|
|
0x25 0xfa 0x98 0xf3
|
|
0x22 0xfa 0xa1 0xf3
|
|
0x14 0xbf
|
|
0x21 0xfa 0x84 0xf0
|
|
0x22 0xfa 0xb3 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SXTAH
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sxtah r1, r3, r9
|
|
# CHECK: sxtah r3, r8, r3, ror #8
|
|
# CHECK: sxtah r9, r3, r3, ror #24
|
|
# CHECK: ite hi
|
|
# CHECK: sxtahhi r6, r1, r6
|
|
# CHECK: sxtahls r2, r2, r4, ror #16
|
|
|
|
0x03 0xfa 0x89 0xf1
|
|
0x08 0xfa 0x93 0xf3
|
|
0x03 0xfa 0xb3 0xf9
|
|
0x8c 0xbf
|
|
0x01 0xfa 0x86 0xf6
|
|
0x02 0xfa 0xa4 0xf2
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SXTB
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sxtb r5, r6
|
|
# CHECK: sxtb.w r6, r9, ror #8
|
|
# CHECK: sxtb.w r8, r3, ror #24
|
|
# CHECK: ite ge
|
|
# CHECK: sxtbge r2, r4
|
|
# CHECK: sxtblt.w r5, r1, ror #16
|
|
|
|
0x75 0xb2
|
|
0x4f 0xfa 0x99 0xf6
|
|
0x4f 0xfa 0xb3 0xf8
|
|
0xac 0xbf
|
|
0x62 0xb2
|
|
0x4f 0xfa 0xa1 0xf5
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SXTB16
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sxtb16 r1, r4
|
|
# CHECK: sxtb16 r6, r7
|
|
# CHECK: sxtb16 r3, r1, ror #16
|
|
# CHECK: ite hs
|
|
# CHECK: sxtb16hs r3, r5, ror #8
|
|
# CHECK: sxtb16lo r2, r3, ror #24
|
|
|
|
0x2f 0xfa 0x84 0xf1
|
|
0x2f 0xfa 0x87 0xf6
|
|
0x2f 0xfa 0xa1 0xf3
|
|
0x2c 0xbf
|
|
0x2f 0xfa 0x95 0xf3
|
|
0x2f 0xfa 0xb3 0xf2
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SXTH
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sxth r1, r6
|
|
# CHECK: sxth.w r3, r8, ror #8
|
|
# CHECK: sxth.w r9, r3, ror #24
|
|
# CHECK: itt ne
|
|
# CHECK: sxthne.w r3, r9
|
|
# CHECK: sxthne.w r2, r2, ror #16
|
|
|
|
0x31 0xb2
|
|
0x0f 0xfa 0x98 0xf3
|
|
0x0f 0xfa 0xb3 0xf9
|
|
0x1c 0xbf
|
|
0x0f 0xfa 0x89 0xf3
|
|
0x0f 0xfa 0xa2 0xf2
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SXTB
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sxtb r5, r6
|
|
# CHECK: sxtb.w r6, r9, ror #8
|
|
# CHECK: sxtb.w r8, r3, ror #24
|
|
# CHECK: ite ge
|
|
# CHECK: sxtbge r2, r4
|
|
# CHECK: sxtblt.w r5, r1, ror #16
|
|
|
|
0x75 0xb2
|
|
0x4f 0xfa 0x99 0xf6
|
|
0x4f 0xfa 0xb3 0xf8
|
|
0xac 0xbf
|
|
0x62 0xb2
|
|
0x4f 0xfa 0xa1 0xf5
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SXTB16
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sxtb16 r1, r4
|
|
# CHECK: sxtb16 r6, r7
|
|
# CHECK: sxtb16 r3, r1, ror #16
|
|
# CHECK: ite hs
|
|
# CHECK: sxtb16hs r3, r5, ror #8
|
|
# CHECK: sxtb16lo r2, r3, ror #24
|
|
|
|
0x2f 0xfa 0x84 0xf1
|
|
0x2f 0xfa 0x87 0xf6
|
|
0x2f 0xfa 0xa1 0xf3
|
|
0x2c 0xbf
|
|
0x2f 0xfa 0x95 0xf3
|
|
0x2f 0xfa 0xb3 0xf2
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# SXTH
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sxth r1, r6
|
|
# CHECK: sxth.w r3, r8, ror #8
|
|
# CHECK: sxth.w r9, r3, ror #24
|
|
# CHECK: itt ne
|
|
# CHECK: sxthne.w r3, r9
|
|
# CHECK: sxthne.w r2, r2, ror #16
|
|
|
|
0x31 0xb2
|
|
0x0f 0xfa 0x98 0xf3
|
|
0x0f 0xfa 0xb3 0xf9
|
|
0x1c 0xbf
|
|
0x0f 0xfa 0x89 0xf3
|
|
0x0f 0xfa 0xa2 0xf2
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# TBB/TBH
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: tbb [r3, r8]
|
|
# CHECK: tbh [r3, r8, lsl #1]
|
|
# CHECK: it eq
|
|
# CHECK: tbbeq [r3, r8]
|
|
# CHECK: it hs
|
|
# CHECK: tbhhs [r3, r8, lsl #1]
|
|
|
|
0xd3 0xe8 0x08 0xf0
|
|
0xd3 0xe8 0x18 0xf0
|
|
0x08 0xbf
|
|
0xd3 0xe8 0x08 0xf0
|
|
0x28 0xbf
|
|
0xd3 0xe8 0x18 0xf0
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# TEQ
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: teq.w r5, #61440
|
|
# CHECK: teq.w r4, r5
|
|
# CHECK: teq.w r4, r5, lsl #5
|
|
# CHECK: teq.w r4, r5, lsr #5
|
|
# CHECK: teq.w r4, r5, lsr #5
|
|
# CHECK: teq.w r4, r5, asr #5
|
|
# CHECK: teq.w r4, r5, ror #5
|
|
|
|
0x95 0xf4 0x70 0x4f
|
|
0x94 0xea 0x05 0x0f
|
|
0x94 0xea 0x45 0x1f
|
|
0x94 0xea 0x55 0x1f
|
|
0x94 0xea 0x55 0x1f
|
|
0x94 0xea 0x65 0x1f
|
|
0x94 0xea 0x75 0x1f
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# TST
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: tst.w r5, #61440
|
|
# CHECK: tst r2, r5
|
|
# CHECK: tst.w r3, r12, lsl #5
|
|
# CHECK: tst.w r4, r11, lsr #4
|
|
# CHECK: tst.w r5, r10, lsr #12
|
|
# CHECK: tst.w r6, r9, asr #30
|
|
# CHECK: tst.w r7, r8, ror #2
|
|
|
|
0x15 0xf4 0x70 0x4f
|
|
0x2a 0x42
|
|
0x13 0xea 0x4c 0x1f
|
|
0x14 0xea 0x1b 0x1f
|
|
0x15 0xea 0x1a 0x3f
|
|
0x16 0xea 0xa9 0x7f
|
|
0x17 0xea 0xb8 0x0f
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UADD16/UADD8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uadd16 r1, r2, r3
|
|
# CHECK: uadd8 r1, r2, r3
|
|
# CHECK: ite gt
|
|
# CHECK: uadd16gt r1, r2, r3
|
|
# CHECK: uadd8le r1, r2, r3
|
|
|
|
0x92 0xfa 0x43 0xf1
|
|
0x82 0xfa 0x43 0xf1
|
|
0xcc 0xbf
|
|
0x92 0xfa 0x43 0xf1
|
|
0x82 0xfa 0x43 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UASX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uasx r9, r12, r0
|
|
# CHECK: it eq
|
|
# CHECK: uasxeq r9, r12, r0
|
|
# CHECK: uasx r9, r12, r0
|
|
# CHECK: it eq
|
|
# CHECK: uasxeq r9, r12, r0
|
|
|
|
0xac 0xfa 0x40 0xf9
|
|
0x08 0xbf
|
|
0xac 0xfa 0x40 0xf9
|
|
0xac 0xfa 0x40 0xf9
|
|
0x08 0xbf
|
|
0xac 0xfa 0x40 0xf9
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UBFX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: ubfx r4, r5, #16, #1
|
|
# CHECK: it gt
|
|
# CHECK: ubfxgt r4, r5, #16, #16
|
|
|
|
0xc5 0xf3 0x00 0x44
|
|
0xc8 0xbf
|
|
0xc5 0xf3 0x0f 0x44
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UHADD16/UHADD8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uhadd16 r4, r8, r2
|
|
# CHECK: uhadd8 r4, r8, r2
|
|
# CHECK: itt gt
|
|
# CHECK: uhadd16gt r4, r8, r2
|
|
# CHECK: uhadd8gt r4, r8, r2
|
|
|
|
0x98 0xfa 0x62 0xf4
|
|
0x88 0xfa 0x62 0xf4
|
|
0xc4 0xbf
|
|
0x98 0xfa 0x62 0xf4
|
|
0x88 0xfa 0x62 0xf4
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UHASX/UHSAX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uhasx r4, r1, r5
|
|
# CHECK: uhsax r5, r6, r6
|
|
# CHECK: itt gt
|
|
# CHECK: uhasxgt r6, r9, r8
|
|
# CHECK: uhsaxgt r7, r8, r12
|
|
|
|
0xa1 0xfa 0x65 0xf4
|
|
0xe6 0xfa 0x66 0xf5
|
|
0xc4 0xbf
|
|
0xa9 0xfa 0x68 0xf6
|
|
0xe8 0xfa 0x6c 0xf7
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UHSUB16/UHSUB8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uhsub16 r5, r8, r3
|
|
# CHECK: uhsub8 r1, r7, r6
|
|
# CHECK: itt lt
|
|
# CHECK: uhsub16lt r4, r9, r12
|
|
# CHECK: uhsub8lt r3, r1, r5
|
|
|
|
0xd8 0xfa 0x63 0xf5
|
|
0xc7 0xfa 0x66 0xf1
|
|
0xbc 0xbf
|
|
0xd9 0xfa 0x6c 0xf4
|
|
0xc1 0xfa 0x65 0xf3
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UMAAL
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: umaal r3, r4, r5, r6
|
|
# CHECK: it lt
|
|
# CHECK: umaallt r3, r4, r5, r6
|
|
|
|
0xe5 0xfb 0x66 0x34
|
|
0xb8 0xbf
|
|
0xe5 0xfb 0x66 0x34
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UMLAL
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: umlal r2, r4, r6, r8
|
|
# CHECK: it gt
|
|
# CHECK: umlalgt r6, r1, r2, r6
|
|
|
|
0xe6 0xfb 0x08 0x24
|
|
0xc8 0xbf
|
|
0xe2 0xfb 0x06 0x61
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UMULL
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: umull r2, r4, r6, r8
|
|
# CHECK: it gt
|
|
# CHECK: umullgt r6, r1, r2, r6
|
|
|
|
0xa6 0xfb 0x08 0x24
|
|
0xc8 0xbf
|
|
0xa2 0xfb 0x06 0x61
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UQADD16/UQADD8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uqadd16 r1, r2, r3
|
|
# CHECK: uqadd8 r3, r4, r8
|
|
# CHECK: ite gt
|
|
# CHECK: uqadd16gt r4, r7, r9
|
|
# CHECK: uqadd8le r8, r1, r2
|
|
|
|
0x92 0xfa 0x53 0xf1
|
|
0x84 0xfa 0x58 0xf3
|
|
0xcc 0xbf
|
|
0x97 0xfa 0x59 0xf4
|
|
0x81 0xfa 0x52 0xf8
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UQASX/UQSAX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uqasx r1, r2, r3
|
|
# CHECK: uqsax r3, r4, r8
|
|
# CHECK: ite gt
|
|
# CHECK: uqasxgt r4, r7, r9
|
|
# CHECK: uqsaxle r8, r1, r2
|
|
|
|
0xa2 0xfa 0x53 0xf1
|
|
0xe4 0xfa 0x58 0xf3
|
|
0xcc 0xbf
|
|
0xa7 0xfa 0x59 0xf4
|
|
0xe1 0xfa 0x52 0xf8
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UQSUB16/UQSUB8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uqsub8 r8, r2, r9
|
|
# CHECK: uqsub16 r1, r9, r7
|
|
# CHECK: ite gt
|
|
# CHECK: uqsub8gt r3, r1, r6
|
|
# CHECK: uqsub16le r4, r6, r4
|
|
|
|
0xc2 0xfa 0x59 0xf8
|
|
0xd9 0xfa 0x57 0xf1
|
|
0xcc 0xbf
|
|
0xc1 0xfa 0x56 0xf3
|
|
0xd6 0xfa 0x54 0xf4
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UQSUB16/UQSUB8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: usad8 r1, r9, r7
|
|
# CHECK: usada8 r8, r2, r9, r12
|
|
# CHECK: ite gt
|
|
# CHECK: usada8gt r3, r1, r6, r9
|
|
# CHECK: usad8le r4, r6, r4
|
|
|
|
0x79 0xfb 0x07 0xf1
|
|
0x72 0xfb 0x09 0xc8
|
|
0xcc 0xbf
|
|
0x71 0xfb 0x06 0x93
|
|
0x76 0xfb 0x04 0xf4
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# USAT
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: usat r8, #1, r10
|
|
# CHECK: usat r8, #4, r10
|
|
# CHECK: usat r8, #5, r10, lsl #31
|
|
# CHECK: usat r8, #16, r10, asr #1
|
|
|
|
0x8a 0xf3 0x01 0x08
|
|
0x8a 0xf3 0x04 0x08
|
|
0x8a 0xf3 0xc5 0x78
|
|
0xaa 0xf3 0x50 0x08
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# USAT16
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: usat16 r2, #2, r7
|
|
# CHECK: usat16 r3, #15, r5
|
|
|
|
0xa7 0xf3 0x02 0x02
|
|
0xa5 0xf3 0x0f 0x03
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# USAX
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: usax r2, r3, r4
|
|
# CHECK: it ne
|
|
# CHECK: usaxne r6, r1, r9
|
|
# CHECK: usax r2, r3, r4
|
|
# CHECK: it ne
|
|
# CHECK: usaxne r6, r1, r9
|
|
|
|
0xe3 0xfa 0x44 0xf2
|
|
0x18 0xbf
|
|
0xe1 0xfa 0x49 0xf6
|
|
0xe3 0xfa 0x44 0xf2
|
|
0x18 0xbf
|
|
0xe1 0xfa 0x49 0xf6
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# USUB16/USUB8
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: usub16 r4, r2, r7
|
|
# CHECK: usub8 r1, r8, r5
|
|
# CHECK: ite hi
|
|
# CHECK: usub16hi r1, r1, r3
|
|
# CHECK: usub8ls r9, r2, r3
|
|
|
|
0xd2 0xfa 0x47 0xf4
|
|
0xc8 0xfa 0x45 0xf1
|
|
0x8c 0xbf
|
|
0xd1 0xfa 0x43 0xf1
|
|
0xc2 0xfa 0x43 0xf9
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UXTAB
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uxtab r2, r3, r4
|
|
# CHECK: uxtab r4, r5, r6
|
|
# CHECK: it lt
|
|
# CHECK: uxtablt r6, r2, r9, ror #8
|
|
# CHECK: uxtab r5, r1, r4, ror #16
|
|
# CHECK: uxtab r7, r8, r3, ror #24
|
|
|
|
0x53 0xfa 0x84 0xf2
|
|
0x55 0xfa 0x86 0xf4
|
|
0xb8 0xbf
|
|
0x52 0xfa 0x99 0xf6
|
|
0x51 0xfa 0xa4 0xf5
|
|
0x58 0xfa 0xb3 0xf7
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UXTAB16
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: it ge
|
|
# CHECK: uxtab16ge r0, r1, r4
|
|
# CHECK: uxtab16 r6, r2, r7
|
|
# CHECK: uxtab16 r3, r5, r8, ror #8
|
|
# CHECK: uxtab16 r3, r2, r1, ror #16
|
|
# CHECK: it eq
|
|
# CHECK: uxtab16eq r1, r2, r3, ror #24
|
|
|
|
0xa8 0xbf
|
|
0x31 0xfa 0x84 0xf0
|
|
0x32 0xfa 0x87 0xf6
|
|
0x35 0xfa 0x98 0xf3
|
|
0x32 0xfa 0xa1 0xf3
|
|
0x08 0xbf
|
|
0x32 0xfa 0xb3 0xf1
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UXTAH
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uxtah r1, r3, r9
|
|
# CHECK: it hi
|
|
# CHECK: uxtahhi r6, r1, r6
|
|
# CHECK: uxtah r3, r8, r3, ror #8
|
|
# CHECK: it lo
|
|
# CHECK: uxtahlo r2, r2, r4, ror #16
|
|
# CHECK: uxtah r9, r3, r3, ror #24
|
|
|
|
0x13 0xfa 0x89 0xf1
|
|
0x88 0xbf
|
|
0x11 0xfa 0x86 0xf6
|
|
0x18 0xfa 0x93 0xf3
|
|
0x38 0xbf
|
|
0x12 0xfa 0xa4 0xf2
|
|
0x13 0xfa 0xb3 0xf9
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UXTB
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: it ge
|
|
# CHECK: uxtbge r2, r4
|
|
# CHECK: uxtb r5, r6
|
|
# CHECK: uxtb.w r6, r9, ror #8
|
|
# CHECK: it lo
|
|
# CHECK: uxtblo.w r5, r1, ror #16
|
|
# CHECK: uxtb.w r8, r3, ror #24
|
|
|
|
0xa8 0xbf
|
|
0xe2 0xb2
|
|
0xf5 0xb2
|
|
0x5f 0xfa 0x99 0xf6
|
|
0x38 0xbf
|
|
0x5f 0xfa 0xa1 0xf5
|
|
0x5f 0xfa 0xb3 0xf8
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UXTB16
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: uxtb16 r1, r4
|
|
# CHECK: uxtb16 r6, r7
|
|
# CHECK: it hs
|
|
# CHECK: uxtb16hs r3, r5, ror #8
|
|
# CHECK: uxtb16 r3, r1, ror #16
|
|
# CHECK: it ge
|
|
# CHECK: uxtb16ge r2, r3, ror #24
|
|
|
|
0x3f 0xfa 0x84 0xf1
|
|
0x3f 0xfa 0x87 0xf6
|
|
0x28 0xbf
|
|
0x3f 0xfa 0x95 0xf3
|
|
0x3f 0xfa 0xa1 0xf3
|
|
0xa8 0xbf
|
|
0x3f 0xfa 0xb3 0xf2
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# UXTH
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: it ne
|
|
# CHECK: uxthne.w r3, r9
|
|
# CHECK: uxth r1, r6
|
|
# CHECK: uxth.w r3, r8, ror #8
|
|
# CHECK: it le
|
|
# CHECK: uxthle.w r2, r2, ror #16
|
|
# CHECK: uxth.w r9, r3, ror #24
|
|
|
|
0x18 0xbf
|
|
0x1f 0xfa 0x89 0xf3
|
|
0xb1 0xb2
|
|
0x1f 0xfa 0x98 0xf3
|
|
0xd8 0xbf
|
|
0x1f 0xfa 0xa2 0xf2
|
|
0x1f 0xfa 0xb3 0xf9
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# WFE/WFI/YIELD
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: wfe
|
|
# CHECK: wfi
|
|
# CHECK: yield
|
|
# CHECK: itet lt
|
|
# CHECK: wfelt
|
|
# CHECK: wfige
|
|
# CHECK: yieldlt
|
|
|
|
0x20 0xbf
|
|
0x30 0xbf
|
|
0x10 0xbf
|
|
0xb6 0xbf
|
|
0x20 0xbf
|
|
0x30 0xbf
|
|
0x10 0xbf
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Unallocated hints (They execute as NOPs, but software must not use them.)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: hint #6
|
|
# CHECK: hint.w #6
|
|
# CHECK: hint.w #102
|
|
|
|
0x60 0xbf
|
|
0xaf 0xf3 0x06 0x80
|
|
0xaf 0xf3 0x66 0x80
|
|
|