mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-19 17:33:29 +00:00
08fef885eb
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139422 91177308-0d34-0410-b5e6-96231b3b80d8
439 lines
11 KiB
Plaintext
439 lines
11 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
|
|
|
|
#------------------------------------------------------------------------------
|
|
# 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
|