mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
1427abbf6b
The tests for the disassembler were adapted from the encoder tests, and for the most part, the output from the disassembler matches that encoder-test inputs. There are some places where more-informative mnemonics could be produced (notably for the branch instructions), and those cases are noted in the tests with FIXMEs. Future work includes: - Generating more-informative mnemonics when possible (this may also be done in the printer). - Remove the dependence on positional "numbered" operand-to-variable mapping (for both encoding and decoding). - Internally using 64-bit instruction variants in 64-bit mode (if this turns out to matter). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197693 91177308-0d34-0410-b5e6-96231b3b80d8
622 lines
13 KiB
Plaintext
622 lines
13 KiB
Plaintext
# RUN: llvm-mc --disassemble %s -triple powerpc64-unknown-unknown -mcpu=pwr7 | FileCheck %s
|
|
|
|
# FIXME: test b target
|
|
|
|
# FIXME: test ba target
|
|
|
|
# FIXME: test bl target
|
|
|
|
# FIXME: test bla target
|
|
|
|
# FIXME: test bc 4, 10, target
|
|
|
|
# FIXME: test bca 4, 10, target
|
|
|
|
# FIXME: test bcl 4, 10, target
|
|
|
|
# FIXME: test bcla 4, 10, target
|
|
|
|
# CHECK: bclr 4, 10, 3
|
|
0x4c 0x8a 0x18 0x20
|
|
|
|
# CHECK: bclr 4, 10, 0
|
|
0x4c 0x8a 0x00 0x20
|
|
|
|
# CHECK: bclrl 4, 10, 3
|
|
0x4c 0x8a 0x18 0x21
|
|
|
|
# CHECK: bclrl 4, 10, 0
|
|
0x4c 0x8a 0x00 0x21
|
|
|
|
# CHECK: bcctr 4, 10, 3
|
|
0x4c 0x8a 0x1c 0x20
|
|
|
|
# CHECK: bcctr 4, 10, 0
|
|
0x4c 0x8a 0x04 0x20
|
|
|
|
# CHECK: bcctrl 4, 10, 3
|
|
0x4c 0x8a 0x1c 0x21
|
|
|
|
# CHECK: bcctrl 4, 10, 0
|
|
0x4c 0x8a 0x04 0x21
|
|
|
|
# CHECK: crand 2, 3, 4
|
|
0x4c 0x43 0x22 0x02
|
|
|
|
# CHECK: crnand 2, 3, 4
|
|
0x4c 0x43 0x21 0xc2
|
|
|
|
# CHECK: cror 2, 3, 4
|
|
0x4c 0x43 0x23 0x82
|
|
|
|
# CHECK: crxor 2, 3, 4
|
|
0x4c 0x43 0x21 0x82
|
|
|
|
# CHECK: crnor 2, 3, 4
|
|
0x4c 0x43 0x20 0x42
|
|
|
|
# CHECK: creqv 2, 3, 4
|
|
0x4c 0x43 0x22 0x42
|
|
|
|
# CHECK: crandc 2, 3, 4
|
|
0x4c 0x43 0x21 0x02
|
|
|
|
# CHECK: crorc 2, 3, 4
|
|
0x4c 0x43 0x23 0x42
|
|
|
|
# CHECK: mcrf 2, 3
|
|
0x4d 0x0c 0x00 0x00
|
|
|
|
# CHECK: sc 1
|
|
0x44 0x00 0x00 0x22
|
|
|
|
# CHECK: sc 0
|
|
0x44 0x00 0x00 0x02
|
|
|
|
# CHECK: lbz 2, 128(4)
|
|
0x88 0x44 0x00 0x80
|
|
|
|
# CHECK: lbzx 2, 3, 4
|
|
0x7c 0x43 0x20 0xae
|
|
|
|
# CHECK: lbzu 2, 128(4)
|
|
0x8c 0x44 0x00 0x80
|
|
|
|
# CHECK: lbzux 2, 3, 4
|
|
0x7c 0x43 0x20 0xee
|
|
|
|
# CHECK: lhz 2, 128(4)
|
|
0xa0 0x44 0x00 0x80
|
|
|
|
# CHECK: lhzx 2, 3, 4
|
|
0x7c 0x43 0x22 0x2e
|
|
|
|
# CHECK: lhzu 2, 128(4)
|
|
0xa4 0x44 0x00 0x80
|
|
|
|
# CHECK: lhzux 2, 3, 4
|
|
0x7c 0x43 0x22 0x6e
|
|
|
|
# CHECK: lha 2, 128(4)
|
|
0xa8 0x44 0x00 0x80
|
|
|
|
# CHECK: lhax 2, 3, 4
|
|
0x7c 0x43 0x22 0xae
|
|
|
|
# CHECK: lhau 2, 128(4)
|
|
0xac 0x44 0x00 0x80
|
|
|
|
# CHECK: lhaux 2, 3, 4
|
|
0x7c 0x43 0x22 0xee
|
|
|
|
# CHECK: lwz 2, 128(4)
|
|
0x80 0x44 0x00 0x80
|
|
|
|
# CHECK: lwzx 2, 3, 4
|
|
0x7c 0x43 0x20 0x2e
|
|
|
|
# CHECK: lwzu 2, 128(4)
|
|
0x84 0x44 0x00 0x80
|
|
|
|
# CHECK: lwzux 2, 3, 4
|
|
0x7c 0x43 0x20 0x6e
|
|
|
|
# CHECK: lwa 2, 128(4)
|
|
0xe8 0x44 0x00 0x82
|
|
|
|
# CHECK: lwax 2, 3, 4
|
|
0x7c 0x43 0x22 0xaa
|
|
|
|
# CHECK: lwaux 2, 3, 4
|
|
0x7c 0x43 0x22 0xea
|
|
|
|
# CHECK: ld 2, 128(4)
|
|
0xe8 0x44 0x00 0x80
|
|
|
|
# CHECK: ldx 2, 3, 4
|
|
0x7c 0x43 0x20 0x2a
|
|
|
|
# CHECK: ldu 2, 128(4)
|
|
0xe8 0x44 0x00 0x81
|
|
|
|
# CHECK: ldux 2, 3, 4
|
|
0x7c 0x43 0x20 0x6a
|
|
|
|
# CHECK: stb 2, 128(4)
|
|
0x98 0x44 0x00 0x80
|
|
|
|
# CHECK: stbx 2, 3, 4
|
|
0x7c 0x43 0x21 0xae
|
|
|
|
# CHECK: stbu 2, 128(4)
|
|
0x9c 0x44 0x00 0x80
|
|
|
|
# CHECK: stbux 2, 3, 4
|
|
0x7c 0x43 0x21 0xee
|
|
|
|
# CHECK: sth 2, 128(4)
|
|
0xb0 0x44 0x00 0x80
|
|
|
|
# CHECK: sthx 2, 3, 4
|
|
0x7c 0x43 0x23 0x2e
|
|
|
|
# CHECK: sthu 2, 128(4)
|
|
0xb4 0x44 0x00 0x80
|
|
|
|
# CHECK: sthux 2, 3, 4
|
|
0x7c 0x43 0x23 0x6e
|
|
|
|
# CHECK: stw 2, 128(4)
|
|
0x90 0x44 0x00 0x80
|
|
|
|
# CHECK: stwx 2, 3, 4
|
|
0x7c 0x43 0x21 0x2e
|
|
|
|
# CHECK: stwu 2, 128(4)
|
|
0x94 0x44 0x00 0x80
|
|
|
|
# CHECK: stwux 2, 3, 4
|
|
0x7c 0x43 0x21 0x6e
|
|
|
|
# CHECK: std 2, 128(4)
|
|
0xf8 0x44 0x00 0x80
|
|
|
|
# CHECK: stdx 2, 3, 4
|
|
0x7c 0x43 0x21 0x2a
|
|
|
|
# CHECK: stdu 2, 128(4)
|
|
0xf8 0x44 0x00 0x81
|
|
|
|
# CHECK: stdux 2, 3, 4
|
|
0x7c 0x43 0x21 0x6a
|
|
|
|
# CHECK: lhbrx 2, 3, 4
|
|
0x7c 0x43 0x26 0x2c
|
|
|
|
# CHECK: sthbrx 2, 3, 4
|
|
0x7c 0x43 0x27 0x2c
|
|
|
|
# CHECK: lwbrx 2, 3, 4
|
|
0x7c 0x43 0x24 0x2c
|
|
|
|
# CHECK: stwbrx 2, 3, 4
|
|
0x7c 0x43 0x25 0x2c
|
|
|
|
# CHECK: ldbrx 2, 3, 4
|
|
0x7c 0x43 0x24 0x28
|
|
|
|
# CHECK: stdbrx 2, 3, 4
|
|
0x7c 0x43 0x25 0x28
|
|
|
|
# CHECK: lmw 2, 128(1)
|
|
0xb8 0x41 0x00 0x80
|
|
|
|
# CHECK: stmw 2, 128(1)
|
|
0xbc 0x41 0x00 0x80
|
|
|
|
# CHECK: addi 2, 3, 128
|
|
0x38 0x43 0x00 0x80
|
|
|
|
# CHECK: addis 2, 3, 128
|
|
0x3c 0x43 0x00 0x80
|
|
|
|
# CHECK: add 2, 3, 4
|
|
0x7c 0x43 0x22 0x14
|
|
|
|
# CHECK: add. 2, 3, 4
|
|
0x7c 0x43 0x22 0x15
|
|
|
|
# CHECK: subf 2, 3, 4
|
|
0x7c 0x43 0x20 0x50
|
|
|
|
# CHECK: subf. 2, 3, 4
|
|
0x7c 0x43 0x20 0x51
|
|
|
|
# CHECK: addic 2, 3, 128
|
|
0x30 0x43 0x00 0x80
|
|
|
|
# CHECK: addic. 2, 3, 128
|
|
0x34 0x43 0x00 0x80
|
|
|
|
# CHECK: subfic 2, 3, 4
|
|
0x20 0x43 0x00 0x04
|
|
|
|
# CHECK: addc 2, 3, 4
|
|
0x7c 0x43 0x20 0x14
|
|
|
|
# CHECK: addc. 2, 3, 4
|
|
0x7c 0x43 0x20 0x15
|
|
|
|
# CHECK: subfc 2, 3, 4
|
|
0x7c 0x43 0x20 0x10
|
|
|
|
# CHECK: subfc 2, 3, 4
|
|
0x7c 0x43 0x20 0x10
|
|
|
|
# CHECK: adde 2, 3, 4
|
|
0x7c 0x43 0x21 0x14
|
|
|
|
# CHECK: adde. 2, 3, 4
|
|
0x7c 0x43 0x21 0x15
|
|
|
|
# CHECK: subfe 2, 3, 4
|
|
0x7c 0x43 0x21 0x10
|
|
|
|
# CHECK: subfe. 2, 3, 4
|
|
0x7c 0x43 0x21 0x11
|
|
|
|
# CHECK: addme 2, 3
|
|
0x7c 0x43 0x01 0xd4
|
|
|
|
# CHECK: addme. 2, 3
|
|
0x7c 0x43 0x01 0xd5
|
|
|
|
# CHECK: subfme 2, 3
|
|
0x7c 0x43 0x01 0xd0
|
|
|
|
# CHECK: subfme. 2, 3
|
|
0x7c 0x43 0x01 0xd1
|
|
|
|
# CHECK: addze 2, 3
|
|
0x7c 0x43 0x01 0x94
|
|
|
|
# CHECK: addze. 2, 3
|
|
0x7c 0x43 0x01 0x95
|
|
|
|
# CHECK: subfze 2, 3
|
|
0x7c 0x43 0x01 0x90
|
|
|
|
# CHECK: subfze. 2, 3
|
|
0x7c 0x43 0x01 0x91
|
|
|
|
# CHECK: neg 2, 3
|
|
0x7c 0x43 0x00 0xd0
|
|
|
|
# CHECK: neg. 2, 3
|
|
0x7c 0x43 0x00 0xd1
|
|
|
|
# CHECK: mulli 2, 3, 128
|
|
0x1c 0x43 0x00 0x80
|
|
|
|
# CHECK: mulhw 2, 3, 4
|
|
0x7c 0x43 0x20 0x96
|
|
|
|
# CHECK: mulhw. 2, 3, 4
|
|
0x7c 0x43 0x20 0x97
|
|
|
|
# CHECK: mullw 2, 3, 4
|
|
0x7c 0x43 0x21 0xd6
|
|
|
|
# CHECK: mullw. 2, 3, 4
|
|
0x7c 0x43 0x21 0xd7
|
|
|
|
# CHECK: mulhwu 2, 3, 4
|
|
0x7c 0x43 0x20 0x16
|
|
|
|
# CHECK: mulhwu. 2, 3, 4
|
|
0x7c 0x43 0x20 0x17
|
|
|
|
# CHECK: divw 2, 3, 4
|
|
0x7c 0x43 0x23 0xd6
|
|
|
|
# CHECK: divw. 2, 3, 4
|
|
0x7c 0x43 0x23 0xd7
|
|
|
|
# CHECK: divwu 2, 3, 4
|
|
0x7c 0x43 0x23 0x96
|
|
|
|
# CHECK: divwu. 2, 3, 4
|
|
0x7c 0x43 0x23 0x97
|
|
|
|
# CHECK: mulld 2, 3, 4
|
|
0x7c 0x43 0x21 0xd2
|
|
|
|
# CHECK: mulld. 2, 3, 4
|
|
0x7c 0x43 0x21 0xd3
|
|
|
|
# CHECK: mulhd 2, 3, 4
|
|
0x7c 0x43 0x20 0x92
|
|
|
|
# CHECK: mulhd. 2, 3, 4
|
|
0x7c 0x43 0x20 0x93
|
|
|
|
# CHECK: mulhdu 2, 3, 4
|
|
0x7c 0x43 0x20 0x12
|
|
|
|
# CHECK: mulhdu. 2, 3, 4
|
|
0x7c 0x43 0x20 0x13
|
|
|
|
# CHECK: divd 2, 3, 4
|
|
0x7c 0x43 0x23 0xd2
|
|
|
|
# CHECK: divd. 2, 3, 4
|
|
0x7c 0x43 0x23 0xd3
|
|
|
|
# CHECK: divdu 2, 3, 4
|
|
0x7c 0x43 0x23 0x92
|
|
|
|
# CHECK: divdu. 2, 3, 4
|
|
0x7c 0x43 0x23 0x93
|
|
|
|
# CHECK: cmpdi 2, 3, 128
|
|
0x2d 0x23 0x00 0x80
|
|
|
|
# CHECK: cmpd 2, 3, 4
|
|
0x7d 0x23 0x20 0x00
|
|
|
|
# CHECK: cmpldi 2, 3, 128
|
|
0x29 0x23 0x00 0x80
|
|
|
|
# CHECK: cmpld 2, 3, 4
|
|
0x7d 0x23 0x20 0x40
|
|
|
|
# CHECK: cmpwi 2, 3, 128
|
|
0x2d 0x03 0x00 0x80
|
|
|
|
# CHECK: cmpw 2, 3, 4
|
|
0x7d 0x03 0x20 0x00
|
|
|
|
# CHECK: cmplwi 2, 3, 128
|
|
0x29 0x03 0x00 0x80
|
|
|
|
# CHECK: cmplw 2, 3, 4
|
|
0x7d 0x03 0x20 0x40
|
|
|
|
# CHECK: twi 2, 3, 4
|
|
0x0c 0x43 0x00 0x04
|
|
|
|
# CHECK: tw 2, 3, 4
|
|
0x7c 0x43 0x20 0x08
|
|
|
|
# CHECK: tdi 2, 3, 4
|
|
0x08 0x43 0x00 0x04
|
|
|
|
# CHECK: td 2, 3, 4
|
|
0x7c 0x43 0x20 0x88
|
|
|
|
# CHECK: isel 2, 3, 4, 5
|
|
0x7c 0x43 0x21 0x5e
|
|
|
|
# CHECK: andi. 2, 3, 128
|
|
0x70 0x62 0x00 0x80
|
|
|
|
# CHECK: andis. 2, 3, 128
|
|
0x74 0x62 0x00 0x80
|
|
|
|
# CHECK: ori 2, 3, 128
|
|
0x60 0x62 0x00 0x80
|
|
|
|
# CHECK: oris 2, 3, 128
|
|
0x64 0x62 0x00 0x80
|
|
|
|
# CHECK: xori 2, 3, 128
|
|
0x68 0x62 0x00 0x80
|
|
|
|
# CHECK: xoris 2, 3, 128
|
|
0x6c 0x62 0x00 0x80
|
|
|
|
# CHECK: and 2, 3, 4
|
|
0x7c 0x62 0x20 0x38
|
|
|
|
# CHECK: and. 2, 3, 4
|
|
0x7c 0x62 0x20 0x39
|
|
|
|
# CHECK: xor 2, 3, 4
|
|
0x7c 0x62 0x22 0x78
|
|
|
|
# CHECK: xor. 2, 3, 4
|
|
0x7c 0x62 0x22 0x79
|
|
|
|
# CHECK: nand 2, 3, 4
|
|
0x7c 0x62 0x23 0xb8
|
|
|
|
# CHECK: nand. 2, 3, 4
|
|
0x7c 0x62 0x23 0xb9
|
|
|
|
# CHECK: or 2, 3, 4
|
|
0x7c 0x62 0x23 0x78
|
|
|
|
# CHECK: or. 2, 3, 4
|
|
0x7c 0x62 0x23 0x79
|
|
|
|
# CHECK: nor 2, 3, 4
|
|
0x7c 0x62 0x20 0xf8
|
|
|
|
# CHECK: nor. 2, 3, 4
|
|
0x7c 0x62 0x20 0xf9
|
|
|
|
# CHECK: eqv 2, 3, 4
|
|
0x7c 0x62 0x22 0x38
|
|
|
|
# CHECK: eqv. 2, 3, 4
|
|
0x7c 0x62 0x22 0x39
|
|
|
|
# CHECK: andc 2, 3, 4
|
|
0x7c 0x62 0x20 0x78
|
|
|
|
# CHECK: andc. 2, 3, 4
|
|
0x7c 0x62 0x20 0x79
|
|
|
|
# CHECK: orc 2, 3, 4
|
|
0x7c 0x62 0x23 0x38
|
|
|
|
# CHECK: orc. 2, 3, 4
|
|
0x7c 0x62 0x23 0x39
|
|
|
|
# CHECK: extsb 2, 3
|
|
0x7c 0x62 0x07 0x74
|
|
|
|
# CHECK: extsb. 2, 3
|
|
0x7c 0x62 0x07 0x75
|
|
|
|
# CHECK: extsh 2, 3
|
|
0x7c 0x62 0x07 0x34
|
|
|
|
# CHECK: extsh. 2, 3
|
|
0x7c 0x62 0x07 0x35
|
|
|
|
# CHECK: cntlzw 2, 3
|
|
0x7c 0x62 0x00 0x34
|
|
|
|
# CHECK: cntlzw. 2, 3
|
|
0x7c 0x62 0x00 0x35
|
|
|
|
# CHECK: popcntw 2, 3
|
|
0x7c 0x62 0x02 0xf4
|
|
|
|
# CHECK: extsw 2, 3
|
|
0x7c 0x62 0x07 0xb4
|
|
|
|
# CHECK: extsw. 2, 3
|
|
0x7c 0x62 0x07 0xb5
|
|
|
|
# CHECK: cntlzd 2, 3
|
|
0x7c 0x62 0x00 0x74
|
|
|
|
# CHECK: cntlzd. 2, 3
|
|
0x7c 0x62 0x00 0x75
|
|
|
|
# CHECK: popcntd 2, 3
|
|
0x7c 0x62 0x03 0xf4
|
|
|
|
# CHECK: rlwinm 2, 3, 4, 5, 6
|
|
0x54 0x62 0x21 0x4c
|
|
|
|
# CHECK: rlwinm. 2, 3, 4, 5, 6
|
|
0x54 0x62 0x21 0x4d
|
|
|
|
# CHECK: rlwnm 2, 3, 4, 5, 6
|
|
0x5c 0x62 0x21 0x4c
|
|
|
|
# CHECK: rlwnm. 2, 3, 4, 5, 6
|
|
0x5c 0x62 0x21 0x4d
|
|
|
|
# CHECK: rlwimi 2, 3, 4, 5, 6
|
|
0x50 0x62 0x21 0x4c
|
|
|
|
# CHECK: rlwimi. 2, 3, 4, 5, 6
|
|
0x50 0x62 0x21 0x4d
|
|
|
|
# CHECK: rldicl 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x40
|
|
|
|
# CHECK: rldicl. 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x41
|
|
|
|
# CHECK: rldicr 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x44
|
|
|
|
# CHECK: rldicr. 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x45
|
|
|
|
# CHECK: rldic 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x48
|
|
|
|
# CHECK: rldic. 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x49
|
|
|
|
# CHECK: rldcl 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x50
|
|
|
|
# CHECK: rldcl. 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x51
|
|
|
|
# CHECK: rldcr 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x52
|
|
|
|
# CHECK: rldcr. 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x53
|
|
|
|
# CHECK: rldimi 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x4c
|
|
|
|
# CHECK: rldimi. 2, 3, 4, 5
|
|
0x78 0x62 0x21 0x4d
|
|
|
|
# CHECK: slw 2, 3, 4
|
|
0x7c 0x62 0x20 0x30
|
|
|
|
# CHECK: slw. 2, 3, 4
|
|
0x7c 0x62 0x20 0x31
|
|
|
|
# CHECK: srw 2, 3, 4
|
|
0x7c 0x62 0x24 0x30
|
|
|
|
# CHECK: srw. 2, 3, 4
|
|
0x7c 0x62 0x24 0x31
|
|
|
|
# CHECK: srawi 2, 3, 4
|
|
0x7c 0x62 0x26 0x70
|
|
|
|
# CHECK: srawi. 2, 3, 4
|
|
0x7c 0x62 0x26 0x71
|
|
|
|
# CHECK: sraw 2, 3, 4
|
|
0x7c 0x62 0x26 0x30
|
|
|
|
# CHECK: sraw. 2, 3, 4
|
|
0x7c 0x62 0x26 0x31
|
|
|
|
# CHECK: sld 2, 3, 4
|
|
0x7c 0x62 0x20 0x36
|
|
|
|
# CHECK: sld. 2, 3, 4
|
|
0x7c 0x62 0x20 0x37
|
|
|
|
# CHECK: srd 2, 3, 4
|
|
0x7c 0x62 0x24 0x36
|
|
|
|
# CHECK: srd. 2, 3, 4
|
|
0x7c 0x62 0x24 0x37
|
|
|
|
# CHECK: sradi 2, 3, 4
|
|
0x7c 0x62 0x26 0x74
|
|
|
|
# CHECK: sradi. 2, 3, 4
|
|
0x7c 0x62 0x26 0x75
|
|
|
|
# CHECK: srad 2, 3, 4
|
|
0x7c 0x62 0x26 0x34
|
|
|
|
# CHECK: srad. 2, 3, 4
|
|
0x7c 0x62 0x26 0x35
|
|
|
|
# CHECK: mtspr 600, 2
|
|
0x7c 0x58 0x93 0xa6
|
|
|
|
# CHECK: mfspr 2, 600
|
|
0x7c 0x58 0x92 0xa6
|
|
|
|
# CHECK: mtcrf 123, 2
|
|
0x7c 0x47 0xb1 0x20
|
|
|
|
# CHECK: mfcr 2
|
|
0x7c 0x40 0x00 0x26
|
|
|
|
# CHECK: mtocrf 16, 2
|
|
0x7c 0x51 0x01 0x20
|
|
|
|
# CHECK: mfocrf 16, 8
|
|
0x7e 0x10 0x80 0x26
|
|
|