diff options
author | Owen Anderson <resistor@mac.com> | 2011-08-12 19:42:45 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2011-08-12 19:42:45 +0000 |
commit | a211c2c7e974908dcf18838f07d85cc65a7b5e0f (patch) | |
tree | ef2b41bf144c3d993913906acc9b33a6c411b18a | |
parent | 6368119c251a0862b48fbafcd4d00430a7f6ea02 (diff) |
Port over the basic ARM encodings test file to a decoding test file. Greatly increases our test coverage of basic ARM-mode instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137495 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/MC/Disassembler/ARM/basic-arm-instructions.txt | 2345 |
1 files changed, 2345 insertions, 0 deletions
diff --git a/test/MC/Disassembler/ARM/basic-arm-instructions.txt b/test/MC/Disassembler/ARM/basic-arm-instructions.txt new file mode 100644 index 0000000000..f4143a1084 --- /dev/null +++ b/test/MC/Disassembler/ARM/basic-arm-instructions.txt @@ -0,0 +1,2345 @@ +# RUN: llvm-mc -triple=armv7-apple-darwin -disassemble < %s | FileCheck %s + +#------------------------------------------------------------------------------ +# ADC (immediate) +#------------------------------------------------------------------------------ +# CHECK: adc r1, r2, #15 +# CHECK: adc r1, r2, #240 +# CHECK: adc r1, r2, #3840 +# CHECK: adc r1, r2, #61440 +# CHECK: adc r1, r2, #983040 +# CHECK: adc r1, r2, #15728640 +# CHECK: adc r1, r2, #251658240 +# CHECK: adc r1, r2, #4026531840 +# CHECK: adc r1, r2, #4026531855 +# CHECK: adcs r1, r2, #3840 +# CHECK: adcseq r1, r2, #3840 +# CHECK: adceq r1, r2, #3840 + +0x0f 0x10 0xa2 0xe2 +0xf0 0x10 0xa2 0xe2 +0x0f 0x1c 0xa2 0xe2 +0x0f 0x1a 0xa2 0xe2 +0x0f 0x18 0xa2 0xe2 +0x0f 0x16 0xa2 0xe2 +0x0f 0x14 0xa2 0xe2 +0x0f 0x12 0xa2 0xe2 +0xff 0x12 0xa2 0xe2 + +0x0f 0x1c 0xb2 0xe2 +0x0f 0x1c 0xb2 0x02 +0x0f 0x1c 0xa2 0x02 + +#------------------------------------------------------------------------------ +# ADC (register) +# ADC (shifted register) +#------------------------------------------------------------------------------ +# CHECK: adc r4, r5, r6 + +# CHECK: adc r4, r5, r6, lsl #1 +# CHECK: adc r4, r5, r6, lsl #31 +# CHECK: adc r4, r5, r6, lsr #1 +# CHECK: adc r4, r5, r6, lsr #31 +# CHECK: adc r4, r5, r6, lsr #32 +# CHECK: adc r4, r5, r6, asr #1 +# CHECK: adc r4, r5, r6, asr #31 +# CHECK: adc r4, r5, r6, asr #32 +# CHECK: adc r4, r5, r6, ror #1 +# CHECK: adc r4, r5, r6, ror #31 + +# CHECK: adc r6, r7, r8, lsl r9 +# CHECK: adc r6, r7, r8, lsr r9 +# CHECK: adc r6, r7, r8, asr r9 +# CHECK: adc r6, r7, r8, ror r9 +# CHECK: adc r4, r5, r6, rrx + +# CHECK: adc r5, r5, r6 +# CHECK: adc r4, r4, r5, lsl #1 +# CHECK: adc r4, r4, r5, lsl #31 +# CHECK: adc r4, r4, r5, lsr #1 +# CHECK: adc r4, r4, r5, lsr #31 +# CHECK: adc r4, r4, r5, lsr #32 +# CHECK: adc r4, r4, r5, asr #1 +# CHECK: adc r4, r4, r5, asr #31 +# CHECK: adc r4, r4, r5, asr #32 +# CHECK: adc r4, r4, r5, ror #1 +# CHECK: adc r4, r4, r5, ror #31 +# CHECK: adc r4, r4, r5, rrx +# CHECK: adc r6, r6, r7, lsl r9 +# CHECK: adc r6, r6, r7, lsr r9 +# CHECK: adc r6, r6, r7, asr r9 +# CHECK: adc r6, r6, r7, ror r9 +# CHECK: adc r4, r4, r5, rrx + +0x06 0x40 0xa5 0xe0 + +0x86 0x40 0xa5 0xe0 +0x86 0x4f 0xa5 0xe0 +0xa6 0x40 0xa5 0xe0 +0xa6 0x4f 0xa5 0xe0 +0x26 0x40 0xa5 0xe0 +0xc6 0x40 0xa5 0xe0 +0xc6 0x4f 0xa5 0xe0 +0x46 0x40 0xa5 0xe0 +0xe6 0x40 0xa5 0xe0 +0xe6 0x4f 0xa5 0xe0 + +0x18 0x69 0xa7 0xe0 +0x38 0x69 0xa7 0xe0 +0x58 0x69 0xa7 0xe0 +0x78 0x69 0xa7 0xe0 +0x66 0x40 0xa5 0xe0 + +0x06 0x50 0xa5 0xe0 +0x85 0x40 0xa4 0xe0 +0x85 0x4f 0xa4 0xe0 +0xa5 0x40 0xa4 0xe0 +0xa5 0x4f 0xa4 0xe0 +0x25 0x40 0xa4 0xe0 +0xc5 0x40 0xa4 0xe0 +0xc5 0x4f 0xa4 0xe0 +0x45 0x40 0xa4 0xe0 +0xe5 0x40 0xa4 0xe0 +0xe5 0x4f 0xa4 0xe0 +0x65 0x40 0xa4 0xe0 +0x17 0x69 0xa6 0xe0 +0x37 0x69 0xa6 0xe0 +0x57 0x69 0xa6 0xe0 +0x77 0x69 0xa6 0xe0 +0x65 0x40 0xa4 0xe0 + +#------------------------------------------------------------------------------ +# ADD +#------------------------------------------------------------------------------ +# CHECK: add r4, r5, #61440 +# CHECK: add r4, r5, r6 +# CHECK: add r4, r5, r6, lsl #5 +# CHECK: add r4, r5, r6, lsr #5 +# CHECK: add r4, r5, r6, lsr #5 +# CHECK: add r4, r5, r6, asr #5 +# CHECK: add r4, r5, r6, ror #5 +# CHECK: add r6, r7, r8, lsl r9 +# CHECK: add r6, r7, r8, lsr r9 +# CHECK: add r6, r7, r8, asr r9 +# CHECK: add r6, r7, r8, ror r9 +# CHECK: add r4, r5, r6, rrx + +# CHECK: add r5, r5, #61440 +# CHECK: add r4, r4, r5 +# CHECK: add r4, r4, r5, lsl #5 +# CHECK: add r4, r4, r5, lsr #5 +# CHECK: add r4, r4, r5, lsr #5 +# CHECK: add r4, r4, r5, asr #5 +# CHECK: add r4, r4, r5, ror #5 +# CHECK: add r6, r6, r7, lsl r9 +# CHECK: add r6, r6, r7, lsr r9 +# CHECK: add r6, r6, r7, asr r9 +# CHECK: add r6, r6, r7, ror r9 +# CHECK: add r4, r4, r5, rrx + +0x0f 0x4a 0x85 0xe2 +0x06 0x40 0x85 0xe0 +0x86 0x42 0x85 0xe0 +0xa6 0x42 0x85 0xe0 +0xa6 0x42 0x85 0xe0 +0xc6 0x42 0x85 0xe0 +0xe6 0x42 0x85 0xe0 +0x18 0x69 0x87 0xe0 +0x38 0x69 0x87 0xe0 +0x58 0x69 0x87 0xe0 +0x78 0x69 0x87 0xe0 +0x66 0x40 0x85 0xe0 + + +0x0f 0x5a 0x85 0xe2 +0x05 0x40 0x84 0xe0 +0x85 0x42 0x84 0xe0 +0xa5 0x42 0x84 0xe0 +0xa5 0x42 0x84 0xe0 +0xc5 0x42 0x84 0xe0 +0xe5 0x42 0x84 0xe0 +0x17 0x69 0x86 0xe0 +0x37 0x69 0x86 0xe0 +0x57 0x69 0x86 0xe0 +0x77 0x69 0x86 0xe0 +0x65 0x40 0x84 0xe0 + + +#------------------------------------------------------------------------------ +# AND +#------------------------------------------------------------------------------ +# CHECK: and r10, r1, #15 +# CHECK: and r10, r1, r6 +# CHECK: and r10, r1, r6, lsl #10 +# CHECK: and r10, r1, r6, lsr #10 +# CHECK: and r10, r1, r6, lsr #10 +# CHECK: and r10, r1, r6, asr #10 +# CHECK: and r10, r1, r6, ror #10 +# CHECK: and r6, r7, r8, lsl r2 +# CHECK: and r6, r7, r8, lsr r2 +# CHECK: and r6, r7, r8, asr r2 +# CHECK: and r6, r7, r8, ror r2 +# CHECK: and r10, r1, r6, rrx + +# CHECK: and r1, r1, #15 +# CHECK: and r10, r10, r1 +# CHECK: and r10, r10, r1, lsl #10 +# CHECK: and r10, r10, r1, lsr #10 +# CHECK: and r10, r10, r1, lsr #10 +# CHECK: and r10, r10, r1, asr #10 +# CHECK: and r10, r10, r1, ror #10 +# CHECK: and r6, r6, r7, lsl r2 +# CHECK: and r6, r6, r7, lsr r2 +# CHECK: and r6, r6, r7, asr r2 +# CHECK: and r6, r6, r7, ror r2 +# CHECK: and r10, r10, r1, rrx + +0x0f 0xa0 0x01 0xe2 +0x06 0xa0 0x01 0xe0 +0x06 0xa5 0x01 0xe0 +0x26 0xa5 0x01 0xe0 +0x26 0xa5 0x01 0xe0 +0x46 0xa5 0x01 0xe0 +0x66 0xa5 0x01 0xe0 +0x18 0x62 0x07 0xe0 +0x38 0x62 0x07 0xe0 +0x58 0x62 0x07 0xe0 +0x78 0x62 0x07 0xe0 +0x66 0xa0 0x01 0xe0 + +0x0f 0x10 0x01 0xe2 +0x01 0xa0 0x0a 0xe0 +0x01 0xa5 0x0a 0xe0 +0x21 0xa5 0x0a 0xe0 +0x21 0xa5 0x0a 0xe0 +0x41 0xa5 0x0a 0xe0 +0x61 0xa5 0x0a 0xe0 +0x17 0x62 0x06 0xe0 +0x37 0x62 0x06 0xe0 +0x57 0x62 0x06 0xe0 +0x77 0x62 0x06 0xe0 +0x61 0xa0 0x0a 0xe0 + +#------------------------------------------------------------------------------ +# FIXME: ASR +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# BFC +#------------------------------------------------------------------------------ +# CHECK: bfc r5, #3, #17 +# CHECK: bfclo r5, #3, #17 + +0x9f 0x51 0xd3 0xe7 +0x9f 0x51 0xd3 0x37 + + +#------------------------------------------------------------------------------ +# BFI +#------------------------------------------------------------------------------ +# CHECK: bfi r5, r2, #3, #17 +# CHECK: bfine r5, r2, #3, #17 + +0x92 0x51 0xd3 0xe7 +0x92 0x51 0xd3 0x17 + + +#------------------------------------------------------------------------------ +# BIC +#------------------------------------------------------------------------------ +# CHECK: bic r10, r1, #15 +# CHECK: bic r10, r1, r6 +# CHECK: bic r10, r1, r6, lsl #10 +# CHECK: bic r10, r1, r6, lsr #10 +# CHECK: bic r10, r1, r6, lsr #10 +# CHECK: bic r10, r1, r6, asr #10 +# CHECK: bic r10, r1, r6, ror #10 +# CHECK: bic r6, r7, r8, lsl r2 +# CHECK: bic r6, r7, r8, lsr r2 +# CHECK: bic r6, r7, r8, asr r2 +# CHECK: bic r6, r7, r8, ror r2 +# CHECK: bic r10, r1, r6, rrx + +# CHECK: bic r1, r1, #15 +# CHECK: bic r10, r10, r1 +# CHECK: bic r10, r10, r1, lsl #10 +# CHECK: bic r10, r10, r1, lsr #10 +# CHECK: bic r10, r10, r1, lsr #10 +# CHECK: bic r10, r10, r1, asr #10 +# CHECK: bic r10, r10, r1, ror #10 +# CHECK: bic r6, r6, r7, lsl r2 +# CHECK: bic r6, r6, r7, lsr r2 +# CHECK: bic r6, r6, r7, asr r2 +# CHECK: bic r6, r6, r7, ror r2 +# CHECK: bic r10, r10, r1, rrx + +0x0f 0xa0 0xc1 0xe3 +0x06 0xa0 0xc1 0xe1 +0x06 0xa5 0xc1 0xe1 +0x26 0xa5 0xc1 0xe1 +0x26 0xa5 0xc1 0xe1 +0x46 0xa5 0xc1 0xe1 +0x66 0xa5 0xc1 0xe1 +0x18 0x62 0xc7 0xe1 +0x38 0x62 0xc7 0xe1 +0x58 0x62 0xc7 0xe1 +0x78 0x62 0xc7 0xe1 +0x66 0xa0 0xc1 0xe1 + + +0x0f 0x10 0xc1 0xe3 +0x01 0xa0 0xca 0xe1 +0x01 0xa5 0xca 0xe1 +0x21 0xa5 0xca 0xe1 +0x21 0xa5 0xca 0xe1 +0x41 0xa5 0xca 0xe1 +0x61 0xa5 0xca 0xe1 +0x17 0x62 0xc6 0xe1 +0x37 0x62 0xc6 0xe1 +0x57 0x62 0xc6 0xe1 +0x77 0x62 0xc6 0xe1 +0x61 0xa0 0xca 0xe1 + +#------------------------------------------------------------------------------ +# BKPT +#------------------------------------------------------------------------------ +# CHECK: bkpt #10 +# CHECK: bkpt #65535 + +0x7a 0x00 0x20 0xe1 +0x7f 0xff 0x2f 0xe1 + +#------------------------------------------------------------------------------ +# BLX (register) +#------------------------------------------------------------------------------ +# CHECK: blx r2 +# CHECK: blxne r2 + +0x32 0xff 0x2f 0xe1 +0x32 0xff 0x2f 0x11 + +#------------------------------------------------------------------------------ +# BX +#------------------------------------------------------------------------------ + +# CHECK: bx r2 +# CHECK: bxne r2 + +0x12 0xff 0x2f 0xe1 +0x12 0xff 0x2f 0x11 + +#------------------------------------------------------------------------------ +# BXJ +#------------------------------------------------------------------------------ + +# CHECK: bxj r2 +# CHECK: bxjne r2 + +0x22 0xff 0x2f 0xe1 +0x22 0xff 0x2f 0x11 + + +#------------------------------------------------------------------------------ +# CDP/CDP2 +#------------------------------------------------------------------------------ +# CHECK: cdp p7, #1, c1, c1, c1, #4 +# CHECK: cdp2 p7, #1, c1, c1, c1, #4 + +0x81 0x17 0x11 0xee +0x81 0x17 0x11 0xfe + + +#------------------------------------------------------------------------------ +# CLREX +#------------------------------------------------------------------------------ +# CHECK: clrex + +0x1f 0xf0 0x7f 0xf5 + + +#------------------------------------------------------------------------------ +# CLZ +#------------------------------------------------------------------------------ +# CHECK: clz r1, r2 +# CHECK: clzeq r1, r2 + +0x12 0x1f 0x6f 0xe1 +0x12 0x1f 0x6f 0x01 + +#------------------------------------------------------------------------------ +# CMN +#------------------------------------------------------------------------------ +# CHECK: cmn r1, #15 +# CHECK: cmn r1, r6 +# CHECK: cmn r1, r6, lsl #10 +# CHECK: cmn r1, r6, lsr #10 +# CHECK: cmn sp, r6, lsr #10 +# CHECK: cmn r1, r6, asr #10 +# CHECK: cmn r1, r6, ror #10 +# CHECK: cmn r7, r8, lsl r2 +# CHECK: cmn sp, r8, lsr r2 +# CHECK: cmn r7, r8, asr r2 +# CHECK: cmn r7, r8, ror r2 +# CHECK: cmn r1, r6, rrx + +0x0f 0x00 0x71 0xe3 +0x06 0x00 0x71 0xe1 +0x06 0x05 0x71 0xe1 +0x26 0x05 0x71 0xe1 +0x26 0x05 0x7d 0xe1 +0x46 0x05 0x71 0xe1 +0x66 0x05 0x71 0xe1 +0x18 0x02 0x77 0xe1 +0x38 0x02 0x7d 0xe1 +0x58 0x02 0x77 0xe1 +0x78 0x02 0x77 0xe1 +0x66 0x00 0x71 0xe1 + +#------------------------------------------------------------------------------ +# CMP +#------------------------------------------------------------------------------ +# CHECK: cmp r1, #15 +# CHECK: cmp r1, r6 +# CHECK: cmp r1, r6, lsl #10 +# CHECK: cmp r1, r6, lsr #10 +# CHECK: cmp sp, r6, lsr #10 +# CHECK: cmp r1, r6, asr #10 +# CHECK: cmp r1, r6, ror #10 +# CHECK: cmp r7, r8, lsl r2 +# CHECK: cmp sp, r8, lsr r2 +# CHECK: cmp r7, r8, asr r2 +# CHECK: cmp r7, r8, ror r2 +# CHECK: cmp r1, r6, rrx + +0x0f 0x00 0x51 0xe3 +0x06 0x00 0x51 0xe1 +0x06 0x05 0x51 0xe1 +0x26 0x05 0x51 0xe1 +0x26 0x05 0x5d 0xe1 +0x46 0x05 0x51 0xe1 +0x66 0x05 0x51 0xe1 +0x18 0x02 0x57 0xe1 +0x38 0x02 0x5d 0xe1 +0x58 0x02 0x57 0xe1 +0x78 0x02 0x57 0xe1 +0x66 0x00 0x51 0xe1 + + +#------------------------------------------------------------------------------ +# CPS +#------------------------------------------------------------------------------ +# CHECK: cpsie aif +# CHECK: cps #15 +# CHECK: cpsid if, #10 + +0xc0 0x01 0x08 0xf1 +0x0f 0x00 0x02 0xf1 +0xca 0x00 0x0e 0xf1 + + +#------------------------------------------------------------------------------ +# DBG +#------------------------------------------------------------------------------ +# CHECK: dbg #0 +# CHECK: dbg #5 +# CHECK: dbg #15 + +0xf0 0xf0 0x20 0xe3 +0xf5 0xf0 0x20 0xe3 +0xff 0xf0 0x20 0xe3 + + +#------------------------------------------------------------------------------ +# DMB +#------------------------------------------------------------------------------ +# CHECK: dmb sy +# CHECK: dmb st +# CHECK: dmb ish +# CHECK: dmb ishst +# CHECK: dmb nsh +# CHECK: dmb nshst +# CHECK: dmb osh +# CHECK: dmb oshst +# CHECK: dmb + +0x5f 0xf0 0x7f 0xf5 +0x5e 0xf0 0x7f 0xf5 +0x5b 0xf0 0x7f 0xf5 +0x5a 0xf0 0x7f 0xf5 +0x57 0xf0 0x7f 0xf5 +0x56 0xf0 0x7f 0xf5 +0x53 0xf0 0x7f 0xf5 +0x52 0xf0 0x7f 0xf5 +0x5f 0xf0 0x7f 0xf5 + +#------------------------------------------------------------------------------ +# DSB +#------------------------------------------------------------------------------ +# CHECK: dsb sy +# CHECK: dsb st +# CHECK: dsb ish +# CHECK: dsb ishst +# CHECK: dsb nsh +# CHECK: dsb nshst +# CHECK: dsb osh +# CHECK: dsb oshst +# CHECK: dsb + +0x4f 0xf0 0x7f 0xf5 +0x4e 0xf0 0x7f 0xf5 +0x4b 0xf0 0x7f 0xf5 +0x4a 0xf0 0x7f 0xf5 +0x47 0xf0 0x7f 0xf5 +0x46 0xf0 0x7f 0xf5 +0x43 0xf0 0x7f 0xf5 +0x42 0xf0 0x7f 0xf5 +0x4f 0xf0 0x7f 0xf5 + +#------------------------------------------------------------------------------ +# EOR +#------------------------------------------------------------------------------ +# CHECK: eor r4, r5, #61440 +# CHECK: eor r4, r5, r6 +# CHECK: eor r4, r5, r6, lsl #5 +# CHECK: eor r4, r5, r6, lsr #5 +# CHECK: eor r4, r5, r6, lsr #5 +# CHECK: eor r4, r5, r6, asr #5 +# CHECK: eor r4, r5, r6, ror #5 +# CHECK: eor r6, r7, r8, lsl r9 +# CHECK: eor r6, r7, r8, lsr r9 +# CHECK: eor r6, r7, r8, asr r9 +# CHECK: eor r6, r7, r8, ror r9 +# CHECK: eor r4, r5, r6, rrx + +# CHECK: eor r5, r5, #61440 +# CHECK: eor r4, r4, r5 +# CHECK: eor r4, r4, r5, lsl #5 +# CHECK: eor r4, r4, r5, lsr #5 +# CHECK: eor r4, r4, r5, lsr #5 +# CHECK: eor r4, r4, r5, asr #5 +# CHECK: eor r4, r4, r5, ror #5 +# CHECK: eor r6, r6, r7, lsl r9 +# CHECK: eor r6, r6, r7, lsr r9 +# CHECK: eor r6, r6, r7, asr r9 +# CHECK: eor r6, r6, r7, ror r9 +# CHECK: eor r4, r4, r5, rrx + +0x0f 0x4a 0x25 0xe2 +0x06 0x40 0x25 0xe0 +0x86 0x42 0x25 0xe0 +0xa6 0x42 0x25 0xe0 +0xa6 0x42 0x25 0xe0 +0xc6 0x42 0x25 0xe0 +0xe6 0x42 0x25 0xe0 +0x18 0x69 0x27 0xe0 +0x38 0x69 0x27 0xe0 +0x58 0x69 0x27 0xe0 +0x78 0x69 0x27 0xe0 +0x66 0x40 0x25 0xe0 + + +0x0f 0x5a 0x25 0xe2 +0x05 0x40 0x24 0xe0 +0x85 0x42 0x24 0xe0 +0xa5 0x42 0x24 0xe0 +0xa5 0x42 0x24 0xe0 +0xc5 0x42 0x24 0xe0 +0xe5 0x42 0x24 0xe0 +0x17 0x69 0x26 0xe0 +0x37 0x69 0x26 0xe0 +0x57 0x69 0x26 0xe0 +0x77 0x69 0x26 0xe0 +0x65 0x40 0x24 0xe0 + + +#------------------------------------------------------------------------------ +# ISB +#------------------------------------------------------------------------------ +# CHECK: isb sy + +0x6f 0xf0 0x7f 0xf5 + + + +#------------------------------------------------------------------------------ +# LDM* +#------------------------------------------------------------------------------ +# CHECK: ldm r2, {r1, r3, r4, r5, r6, sp} +# CHECK: ldmib r2, {r1, r3, r4, r5, r6, sp} +# CHECK: ldmda r2, {r1, r3, r4, r5, r6, sp} +# CHECK: ldmdb r2, {r1, r3, r4, r5, r6, sp} + + +# CHECK: ldm r2!, {r1, r3, r4, r5, r6, sp} +# CHECK: ldmib r2!, {r1, r3, r4, r5, r6, sp} +# CHECK: ldmda r2!, {r1, r3, r4, r5, r6, sp} +# CHECK: ldmdb r2!, {r1, r3, r4, r5, r6, sp} + +0x7a 0x20 0x92 0xe8 +0x7a 0x20 0x92 0xe9 +0x7a 0x20 0x12 0xe8 +0x7a 0x20 0x12 0xe9 + +0x7a 0x20 0xb2 0xe8 +0x7a 0x20 0xb2 0xe9 +0x7a 0x20 0x32 0xe8 +0x7a 0x20 0x32 0xe9 + + +#------------------------------------------------------------------------------ +# LDREX/LDREXB/LDREXH/LDREXD +#------------------------------------------------------------------------------ +# CHECK: ldrexb r3, [r4] +# CHECK: ldrexh r2, [r5] +# CHECK: ldrex r1, [r7] +# CHECK: ldrexd r6, r7, [r8] + +0x9f 0x3f 0xd4 0xe1 +0x9f 0x2f 0xf5 0xe1 +0x9f 0x1f 0x97 0xe1 +0x9f 0x6f 0xb8 0xe1 + + +#------------------------------------------------------------------------------ +# FIXME: LSL +#------------------------------------------------------------------------------ +#------------------------------------------------------------------------------ +# FIXME: LSR +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# MCR/MCR2 +#------------------------------------------------------------------------------ +# CHECK: mcr p7, #1, r5, c1, c1, #4 +# CHECK: mcr2 p7, #1, r5, c1, c1, #4 + +0x91 0x57 0x21 0xee +0x91 0x57 0x21 0xfe + +#------------------------------------------------------------------------------ +# MCRR/MCRR2 +#------------------------------------------------------------------------------ +# CHECK: mcrr p7, #15, r5, r4, c1 +# CHECK: mcrr2 p7, #15, r5, r4, c1 + +0xf1 0x57 0x44 0xec +0xf1 0x57 0x44 0xfc + + +#------------------------------------------------------------------------------ +# MLA +#------------------------------------------------------------------------------ +# CHECK: mla r1, r2, r3, r4 +# CHECK: mlas r1, r2, r3, r4 +# CHECK: mlane r1, r2, r3, r4 +# CHECK: mlasne r1, r2, r3, r4 + +0x92 0x43 0x21 0xe0 +0x92 0x43 0x31 0xe0 +0x92 0x43 0x21 0x10 +0x92 0x43 0x31 0x10 + +#------------------------------------------------------------------------------ +# MLS +#------------------------------------------------------------------------------ +# CHECK: mls r2, r5, r6, r3 +# CHECK: mlsne r2, r5, r6, r3 + +0x95 0x36 0x62 0xe0 +0x95 0x36 0x62 0x10 + +#------------------------------------------------------------------------------ +# MOV (immediate) +#------------------------------------------------------------------------------ +# CHECK: mov r3, #7 +# CHECK: mov r4, #4080 +# CHECK: mov r5, #16711680 +# CHECK: movw r6, #65535 +# CHECK: movw r9, #65535 +# CHECK: movs r3, #7 +# CHECK: moveq r4, #4080 +# CHECK: movseq r5, #16711680 + +0x07 0x30 0xa0 0xe3 +0xff 0x4e 0xa0 0xe3 +0xff 0x58 0xa0 0xe3 +0xff 0x6f 0x0f 0xe3 +0xff 0x9f 0x0f 0xe3 +0x07 0x30 0xb0 0xe3 +0xff 0x4e 0xa0 0x03 +0xff 0x58 0xb0 0x03 + +#------------------------------------------------------------------------------ +# MOV (register) +#------------------------------------------------------------------------------ +# CHECK: mov r2, r3 +# CHECK: movs r2, r3 +# CHECK: moveq r2, r3 +# CHECK: movseq r2, r3 + +0x03 0x20 0xa0 0xe1 +0x03 0x20 0xb0 0xe1 +0x03 0x20 0xa0 0x01 +0x03 0x20 0xb0 0x01 + +#------------------------------------------------------------------------------ +# MOVT +#------------------------------------------------------------------------------ +# CHECK: movt r3, #7 +# CHECK: movt r6, #65535 +# CHECK: movteq r4, #4080 + +0x07 0x30 0x40 0xe3 +0xff 0x6f 0x4f 0xe3 +0xf0 0x4f 0x40 0x03 + + +#------------------------------------------------------------------------------ +# MRC/MRC2 +#------------------------------------------------------------------------------ +# CHECK: mrc p14, #0, r1, c1, c2, #4 +# CHECK: mrc2 p14, #0, r1, c1, c2, #4 + +0x92 0x1e 0x11 0xee +0x92 0x1e 0x11 0xfe + +#------------------------------------------------------------------------------ +# MRRC/MRRC2 +#------------------------------------------------------------------------------ +# CHECK: mrrc p7, #1, r5, r4, c1 +# CHECK: mrrc2 p7, #1, r5, r4, c1 + +0x11 0x57 0x54 0xec +0x11 0x57 0x54 0xfc + + +#------------------------------------------------------------------------------ +# MRS +#------------------------------------------------------------------------------ +# CHECK: mrs r8, apsr +# CHECK: mrs r8, spsr +0x00 0x80 0x0f 0xe1 +0x00 0x80 0x4f 0xe1 + + + +#------------------------------------------------------------------------------ +# MSR +#------------------------------------------------------------------------------ + +# CHECK: msr CPSR_fc, #5 +# CHECK: msr APSR_g, #5 +# CHECK: msr APSR_nzcvq, #5 +# CHECK: msr APSR_nzcvq, #5 +# CHECK: msr APSR_nzcvqg, #5 +# CHECK: msr CPSR_fc, #5 +# CHECK: msr CPSR_c, #5 +# CHECK: msr CPSR_x, #5 +# CHECK: msr CPSR_fc, #5 +# CHECK: msr CPSR_fc, #5 +# CHECK: msr CPSR_fsx, #5 +# CHECK: msr SPSR_fc, #5 +# CHECK: msr SPSR_fsxc, #5 +# CHECK: msr CPSR_fsxc, #5 + +0x05 0xf0 0x29 0xe3 +0x05 0xf0 0x24 0xe3 +0x05 0xf0 0x28 0xe3 +0x05 0xf0 0x28 0xe3 +0x05 0xf0 0x2c 0xe3 +0x05 0xf0 0x29 0xe3 +0x05 0xf0 0x21 0xe3 +0x05 0xf0 0x22 0xe3 +0x05 0xf0 0x29 0xe3 +0x05 0xf0 0x29 0xe3 +0x05 0xf0 0x2e 0xe3 +0x05 0xf0 0x69 0xe3 +0x05 0xf0 0x6f 0xe3 +0x05 0xf0 0x2f 0xe3 + +# CHECK: msr CPSR_fc, r0 +# CHECK: msr APSR_g, r0 +# CHECK: msr APSR_nzcvq, r0 +# CHECK: msr APSR_nzcvq, r0 +# CHECK: msr APSR_nzcvqg, r0 +# CHECK: msr CPSR_fc, r0 +# CHECK: msr CPSR_c, r0 +# CHECK: msr CPSR_x, r0 +# CHECK: msr CPSR_fc, r0 +# CHECK: msr CPSR_fc, r0 +# CHECK: msr CPSR_fsx, r0 +# CHECK: msr SPSR_fc, r0 +# CHECK: msr SPSR_fsxc, r0 +# CHECK: msr CPSR_fsxc, r0 + +0x00 0xf0 0x29 0xe1 +0x00 0xf0 0x24 0xe1 +0x00 0xf0 0x28 0xe1 +0x00 0xf0 0x28 0xe1 +0x00 0xf0 0x2c 0xe1 +0x00 0xf0 0x29 0xe1 +0x00 0xf0 0x21 0xe1 +0x00 0xf0 0x22 0xe1 +0x00 0xf0 0x29 0xe1 +0x00 0xf0 0x29 0xe1 +0x00 0xf0 0x2e 0xe1 +0x00 0xf0 0x69 0xe1 +0x00 0xf0 0x6f 0xe1 +0x00 0xf0 0x2f 0xe1 + +#------------------------------------------------------------------------------ +# MUL +#------------------------------------------------------------------------------ + +# CHECK: mul r5, r6, r7 +# CHECK: muls r5, r6, r7 +# CHECK: mulgt r5, r6, r7 +# CHECK: mulsle r5, r6, r7 + +0x96 0x07 0x05 0xe0 +0x96 0x07 0x15 0xe0 +0x96 0x07 0x05 0xc0 +0x96 0x07 0x15 0xd0 + + +#------------------------------------------------------------------------------ +# MVN (immediate) +#------------------------------------------------------------------------------ +# CHECK: mvn r3, #7 +# CHECK: mvn r4, #4080 +# CHECK: mvn r5, #16711680 +# CHECK: mvns r3, #7 +# CHECK: mvneq r4, #4080 +# CHECK: mvnseq r5, #16711680 + +0x07 0x30 0xe0 0xe3 +0xff 0x4e 0xe0 0xe3 +0xff 0x58 0xe0 0xe3 +0x07 0x30 0xf0 0xe3 +0xff 0x4e 0xe0 0x03 +0xff 0x58 0xf0 0x03 + + +#------------------------------------------------------------------------------ +# MVN (register) +#------------------------------------------------------------------------------ +# CHECK: mvn r2, r3 +# CHECK: mvns r2, r3 +# CHECK: mvn r5, r6, lsl #19 +# CHECK: mvn r5, r6, lsr #9 +# CHECK: mvn r5, r6, asr #4 +# CHECK: mvn r5, r6, ror #6 +# CHECK: mvn r5, r6, rrx +# CHECK: mvneq r2, r3 +# CHECK: mvnseq r2, r3, lsl #10 + +0x03 0x20 0xe0 0xe1 +0x03 0x20 0xf0 0xe1 +0x86 0x59 0xe0 0xe1 +0xa6 0x54 0xe0 0xe1 +0x46 0x52 0xe0 0xe1 +0x66 0x53 0xe0 0xe1 +0x66 0x50 0xe0 0xe1 +0x03 0x20 0xe0 0x01 +0x03 0x25 0xf0 0x01 + + +#------------------------------------------------------------------------------ +# MVN (shifted register) +#------------------------------------------------------------------------------ +# CHECK: mvn r5, r6, lsl r7 +# CHECK: mvns r5, r6, lsr r7 +# CHECK: mvngt r5, r6, asr r7 +# CHECK: mvnslt r5, r6, ror r7 + +0x16 0x57 0xe0 0xe1 +0x36 0x57 0xf0 0xe1 +0x56 0x57 0xe0 0xc1 +0x76 0x57 0xf0 0xb1 + +#------------------------------------------------------------------------------ +# NOP +#------------------------------------------------------------------------------ +# CHECK: nop +# CHECK: nopgt + +0x00 0xf0 0x20 0xe3 +0x00 0xf0 0x20 0xc3 + + +#------------------------------------------------------------------------------ +# ORR +#------------------------------------------------------------------------------ +# CHECK: orr r4, r5, #61440 +# CHECK: orr r4, r5, r6 +# CHECK: orr r4, r5, r6, lsl #5 +# CHECK: orr r4, r5, r6, lsr #5 +# CHECK: orr r4, r5, r6, lsr #5 +# CHECK: orr r4, r5, r6, asr #5 +# CHECK: orr r4, r5, r6, ror #5 +# CHECK: orr r6, r7, r8, lsl r9 +# CHECK: orr r6, r7, r8, lsr r9 +# CHECK: orr r6, r7, r8, asr r9 +# CHECK: orr r6, r7, r8, ror r9 +# CHECK: orr r4, r5, r6, rrx + +# CHECK: orr r5, r5, #61440 +# CHECK: orr r4, r4, r5 +# CHECK: orr r4, r4, r5, lsl #5 +# CHECK: orr r4, r4, r5, lsr #5 +# CHECK: orr r4, r4, r5, lsr #5 +# CHECK: orr r4, r4, r5, asr #5 +# CHECK: orr r4, r4, r5, ror #5 +# CHECK: orr r6, r6, r7, lsl r9 +# CHECK: orr r6, r6, r7, lsr r9 +# CHECK: orr r6, r6, r7, asr r9 +# CHECK: orr r6, r6, r7, ror r9 +# CHECK: orr r4, r4, r5, rrx + +0x0f 0x4a 0x85 0xe3 +0x06 0x40 0x85 0xe1 +0x86 0x42 0x85 0xe1 +0xa6 0x42 0x85 0xe1 +0xa6 0x42 0x85 0xe1 +0xc6 0x42 0x85 0xe1 +0xe6 0x42 0x85 0xe1 +0x18 0x69 0x87 0xe1 +0x38 0x69 0x87 0xe1 +0x58 0x69 0x87 0xe1 +0x78 0x69 0x87 0xe1 +0x66 0x40 0x85 0xe1 + +0x0f 0x5a 0x85 0xe3 +0x05 0x40 0x84 0xe1 +0x85 0x42 0x84 0xe1 +0xa5 0x42 0x84 0xe1 +0xa5 0x42 0x84 0xe1 +0xc5 0x42 0x84 0xe1 +0xe5 0x42 0x84 0xe1 +0x17 0x69 0x86 0xe1 +0x37 0x69 0x86 0xe1 +0x57 0x69 0x86 0xe1 +0x77 0x69 0x86 0xe1 +0x65 0x40 0x84 0xe1 + +# CHECK: orrseq r4, r5, #61440 +# CHECK: orrne r4, r5, r6 +# CHECK: orrseq r4, r5, r6, lsl #5 +# CHECK: orrlo r6, r7, r8, ror r9 +# CHECK: orrshi r4, r5, r6, rrx +# CHECK: orrhs r5, r5, #61440 +# CHECK: orrseq r4, r4, r5 +# CHECK: orrne r6, r6, r7, asr r9 +# CHECK: orrslt r6, r6, r7, ror r9 +# CHECK: orrsgt r4, r4, r5, rrx + +0x0f 0x4a 0x95 0x03 +0x06 0x40 0x85 0x11 +0x86 0x42 0x95 0x01 +0x78 0x69 0x87 0x31 +0x66 0x40 0x95 0x81 +0x0f 0x5a 0x85 0x23 +0x05 0x40 0x94 0x01 +0x57 0x69 0x86 0x11 +0x77 0x69 0x96 0xb1 +0x65 0x40 0x94 0xc1 + +#------------------------------------------------------------------------------ +# PKH +#------------------------------------------------------------------------------ +# CHECK: pkhbt r2, r2, r3 +# CHECK: pkhbt r2, r2, r3, lsl #31 +# CHECK: pkhbt r2, r2, r3 +# CHECK: pkhbt r2, r2, r3, lsl #15 + +# CHECK: pkhbt r2, r2, r3 +# CHECK: pkhtb r2, r2, r3, asr #31 +# CHECK: pkhtb r2, r2, r3, asr #15 + +0x13 0x20 0x82 0xe6 +0x93 0x2f 0x82 0xe6 +0x13 0x20 0x82 0xe6 +0x93 0x27 0x82 0xe6 + +0x13 0x20 0x82 0xe6 +0xd3 0x2f 0x82 0xe6 +0xd3 0x27 0x82 0xe6 + +#------------------------------------------------------------------------------ +# FIXME: PLD +#------------------------------------------------------------------------------ +#------------------------------------------------------------------------------ +# FIXME: PLI +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# POP +#------------------------------------------------------------------------------ +# CHECK: ldr r7, [sp], #4 +# CHECK: pop {r7, r8, r9, r10} + +0x04 0x70 0x9d 0xe4 +0x80 0x07 0xbd 0xe8 + + +#------------------------------------------------------------------------------ +# PUSH +#------------------------------------------------------------------------------ +# CHECK: str r7, [sp, #-4]! +# CHECK: push {r7, r8, r9, r10} + +0x04 0x70 0x2d 0xe5 +0x80 0x07 0x2d 0xe9 + + +#------------------------------------------------------------------------------ +# QADD/QADD16/QADD8 +#------------------------------------------------------------------------------ +# CHECK: qadd r1, r2, r3 +# CHECK: qaddne r1, r2, r3 +# CHECK: qadd16 r1, r2, r3 +# CHECK: qadd16gt r1, r2, r3 +# CHECK: qadd8 r1, r2, r3 +# CHECK: qadd8le r1, r2, r3 + +0x52 0x10 0x03 0xe1 +0x52 0x10 0x03 0x11 +0x13 0x1f 0x22 0xe6 +0x13 0x1f 0x22 0xc6 +0x93 0x1f 0x22 0xe6 +0x93 0x1f 0x22 0xd6 + + +#------------------------------------------------------------------------------ +# QDADD/QDSUB +#------------------------------------------------------------------------------ +# CHECK: qdadd r6, r7, r8 +# CHECK: qdaddhi r6, r7, r8 +# CHECK: qdsub r6, r7, r8 +# CHECK: qdsubhi r6, r7, r8 + +0x57 0x60 0x48 0xe1 +0x57 0x60 0x48 0x81 +0x57 0x60 0x68 0xe1 +0x57 0x60 0x68 0x81 + + +#------------------------------------------------------------------------------ +# QSAX +#------------------------------------------------------------------------------ +# CHECK: qsax r9, r12, r0 +# CHECK: qsaxeq r9, r12, r0 + +0x50 0x9f 0x2c 0xe6 +0x50 0x9f 0x2c 0x06 + + +#------------------------------------------------------------------------------ +# QSUB/QSUB16/QSUB8 +#------------------------------------------------------------------------------ +# CHECK: qsub r1, r2, r3 +# CHECK: qsubne r1, r2, r3 +# CHECK: qsub16 r1, r2, r3 +# CHECK: qsub16gt r1, r2, r3 +# CHECK: qsub8 r1, r2, r3 +# CHECK: qsub8le r1, r2, r3 + +0x52 0x10 0x23 0xe1 +0x52 0x10 0x23 0x11 +0x73 0x1f 0x22 0xe6 +0x73 0x1f 0x22 0xc6 +0xf3 0x1f 0x22 0xe6 +0xf3 0x1f 0x22 0xd6 + + +#------------------------------------------------------------------------------ +# RBIT +#------------------------------------------------------------------------------ +# CHECK: rbit r1, r2 +# CHECK: rbitne r1, r2 + +0x32 0x1f 0xff 0xe6 +0x32 0x1f 0xff 0x16 + + +#------------------------------------------------------------------------------ +# REV/REV16/REVSH +#------------------------------------------------------------------------------ +# CHECK: rev r1, r9 +# CHECK: revne r1, r5 +# CHECK: rev16 r8, r3 +# CHECK: rev16ne r12, r4 +# CHECK: revsh r4, r9 +# CHECK: revshne r9, r1 + +0x39 0x1f 0xbf 0xe6 +0x35 0x1f 0xbf 0x16 +0xb3 0x8f 0xbf 0xe6 +0xb4 0xcf 0xbf 0x16 +0xb9 0x4f 0xff 0xe6 +0xb1 0x9f 0xff 0x16 + + +#------------------------------------------------------------------------------ +# RFE +#------------------------------------------------------------------------------ +# CHECK: rfeda r2 +# CHECK: rfedb r3 +# CHECK: rfeia r5 +# CHECK: rfeib r6 + +# CHECK: rfeda r4! +# CHECK: rfedb r7! +# CHECK: rfeia r9! +# CHECK: rfeib r8! + +# CHECK: rfeda r2 +# CHECK: rfedb r3 +# CHECK: rfeia r5 +# CHECK: rfeib r6 + +# CHECK: rfeda r4! +# CHECK: rfedb r7! +# CHECK: rfeia r9! +# CHECK: rfeib r8! + +# CHECK: rfeia r1 +# CHECK: rfeia r1! + +0x00 0x0a 0x12 0xf8 +0x00 0x0a 0x13 0xf9 +0x00 0x0a 0x95 0xf8 +0x00 0x0a 0x96 0xf9 + +0x00 0x0a 0x34 0xf8 +0x00 0x0a 0x37 0xf9 +0x00 0x0a 0xb9 0xf8 +0x00 0x0a 0xb8 0xf9 + +0x00 0x0a 0x12 0xf8 +0x00 0x0a 0x13 0xf9 +0x00 0x0a 0x95 0xf8 +0x00 0x0a 0x96 0xf9 + +0x00 0x0a 0x34 0xf8 +0x00 0x0a 0x37 0xf9 +0x00 0x0a 0xb9 0xf8 +0x00 0x0a 0xb8 0xf9 + +0x00 0x0a 0x91 0xf8 +0x00 0x0a 0xb1 0xf8 + + +#------------------------------------------------------------------------------ +# RSB +#------------------------------------------------------------------------------ +# CHECK: rsb r4, r5, #61440 +# CHECK: rsb r4, r5, r6 +# CHECK: rsb r4, r5, r6, lsl #5 +# CHECK: rsblo r4, r5, r6, lsr #5 +# CHECK: rsb r4, r5, r6, lsr #5 +# CHECK: rsb r4, r5, r6, asr #5 +# CHECK: rsb r4, r5, r6, ror #5 +# CHECK: rsb r6, r7, r8, lsl r9 +# CHECK: rsb r6, r7, r8, lsr r9 +# CHECK: rsb r6, r7, r8, asr r9 +# CHECK: rsble r6, r7, r8, ror r9 +# CHECK: rsb r4, r5, r6, rrx + +# CHECK: rsb r5, r5, #61440 +# CHECK: rsb r4, r4, r5 +# CHECK: rsb r4, r4, r5, lsl #5 +# CHECK: rsb r4, r4, r5, lsr #5 +# CHECK: rsbne r4, r4, r5, lsr #5 +# CHECK: rsb r4, r4, r5, asr #5 +# CHECK: rsb r4, r4, r5, ror #5 +# CHECK: rsbgt r6, r6, r7, lsl r9 +# CHECK: rsb r6, r6, r7, lsr r9 +# CHECK: rsb r6, r6, r7, asr r9 +# CHECK: rsb r6, r6, r7, ror r9 +# CHECK: rsb r4, r4, r5, rrx + +0x0f 0x4a 0x65 0xe2 +0x06 0x40 0x65 0xe0 +0x86 0x42 0x65 0xe0 +0xa6 0x42 0x65 0x30 +0xa6 0x42 0x65 0xe0 +0xc6 0x42 0x65 0xe0 +0xe6 0x42 0x65 0xe0 +0x18 0x69 0x67 0xe0 +0x38 0x69 0x67 0xe0 +0x58 0x69 0x67 0xe0 +0x78 0x69 0x67 0xd0 +0x66 0x40 0x65 0xe0 + +0x0f 0x5a 0x65 0xe2 +0x05 0x40 0x64 0xe0 +0x85 0x42 0x64 0xe0 +0xa5 0x42 0x64 0xe0 +0xa5 0x42 0x64 0x10 +0xc5 0x42 0x64 0xe0 +0xe5 0x42 0x64 0xe0 +0x17 0x69 0x66 0xc0 +0x37 0x69 0x66 0xe0 +0x57 0x69 0x66 0xe0 +0x77 0x69 0x66 0xe0 +0x65 0x40 0x64 0xe0 + +#------------------------------------------------------------------------------ +# RSC |