llvm-6502/test/MC/Disassembler/ARM/thumb2.txt

948 lines
24 KiB
Plaintext

# RUN: llvm-mc -triple=thumbv7-apple-darwin -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
0xaf 0xf6 0xc6 0x4b
0xaf 0xf2 0x3a 0x3b
#------------------------------------------------------------------------------
# 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
#------------------------------------------------------------------------------
# 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
0x62 0xf3 0xd3 0x05
0x18 0xbf
0x62 0xf3 0xd3 0x05
#------------------------------------------------------------------------------
# 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
0x1f 0xb9
0x37 0xb9
#------------------------------------------------------------------------------
# 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 ish
#CHECK: dmb ishst
#CHECK: dmb nsh
#CHECK: dmb nshst
#CHECK: dmb osh
#CHECK: dmb oshst
#CHECK: dmb
0xbf 0xf3 0x5f 0x8f
0xbf 0xf3 0x5e 0x8f
0xbf 0xf3 0x5b 0x8f
0xbf 0xf3 0x5a 0x8f
0xbf 0xf3 0x57 0x8f
0xbf 0xf3 0x56 0x8f
0xbf 0xf3 0x53 0x8f
0xbf 0xf3 0x52 0x8f
0xbf 0xf3 0x5f 0x8f
#------------------------------------------------------------------------------
# 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
0xbf 0xf3 0x4f 0x8f
0xbf 0xf3 0x4e 0x8f
0xbf 0xf3 0x4b 0x8f
0xbf 0xf3 0x4a 0x8f
0xbf 0xf3 0x47 0x8f
0xbf 0xf3 0x46 0x8f
0xbf 0xf3 0x43 0x8f
0xbf 0xf3 0x42 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
0xbf 0xf3 0x6f 0x8f
#------------------------------------------------------------------------------
# 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(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 r2, [r4, #255]!
# CHECK: ldr r8, [sp, #4]!
# CHECK: ldr lr, [sp, #-4]!
# 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
0x54 0xf8 0xff 0x2f
0x5d 0xf8 0x04 0x8f
0x5d 0xf8 0x04 0xed
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 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
0x13 0xf8 0xff 0xeb
0x12 0xf8 0x04 0x9b
0x1d 0xf8 0x04 0x39
#------------------------------------------------------------------------------
# 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]
0xd6 0xe9 0x06 0x35
0xf6 0xe9 0x06 0x35
0xf6 0xe8 0x01 0x35
0x76 0xe8 0x02 0x35
0xd6 0xe9 0x00 0x35
0xd3 0xe9 0x00 0x81
#------------------------------------------------------------------------------
# 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 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
0x33 0xf8 0xff 0xeb
0x32 0xf8 0x04 0x9b
0x3d 0xf8 0x04 0x39
#------------------------------------------------------------------------------
# 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 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
0x13 0xf9 0xff 0xeb
0x12 0xf9 0x04 0x9b
0x1d 0xf9 0x04 0x39
#------------------------------------------------------------------------------
# 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]
0x35 0xf9 0x04 0x5c
0xb6 0xf9 0x20 0x50
0xb6 0xf9 0x21 0x50
0xb6 0xf9 0x01 0x51
0xb7 0xf9 0x01 0xe1
#------------------------------------------------------------------------------
# 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 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
0x33 0xf9 0xff 0xeb
0x32 0xf9 0x04 0x9b
0x3d 0xf9 0x04 0x39
#------------------------------------------------------------------------------
# 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
#------------------------------------------------------------------------------
# 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