diff options
Diffstat (limited to 'test/MC/Disassembler')
86 files changed, 10606 insertions, 105 deletions
diff --git a/test/MC/Disassembler/ARM/arm-tests.txt b/test/MC/Disassembler/ARM/arm-tests.txt index e82f75a..008bb11 100644 --- a/test/MC/Disassembler/ARM/arm-tests.txt +++ b/test/MC/Disassembler/ARM/arm-tests.txt @@ -1,6 +1,6 @@ # RUN: llvm-mc --disassemble %s -triple=armv7-apple-darwin9 -mcpu=cortex-a9 | FileCheck %s -# CHECK: addpl r4, pc, #318767104 +# CHECK: addpl r4, pc, #76, #10 0x4c 0x45 0x8f 0x52 # CHECK: b #0 diff --git a/test/MC/Disassembler/ARM/basic-arm-instructions.txt b/test/MC/Disassembler/ARM/basic-arm-instructions.txt index 8bcf4e6..335e69f 100644 --- a/test/MC/Disassembler/ARM/basic-arm-instructions.txt +++ b/test/MC/Disassembler/ARM/basic-arm-instructions.txt @@ -10,9 +10,12 @@ # 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: adc r1, r2, #-268435456 +# CHECK: adc r1, r2, #-268435441 +# CHECK: adc r7, r8, #-2147483638 +# CHECK: adc r7, r8, #40, #2 # CHECK: adcs r1, r2, #3840 +# CHECK: adcs r7, r8, #40, #2 # CHECK: adcseq r1, r2, #3840 # CHECK: adceq r1, r2, #3840 @@ -25,8 +28,11 @@ 0x0f 0x14 0xa2 0xe2 0x0f 0x12 0xa2 0xe2 0xff 0x12 0xa2 0xe2 +0x2a 0x71 0xa8 0xe2 +0x28 0x71 0xa8 0xe2 0x0f 0x1c 0xb2 0xe2 +0x28 0x71 0xb8 0xe2 0x0f 0x1c 0xb2 0x02 0x0f 0x1c 0xa2 0x02 @@ -112,6 +118,8 @@ # ADD #------------------------------------------------------------------------------ # CHECK: add r4, r5, #61440 +# CHECK: add r7, r8, #-2147483638 +# CHECK: add r7, r8, #40, #2 # CHECK: add r4, r5, r6 # CHECK: add r4, r5, r6, lsl #5 # CHECK: add r4, r5, r6, lsr #5 @@ -138,6 +146,8 @@ # CHECK: add r4, r4, r5, rrx 0x0f 0x4a 0x85 0xe2 +0x2a 0x71 0x88 0xe2 +0x28 0x71 0x88 0xe2 0x06 0x40 0x85 0xe0 0x86 0x42 0x85 0xe0 0xa6 0x42 0x85 0xe0 @@ -165,6 +175,15 @@ 0x65 0x40 0x84 0xe0 #------------------------------------------------------------------------------ +# ADDS +#------------------------------------------------------------------------------ +# CHECK: adds r7, r8, #-2147483638 +# CHECK: adds r7, r8, #40, #2 + +0x2a 0x71 0x98 0xe2 +0x28 0x71 0x98 0xe2 + +#------------------------------------------------------------------------------ # ADR #------------------------------------------------------------------------------ # CHECK: add r2, pc, #3 @@ -183,6 +202,8 @@ # AND #------------------------------------------------------------------------------ # CHECK: and r10, r1, #15 +# CHECK: and r7, r8, #-2147483638 +# CHECK: and r7, r8, #40, #2 # CHECK: and r10, r1, r6 # CHECK: and r10, r1, r6, lsl #10 # CHECK: and r10, r1, r6, lsr #10 @@ -209,6 +230,8 @@ # CHECK: and r10, r10, r1, rrx 0x0f 0xa0 0x01 0xe2 +0x2a 0x71 0x08 0xe2 +0x28 0x71 0x08 0xe2 0x06 0xa0 0x01 0xe0 0x06 0xa5 0x01 0xe0 0x26 0xa5 0x01 0xe0 @@ -262,6 +285,8 @@ # BIC #------------------------------------------------------------------------------ # CHECK: bic r10, r1, #15 +# CHECK: bic r7, r8, #-2147483638 +# CHECK: bic r7, r8, #40, #2 # CHECK: bic r10, r1, r6 # CHECK: bic r10, r1, r6, lsl #10 # CHECK: bic r10, r1, r6, lsr #10 @@ -288,6 +313,8 @@ # CHECK: bic r10, r10, r1, rrx 0x0f 0xa0 0xc1 0xe3 +0x2a 0x71 0xc8 0xe3 +0x28 0x71 0xc8 0xe3 0x06 0xa0 0xc1 0xe1 0x06 0xa5 0xc1 0xe1 0x26 0xa5 0xc1 0xe1 @@ -393,6 +420,8 @@ # CMN #------------------------------------------------------------------------------ # CHECK: cmn r1, #15 +# CHECK: cmn r7, #40, #2 +# CHECK: cmn r7, #-2147483638 # CHECK: cmn r1, r6 # CHECK: cmn r1, r6, lsl #10 # CHECK: cmn r1, r6, lsr #10 @@ -406,6 +435,8 @@ # CHECK: cmn r1, r6, rrx 0x0f 0x00 0x71 0xe3 +0x28 0x01 0x77 0xe3 +0x2a 0x01 0x77 0xe3 0x06 0x00 0x71 0xe1 0x06 0x05 0x71 0xe1 0x26 0x05 0x71 0xe1 @@ -422,6 +453,8 @@ # CMP #------------------------------------------------------------------------------ # CHECK: cmp r1, #15 +# CHECK: cmp r7, #40, #2 +# CHECK: cmp r7, #-2147483638 # CHECK: cmp r1, r6 # CHECK: cmp r1, r6, lsl #10 # CHECK: cmp r1, r6, lsr #10 @@ -435,6 +468,8 @@ # CHECK: cmp r1, r6, rrx 0x0f 0x00 0x51 0xe3 +0x28 0x01 0x57 0xe3 +0x2a 0x01 0x57 0xe3 0x06 0x00 0x51 0xe1 0x06 0x05 0x51 0xe1 0x26 0x05 0x51 0xe1 @@ -556,6 +591,8 @@ # EOR #------------------------------------------------------------------------------ # CHECK: eor r4, r5, #61440 +# CHECK: eor r7, r8, #-2147483638 +# CHECK: eor r7, r8, #40, #2 # CHECK: eor r4, r5, r6 # CHECK: eor r4, r5, r6, lsl #5 # CHECK: eor r4, r5, r6, lsr #5 @@ -582,6 +619,8 @@ # CHECK: eor r4, r4, r5, rrx 0x0f 0x4a 0x25 0xe2 +0x2a 0x71 0x28 0xe2 +0x28 0x71 0x28 0xe2 0x06 0x40 0x25 0xe0 0x86 0x42 0x25 0xe0 0xa6 0x42 0x25 0xe0 @@ -714,10 +753,15 @@ # CHECK: mov r4, #4080 # CHECK: mov r5, #16711680 # CHECK: mov sp, #35 +# CHECK: mov r9, #240, #30 +# CHECK: mov r7, #-2147483638 +# CHECK: mov pc, #2147483658 # CHECK: movw r6, #65535 # CHECK: movw r9, #65535 # CHECK: movw sp, #1193 # CHECK: movs r3, #7 +# CHECK: movs r11, #99 +# CHECK: movs r11, #240, #30 # CHECK: moveq r4, #4080 # CHECK: movseq r5, #16711680 @@ -725,10 +769,15 @@ 0xff 0x4e 0xa0 0xe3 0xff 0x58 0xa0 0xe3 0x23 0xd0 0xa0 0xe3 +0xf0 0x9f 0xa0 0xe3 +0x2a 0x71 0xa0 0xe3 +0x2a 0xf1 0xa0 0xe3 0xff 0x6f 0x0f 0xe3 0xff 0x9f 0x0f 0xe3 0xa9 0xd4 0x00 0xe3 0x07 0x30 0xb0 0xe3 +0x63 0xb0 0xb0 0xe3 +0xf0 0xbf 0xb0 0xe3 0xff 0x4e 0xa0 0x03 0xff 0x58 0xb0 0x03 @@ -810,6 +859,8 @@ # CHECK: msr SPSR_fc, #5 # CHECK: msr SPSR_fsxc, #5 # CHECK: msr CPSR_fsxc, #5 +# CHECK: msr APSR_nzcvq, #2147483658 +# CHECK: msr SPSR_fsxc, #40, #2 0x05 0xf0 0x29 0xe3 0x05 0xf0 0x24 0xe3 @@ -825,6 +876,8 @@ 0x05 0xf0 0x69 0xe3 0x05 0xf0 0x6f 0xe3 0x05 0xf0 0x2f 0xe3 +0x2a 0xf1 0x28 0xe3 +0x28 0xf1 0x6f 0xe3 # CHECK: msr CPSR_fc, r0 # CHECK: msr APSR_g, r0 @@ -877,14 +930,22 @@ # CHECK: mvn r3, #7 # CHECK: mvn r4, #4080 # CHECK: mvn r5, #16711680 +# CHECK: mvn r7, #40, #2 +# CHECK: mvn r7, #-2147483638 # CHECK: mvns r3, #7 +# CHECK: mvns r11, #240, #30 +# CHECK: mvns r11, #-2147483638 # CHECK: mvneq r4, #4080 # CHECK: mvnseq r5, #16711680 0x07 0x30 0xe0 0xe3 0xff 0x4e 0xe0 0xe3 0xff 0x58 0xe0 0xe3 +0x28 0x71 0xe0 0xe3 +0x2a 0x71 0xe0 0xe3 0x07 0x30 0xf0 0xe3 +0xf0 0xbf 0xf0 0xe3 +0x2a 0xb1 0xf0 0xe3 0xff 0x4e 0xe0 0x03 0xff 0x58 0xf0 0x03 @@ -940,6 +1001,8 @@ # ORR #------------------------------------------------------------------------------ # CHECK: orr r4, r5, #61440 +# CHECK: orr r7, r8, #-2147483638 +# CHECK: orr r7, r8, #40, #2 # CHECK: orr r4, r5, r6 # CHECK: orr r4, r5, r6, lsl #5 # CHECK: orr r4, r5, r6, lsr #5 @@ -966,6 +1029,8 @@ # CHECK: orr r4, r4, r5, rrx 0x0f 0x4a 0x85 0xe3 +0x2a 0x71 0x88 0xe3 +0x28 0x71 0x88 0xe3 0x06 0x40 0x85 0xe1 0x86 0x42 0x85 0xe1 0xa6 0x42 0x85 0xe1 @@ -1204,6 +1269,8 @@ # RSB #------------------------------------------------------------------------------ # CHECK: rsb r4, r5, #61440 +# CHECK: rsb r7, r8, #-2147483638 +# CHECK: rsb r7, r8, #40, #2 # CHECK: rsb r4, r5, r6 # CHECK: rsb r4, r5, r6, lsl #5 # CHECK: rsblo r4, r5, r6, lsr #5 @@ -1230,6 +1297,8 @@ # CHECK: rsb r4, r4, r5, rrx 0x0f 0x4a 0x65 0xe2 +0x2a 0x71 0x68 0xe2 +0x28 0x71 0x68 0xe2 0x06 0x40 0x65 0xe0 0x86 0x42 0x65 0xe0 0xa6 0x42 0x65 0x30 @@ -1256,9 +1325,20 @@ 0x65 0x40 0x64 0xe0 #------------------------------------------------------------------------------ +# RSBS +#------------------------------------------------------------------------------ +# CHECK: rsbs r7, r8, #-2147483638 +# CHECK: rsbs r7, r8, #40, #2 + +0x2a 0x71 0x78 0xe2 +0x28 0x71 0x78 0xe2 + +#------------------------------------------------------------------------------ # RSC #------------------------------------------------------------------------------ # CHECK: rsc r4, r5, #61440 +# CHECK: rsc r7, r8, #-2147483638 +# CHECK: rsc r7, r8, #40, #2 # CHECK: rsc r4, r5, r6 # CHECK: rsc r4, r5, r6, lsl #5 # CHECK: rsclo r4, r5, r6, lsr #5 @@ -1283,6 +1363,8 @@ # CHECK: rsc r6, r6, r7, ror r9 0x0f 0x4a 0xe5 0xe2 +0x2a 0x71 0xe8 0xe2 +0x28 0x71 0xe8 0xe2 0x06 0x40 0xe5 0xe0 0x86 0x42 0xe5 0xe0 0xa6 0x42 0xe5 0x30 @@ -1357,6 +1439,8 @@ # SBC #------------------------------------------------------------------------------ # CHECK: sbc r4, r5, #61440 +# CHECK: sbc r7, r8, #-2147483638 +# CHECK: sbc r7, r8, #40, #2 # CHECK: sbc r4, r5, r6 # CHECK: sbc r4, r5, r6, lsl #5 # CHECK: sbc r4, r5, r6, lsr #5 @@ -1381,6 +1465,8 @@ # CHECK: sbc r6, r6, r7, ror r9 0x0f 0x4a 0xc5 0xe2 +0x2a 0x71 0xc8 0xe2 +0x28 0x71 0xc8 0xe2 0x06 0x40 0xc5 0xe0 0x86 0x42 0xc5 0xe0 0xa6 0x42 0xc5 0xe0 @@ -1868,6 +1954,8 @@ # SUB #------------------------------------------------------------------------------ # CHECK: sub r4, r5, #61440 +# CHECK: sub r7, r8, #-2147483638 +# CHECK: sub r7, r8, #40, #2 # CHECK: sub r4, r5, r6 # CHECK: sub r4, r5, r6, lsl #5 # CHECK: sub r4, r5, r6, lsr #5 @@ -1892,6 +1980,8 @@ # CHECK: sub r6, r6, r7, ror r9 0x0f 0x4a 0x45 0xe2 +0x2a 0x71 0x48 0xe2 +0x28 0x71 0x48 0xe2 0x06 0x40 0x45 0xe0 0x86 0x42 0x45 0xe0 0xa6 0x42 0x45 0xe0 @@ -1916,6 +2006,14 @@ 0x57 0x69 0x46 0xe0 0x77 0x69 0x46 0xe0 +#------------------------------------------------------------------------------ +# SUBS +#------------------------------------------------------------------------------ +# CHECK: subs r7, r8, #-2147483638 +# CHECK: subs r7, r8, #40, #2 + +0x2a 0x71 0x58 0xe2 +0x28 0x71 0x58 0xe2 #------------------------------------------------------------------------------ # SVC @@ -2044,6 +2142,8 @@ # TEQ #------------------------------------------------------------------------------ # CHECK: teq r5, #61440 +# CHECK: teq r7, #-2147483638 +# CHECK: teq r7, #40, #2 # CHECK: teq r4, r5 # CHECK: teq r4, r5, lsl #5 # CHECK: teq r4, r5, lsr #5 @@ -2056,6 +2156,8 @@ # CHECK: teq r6, r7, ror r9 0x0f 0x0a 0x35 0xe3 +0x2a 0x01 0x37 0xe3 +0x28 0x01 0x37 0xe3 0x05 0x00 0x34 0xe1 0x85 0x02 0x34 0xe1 0xa5 0x02 0x34 0xe1 @@ -2072,6 +2174,8 @@ # TST #------------------------------------------------------------------------------ # CHECK: tst r5, #61440 +# CHECK: tst r7, #-2147483638 +# CHECK: tst r7, #40, #2 # CHECK: tst r4, r5 # CHECK: tst r4, r5, lsl #5 # CHECK: tst r4, r5, lsr #5 @@ -2084,6 +2188,8 @@ # CHECK: tst r6, r7, ror r9 0x0f 0x0a 0x15 0xe3 +0x2a 0x01 0x17 0xe3 +0x28 0x01 0x17 0xe3 0x05 0x00 0x14 0xe1 0x85 0x02 0x14 0xe1 0xa5 0x02 0x14 0xe1 diff --git a/test/MC/Disassembler/ARM/invalid-virtexts.arm.txt b/test/MC/Disassembler/ARM/invalid-virtexts.arm.txt new file mode 100644 index 0000000..1daada9 --- /dev/null +++ b/test/MC/Disassembler/ARM/invalid-virtexts.arm.txt @@ -0,0 +1,10 @@ +# RUN: not llvm-mc -disassemble -triple armv7a -mcpu=cortex-a15 %s 2>&1 | FileCheck --check-prefix=CHECK-ARM %s + +# HVC (ARM) +[0x7f,0xff,0x4f,0xf1] +# CHECK-ARM: warning: invalid instruction encoding + +[0x70,0xff,0x4f,0x01] +[0x7f,0xff,0x4f,0xd1] +# CHECK-ARM: warning: potentially undefined instruction encoding +# CHECK-ARM: warning: potentially undefined instruction encoding diff --git a/test/MC/Disassembler/ARM/move-banked-regs-arm.txt b/test/MC/Disassembler/ARM/move-banked-regs-arm.txt index dd1d463..b92c577 100644 --- a/test/MC/Disassembler/ARM/move-banked-regs-arm.txt +++ b/test/MC/Disassembler/ARM/move-banked-regs-arm.txt @@ -1,13 +1,13 @@ @ RUN: llvm-mc -disassemble -triple armv7 -mcpu=cyclone %s | FileCheck %s -[0x00,0x22,0x20,0xe1] -[0x00,0x32,0x21,0xe1] -[0x00,0x52,0x22,0xe1] -[0x00,0x72,0x23,0xe1] -[0x00,0xb2,0x24,0xe1] -[0x00,0x12,0x25,0xe1] -[0x00,0x22,0x26,0xe1] +[0x00,0x22,0x00,0xe1] +[0x00,0x32,0x01,0xe1] +[0x00,0x52,0x02,0xe1] +[0x00,0x72,0x03,0xe1] +[0x00,0xb2,0x04,0xe1] +[0x00,0x12,0x05,0xe1] +[0x00,0x22,0x06,0xe1] @ CHECK: mrs r2, r8_usr @ CHECK: mrs r3, r9_usr @ CHECK: mrs r5, r10_usr @@ -16,14 +16,14 @@ @ CHECK: mrs r1, sp_usr @ CHECK: mrs r2, lr_usr -[0x00,0x22,0x28,0xe1] -[0x00,0x32,0x29,0xe1] -[0x00,0x52,0x2a,0xe1] -[0x00,0x72,0x2b,0xe1] -[0x00,0xb2,0x2c,0xe1] -[0x00,0x12,0x2d,0xe1] -[0x00,0x22,0x2e,0xe1] -[0x00,0x32,0x6e,0xe1] +[0x00,0x22,0x08,0xe1] +[0x00,0x32,0x09,0xe1] +[0x00,0x52,0x0a,0xe1] +[0x00,0x72,0x0b,0xe1] +[0x00,0xb2,0x0c,0xe1] +[0x00,0x12,0x0d,0xe1] +[0x00,0x22,0x0e,0xe1] +[0x00,0x32,0x4e,0xe1] @ CHECK: mrs r2, r8_fiq @ CHECK: mrs r3, r9_fiq @ CHECK: mrs r5, r10_fiq @@ -33,44 +33,44 @@ @ CHECK: mrs r2, lr_fiq @ CHECK: mrs r3, SPSR_fiq -[0x00,0x43,0x20,0xe1] -[0x00,0x93,0x21,0xe1] -[0x00,0x13,0x60,0xe1] +[0x00,0x43,0x00,0xe1] +[0x00,0x93,0x01,0xe1] +[0x00,0x13,0x40,0xe1] @ CHECK: mrs r4, lr_irq @ CHECK: mrs r9, sp_irq @ CHECK: mrs r1, SPSR_irq -[0x00,0x13,0x22,0xe1] -[0x00,0x33,0x23,0xe1] -[0x00,0x53,0x62,0xe1] +[0x00,0x13,0x02,0xe1] +[0x00,0x33,0x03,0xe1] +[0x00,0x53,0x42,0xe1] @ CHECK: mrs r1, lr_svc @ CHECK: mrs r3, sp_svc @ CHECK: mrs r5, SPSR_svc -[0x00,0x53,0x24,0xe1] -[0x00,0x73,0x25,0xe1] -[0x00,0x93,0x64,0xe1] +[0x00,0x53,0x04,0xe1] +[0x00,0x73,0x05,0xe1] +[0x00,0x93,0x44,0xe1] @ CHECK: mrs r5, lr_abt @ CHECK: mrs r7, sp_abt @ CHECK: mrs r9, SPSR_abt -[0x00,0x93,0x26,0xe1] -[0x00,0xb3,0x27,0xe1] -[0x00,0xc3,0x66,0xe1] +[0x00,0x93,0x06,0xe1] +[0x00,0xb3,0x07,0xe1] +[0x00,0xc3,0x46,0xe1] @ CHECK: mrs r9, lr_und @ CHECK: mrs r11, sp_und @ CHECK: mrs r12, SPSR_und -[0x00,0x23,0x2c,0xe1] -[0x00,0x43,0x2d,0xe1] -[0x00,0x63,0x6c,0xe1] +[0x00,0x23,0x0c,0xe1] +[0x00,0x43,0x0d,0xe1] +[0x00,0x63,0x4c,0xe1] @ CHECK: mrs r2, lr_mon @ CHECK: mrs r4, sp_mon @ CHECK: mrs r6, SPSR_mon -[0x00,0x63,0x2e,0xe1] -[0x00,0x83,0x2f,0xe1] -[0x00,0xa3,0x6e,0xe1] +[0x00,0x63,0x0e,0xe1] +[0x00,0x83,0x0f,0xe1] +[0x00,0xa3,0x4e,0xe1] @ CHECK: mrs r6, elr_hyp @ CHECK: mrs r8, sp_hyp @ CHECK: mrs r10, SPSR_hyp diff --git a/test/MC/Disassembler/ARM/virtexts-arm.txt b/test/MC/Disassembler/ARM/virtexts-arm.txt new file mode 100644 index 0000000..a18466f --- /dev/null +++ b/test/MC/Disassembler/ARM/virtexts-arm.txt @@ -0,0 +1,41 @@ +# RUN: llvm-mc -disassemble -triple armv7a -mcpu=cortex-a15 %s | FileCheck %s + +[0x71,0x00,0x40,0xe1] +[0x77,0x00,0x40,0xe1] +[0x71,0x10,0x40,0xe1] +[0x7f,0xff,0x4f,0xe1] +# CHECK: hvc #1 +# CHECK: hvc #7 +# CHECK: hvc #257 +# CHECK: hvc #65535 + +[0x6e,0x00,0x60,0xe1] +[0x6e,0x00,0x60,0x01] +[0x6e,0x00,0x60,0x11] +[0x6e,0x00,0x60,0x21] +[0x6e,0x00,0x60,0x31] +[0x6e,0x00,0x60,0x41] +[0x6e,0x00,0x60,0x51] +[0x6e,0x00,0x60,0x61] +[0x6e,0x00,0x60,0x71] +[0x6e,0x00,0x60,0x81] +[0x6e,0x00,0x60,0x91] +[0x6e,0x00,0x60,0xa1] +[0x6e,0x00,0x60,0xb1] +[0x6e,0x00,0x60,0xc1] +[0x6e,0x00,0x60,0xd1] +# CHECK: eret +# CHECK: ereteq +# CHECK: eretne +# CHECK: ereths +# CHECK: eretlo +# CHECK: eretmi +# CHECK: eretpl +# CHECK: eretvs +# CHECK: eretvc +# CHECK: erethi +# CHECK: eretls +# CHECK: eretge +# CHECK: eretlt +# CHECK: eretgt +# CHECK: eretle diff --git a/test/MC/Disassembler/ARM/virtexts-thumb.txt b/test/MC/Disassembler/ARM/virtexts-thumb.txt new file mode 100644 index 0000000..da0f621 --- /dev/null +++ b/test/MC/Disassembler/ARM/virtexts-thumb.txt @@ -0,0 +1,61 @@ +# RUN: llvm-mc -disassemble -triple thumbv7 -mcpu=cortex-a15 %s | FileCheck %s --check-prefix=CHECK-THUMB +# RUN: not llvm-mc -disassemble -triple thumbv7 -mcpu=cortex-a9 %s 2>&1 | FileCheck %s --check-prefix=CHECK-NOVIRT + +[0xe0,0xf7,0x01,0x80] +[0xe0,0xf7,0x07,0x80] +[0xe0,0xf7,0x01,0x81] +[0xef,0xf7,0xff,0x8f] +# CHECK-THUMB: hvc.w #1 +# CHECK-THUMB: hvc.w #7 +# CHECK-THUMB: hvc.w #257 +# CHECK-THUMB: hvc.w #65535 +# CHECK-NOVIRT: warning: invalid instruction encoding +# CHECK-NOVIRT: warning: invalid instruction encoding +# CHECK-NOVIRT: warning: invalid instruction encoding +# CHECK-NOVIRT: warning: invalid instruction encoding + +[0xde,0xf3,0x00,0x8f] +[0x08,0xbf] [0xde,0xf3,0x00,0x8f] +[0x18,0xbf] [0xde,0xf3,0x00,0x8f] +[0x28,0xbf] [0xde,0xf3,0x00,0x8f] +[0x38,0xbf] [0xde,0xf3,0x00,0x8f] +[0x48,0xbf] [0xde,0xf3,0x00,0x8f] +[0x58,0xbf] [0xde,0xf3,0x00,0x8f] +[0x68,0xbf] [0xde,0xf3,0x00,0x8f] +[0x78,0xbf] [0xde,0xf3,0x00,0x8f] +[0x88,0xbf] [0xde,0xf3,0x00,0x8f] +[0x98,0xbf] [0xde,0xf3,0x00,0x8f] +[0xa8,0xbf] [0xde,0xf3,0x00,0x8f] +[0xb8,0xbf] [0xde,0xf3,0x00,0x8f] +[0xc8,0xbf] [0xde,0xf3,0x00,0x8f] +[0xd8,0xbf] [0xde,0xf3,0x00,0x8f] +# CHECK-THUMB: eret +# CHECK-THUMB: ereteq +# CHECK-THUMB: eretne +# CHECK-THUMB: ereths +# CHECK-THUMB: eretlo +# CHECK-THUMB: eretmi +# CHECK-THUMB: eretpl +# CHECK-THUMB: eretvs +# CHECK-THUMB: eretvc +# CHECK-THUMB: erethi +# CHECK-THUMB: eretls +# CHECK-THUMB: eretge +# CHECK-THUMB: eretlt +# CHECK-THUMB: eretgt +# CHECK-THUMB: eretle +# CHECK-NOVIRT: subs pc, lr, #0 +# CHECK-NOVIRT: subseq pc, lr, #0 +# CHECK-NOVIRT: subsne pc, lr, #0 +# CHECK-NOVIRT: subshs pc, lr, #0 +# CHECK-NOVIRT: subslo pc, lr, #0 +# CHECK-NOVIRT: subsmi pc, lr, #0 +# CHECK-NOVIRT: subspl pc, lr, #0 +# CHECK-NOVIRT: subsvs pc, lr, #0 +# CHECK-NOVIRT: subsvc pc, lr, #0 +# CHECK-NOVIRT: subshi pc, lr, #0 +# CHECK-NOVIRT: subsls pc, lr, #0 +# CHECK-NOVIRT: subsge pc, lr, #0 +# CHECK-NOVIRT: subslt pc, lr, #0 +# CHECK-NOVIRT: subsgt pc, lr, #0 +# CHECK-NOVIRT: subsle pc, lr, #0 diff --git a/test/MC/Disassembler/Hexagon/alu32_alu.txt b/test/MC/Disassembler/Hexagon/alu32_alu.txt new file mode 100644 index 0000000..4dde7df --- /dev/null +++ b/test/MC/Disassembler/Hexagon/alu32_alu.txt @@ -0,0 +1,84 @@ +# RUN: llvm-mc -triple hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.1.1 ALU32/ALU + +# Add +0xf1 0xc3 0x15 0xb0 +# CHECK: r17 = add(r21, #31) +0x11 0xdf 0x15 0xf3 +# CHECK: r17 = add(r21, r31) +0x11 0xdf 0x55 0xf6 +# CHECK: r17 = add(r21, r31):sat + +# And +0xf1 0xc3 0x15 0x76 +# CHECK: r17 = and(r21, #31) +0xf1 0xc3 0x95 0x76 +# CHECK: r17 = or(r21, #31) +0x11 0xdf 0x15 0xf1 +# CHECK: r17 = and(r21, r31) +0x11 0xdf 0x35 0xf1 +# CHECK: r17 = or(r21, r31) +0x11 0xdf 0x75 0xf1 +# CHECK: r17 = xor(r21, r31) +0x11 0xd5 0x9f 0xf1 +# CHECK: r17 = and(r21, ~r31) +0x11 0xd5 0xbf 0xf1 +# CHECK: r17 = or(r21, ~r31) + +# Nop +0x00 0xc0 0x00 0x7f +# CHECK: nop + +# Subtract +0xb1 0xc2 0x5f 0x76 +# CHECK: r17 = sub(#21, r31) +0x11 0xdf 0x35 0xf3 +# CHECK: r17 = sub(r31, r21) +0x11 0xdf 0xd5 0xf6 +# CHECK: r17 = sub(r31, r21):sat + +# Sign extend +0x11 0xc0 0xbf 0x70 +# CHECK: r17 = sxtb(r31) + +# Transfer immediate +0x15 0xc0 0x31 0x72 +# CHECK: r17.h = #21 +0x15 0xc0 0x31 0x71 +# CHECK: r17.l = #21 +0xf1 0xff 0x5f 0x78 +# CHECK: r17 = #32767 +0xf1 0xff 0xdf 0x78 +# CHECK: r17 = ##65535 + +# Transfer register +0x11 0xc0 0x75 0x70 +# CHECK: r17 = r21 + +# Vector add halfwords +0x11 0xdf 0x15 0xf6 +# CHECK: r17 = vaddh(r21, r31) +0x11 0xdf 0x35 0xf6 +# CHECK: r17 = vaddh(r21, r31):sat +0x11 0xdf 0x75 0xf6 +# CHECK: r17 = vadduh(r21, r31):sat + +# Vector average halfwords +0x11 0xdf 0x15 0xf7 +# CHECK: r17 = vavgh(r21, r31) +0x11 0xdf 0x35 0xf7 +# CHECK: r17 = vavgh(r21, r31):rnd +0x11 0xdf 0x75 0xf7 +# CHECK: r17 = vnavgh(r31, r21) + +# Vector subtract halfwords +0x11 0xdf 0x95 0xf6 +# CHECK: r17 = vsubh(r31, r21) +0x11 0xdf 0xb5 0xf6 +# CHECK: r17 = vsubh(r31, r21):sat +0x11 0xdf 0xf5 0xf6 +# CHECK: r17 = vsubuh(r31, r21):sat + +# Zero extend +0x11 0xc0 0xd5 0x70 +# CHECK: r17 = zxth(r21) diff --git a/test/MC/Disassembler/Hexagon/alu32_perm.txt b/test/MC/Disassembler/Hexagon/alu32_perm.txt new file mode 100644 index 0000000..a295350 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/alu32_perm.txt @@ -0,0 +1,40 @@ +# RUN: llvm-mc -triple hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.1.2 ALU32/PERM + +# Combine words in to doublewords +0x11 0xdf 0x95 0xf3 +# CHECK: r17 = combine(r31.h, r21.h) +0x11 0xdf 0xb5 0xf3 +# CHECK: r17 = combine(r31.h, r21.l) +0x11 0xdf 0xd5 0xf3 +# CHECK: r17 = combine(r31.l, r21.h) +0x11 0xdf 0xf5 0xf3 +# CHECK: r17 = combine(r31.l, r21.l) +0xb0 0xe2 0x0f 0x7c +# CHECK: r17:16 = combine(#21, #31) +0xb0 0xe2 0x3f 0x73 +# CHECK: r17:16 = combine(#21, r31) +0xf0 0xe3 0x15 0x73 +# CHECK: r17:16 = combine(r21, #31) +0x10 0xdf 0x15 0xf5 +# CHECK: r17:16 = combine(r21, r31) + +# Mux +0xf1 0xc3 0x75 0x73 +# CHECK: r17 = mux(p3, r21, #31) +0xb1 0xc2 0xff 0x73 +# CHECK: r17 = mux(p3, #21, r31) +0xb1 0xe2 0x8f 0x7b +# CHECK: r17 = mux(p3, #21, #31) +0x71 0xdf 0x15 0xf4 +# CHECK: r17 = mux(p3, r21, r31) + +# Shift word by 16 +0x11 0xc0 0x15 0x70 +# CHECK: r17 = aslh(r21) +0x11 0xc0 0x35 0x70 +# CHECK: r17 = asrh(r21) + +# Pack high and low halfwords +0x10 0xdf 0x95 0xf5 +# CHECK: r17:16 = packhl(r21, r31) diff --git a/test/MC/Disassembler/Hexagon/alu32_pred.txt b/test/MC/Disassembler/Hexagon/alu32_pred.txt new file mode 100644 index 0000000..084b39d --- /dev/null +++ b/test/MC/Disassembler/Hexagon/alu32_pred.txt @@ -0,0 +1,194 @@ +# RUN: llvm-mc -triple hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.1.3 ALU32/PRED + +# Conditional add +0xf1 0xc3 0x75 0x74 +# CHECK: if (p3) r17 = add(r21, #31) +0x03 0x40 0x45 0x85 0xf1 0xe3 0x75 0x74 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = add(r21, #31) +0xf1 0xc3 0xf5 0x74 +# CHECK: if (!p3) r17 = add(r21, #31) +0x03 0x40 0x45 0x85 0xf1 0xe3 0xf5 0x74 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = add(r21, #31) +0x71 0xdf 0x15 0xfb +# CHECK: if (p3) r17 = add(r21, r31) +0x03 0x40 0x45 0x85 0x71 0xff 0x15 0xfb +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = add(r21, r31) +0xf1 0xdf 0x15 0xfb +# CHECK: if (!p3) r17 = add(r21, r31) +0x03 0x40 0x45 0x85 0xf1 0xff 0x15 0xfb +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = add(r21, r31) + +# Conditional shift halfword +0x11 0xe3 0x15 0x70 +# CHECK: if (p3) r17 = aslh(r21) +0x03 0x40 0x45 0x85 0x11 0xe7 0x15 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = aslh(r21) +0x11 0xeb 0x15 0x70 +# CHECK: if (!p3) r17 = aslh(r21) +0x03 0x40 0x45 0x85 0x11 0xef 0x15 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = aslh(r21) +0x11 0xe3 0x35 0x70 +# CHECK: if (p3) r17 = asrh(r21) +0x03 0x40 0x45 0x85 0x11 0xe7 0x35 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = asrh(r21) +0x11 0xeb 0x35 0x70 +# CHECK: if (!p3) r17 = asrh(r21) +0x03 0x40 0x45 0x85 0x11 0xef 0x35 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = asrh(r21) + +# Conditional combine +0x70 0xdf 0x15 0xfd +# CHECK: if (p3) r17:16 = combine(r21, r31) +0xf0 0xdf 0x15 0xfd +# CHECK: if (!p3) r17:16 = combine(r21, r31) +0x03 0x40 0x45 0x85 0x70 0xff 0x15 0xfd +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17:16 = combine(r21, r31) +0x03 0x40 0x45 0x85 0xf0 0xff 0x15 0xfd +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17:16 = combine(r21, r31) + +# Conditional logical operations +0x71 0xdf 0x15 0xf9 +# CHECK: if (p3) r17 = and(r21, r31) +0xf1 0xdf 0x15 0xf9 +# CHECK: if (!p3) r17 = and(r21, r31) +0x03 0x40 0x45 0x85 0x71 0xff 0x15 0xf9 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = and(r21, r31) +0x03 0x40 0x45 0x85 0xf1 0xff 0x15 0xf9 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = and(r21, r31) +0x71 0xdf 0x35 0xf9 +# CHECK: if (p3) r17 = or(r21, r31) +0xf1 0xdf 0x35 0xf9 +# CHECK: if (!p3) r17 = or(r21, r31) +0x03 0x40 0x45 0x85 0x71 0xff 0x35 0xf9 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = or(r21, r31) +0x03 0x40 0x45 0x85 0xf1 0xff 0x35 0xf9 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = or(r21, r31) +0x71 0xdf 0x75 0xf9 +# CHECK: if (p3) r17 = xor(r21, r31) +0xf1 0xdf 0x75 0xf9 +# CHECK: if (!p3) r17 = xor(r21, r31) +0x03 0x40 0x45 0x85 0x71 0xff 0x75 0xf9 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = xor(r21, r31) +0x03 0x40 0x45 0x85 0xf1 0xff 0x75 0xf9 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = xor(r21, r31) + +# Conditional subtract +0x71 0xdf 0x35 0xfb +# CHECK: if (p3) r17 = sub(r31, r21) +0xf1 0xdf 0x35 0xfb +# CHECK: if (!p3) r17 = sub(r31, r21) +0x03 0x40 0x45 0x85 0x71 0xff 0x35 0xfb +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = sub(r31, r21) +0x03 0x40 0x45 0x85 0xf1 0xff 0x35 0xfb +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = sub(r31, r21) + +# Conditional sign extend +0x11 0xe3 0xb5 0x70 +# CHECK: if (p3) r17 = sxtb(r21) +0x11 0xeb 0xb5 0x70 +# CHECK: if (!p3) r17 = sxtb(r21) +0x03 0x40 0x45 0x85 0x11 0xe7 0xb5 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = sxtb(r21) +0x03 0x40 0x45 0x85 0x11 0xef 0xb5 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = sxtb(r21) +0x11 0xe3 0xf5 0x70 +# CHECK: if (p3) r17 = sxth(r21) +0x11 0xeb 0xf5 0x70 +# CHECK: if (!p3) r17 = sxth(r21) +0x03 0x40 0x45 0x85 0x11 0xe7 0xf5 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = sxth(r21) +0x03 0x40 0x45 0x85 0x11 0xef 0xf5 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = sxth(r21) + +# Conditional transfer +0xb1 0xc2 0x60 0x7e +# CHECK: if (p3) r17 = #21 +0xb1 0xc2 0xe0 0x7e +# CHECK: if (!p3) r17 = #21 +0x03 0x40 0x45 0x85 0xb1 0xe2 0x60 0x7e +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = #21 +0x03 0x40 0x45 0x85 0xb1 0xe2 0xe0 0x7e +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = #21 + +# Conditional zero extend +0x11 0xe3 0x95 0x70 +# CHECK: if (p3) r17 = zxtb(r21) +0x11 0xeb 0x95 0x70 +# CHECK: if (!p3) r17 = zxtb(r21) +0x03 0x40 0x45 0x85 0x11 0xe7 0x95 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = zxtb(r21) +0x03 0x40 0x45 0x85 0x11 0xef 0x95 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = zxtb(r21) +0x11 0xe3 0xd5 0x70 +# CHECK: if (p3) r17 = zxth(r21) +0x11 0xeb 0xd5 0x70 +# CHECK: if (!p3) r17 = zxth(r21) +0x03 0x40 0x45 0x85 0x11 0xe7 0xd5 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = zxth(r21) +0x03 0x40 0x45 0x85 0x11 0xef 0xd5 0x70 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = zxth(r21) + +# Compare +0xe3 0xc3 0x15 0x75 +# CHECK: p3 = cmp.eq(r21, #31) +0xf3 0xc3 0x15 0x75 +# CHECK: p3 = !cmp.eq(r21, #31) +0xe3 0xc3 0x55 0x75 +# CHECK: p3 = cmp.gt(r21, #31) +0xf3 0xc3 0x55 0x75 +# CHECK: p3 = !cmp.gt(r21, #31) +0xe3 0xc3 0x95 0x75 +# CHECK: p3 = cmp.gtu(r21, #31) +0xf3 0xc3 0x95 0x75 +# CHECK: p3 = !cmp.gtu(r21, #31) +0x03 0xdf 0x15 0xf2 +# CHECK: p3 = cmp.eq(r21, r31) +0x13 0xdf 0x15 0xf2 +# CHECK: p3 = !cmp.eq(r21, r31) +0x03 0xdf 0x55 0xf2 +# CHECK: p3 = cmp.gt(r21, r31) +0x13 0xdf 0x55 0xf2 +# CHECK: p3 = !cmp.gt(r21, r31) +0x03 0xdf 0x75 0xf2 +# CHECK: p3 = cmp.gtu(r21, r31) +0x13 0xdf 0x75 0xf2 +# CHECK: p3 = !cmp.gtu(r21, r31) + +# Compare to general register +0xf1 0xe3 0x55 0x73 +# CHECK: r17 = cmp.eq(r21, #31) +0xf1 0xe3 0x75 0x73 +# CHECK: r17 = !cmp.eq(r21, #31) +0x11 0xdf 0x55 0xf3 +# CHECK: r17 = cmp.eq(r21, r31) +0x11 0xdf 0x75 0xf3 +# CHECK: r17 = !cmp.eq(r21, r31) diff --git a/test/MC/Disassembler/Hexagon/cr.txt b/test/MC/Disassembler/Hexagon/cr.txt new file mode 100644 index 0000000..6cf2b5f --- /dev/null +++ b/test/MC/Disassembler/Hexagon/cr.txt @@ -0,0 +1,78 @@ +# RUN: llvm-mc --triple hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.2 CR + +# Corner detection acceleration +0x93 0xe1 0x12 0x6b +# CHECK: p3 = !fastcorner9(p2, p1) +0x91 0xe3 0x02 0x6b +# CHECK: p1 = fastcorner9(p2, p3) + +# Logical reductions on predicates +0x01 0xc0 0x82 0x6b +# CHECK: p1 = any8(p2) +0x01 0xc0 0xa2 0x6b +# CHECK: p1 = all8(p2) + +# Looping instructions +0x08 0xc4 0x15 0x60 +# CHECK: loop0 +0x08 0xc4 0x35 0x60 +# CHECK: loop1 +0x68 0xc4 0x00 0x69 +# CHECK: loop0 +0x68 0xc4 0x20 0x69 +# CHECK: loop1 + +# Add to PC +0x91 0xca 0x49 0x6a +# CHECK: r17 = add(pc, #21) + +# Pipelined loop instructions +0x08 0xc4 0xb5 0x60 +# CHECK: p3 = sp1loop0 +0x08 0xc4 0xd5 0x60 +# CHECK: p3 = sp2loop0 +0x08 0xc4 0xf5 0x60 +# CHECK: p3 = sp3loop0 +0xa9 0xc4 0xa0 0x69 +# CHECK: p3 = sp1loop0 +0xa9 0xc4 0xc0 0x69 +# CHECK: p3 = sp2loop0 +0xa9 0xc4 0xe0 0x69 +# CHECK: p3 = sp3loop0 + +# Logical operations on predicates +0x01 0xc3 0x02 0x6b +# CHECK: p1 = and(p3, p2) +0xc1 0xc3 0x12 0x6b +# CHECK: p1 = and(p2, and(p3, p3)) +0x01 0xc3 0x22 0x6b +# CHECK: p1 = or(p3, p2) +0xc1 0xc3 0x32 0x6b +# CHECK: p1 = and(p2, or(p3, p3)) +0x01 0xc3 0x42 0x6b +# CHECK: p1 = xor(p2, p3) +0xc1 0xc3 0x52 0x6b +# CHECK: p1 = or(p2, and(p3, p3)) +0x01 0xc2 0x63 0x6b +# CHECK: p1 = and(p2, !p3) +0xc1 0xc3 0x72 0x6b +# CHECK: p1 = or(p2, or(p3, p3)) +0xc1 0xc3 0x92 0x6b +# CHECK: p1 = and(p2, and(p3, !p3)) +0xc1 0xc3 0xb2 0x6b +# CHECK: p1 = and(p2, or(p3, !p3)) +0x01 0xc0 0xc2 0x6b +# CHECK: p1 = not(p2) +0xc1 0xc3 0xd2 0x6b +# CHECK: p1 = or(p2, and(p3, !p3)) +0x01 0xc2 0xe3 0x6b +# CHECK: p1 = or(p2, !p3) +0xc1 0xc3 0xf2 0x6b +# CHECK: p1 = or(p2, or(p3, !p3)) + +# User control register transfer +0x0d 0xc0 0x35 0x62 +# CHECK: cs1 = r21 +0x11 0xc0 0x0d 0x6a +# CHECK: r17 = cs1 diff --git a/test/MC/Disassembler/Hexagon/j.txt b/test/MC/Disassembler/Hexagon/j.txt new file mode 100644 index 0000000..0c2cc7a --- /dev/null +++ b/test/MC/Disassembler/Hexagon/j.txt @@ -0,0 +1,202 @@ +# RUN: llvm-mc -triple hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.4 J + +# Call subroutine +0x22 0xc0 0x00 0x5a +# CHECK: call +0x22 0xc3 0x00 0x5d +# CHECK: if (p3) call +0x22 0xc3 0x20 0x5d +# CHECK: if (!p3) call + +# Compare and jump +0x00 0xc0 0x89 0x11 +# CHECK: p0 = cmp.eq(r9,#-1); if (p0.new) jump:nt +0x00 0xc1 0x89 0x11 +# CHECK: p0 = cmp.gt(r9,#-1); if (p0.new) jump:nt +0x00 0xc3 0x89 0x11 +# CHECK: p0 = tstbit(r9, #0); if (p0.new) jump:nt +0x00 0xe0 0x89 0x11 +# CHECK: p0 = cmp.eq(r9,#-1); if (p0.new) jump:t +0x00 0xe1 0x89 0x11 +# CHECK: p0 = cmp.gt(r9,#-1); if (p0.new) jump:t +0x00 0xe3 0x89 0x11 +# CHECK: p0 = tstbit(r9, #0); if (p0.new) jump:t +0x00 0xc0 0xc9 0x11 +# CHECK: p0 = cmp.eq(r9,#-1); if (!p0.new) jump:nt +0x00 0xc1 0xc9 0x11 +# CHECK: p0 = cmp.gt(r9,#-1); if (!p0.new) jump:nt +0x00 0xc3 0xc9 0x11 +# CHECK: p0 = tstbit(r9, #0); if (!p0.new) jump:nt +0x00 0xe0 0xc9 0x11 +# CHECK: p0 = cmp.eq(r9,#-1); if (!p0.new) jump:t +0x00 0xe1 0xc9 0x11 +# CHECK: p0 = cmp.gt(r9,#-1); if (!p0.new) jump:t +0x00 0xe3 0xc9 0x11 +# CHECK: p0 = tstbit(r9, #0); if (!p0.new) jump:t +0x00 0xd5 0x09 0x10 +# CHECK: p0 = cmp.eq(r9, #21); if (p0.new) jump:nt +0x00 0xf5 0x09 0x10 +# CHECK: p0 = cmp.eq(r9, #21); if (p0.new) jump:t +0x00 0xd5 0x49 0x10 +# CHECK: p0 = cmp.eq(r9, #21); if (!p0.new) jump:nt +0x00 0xf5 0x49 0x10 +# CHECK: p0 = cmp.eq(r9, #21); if (!p0.new) jump:t +0x00 0xd5 0x89 0x10 +# CHECK: p0 = cmp.gt(r9, #21); if (p0.new) jump:nt +0x00 0xf5 0x89 0x10 +# CHECK: p0 = cmp.gt(r9, #21); if (p0.new) jump:t +0x00 0xd5 0xc9 0x10 +# CHECK: p0 = cmp.gt(r9, #21); if (!p0.new) jump:nt +0x00 0xf5 0xc9 0x10 +# CHECK: p0 = cmp.gt(r9, #21); if (!p0.new) jump:t +0x00 0xd5 0x09 0x11 +# CHECK: p0 = cmp.gtu(r9, #21); if (p0.new) jump:nt +0x00 0xf5 0x09 0x11 +# CHECK: p0 = cmp.gtu(r9, #21); if (p0.new) jump:t +0x00 0xd5 0x49 0x11 +# CHECK: p0 = cmp.gtu(r9, #21); if (!p0.new) jump:nt +0x00 0xf5 0x49 0x11 +# CHECK: p0 = cmp.gtu(r9, #21); if (!p0.new) jump:t +0x00 0xc0 0x89 0x13 +# CHECK: p1 = cmp.eq(r9,#-1); if (p1.new) jump:nt +0x00 0xc1 0x89 0x13 +# CHECK: p1 = cmp.gt(r9,#-1); if (p1.new) jump:nt +0x00 0xc3 0x89 0x13 +# CHECK: p1 = tstbit(r9, #0); if (p1.new) jump:nt +0x00 0xe0 0x89 0x13 +# CHECK: p1 = cmp.eq(r9,#-1); if (p1.new) jump:t +0x00 0xe1 0x89 0x13 +# CHECK: p1 = cmp.gt(r9,#-1); if (p1.new) jump:t +0x00 0xe3 0x89 0x13 +# CHECK: p1 = tstbit(r9, #0); if (p1.new) jump:t +0x00 0xc0 0xc9 0x13 +# CHECK: p1 = cmp.eq(r9,#-1); if (!p1.new) jump:nt +0x00 0xc1 0xc9 0x13 +# CHECK: p1 = cmp.gt(r9,#-1); if (!p1.new) jump:nt +0x00 0xc3 0xc9 0x13 +# CHECK: p1 = tstbit(r9, #0); if (!p1.new) jump:nt +0x00 0xe0 0xc9 0x13 +# CHECK: p1 = cmp.eq(r9,#-1); if (!p1.new) jump:t +0x00 0xe1 0xc9 0x13 +# CHECK: p1 = cmp.gt(r9,#-1); if (!p1.new) jump:t +0x00 0xe3 0xc9 0x13 +# CHECK: p1 = tstbit(r9, #0); if (!p1.new) jump:t +0x00 0xd5 0x09 0x12 +# CHECK: p1 = cmp.eq(r9, #21); if (p1.new) jump:nt +0x00 0xf5 0x09 0x12 +# CHECK: p1 = cmp.eq(r9, #21); if (p1.new) jump:t +0x00 0xd5 0x49 0x12 +# CHECK: p1 = cmp.eq(r9, #21); if (!p1.new) jump:nt +0x00 0xf5 0x49 0x12 +# CHECK: p1 = cmp.eq(r9, #21); if (!p1.new) jump:t +0x00 0xd5 0x89 0x12 +# CHECK: p1 = cmp.gt(r9, #21); if (p1.new) jump:nt +0x00 0xf5 0x89 0x12 +# CHECK: p1 = cmp.gt(r9, #21); if (p1.new) jump:t +0x00 0xd5 0xc9 0x12 +# CHECK: p1 = cmp.gt(r9, #21); if (!p1.new) jump:nt +0x00 0xf5 0xc9 0x12 +# CHECK: p1 = cmp.gt(r9, #21); if (!p1.new) jump:t +0x00 0xd5 0x09 0x13 +# CHECK: p1 = cmp.gtu(r9, #21); if (p1.new) jump:nt +0x00 0xf5 0x09 0x13 +# CHECK: p1 = cmp.gtu(r9, #21); if (p1.new) jump:t +0x00 0xd5 0x49 0x13 +# CHECK: p1 = cmp.gtu(r9, #21); if (!p1.new) jump:nt +0x00 0xf5 0x49 0x13 +# CHECK: p1 = cmp.gtu(r9, #21); if (!p1.new) jump:t +0x00 0xcd 0x09 0x14 +# CHECK: p0 = cmp.eq(r9, r13); if (p0.new) jump:nt +0x00 0xdd 0x09 0x14 +# CHECK: p1 = cmp.eq(r9, r13); if (p1.new) jump:nt +0x00 0xed 0x09 0x14 +# CHECK: p0 = cmp.eq(r9, r13); if (p0.new) jump:t +0x00 0xfd 0x09 0x14 +# CHECK: p1 = cmp.eq(r9, r13); if (p1.new) jump:t +0x00 0xcd 0x49 0x14 +# CHECK: p0 = cmp.eq(r9, r13); if (!p0.new) jump:nt +0x00 0xdd 0x49 0x14 +# CHECK: p1 = cmp.eq(r9, r13); if (!p1.new) jump:nt +0x00 0xed 0x49 0x14 +# CHECK: p0 = cmp.eq(r9, r13); if (!p0.new) jump:t +0x00 0xfd 0x49 0x14 +# CHECK: p1 = cmp.eq(r9, r13); if (!p1.new) jump:t +0x00 0xcd 0x89 0x14 +# CHECK: p0 = cmp.gt(r9, r13); if (p0.new) jump:nt +0x00 0xdd 0x89 0x14 +# CHECK: p1 = cmp.gt(r9, r13); if (p1.new) jump:nt +0x00 0xed 0x89 0x14 +# CHECK: p0 = cmp.gt(r9, r13); if (p0.new) jump:t +0x00 0xfd 0x89 0x14 +# CHECK: p1 = cmp.gt(r9, r13); if (p1.new) jump:t +0x00 0xcd 0xc9 0x14 +# CHECK: p0 = cmp.gt(r9, r13); if (!p0.new) jump:nt +0x00 0xdd 0xc9 0x14 +# CHECK: p1 = cmp.gt(r9, r13); if (!p1.new) jump:nt +0x00 0xed 0xc9 0x14 +# CHECK: p0 = cmp.gt(r9, r13); if (!p0.new) jump:t +0x00 0xfd 0xc9 0x14 +# CHECK: p1 = cmp.gt(r9, r13); if (!p1.new) jump:t +0x00 0xcd 0x09 0x15 +# CHECK: p0 = cmp.gtu(r9, r13); if (p0.new) jump:nt +0x00 0xdd 0x09 0x15 +# CHECK: p1 = cmp.gtu(r9, r13); if (p1.new) jump:nt +0x00 0xed 0x09 0x15 +# CHECK: p0 = cmp.gtu(r9, r13); if (p0.new) jump:t +0x00 0xfd 0x09 0x15 +# CHECK: p1 = cmp.gtu(r9, r13); if (p1.new) jump:t +0x00 0xcd 0x49 0x15 +# CHECK: p0 = cmp.gtu(r9, r13); if (!p0.new) jump:nt +0x00 0xdd 0x49 0x15 +# CHECK: p1 = cmp.gtu(r9, r13); if (!p1.new) jump:nt +0x00 0xed 0x49 0x15 +# CHECK: p0 = cmp.gtu(r9, r13); if (!p0.new) jump:t +0x00 0xfd 0x49 0x15 +# CHECK: p1 = cmp.gtu(r9, r13); if (!p1.new) jump:t + +# Jump to address +0x22 0xc0 0x00 0x58 +# CHECK: jump +0x22 0xc3 0x00 0x5c +# CHECK: if (p3) jump +0x22 0xc3 0x20 0x5c +# CHECK: if (!p3) jump + +# Jump to address conditioned on new predicate +0x03 0x40 0x45 0x85 0x00 0xcb 0x00 0x5c +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) jump:nt +0x03 0x40 0x45 0x85 0x00 0xdb 0x00 0x5c +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) jump:t +0x03 0x40 0x45 0x85 0x00 0xcb 0x20 0x5c +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) jump:nt +0x03 0x40 0x45 0x85 0x00 0xdb 0x20 0x5c +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) jump:t + +# Jump to address conditioned on register value +0x00 0xc0 0x11 0x61 +# CHECK: if (r17!=#0) jump:nt +0x00 0xd0 0x11 0x61 +# CHECK: if (r17!=#0) jump:t +0x00 0xc0 0x51 0x61 +# CHECK: if (r17>=#0) jump:nt +0x00 0xd0 0x51 0x61 +# CHECK: if (r17>=#0) jump:t +0x00 0xc0 0x91 0x61 +# CHECK: if (r17==#0) jump:nt +0x00 0xd0 0x91 0x61 +# CHECK: if (r17==#0) jump:t +0x00 0xc0 0xd1 0x61 +# CHECK: if (r17<=#0) jump:nt +0x00 0xd0 0xd1 0x61 +# CHECK: if (r17<=#0) jump:t + +# Transfer and jump +0x00 0xd5 0x09 0x16 +# CHECK: r9 = #21 ; jump +0x00 0xc9 0x0d 0x17 +# CHECK: r9 = r13 ; jump diff --git a/test/MC/Disassembler/Hexagon/jr.txt b/test/MC/Disassembler/Hexagon/jr.txt new file mode 100644 index 0000000..c9deb5f --- /dev/null +++ b/test/MC/Disassembler/Hexagon/jr.txt @@ -0,0 +1,34 @@ +# RUN: llvm-mc -triple hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.3 JR + +# Call subroutine from register +0x00 0xc0 0xb5 0x50 +# CHECK: callr r21 +0x00 0xc1 0x15 0x51 +# CHECK: if (p1) callr r21 +0x00 0xc3 0x35 0x51 +# CHECK: if (!p3) callr r21 + +# Hint an indirect jump address +0x00 0xc0 0xb5 0x52 +# CHECK: hintjr(r21) + +# Jump to address from register +0x00 0xc0 0x95 0x52 +# CHECK: jumpr r21 +0x00 0xc1 0x55 0x53 +# CHECK: if (p1) jumpr r21 +0x03 0x40 0x45 0x85 0x00 0xcb 0x55 0x53 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) jumpr:nt r21 +0x03 0x40 0x45 0x85 0x00 0xdb 0x55 0x53 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) jumpr:t r21 +0x00 0xc3 0x75 0x53 +# CHECK: if (!p3) jumpr r21 +0x03 0x40 0x45 0x85 0x00 0xcb 0x75 0x53 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) jumpr:nt r21 +0x03 0x40 0x45 0x85 0x00 0xdb 0x75 0x53 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) jumpr:t r21 diff --git a/test/MC/Disassembler/Hexagon/ld.txt b/test/MC/Disassembler/Hexagon/ld.txt new file mode 100644 index 0000000..15c23b6 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/ld.txt @@ -0,0 +1,364 @@ +# RUN: llvm-mc -triple hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.5 LD + +# Load doubleword +0x90 0xff 0xd5 0x3a +# CHECK: r17:16 = memd(r21 + r31<<#3) +0x10 0xc5 0xc0 0x49 +# CHECK: r17:16 = memd(##320) +0xb0 0xe0 0xd5 0x99 +# CHECK: r17:16 = memd(r21 ++ #40:circ(m1)) +0x10 0xe2 0xd5 0x99 +# CHECK: r17:16 = memd(r21 ++ I:circ(m1)) +0xb0 0xc0 0xd5 0x9b +# CHECK: r17:16 = memd(r21++#40) +0x10 0xe0 0xd5 0x9d +# CHECK: r17:16 = memd(r21++m1) +0x10 0xe0 0xd5 0x9f +# CHECK: r17:16 = memd(r21 ++ m1:brev) + +# Load doubleword conditionally +0xf0 0xff 0xd5 0x30 +# CHECK: if (p3) r17:16 = memd(r21+r31<<#3) +0xf0 0xff 0xd5 0x31 +# CHECK: if (!p3) r17:16 = memd(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf0 0xff 0xd5 0x32 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17:16 = memd(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf0 0xff 0xd5 0x33 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17:16 = memd(r21+r31<<#3) +0x70 0xd8 0xd5 0x41 +# CHECK: if (p3) r17:16 = memd(r21 + #24) +0x03 0x40 0x45 0x85 0x70 0xd8 0xd5 0x43 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17:16 = memd(r21 + #24) +0x70 0xd8 0xd5 0x45 +# CHECK: if (!p3) r17:16 = memd(r21 + #24) +0x03 0x40 0x45 0x85 0x70 0xd8 0xd5 0x47 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17:16 = memd(r21 + #24) +0xb0 0xe6 0xd5 0x9b +# CHECK: if (p3) r17:16 = memd(r21++#40) +0xb0 0xee 0xd5 0x9b +# CHECK: if (!p3) r17:16 = memd(r21++#40) +0x03 0x40 0x45 0x85 0xb0 0xf6 0xd5 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17:16 = memd(r21++#40) +0x03 0x40 0x45 0x85 0xb0 0xfe 0xd5 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17:16 = memd(r21++#40) + +# Load byte +0x91 0xff 0x15 0x3a +# CHECK: r17 = memb(r21 + r31<<#3) +0xb1 0xc2 0x00 0x49 +# CHECK: r17 = memb(##21) +0xf1 0xc3 0x15 0x91 +# CHECK: r17 = memb(r21 + #31) +0xb1 0xe0 0x15 0x99 +# CHECK: r17 = memb(r21 ++ #5:circ(m1)) +0x11 0xe2 0x15 0x99 +# CHECK: r17 = memb(r21 ++ I:circ(m1)) +0xb1 0xc0 0x15 0x9b +# CHECK: r17 = memb(r21++#5) +0x11 0xe0 0x15 0x9d +# CHECK: r17 = memb(r21++m1) +0x11 0xe0 0x15 0x9f +# CHECK: r17 = memb(r21 ++ m1:brev) + +# Load byte conditionally +0xf1 0xff 0x15 0x30 +# CHECK: if (p3) r17 = memb(r21+r31<<#3) +0xf1 0xff 0x15 0x31 +# CHECK: if (!p3) r17 = memb(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf1 0xff 0x15 0x32 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memb(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf1 0xff 0x15 0x33 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memb(r21+r31<<#3) +0x91 0xdd 0x15 0x41 +# CHECK: if (p3) r17 = memb(r21 + #44) +0x03 0x40 0x45 0x85 0x91 0xdd 0x15 0x43 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memb(r21 + #44) +0x91 0xdd 0x15 0x45 +# CHECK: if (!p3) r17 = memb(r21 + #44) +0x03 0x40 0x45 0x85 0x91 0xdd 0x15 0x47 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memb(r21 + #44) +0xb1 0xe6 0x15 0x9b +# CHECK: if (p3) r17 = memb(r21++#5) +0xb1 0xee 0x15 0x9b +# CHECK: if (!p3) r17 = memb(r21++#5) +0x03 0x40 0x45 0x85 0xb1 0xf6 0x15 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memb(r21++#5) +0x03 0x40 0x45 0x85 0xb1 0xfe 0x15 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memb(r21++#5) + +# Load halfword +0x91 0xff 0x55 0x3a +# CHECK: r17 = memh(r21 + r31<<#3) +0x51 0xc5 0x40 0x49 +# CHECK: r17 = memh(##84) +0xf1 0xc3 0x55 0x91 +# CHECK: r17 = memh(r21 + #62) +0xb1 0xe0 0x55 0x99 +# CHECK: r17 = memh(r21 ++ #10:circ(m1)) +0x11 0xe2 0x55 0x99 +# CHECK: r17 = memh(r21 ++ I:circ(m1)) +0xb1 0xc0 0x55 0x9b +# CHECK: r17 = memh(r21++#10) +0x11 0xe0 0x55 0x9d +# CHECK: r17 = memh(r21++m1) +0x11 0xe0 0x55 0x9f +# CHECK: r17 = memh(r21 ++ m1:brev) + +# Load halfword conditionally +0xf1 0xff 0x55 0x30 +# CHECK: if (p3) r17 = memh(r21+r31<<#3) +0xf1 0xff 0x55 0x31 +# CHECK: if (!p3) r17 = memh(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf1 0xff 0x55 0x32 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memh(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf1 0xff 0x55 0x33 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memh(r21+r31<<#3) +0xb1 0xe6 0x55 0x9b +# CHECK: if (p3) r17 = memh(r21++#10) +0xb1 0xee 0x55 0x9b +# CHECK: if (!p3) r17 = memh(r21++#10) +0x03 0x40 0x45 0x85 0xb1 0xf6 0x55 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memh(r21++#10) +0x03 0x40 0x45 0x85 0xb1 0xfe 0x55 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memh(r21++#10) + +# Load unsigned byte +0x91 0xff 0x35 0x3a +# CHECK: r17 = memub(r21 + r31<<#3) +0xb1 0xc2 0x20 0x49 +# CHECK: r17 = memub(##21) +0xf1 0xc3 0x35 0x91 +# CHECK: r17 = memub(r21 + #31) +0xb1 0xe0 0x35 0x99 +# CHECK: r17 = memub(r21 ++ #5:circ(m1)) +0x11 0xe2 0x35 0x99 +# CHECK: r17 = memub(r21 ++ I:circ(m1)) +0xb1 0xc0 0x35 0x9b +# CHECK: r17 = memub(r21++#5) +0x11 0xe0 0x35 0x9d +# CHECK: r17 = memub(r21++m1) +0x11 0xe0 0x35 0x9f +# CHECK: r17 = memub(r21 ++ m1:brev) + +# Load unsigned byte conditionally +0xf1 0xff 0x35 0x30 +# CHECK: if (p3) r17 = memub(r21+r31<<#3) +0xf1 0xff 0x35 0x31 +# CHECK: if (!p3) r17 = memub(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf1 0xff 0x35 0x32 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memub(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf1 0xff 0x35 0x33 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memub(r21+r31<<#3) +0xf1 0xdb 0x35 0x41 +# CHECK: if (p3) r17 = memub(r21 + #31) +0x03 0x40 0x45 0x85 0xf1 0xdb 0x35 0x43 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memub(r21 + #31) +0xf1 0xdb 0x35 0x45 +# CHECK: if (!p3) r17 = memub(r21 + #31) +0x03 0x40 0x45 0x85 0xf1 0xdb 0x35 0x47 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memub(r21 + #31) +0xb1 0xe6 0x35 0x9b +# CHECK: if (p3) r17 = memub(r21++#5) +0xb1 0xee 0x35 0x9b +# CHECK: if (!p3) r17 = memub(r21++#5) +0x03 0x40 0x45 0x85 0xb1 0xf6 0x35 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memub(r21++#5) +0x03 0x40 0x45 0x85 0xb1 0xfe 0x35 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memub(r21++#5) + +# Load unsigned halfword +0x91 0xff 0x75 0x3a +# CHECK: r17 = memuh(r21 + r31<<#3) +0x51 0xc5 0x60 0x49 +# CHECK: r17 = memuh(##84) +0xb1 0xc2 0x75 0x91 +# CHECK: r17 = memuh(r21 + #42) +0xb1 0xe0 0x75 0x99 +# CHECK: r17 = memuh(r21 ++ #10:circ(m1)) +0x11 0xe2 0x75 0x99 +# CHECK: r17 = memuh(r21 ++ I:circ(m1)) +0xb1 0xc0 0x75 0x9b +# CHECK: r17 = memuh(r21++#10) +0x11 0xe0 0x75 0x9d +# CHECK: r17 = memuh(r21++m1) +0x11 0xe0 0x75 0x9f +# CHECK: r17 = memuh(r21 ++ m1:brev) + +# Load unsigned halfword conditionally +0xf1 0xff 0x75 0x30 +# CHECK: if (p3) r17 = memuh(r21+r31<<#3) +0xf1 0xff 0x75 0x31 +# CHECK: if (!p3) r17 = memuh(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf1 0xff 0x75 0x32 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memuh(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf1 0xff 0x75 0x33 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memuh(r21+r31<<#3) +0xb1 0xda 0x75 0x41 +# CHECK: if (p3) r17 = memuh(r21 + #42) +0xb1 0xda 0x75 0x45 +# CHECK: if (!p3) r17 = memuh(r21 + #42) +0x03 0x40 0x45 0x85 0xb1 0xda 0x75 0x43 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memuh(r21 + #42) +0x03 0x40 0x45 0x85 0xb1 0xda 0x75 0x47 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memuh(r21 + #42) +0xb1 0xe6 0x75 0x9b +# CHECK: if (p3) r17 = memuh(r21++#10) +0xb1 0xee 0x75 0x9b +# CHECK: if (!p3) r17 = memuh(r21++#10) +0x03 0x40 0x45 0x85 0xb1 0xf6 0x75 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memuh(r21++#10) +0x03 0x40 0x45 0x85 0xb1 0xfe 0x75 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memuh(r21++#10) + +# Load word +0x91 0xff 0x95 0x3a +# CHECK: r17 = memw(r21 + r31<<#3) +0x91 0xc2 0x80 0x49 +# CHECK: r17 = memw(##80) +0xb1 0xc2 0x95 0x91 +# CHECK: r17 = memw(r21 + #84) +0xb1 0xe0 0x95 0x99 +# CHECK: r17 = memw(r21 ++ #20:circ(m1)) +0x11 0xe2 0x95 0x99 +# CHECK: r17 = memw(r21 ++ I:circ(m1)) +0xb1 0xc0 0x95 0x9b +# CHECK: r17 = memw(r21++#20) +0x11 0xe0 0x95 0x9d +# CHECK: r17 = memw(r21++m1) +0x11 0xe0 0x95 0x9f +# CHECK: r17 = memw(r21 ++ m1:brev) + +# Load word conditionally +0xf1 0xff 0x95 0x30 +# CHECK: if (p3) r17 = memw(r21+r31<<#3) +0xf1 0xff 0x95 0x31 +# CHECK: if (!p3) r17 = memw(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf1 0xff 0x95 0x32 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memw(r21+r31<<#3) +0x03 0x40 0x45 0x85 0xf1 0xff 0x95 0x33 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memw(r21+r31<<#3) +0xb1 0xda 0x95 0x41 +# CHECK: if (p3) r17 = memw(r21 + #84) +0xb1 0xda 0x95 0x45 +# CHECK: if (!p3) r17 = memw(r21 + #84) +0x03 0x40 0x45 0x85 0xb1 0xda 0x95 0x43 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memw(r21 + #84) +0x03 0x40 0x45 0x85 0xb1 0xda 0x95 0x47 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memw(r21 + #84) +0xb1 0xe6 0x95 0x9b +# CHECK: if (p3) r17 = memw(r21++#20) +0xb1 0xee 0x95 0x9b +# CHECK: if (!p3) r17 = memw(r21++#20) +0x03 0x40 0x45 0x85 0xb1 0xf6 0x95 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) r17 = memw(r21++#20) +0x03 0x40 0x45 0x85 0xb1 0xfe 0x95 0x9b +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) r17 = memw(r21++#20) + +# Deallocate stack frame +0x1e 0xc0 0x1e 0x90 +# CHECK: deallocframe + +# Deallocate stack frame and return +0x1e 0xc0 0x1e 0x96 +# CHECK: dealloc_return +0x03 0x40 0x45 0x85 0x1e 0xcb 0x1e 0x96 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) dealloc_return:nt +0x1e 0xd3 0x1e 0x96 +# CHECK: if (p3) dealloc_return +0x03 0x40 0x45 0x85 0x1e 0xdb 0x1e 0x96 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) dealloc_return:t +0x03 0x40 0x45 0x85 0x1e 0xeb 0x1e 0x96 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) dealloc_return:nt +0x1e 0xf3 0x1e 0x96 +# CHECK: if (!p3) dealloc_return +0x03 0x40 0x45 0x85 0x1e 0xfb 0x1e 0x96 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) dealloc_return:t + +# Load and unpack bytes to halfwords +0xf1 0xc3 0x35 0x90 +# CHECK: r17 = membh(r21 + #62) +0xf1 0xc3 0x75 0x90 +# CHECK: r17 = memubh(r21 + #62) +0xf0 0xc3 0xb5 0x90 +# CHECK: r17:16 = memubh(r21 + #124) +0xf0 0xc3 0xf5 0x90 +# CHECK: r17:16 = membh(r21 + #124) +0xb1 0xe0 0x35 0x98 +# CHECK: r17 = membh(r21 ++ #10:circ(m1)) +0x11 0xe2 0x35 0x98 +# CHECK: r17 = membh(r21 ++ I:circ(m1)) +0xb1 0xe0 0x75 0x98 +# CHECK: r17 = memubh(r21 ++ #10:circ(m1)) +0x11 0xe2 0x75 0x98 +# CHECK: r17 = memubh(r21 ++ I:circ(m1)) +0xb0 0xe0 0xf5 0x98 +# CHECK: r17:16 = membh(r21 ++ #20:circ(m1)) +0x10 0xe2 0xf5 0x98 +# CHECK: r17:16 = membh(r21 ++ I:circ(m1)) +0xb0 0xe0 0xb5 0x98 +# CHECK: r17:16 = memubh(r21 ++ #20:circ(m1)) +0x10 0xe2 0xb5 0x98 +# CHECK: r17:16 = memubh(r21 ++ I:circ(m1)) +0xb1 0xc0 0x35 0x9a +# CHECK: r17 = membh(r21++#10) +0xb1 0xc0 0x75 0x9a +# CHECK: r17 = memubh(r21++#10) +0xb0 0xc0 0xb5 0x9a +# CHECK: r17:16 = memubh(r21++#20) +0xb0 0xc0 0xf5 0x9a +# CHECK: r17:16 = membh(r21++#20) +0x11 0xe0 0x35 0x9c +# CHECK: r17 = membh(r21++m1) +0x11 0xe0 0x75 0x9c +# CHECK: r17 = memubh(r21++m1) +0x10 0xe0 0xf5 0x9c +# CHECK: r17:16 = membh(r21++m1) +0x10 0xe0 0xb5 0x9c +# CHECK: r17:16 = memubh(r21++m1) +0x11 0xe0 0x35 0x9e +# CHECK: r17 = membh(r21 ++ m1:brev) +0x11 0xe0 0x75 0x9e +# CHECK: r17 = memubh(r21 ++ m1:brev) +0x10 0xe0 0xb5 0x9e +# CHECK: r17:16 = memubh(r21 ++ m1:brev) +0x10 0xe0 0xf5 0x9e +# CHECK: r17:16 = membh(r21 ++ m1:brev) diff --git a/test/MC/Disassembler/Hexagon/lit.local.cfg b/test/MC/Disassembler/Hexagon/lit.local.cfg new file mode 100644 index 0000000..6500d4d --- /dev/null +++ b/test/MC/Disassembler/Hexagon/lit.local.cfg @@ -0,0 +1,3 @@ +if not 'Hexagon' in config.root.targets:
+ config.unsupported = True
+
diff --git a/test/MC/Disassembler/Hexagon/memop.txt b/test/MC/Disassembler/Hexagon/memop.txt new file mode 100644 index 0000000..47dfd93 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/memop.txt @@ -0,0 +1,56 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.6 MEMOP + +# Operation on memory byte +0x95 0xd9 0x11 0x3e +# CHECK: memb(r17+#51) += r21 +0xb5 0xd9 0x11 0x3e +# CHECK: memb(r17+#51) -= r21 +0xd5 0xd9 0x11 0x3e +# CHECK: memb(r17+#51) &= r21 +0xf5 0xd9 0x11 0x3e +# CHECK: memb(r17+#51) |= r21 +0x95 0xd9 0x11 0x3f +# CHECK: memb(r17+#51) += #21 +0xb5 0xd9 0x11 0x3f +# CHECK: memb(r17+#51) -= #21 +0xd5 0xd9 0x11 0x3f +# CHECK: memb(r17+#51) = clrbit(#21) +0xf5 0xd9 0x11 0x3f +# CHECK: memb(r17+#51) = setbit(#21) + +# Operation on memory halfword +0x95 0xd9 0x31 0x3e +# CHECK: memh(r17+#102) += r21 +0xb5 0xd9 0x31 0x3e +# CHECK: memh(r17+#102) -= r21 +0xd5 0xd9 0x31 0x3e +# CHECK: memh(r17+#102) &= r21 +0xf5 0xd9 0x31 0x3e +# CHECK: memh(r17+#102) |= r21 +0x95 0xd9 0x31 0x3f +# CHECK: memh(r17+#102) += #21 +0xb5 0xd9 0x31 0x3f +# CHECK: memh(r17+#102) -= #21 +0xd5 0xd9 0x31 0x3f +# CHECK: memh(r17+#102) = clrbit(#21) +0xf5 0xd9 0x31 0x3f +# CHECK: memh(r17+#102) = setbit(#21) + +# Operation on memory word +0x95 0xd9 0x51 0x3e +# CHECK: memw(r17+#204) += r21 +0xb5 0xd9 0x51 0x3e +# CHECK: memw(r17+#204) -= r21 +0xd5 0xd9 0x51 0x3e +# CHECK: memw(r17+#204) &= r21 +0xf5 0xd9 0x51 0x3e +# CHECK: memw(r17+#204) |= r21 +0x95 0xd9 0x51 0x3f +# CHECK: memw(r17+#204) += #21 +0xb5 0xd9 0x51 0x3f +# CHECK: memw(r17+#204) -= #21 +0xd5 0xd9 0x51 0x3f +# CHECK: memw(r17+#204) = clrbit(#21) +0xf5 0xd9 0x51 0x3f +# CHECK: memw(r17+#204) = setbit(#21) diff --git a/test/MC/Disassembler/Hexagon/nv_j.txt b/test/MC/Disassembler/Hexagon/nv_j.txt new file mode 100644 index 0000000..a6773c3 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/nv_j.txt @@ -0,0 +1,136 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.7.1 NV/J + +# Jump to address conditioned on new register value +0x11 0x40 0x71 0x70 0x92 0xd5 0x02 0x20 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.eq(r2.new, r21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x02 0x20 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.eq(r2.new, r21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x42 0x20 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.eq(r2.new, r21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x42 0x20 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.eq(r2.new, r21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x82 0x20 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gt(r2.new, r21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x82 0x20 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gt(r2.new, r21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0xc2 0x20 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gt(r2.new, r21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0xc2 0x20 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gt(r2.new, r21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x02 0x21 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gtu(r2.new, r21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x02 0x21 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gtu(r2.new, r21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x42 0x21 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gtu(r2.new, r21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x42 0x21 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gtu(r2.new, r21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x82 0x21 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gt(r21, r2.new)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x82 0x21 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gt(r21, r2.new)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0xc2 0x21 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gt(r21, r2.new)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0xc2 0x21 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gt(r21, r2.new)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x02 0x22 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gtu(r21, r2.new)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x02 0x22 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gtu(r21, r2.new)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x42 0x22 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gtu(r21, r2.new)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x42 0x22 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gtu(r21, r2.new)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x02 0x24 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.eq(r2.new, #21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x02 0x24 +# CHECK: r17 = r17 +# CHECK-NETX: if (cmp.eq(r2.new, #21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x42 0x24 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.eq(r2.new, #21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x42 0x24 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.eq(r2.new, #21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x82 0x24 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gt(r2.new, #21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x82 0x24 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gt(r2.new, #21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0xc2 0x24 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gt(r2.new, #21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0xc2 0x24 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gt(r2.new, #21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x02 0x25 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gtu(r2.new, #21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x02 0x25 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gtu(r2.new, #21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xd5 0x42 0x25 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gtu(r2.new, #21)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xf5 0x42 0x25 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gtu(r2.new, #21)) jump:t +0x11 0x40 0x71 0x70 0x92 0xc0 0x82 0x25 +# CHECK: r17 = r17 +# CHECK-NEXT: if (tstbit(r2.new, #0)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xe0 0x82 0x25 +# CHECK: r17 = r17 +# CHECK-NEXT: if (tstbit(r2.new, #0)) jump:t +0x11 0x40 0x71 0x70 0x92 0xc0 0xc2 0x25 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!tstbit(r2.new, #0)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xe0 0xc2 0x25 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!tstbit(r2.new, #0)) jump:t +0x11 0x40 0x71 0x70 0x92 0xc0 0x02 0x26 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.eq(r2.new, #-1)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xe0 0x02 0x26 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.eq(r2.new, #-1)) jump:t +0x11 0x40 0x71 0x70 0x92 0xc0 0x42 0x26 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.eq(r2.new, #-1)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xe0 0x42 0x26 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.eq(r2.new, #-1)) jump:t +0x11 0x40 0x71 0x70 0x92 0xc0 0x82 0x26 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gt(r2.new, #-1)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xe0 0x82 0x26 +# CHECK: r17 = r17 +# CHECK-NEXT: if (cmp.gt(r2.new, #-1)) jump:t +0x11 0x40 0x71 0x70 0x92 0xc0 0xc2 0x26 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gt(r2.new, #-1)) jump:nt +0x11 0x40 0x71 0x70 0x92 0xe0 0xc2 0x26 +# CHECK: r17 = r17 +# CHECK-NEXT: if (!cmp.gt(r2.new, #-1)) jump:t diff --git a/test/MC/Disassembler/Hexagon/nv_st.txt b/test/MC/Disassembler/Hexagon/nv_st.txt new file mode 100644 index 0000000..ef49455 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/nv_st.txt @@ -0,0 +1,203 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.7.2 NV/ST + +# Store new-value byte +0x1f 0x40 0x7f 0x70 0x82 0xf5 0xb1 0x3b +# CHECK: r31 = r31 +# CHECK-NEXT: memb(r17 + r21<<#3) = r2.new +0x1f 0x40 0x7f 0x70 0x15 0xc2 0xb1 0xa1 +# CHECK: r31 = r31 +# CHECK-NEXT: memb(r17+#21) = r2.new +0x1f 0x40 0x7f 0x70 0x02 0xe2 0xb1 0xa9 +# CHECK: r31 = r31 +# CHECK-NEXT: memb(r17 ++ I:circ(m1)) = r2.new +0x1f 0x40 0x7f 0x70 0x28 0xe2 0xb1 0xa9 +# CHECK: r31 = r31 +# CHECK-NEXT: memb(r17 ++ #5:circ(m1)) = r2.new +0x1f 0x40 0x7f 0x70 0x28 0xc2 0xb1 0xab +# CHECK: r31 = r31 +# CHECK-NEXT: memb(r17++#5) = r2.new +0x1f 0x40 0x7f 0x70 0x00 0xe2 0xb1 0xad +# CHECK: r31 = r31 +# CHECK-NEXT: memb(r17++m1) = r2.new +0x1f 0x40 0x7f 0x70 0x00 0xe2 0xb1 0xaf +# CHECK: r31 = r31 +# CHECK-NEXT: memb(r17 ++ m1:brev) = r2.new + +# Store new-value byte conditionally +0x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x34 +# CHECK: r31 = r31 +# CHECK-NEXT: if (p3) memb(r17+r21<<#3) = r2.new +0x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x35 +# CHECK: r31 = r31 +# CHECK-NEXT: if (!p3) memb(r17+r21<<#3) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x36 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (p3.new) memb(r17+r21<<#3) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x37 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (!p3.new) memb(r17+r21<<#3) = r2.new +0x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x40 +# CHECK: r31 = r31 +# CHECK-NEXT: if (p3) memb(r17+#21) = r2.new +0x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x44 +# CHECK: r31 = r31 +# CHECK-NEXT: if (!p3) memb(r17+#21) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x42 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (p3.new) memb(r17+#21) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x46 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (!p3.new) memb(r17+#21) = r2.new +0x1f 0x40 0x7f 0x70 0x2b 0xe2 0xb1 0xab +# CHECK: r31 = r31 +# CHECK-NEXT: if (p3) memb(r17++#5) = r2.new +0x1f 0x40 0x7f 0x70 0x2f 0xe2 0xb1 0xab +# CHECK: r31 = r31 +# CHECK-NEXT: if (!p3) memb(r17++#5) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xe2 0xb1 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (p3.new) memb(r17++#5) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xaf 0xe2 0xb1 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (!p3.new) memb(r17++#5) = r2.new + +# Store new-value halfword +0x1f 0x40 0x7f 0x70 0x8a 0xf5 0xb1 0x3b +# CHECK: r31 = r31 +# CHECK-NEXT: memh(r17 + r21<<#3) = r2.new +0x1f 0x40 0x7f 0x70 0x15 0xca 0xb1 0xa1 +# CHECK: r31 = r31 +# CHECK-NEXT: memh(r17+#42) = r2.new +0x1f 0x40 0x7f 0x70 0x02 0xea 0xb1 0xa9 +# CHECK: r31 = r31 +# CHECK-NEXT: memh(r17 ++ I:circ(m1)) = r2.new +0x1f 0x40 0x7f 0x70 0x28 0xea 0xb1 0xa9 +# CHECK: r31 = r31 +# CHECK-NEXT: memh(r17 ++ #10:circ(m1)) = r2.new +0x1f 0x40 0x7f 0x70 0x28 0xca 0xb1 0xab +# CHECK: r31 = r31 +# CHECK-NEXT: memh(r17++#10) = r2.new +0x1f 0x40 0x7f 0x70 0x00 0xea 0xb1 0xad +# CHECK: r31 = r31 +# CHECK-NEXT: memh(r17++m1) = r2.new +0x1f 0x40 0x7f 0x70 0x00 0xea 0xb1 0xaf +# CHECK: r31 = r31 +# CHECK-NEXT: memh(r17 ++ m1:brev) = r2.new + +# Store new-value halfword conditionally +0x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x34 +# CHECK: r31 = r31 +# CHECK-NEXT: if (p3) memh(r17+r21<<#3) = r2.new +0x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x35 +# CHECK: r31 = r31 +# CHECK-NEXT: if (!p3) memh(r17+r21<<#3) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x36 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (p3.new) memh(r17+r21<<#3) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x37 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (!p3.new) memh(r17+r21<<#3) = r2.new +0x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x40 +# CHECK: r31 = r31 +# CHECK-NEXT: if (p3) memh(r17+#42) = r2.new +0x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x44 +# CHECK: r31 = r31 +# CHECK-NEXT: if (!p3) memh(r17+#42) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x42 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (p3.new) memh(r17+#42) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x46 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (!p3.new) memh(r17+#42) = r2.new +0x1f 0x40 0x7f 0x70 0x2b 0xea 0xb1 0xab +# CHECK: r31 = r31 +# CHECK-NEXT: if (p3) memh(r17++#10) = r2.new +0x1f 0x40 0x7f 0x70 0x2f 0xea 0xb1 0xab +# CHECK: r31 = r31 +# CHECK-NEXT: if (!p3) memh(r17++#10) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xea 0xb1 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (p3.new) memh(r17++#10) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xaf 0xea 0xb1 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (!p3.new) memh(r17++#10) = r2.new + +# Store new-value word +0x1f 0x40 0x7f 0x70 0x92 0xf5 0xb1 0x3b +# CHECK: r31 = r31 +# CHECK-NEXT: memw(r17 + r21<<#3) = r2.new +0x1f 0x40 0x7f 0x70 0x15 0xd2 0xb1 0xa1 +# CHECK: r31 = r31 +# CHECK-NEXT: memw(r17+#84) = r2.new +0x1f 0x40 0x7f 0x70 0x28 0xf2 0xb1 0xa9 +# CHECK: r31 = r31 +# CHECK-NEXT: memw(r17 ++ #20:circ(m1)) = r2.new +0x1f 0x40 0x7f 0x70 0x02 0xf2 0xb1 0xa9 +# CHECK: r31 = r31 +# CHECK-NEXT: memw(r17 ++ I:circ(m1)) = r2.new +0x1f 0x40 0x7f 0x70 0x28 0xd2 0xb1 0xab +# CHECK: r31 = r31 +# CHECK-NEXT: memw(r17++#20) = r2.new +0x1f 0x40 0x7f 0x70 0x00 0xf2 0xb1 0xad +# CHECK: r31 = r31 +# CHECK-NEXT: memw(r17++m1) = r2.new +0x1f 0x40 0x7f 0x70 0x00 0xf2 0xb1 0xaf +# CHECK: r31 = r31 +# CHECK-NEXT: memw(r17 ++ m1:brev) = r2.new + +# Store new-value word conditionally +0x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x34 +# CHECK: r31 = r31 +# CHECK-NEXT: if (p3) memw(r17+r21<<#3) = r2.new +0x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x35 +# CHECK: r31 = r31 +# CHECK-NEXT: if (!p3) memw(r17+r21<<#3) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x36 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (p3.new) memw(r17+r21<<#3) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x37 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (!p3.new) memw(r17+r21<<#3) = r2.new +0x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x40 +# CHECK: r31 = r31 +# CHECK-NEXT: if (p3) memw(r17+#84) = r2.new +0x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x44 +# CHECK: r31 = r31 +# CHECK-NEXT: if (!p3) memw(r17+#84) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x42 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (p3.new) memw(r17+#84) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x46 +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (!p3.new) memw(r17+#84) = r2.new +0x1f 0x40 0x7f 0x70 0x2b 0xf2 0xb1 0xab +# CHECK: r31 = r31 +# CHECK-NEXT: if (p3) memw(r17++#20) = r2.new +0x1f 0x40 0x7f 0x70 0x2f 0xf2 0xb1 0xab +# CHECK: r31 = r31 +# CHECK-NEXT: if (!p3) memw(r17++#20) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xf2 0xb1 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (p3.new) memw(r17++#20) = r2.new +0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xaf 0xf2 0xb1 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: r31 = r31 +# CHECK-NEXT: if (!p3.new) memw(r17++#20) = r2.new diff --git a/test/MC/Disassembler/Hexagon/st.txt b/test/MC/Disassembler/Hexagon/st.txt new file mode 100644 index 0000000..3b809d3 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/st.txt @@ -0,0 +1,288 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.8 ST + +# Store doubleword +0x9e 0xf5 0xd1 0x3b +# CHECK: memd(r17 + r21<<#3) = r31:30 +0x28 0xd4 0xc0 0x48 +# CHECK: memd(##320) = r21:20 +0x15 0xd4 0xd1 0xa1 +# CHECK: memd(r17+#168) = r21:20 +0x02 0xf4 0xd1 0xa9 +# CHECK: memd(r17 ++ I:circ(m1)) = r21:20 +0x28 0xf4 0xd1 0xa9 +# CHECK: memd(r17 ++ #40:circ(m1)) = r21:20 +0x28 0xd4 0xd1 0xab +# CHECK: memd(r17++#40) = r21:20 +0x00 0xf4 0xd1 0xad +# CHECK: memd(r17++m1) = r21:20 +0x00 0xf4 0xd1 0xaf +# CHECK: memd(r17 ++ m1:brev) = r21:20 + +# Store doubleword conditionally +0xfe 0xf5 0xd1 0x34 +# CHECK: if (p3) memd(r17+r21<<#3) = r31:30 +0xfe 0xf5 0xd1 0x35 +# CHECK: if (!p3) memd(r17+r21<<#3) = r31:30 +0x03 0x40 0x45 0x85 0xfe 0xf5 0xd1 0x36 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memd(r17+r21<<#3) = r31:30 +0x03 0x40 0x45 0x85 0xfe 0xf5 0xd1 0x37 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memd(r17+r21<<#3) = r31:30 +0xab 0xde 0xd1 0x40 +# CHECK: if (p3) memd(r17+#168) = r31:30 +0xab 0xde 0xd1 0x44 +# CHECK: if (!p3) memd(r17+#168) = r31:30 +0x03 0x40 0x45 0x85 0xab 0xde 0xd1 0x42 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memd(r17+#168) = r31:30 +0x03 0x40 0x45 0x85 0xab 0xde 0xd1 0x46 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memd(r17+#168) = r31:30 +0x2b 0xf4 0xd1 0xab +# CHECK: if (p3) memd(r17++#40) = r21:20 +0x2f 0xf4 0xd1 0xab +# CHECK: if (!p3) memd(r17++#40) = r21:20 +0x03 0x40 0x45 0x85 0xab 0xf4 0xd1 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memd(r17++#40) = r21:20 +0x03 0x40 0x45 0x85 0xaf 0xf4 0xd1 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memd(r17++#40) = r21:20 + +# Store byte +0x9f 0xf5 0x11 0x3b +# CHECK: memb(r17 + r21<<#3) = r31 +0x9f 0xca 0x11 0x3c +# CHECK: memb(r17+#21)=#31 +0x15 0xd5 0x00 0x48 +# CHECK: memb(##21) = r21 +0x15 0xd5 0x11 0xa1 +# CHECK: memb(r17+#21) = r21 +0x02 0xf5 0x11 0xa9 +# CHECK: memb(r17 ++ I:circ(m1)) = r21 +0x28 0xf5 0x11 0xa9 +# CHECK: memb(r17 ++ #5:circ(m1)) = r21 +0x28 0xd5 0x11 0xab +# CHECK: memb(r17++#5) = r21 +0x00 0xf5 0x11 0xad +# CHECK: memb(r17++m1) = r21 +0x00 0xf5 0x11 0xaf +# CHECK: memb(r17 ++ m1:brev) = r21 + +# Store byte conditionally +0xff 0xf5 0x11 0x34 +# CHECK: if (p3) memb(r17+r21<<#3) = r31 +0xff 0xf5 0x11 0x35 +# CHECK: if (!p3) memb(r17+r21<<#3) = r31 +0x03 0x40 0x45 0x85 0xff 0xf5 0x11 0x36 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memb(r17+r21<<#3) = r31 +0x03 0x40 0x45 0x85 0xff 0xf5 0x11 0x37 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memb(r17+r21<<#3) = r31 +0xff 0xca 0x11 0x38 +# CHECK: if (p3) memb(r17+#21)=#31 +0xff 0xca 0x91 0x38 +# CHECK: if (!p3) memb(r17+#21)=#31 +0x03 0x40 0x45 0x85 0xff 0xca 0x11 0x39 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memb(r17+#21)=#31 +0x03 0x40 0x45 0x85 0xff 0xca 0x91 0x39 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memb(r17+#21)=#31 +0xab 0xdf 0x11 0x40 +# CHECK: if (p3) memb(r17+#21) = r31 +0xab 0xdf 0x11 0x44 +# CHECK: if (!p3) memb(r17+#21) = r31 +0x03 0x40 0x45 0x85 0xab 0xdf 0x11 0x42 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memb(r17+#21) = r31 +0x03 0x40 0x45 0x85 0xab 0xdf 0x11 0x46 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memb(r17+#21) = r31 +0x2b 0xf5 0x11 0xab +# CHECK: if (p3) memb(r17++#5) = r21 +0x2f 0xf5 0x11 0xab +# CHECK: if (!p3) memb(r17++#5) = r21 +0x03 0x40 0x45 0x85 0xab 0xf5 0x11 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memb(r17++#5) = r21 +0x03 0x40 0x45 0x85 0xaf 0xf5 0x11 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memb(r17++#5) = r21 + +# Store halfword +0x9f 0xf5 0x51 0x3b +# CHECK: memh(r17 + r21<<#3) = r31 +0x9f 0xf5 0x71 0x3b +# CHECK: memh(r17 + r21<<#3) = r31.h +0x95 0xcf 0x31 0x3c +# CHECK: memh(r17+#62)=#21 +0x2a 0xd5 0x40 0x48 +# CHECK: memh(##84) = r21 +0x2a 0xd5 0x60 0x48 +# CHECK: memh(##84) = r21.h +0x15 0xdf 0x51 0xa1 +# CHECK: memh(r17+#42) = r31 +0x15 0xdf 0x71 0xa1 +# CHECK: memh(r17+#42) = r31.h +0x02 0xf5 0x51 0xa9 +# CHECK: memh(r17 ++ I:circ(m1)) = r21 +0x28 0xf5 0x51 0xa9 +# CHECK: memh(r17 ++ #10:circ(m1)) = r21 +0x02 0xf5 0x71 0xa9 +# CHECK: memh(r17 ++ I:circ(m1)) = r21.h +0x28 0xf5 0x71 0xa9 +# CHECK: memh(r17 ++ #10:circ(m1)) = r21.h +0x28 0xd5 0x51 0xab +# CHECK: memh(r17++#10) = r21 +0x28 0xd5 0x71 0xab +# CHECK: memh(r17++#10) = r21.h +0x00 0xf5 0x51 0xad +# CHECK: memh(r17++m1) = r21 +0x00 0xf5 0x71 0xad +# CHECK: memh(r17++m1) = r21.h +0x00 0xf5 0x51 0xaf +# CHECK: memh(r17 ++ m1:brev) = r21 +0x00 0xf5 0x71 0xaf +# CHECK: memh(r17 ++ m1:brev) = r21.h + +# Store halfword conditionally +0xff 0xf5 0x51 0x34 +# CHECK: if (p3) memh(r17+r21<<#3) = r31 +0xff 0xf5 0x71 0x34 +# CHECK: if (p3) memh(r17+r21<<#3) = r31.h +0xff 0xf5 0x51 0x35 +# CHECK: if (!p3) memh(r17+r21<<#3) = r31 +0xff 0xf5 0x71 0x35 +# CHECK: if (!p3) memh(r17+r21<<#3) = r31.h +0x03 0x40 0x45 0x85 0xff 0xf5 0x51 0x36 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memh(r17+r21<<#3) = r31 +0x03 0x40 0x45 0x85 0xff 0xf5 0x71 0x36 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memh(r17+r21<<#3) = r31.h +0x03 0x40 0x45 0x85 0xff 0xf5 0x51 0x37 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memh(r17+r21<<#3) = r31 +0x03 0x40 0x45 0x85 0xff 0xf5 0x71 0x37 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memh(r17+r21<<#3) = r31.h +0xf5 0xcf 0x31 0x38 +# CHECK: if (p3) memh(r17+#62)=#21 +0xf5 0xcf 0xb1 0x38 +# CHECK: if (!p3) memh(r17+#62)=#21 +0x03 0x40 0x45 0x85 0xf5 0xcf 0x31 0x39 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memh(r17+#62)=#21 +0x03 0x40 0x45 0x85 0xf5 0xcf 0xb1 0x39 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memh(r17+#62)=#21 +0xfb 0xd5 0x51 0x40 +# CHECK: if (p3) memh(r17+#62) = r21 +0xfb 0xd5 0x71 0x40 +# CHECK: if (p3) memh(r17+#62) = r21.h +0xfb 0xd5 0x51 0x44 +# CHECK: if (!p3) memh(r17+#62) = r21 +0xfb 0xd5 0x71 0x44 +# CHECK: if (!p3) memh(r17+#62) = r21.h +0x03 0x40 0x45 0x85 0xfb 0xd5 0x51 0x42 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memh(r17+#62) = r21 +0x03 0x40 0x45 0x85 0xfb 0xd5 0x71 0x42 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memh(r17+#62) = r21.h +0x03 0x40 0x45 0x85 0xfb 0xd5 0x51 0x46 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memh(r17+#62) = r21 +0x03 0x40 0x45 0x85 0xfb 0xd5 0x71 0x46 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memh(r17+#62) = r21.h +0x2b 0xf5 0x51 0xab +# CHECK: if (p3) memh(r17++#10) = r21 +0x2f 0xf5 0x51 0xab +# CHECK: if (!p3) memh(r17++#10) = r21 +0x03 0x40 0x45 0x85 0xab 0xf5 0x51 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memh(r17++#10) = r21 +0x03 0x40 0x45 0x85 0xaf 0xf5 0x51 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memh(r17++#10) = r21 +0x2b 0xf5 0x71 0xab +# CHECK: if (p3) memh(r17++#10) = r21.h +0x2f 0xf5 0x71 0xab +# CHECK: if (!p3) memh(r17++#10) = r21.h +0x03 0x40 0x45 0x85 0xab 0xf5 0x71 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memh(r17++#10) = r21.h +0x03 0x40 0x45 0x85 0xaf 0xf5 0x71 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memh(r17++#10) = r21.h + +# Store word +0x9f 0xf5 0x91 0x3b +# CHECK: memw(r17 + r21<<#3) = r31 +0x9f 0xca 0x51 0x3c +# CHECK: memw(r17+#84)=#31 +0x15 0xdf 0x91 0xa1 +# CHECK: memw(r17+#84) = r31 +0x14 0xd5 0x80 0x48 +# CHECK: memw(##80) = r21 +0x02 0xf5 0x91 0xa9 +# CHECK: memw(r17 ++ I:circ(m1)) = r21 +0x28 0xf5 0x91 0xa9 +# CHECK: memw(r17 ++ #20:circ(m1)) = r21 +0x28 0xd5 0x91 0xab +# CHECK: memw(r17++#20) = r21 +0x00 0xf5 0x91 0xad +# CHECK: memw(r17++m1) = r21 +0x00 0xf5 0x91 0xaf +# CHECK: memw(r17 ++ m1:brev) = r21 + +# Store word conditionally +0xff 0xf5 0x91 0x34 +# CHECK: if (p3) memw(r17+r21<<#3) = r31 +0xff 0xf5 0x91 0x35 +# CHECK: if (!p3) memw(r17+r21<<#3) = r31 +0x03 0x40 0x45 0x85 0xff 0xf5 0x91 0x36 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memw(r17+r21<<#3) = r31 +0x03 0x40 0x45 0x85 0xff 0xf5 0x91 0x37 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memw(r17+r21<<#3) = r31 +0xff 0xca 0x51 0x38 +# CHECK: if (p3) memw(r17+#84)=#31 +0xff 0xca 0xd1 0x38 +# CHECK: if (!p3) memw(r17+#84)=#31 +0x03 0x40 0x45 0x85 0xff 0xca 0x51 0x39 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memw(r17+#84)=#31 +0x03 0x40 0x45 0x85 0xff 0xca 0xd1 0x39 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memw(r17+#84)=#31 +0xab 0xdf 0x91 0x40 +# CHECK: if (p3) memw(r17+#84) = r31 +0xab 0xdf 0x91 0x44 +# CHECK: if (!p3) memw(r17+#84) = r31 +0x03 0x40 0x45 0x85 0xab 0xdf 0x91 0x42 +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memw(r17+#84) = r31 +0x03 0x40 0x45 0x85 0xab 0xdf 0x91 0x46 +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memw(r17+#84) = r31 +0x2b 0xf5 0x91 0xab +# CHECK: if (p3) memw(r17++#20) = r21 +0x2f 0xf5 0x91 0xab +# CHECK: if (!p3) memw(r17++#20) = r21 +0x03 0x40 0x45 0x85 0xaf 0xf5 0x91 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: if (!p3.new) memw(r17++#20) = r21 +0x03 0x40 0x45 0x85 0xab 0xf5 0x91 0xab +# CHECK: p3 = r5 +# CHECK-NEXT: if (p3.new) memw(r17++#20) = r21 + +# Allocate stack frame +0x1f 0xc0 0x9d 0xa0 +# CHECK: allocframe(#248)
\ No newline at end of file diff --git a/test/MC/Disassembler/Hexagon/system_user.txt b/test/MC/Disassembler/Hexagon/system_user.txt new file mode 100644 index 0000000..d55a94e --- /dev/null +++ b/test/MC/Disassembler/Hexagon/system_user.txt @@ -0,0 +1,26 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.9.1 SYSTEM/USER + +# Load locked +0x11 0xc0 0x15 0x92 +# CHECK: r17 = memw_locked(r21) +0x10 0xd0 0x15 0x92 +# CHECK: r17:16 = memd_locked(r21) + +# Store conditional +0x03 0xd5 0xb1 0xa0 +# CHECK: memw_locked(r17, p3) = r21 +0x03 0xd4 0xf1 0xa0 +# CHECK: memd_locked(r17, p3) = r21:20 + +# Memory barrier +0x00 0xc0 0x00 0xa8 +# CHECK: barrier + +# Data cache prefetch +0x15 0xc0 0x11 0x94 +# CHECK: dcfetch(r17 + #168) + +# Send value to ETM trace +0x00 0xc0 0x51 0x62 +# CHECK: trace(r17) diff --git a/test/MC/Disassembler/Hexagon/xtype_alu.txt b/test/MC/Disassembler/Hexagon/xtype_alu.txt new file mode 100644 index 0000000..03d0f05 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/xtype_alu.txt @@ -0,0 +1,395 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.10.1 XTYPE/ALU + +# Absolute value doubleword +0xd0 0xc0 0x94 0x80 +# CHECK: r17:16 = abs(r21:20) +0x91 0xc0 0x95 0x8c +# CHECK: r17 = abs(r21) +0xb1 0xc0 0x95 0x8c +# CHECK: r17 = abs(r21):sat + +# Add and accumulate +0xff 0xd1 0x35 0xdb +# CHECK: r17 = add(r21, add(r31, #23)) +0xff 0xd1 0xb5 0xdb +# CHECK: r17 = add(r21, sub(#23, r31)) +0xf1 0xc2 0x15 0xe2 +# CHECK: r17 += add(r21, #23) +0xf1 0xc2 0x95 0xe2 +# CHECK: r17 -= add(r21, #23) +0x31 0xdf 0x15 0xef +# CHECK: r17 += add(r21, r31) +0x31 0xdf 0x95 0xef +# CHECK: r17 -= add(r21, r31) + +# Add doublewords +0xf0 0xde 0x14 0xd3 +# CHECK: r17:16 = add(r21:20, r31:30) +0xb0 0xde 0x74 0xd3 +# CHECK: r17:16 = add(r21:20, r31:30):sat +0xd0 0xde 0x74 0xd3 +# CHECK: r17:16 = add(r21:20, r31:30):raw:lo +0xf0 0xde 0x74 0xd3 +# CHECK: r17:16 = add(r21:20, r31:30):raw:hi + +# Add halfword +0x11 0xd5 0x1f 0xd5 +# CHECK: r17 = add(r21.l, r31.l) +0x51 0xd5 0x1f 0xd5 +# CHECK: r17 = add(r21.l, r31.h) +0x91 0xd5 0x1f 0xd5 +# CHECK: r17 = add(r21.l, r31.l):sat +0xd1 0xd5 0x1f 0xd5 +# CHECK: r17 = add(r21.l, r31.h):sat +0x11 0xd5 0x5f 0xd5 +# CHECK: r17 = add(r21.l, r31.l):<<16 +0x31 0xd5 0x5f 0xd5 +# CHECK: r17 = add(r21.l, r31.h):<<16 +0x51 0xd5 0x5f 0xd5 +# CHECK: r17 = add(r21.h, r31.l):<<16 +0x71 0xd5 0x5f 0xd5 +# CHECK: r17 = add(r21.h, r31.h):<<16 +0x91 0xd5 0x5f 0xd5 +# CHECK: r17 = add(r21.l, r31.l):sat:<<16 +0xb1 0xd5 0x5f 0xd5 +# CHECK: r17 = add(r21.l, r31.h):sat:<<16 +0xd1 0xd5 0x5f 0xd5 +# CHECK: r17 = add(r21.h, r31.l):sat:<<16 +0xf1 0xd5 0x5f 0xd5 +# CHECK: r17 = add(r21.h, r31.h):sat:<<16 + +# Add or subtract doublewords with carry +0x70 0xde 0xd4 0xc2 +# CHECK: r17:16 = add(r21:20, r31:30, p3):carry +0x70 0xde 0xf4 0xc2 +# CHECK: r17:16 = sub(r21:20, r31:30, p3):carry + +# Logical doublewords +0x90 0xc0 0x94 0x80 +# CHECK: r17:16 = not(r21:20) +0x10 0xde 0xf4 0xd3 +# CHECK: r17:16 = and(r21:20, r31:30) +0x30 0xd4 0xfe 0xd3 +# CHECK: r17:16 = and(r21:20, ~r31:30) +0x50 0xde 0xf4 0xd3 +# CHECK: r17:16 = or(r21:20, r31:30) +0x70 0xd4 0xfe 0xd3 +# CHECK: r17:16 = or(r21:20, ~r31:30) +0x90 0xde 0xf4 0xd3 +# CHECK: r17:16 = xor(r21:20, r31:30) + +# Logical-logical doublewords +0x10 0xde 0x94 0xca +# CHECK: r17:16 ^= xor(r21:20, r31:30) + +# Logical-logical words +0xf1 0xc3 0x15 0xda +# CHECK: r17 |= and(r21, #31) +0xf5 0xc3 0x51 0xda +# CHECK: r17 = or(r21, and(r17, #31)) +0xf1 0xc3 0x95 0xda +# CHECK: r17 |= or(r21, #31) +0x11 0xdf 0x35 0xef +# CHECK: r17 |= and(r21, ~r31) +0x31 0xdf 0x35 0xef +# CHECK: r17 &= and(r21, ~r31) +0x51 0xdf 0x35 0xef +# CHECK: r17 ^= and(r21, ~r31) +0x11 0xdf 0x55 0xef +# CHECK: r17 &= and(r21, r31) +0x31 0xdf 0x55 0xef +# CHECK: r17 &= or(r21, r31) +0x51 0xdf 0x55 0xef +# CHECK: r17 &= xor(r21, r31) +0x71 0xdf 0x55 0xef +# CHECK: r17 |= and(r21, r31) +0x71 0xdf 0x95 0xef +# CHECK: r17 ^= xor(r21, r31) +0x11 0xdf 0xd5 0xef +# CHECK: r17 |= or(r21, r31) +0x31 0xdf 0xd5 0xef +# CHECK: r17 |= xor(r21, r31) +0x51 0xdf 0xd5 0xef +# CHECK: r17 ^= and(r21, r31) +0x71 0xdf 0xd5 0xef +# CHECK: r17 ^= or(r21, r31) + +# Maximum words +0x11 0xdf 0xd5 0xd5 +# CHECK: r17 = max(r21, r31) +0x91 0xdf 0xd5 0xd5 +# CHECK: r17 = maxu(r21, r31) + +# Maximum doublewords +0x90 0xde 0xd4 0xd3 +# CHECK: r17:16 = max(r21:20, r31:30) +0xb0 0xde 0xd4 0xd3 +# CHECK: r17:16 = maxu(r21:20, r31:30) + +# Minimum words +0x11 0xd5 0xbf 0xd5 +# CHECK: r17 = min(r21, r31) +0x91 0xd5 0xbf 0xd5 +# CHECK: r17 = minu(r21, r31) + +# Minimum doublewords +0xd0 0xd4 0xbe 0xd3 +# CHECK: r17:16 = min(r21:20, r31:30) +0xf0 0xd4 0xbe 0xd3 +# CHECK: r17:16 = minu(r21:20, r31:30) + +# Module wrap +0xf1 0xdf 0xf5 0xd3 +# CHECK: r17 = modwrap(r21, r31) + +# Negate +0xb0 0xc0 0x94 0x80 +# CHECK: r17:16 = neg(r21:20) +0xd1 0xc0 0x95 0x8c +# CHECK: r17 = neg(r21):sat + +# Round +0x31 0xc0 0xd4 0x88 +# CHECK: r17 = round(r21:20):sat +0x11 0xdf 0xf5 0x8c +# CHECK: r17 = cround(r21, #31) +0x91 0xdf 0xf5 0x8c +# CHECK: r17 = round(r21, #31) +0xd1 0xdf 0xf5 0x8c +# CHECK: r17 = round(r21, #31):sat +0x11 0xdf 0xd5 0xc6 +# CHECK: r17 = cround(r21, r31) +0x91 0xdf 0xd5 0xc6 +# CHECK: r17 = round(r21, r31) +0xd1 0xdf 0xd5 0xc6 +# CHECK: r17 = round(r21, r31):sat + +# Subtract doublewords +0xf0 0xd4 0x3e 0xd3 +# CHECK: r17:16 = sub(r21:20, r31:30) + +# Subtract and accumulate words +0x71 0xd5 0x1f 0xef +# CHECK: r17 += sub(r21, r31) + +# Subtract halfword +0x11 0xd5 0x3f 0xd5 +# CHECK: r17 = sub(r21.l, r31.l) +0x51 0xd5 0x3f 0xd5 +# CHECK: r17 = sub(r21.l, r31.h) +0x91 0xd5 0x3f 0xd5 +# CHECK: r17 = sub(r21.l, r31.l):sat +0xd1 0xd5 0x3f 0xd5 +# CHECK: r17 = sub(r21.l, r31.h):sat +0x11 0xd5 0x7f 0xd5 +# CHECK: r17 = sub(r21.l, r31.l):<<16 +0x31 0xd5 0x7f 0xd5 +# CHECK: r17 = sub(r21.l, r31.h):<<16 +0x51 0xd5 0x7f 0xd5 +# CHECK: r17 = sub(r21.h, r31.l):<<16 +0x71 0xd5 0x7f 0xd5 +# CHECK: r17 = sub(r21.h, r31.h):<<16 +0x91 0xd5 0x7f 0xd5 +# CHECK: r17 = sub(r21.l, r31.l):sat:<<16 +0xb1 0xd5 0x7f 0xd5 +# CHECK: r17 = sub(r21.l, r31.h):sat:<<16 +0xd1 0xd5 0x7f 0xd5 +# CHECK: r17 = sub(r21.h, r31.l):sat:<<16 +0xf1 0xd5 0x7f 0xd5 +# CHECK: r17 = sub(r21.h, r31.h):sat:<<16 + +# Sign extend word to doubleword +0x10 0xc0 0x55 0x84 +# CHECK: r17:16 = sxtw(r21) + +# Vector absolute value halfwords +0x90 0xc0 0x54 0x80 +# CHECK: r17:16 = vabsh(r21:20) +0xb0 0xc0 0x54 0x80 +# CHECK: r17:16 = vabsh(r21:20):sat + +# Vector absolute value words +0xd0 0xc0 0x54 0x80 +# CHECK: r17:16 = vabsw(r21:20) +0xf0 0xc0 0x54 0x80 +# CHECK: r17:16 = vabsw(r21:20):sat + +# Vector absolute difference halfwords +0x10 0xd4 0x7e 0xe8 +# CHECK: r17:16 = vabsdiffh(r21:20, r31:30) + +# Vector absolute difference words +0x10 0xd4 0x3e 0xe8 +# CHECK: r17:16 = vabsdiffw(r21:20, r31:30) + +# Vector add halfwords +0x50 0xde 0x14 0xd3 +# CHECK: r17:16 = vaddh(r21:20, r31:30) +0x70 0xde 0x14 0xd3 +# CHECK: r17:16 = vaddh(r21:20, r31:30):sat +0x90 0xde 0x14 0xd3 +# CHECK: r17:16 = vadduh(r21:20, r31:30):sat + +# Vector add halfwords with saturate and pack to unsigned bytes +0x31 0xde 0x54 0xc1 +# CHECK: r17 = vaddhub(r21:20, r31:30):sat + +# Vector reduce add unsigned bytes +0x30 0xde 0x54 0xe8 +# CHECK: r17:16 = vraddub(r21:20, r31:30) +0x30 0xde 0x54 0xea +# CHECK: r17:16 += vraddub(r21:20, r31:30) + +# Vector reduce add halfwords +0x31 0xde 0x14 0xe9 +# CHECK: r17 = vradduh(r21:20, r31:30) +0xf1 0xde 0x34 0xe9 +# CHECK: r17 = vraddh(r21:20, r31:30) + +# Vector add bytes +0x10 0xde 0x14 0xd3 +# CHECK: r17:16 = vaddub(r21:20, r31:30) +0x30 0xde 0x14 0xd3 +# CHECK: r17:16 = vaddub(r21:20, r31:30):sat + +# Vector add words +0xb0 0xde 0x14 0xd3 +# CHECK: r17:16 = vaddw(r21:20, r31:30) +0xd0 0xde 0x14 0xd3 +# CHECK: r17:16 = vaddw(r21:20, r31:30):sat + +# Vector average halfwords +0x50 0xde 0x54 0xd3 +# CHECK: r17:16 = vavgh(r21:20, r31:30) +0x70 0xde 0x54 0xd3 +# CHECK: r17:16 = vavgh(r21:20, r31:30):rnd +0x90 0xde 0x54 0xd3 +# CHECK: r17:16 = vavgh(r21:20, r31:30):crnd +0xb0 0xde 0x54 0xd3 +# CHECK: r17:16 = vavguh(r21:20, r31:30) +0xd0 0xde 0x54 0xd3 +# CHECK: r17:16 = vavguh(r21:20, r31:30):rnd +0x10 0xd4 0x9e 0xd3 +# CHECK: r17:16 = vnavgh(r21:20, r31:30) +0x30 0xd4 0x9e 0xd3 +# CHECK: r17:16 = vnavgh(r21:20, r31:30):rnd:sat +0x50 0xd4 0x9e 0xd3 +# CHECK: r17:16 = vnavgh(r21:20, r31:30):crnd:sat + +# Vector average unsigned bytes +0x10 0xde 0x54 0xd3 +# CHECK: r17:16 = vavgub(r21:20, r31:30) +0x30 0xde 0x54 0xd3 +# CHECK: r17:16 = vavgub(r21:20, r31:30):rnd + +# Vector average words +0x10 0xde 0x74 0xd3 +# CHECK: r17:16 = vavgw(r21:20, r31:30) +0x30 0xde 0x74 0xd3 +# CHECK: r17:16 = vavgw(r21:20, r31:30):rnd +0x50 0xde 0x74 0xd3 +# CHECK: r17:16 = vavgw(r21:20, r31:30):crnd +0x70 0xde 0x74 0xd3 +# CHECK: r17:16 = vavguw(r21:20, r31:30) +0x90 0xde 0x74 0xd3 +# CHECK: r17:16 = vavguw(r21:20, r31:30):rnd +0x70 0xd4 0x9e 0xd3 +# CHECK: r17:16 = vnavgw(r21:20, r31:30) +0x90 0xd4 0x9e 0xd3 +# CHECK: r17:16 = vnavgw(r21:20, r31:30):rnd:sat +0xd0 0xd4 0x9e 0xd3 +# CHECK: r17:16 = vnavgw(r21:20, r31:30):crnd:sat + +# Vector conditional negate +0x50 0xdf 0xd4 0xc3 +# CHECK: r17:16 = vcnegh(r21:20, r31) + +0xf0 0xff 0x34 0xcb +# CHECK: r17:16 += vrcnegh(r21:20, r31) + +# Vector maximum bytes +0x10 0xd4 0xde 0xd3 +# CHECK: r17:16 = vmaxub(r21:20, r31:30) +0xd0 0xd4 0xde 0xd3 +# CHECK: r17:16 = vmaxb(r21:20, r31:30) + +# Vector maximum halfwords +0x30 0xd4 0xde 0xd3 +# CHECK: r17:16 = vmaxh(r21:20, r31:30) +0x50 0xd4 0xde 0xd3 +# CHECK: r17:16 = vmaxuh(r21:20, r31:30) + +# Vector reduce maximum halfwords +0x3f 0xd0 0x34 0xcb +# CHECK: r17:16 = vrmaxh(r21:20, r31) +0x3f 0xf0 0x34 0xcb +# CHECK: r17:16 = vrmaxuh(r21:20, r31) + +# Vector reduce maximum words +0x5f 0xd0 0x34 0xcb +# CHECK: r17:16 = vrmaxw(r21:20, r31) +0x5f 0xf0 0x34 0xcb +# CHECK: r17:16 = vrmaxuw(r21:20, r31) + +# Vector maximum words +0xb0 0xd4 0xbe 0xd3 +# CHECK: r17:16 = vmaxuw(r21:20, r31:30) +0x70 0xd4 0xde 0xd3 +# CHECK: r17:16 = vmaxw(r21:20, r31:30) + +# Vector minimum bytes +0x10 0xd4 0xbe 0xd3 +# CHECK: r17:16 = vminub(r21:20, r31:30) +0xf0 0xd4 0xde 0xd3 +# CHECK: r17:16 = vminb(r21:20, r31:30) + +# Vector minimum halfwords +0x30 0xd4 0xbe 0xd3 +# CHECK: r17:16 = vminh(r21:20, r31:30) +0x50 0xd4 0xbe 0xd3 +# CHECK: r17:16 = vminuh(r21:20, r31:30) + +# Vector reduce minimum halfwords +0xbf 0xd0 0x34 0xcb +# CHECK: r17:16 = vrminh(r21:20, r31) +0xbf 0xf0 0x34 0xcb +# CHECK: r17:16 = vrminuh(r21:20, r31) + +# Vector reduce minimum words +0xdf 0xd0 0x34 0xcb +# CHECK: r17:16 = vrminw(r21:20, r31) +0xdf 0xf0 0x34 0xcb +# CHECK: r17:16 = vrminuw(r21:20, r31) + +# Vector minimum words +0x70 0xd4 0xbe 0xd3 +# CHECK: r17:16 = vminw(r21:20, r31:30) +0x90 0xd4 0xbe 0xd3 +# CHECK: r17:16 = vminuw(r21:20, r31:30) + +# Vector sum of absolute differences unsigned bytes +0x50 0xde 0x54 0xe8 +# CHECK: r17:16 = vrsadub(r21:20, r31:30) +0x50 0xde 0x54 0xea +# CHECK: r17:16 += vrsadub(r21:20, r31:30) + +# Vector subtract halfwords +0x50 0xd4 0x3e 0xd3 +# CHECK: r17:16 = vsubh(r21:20, r31:30) +0x70 0xd4 0x3e 0xd3 +# CHECK: r17:16 = vsubh(r21:20, r31:30):sat +0x90 0xd4 0x3e 0xd3 +# CHECK: r17:16 = vsubuh(r21:20, r31:30):sat + +# Vector subtract bytes +0x10 0xd4 0x3e 0xd3 +# CHECK: r17:16 = vsubub(r21:20, r31:30) +0x30 0xd4 0x3e 0xd3 +# CHECK: r17:16 = vsubub(r21:20, r31:30):sat + +# Vector subtract words +0xb0 0xd4 0x3e 0xd3 +# CHECK: r17:16 = vsubw(r21:20, r31:30) +0xd0 0xd4 0x3e 0xd3 +# CHECK: r17:16 = vsubw(r21:20, r31:30):sat diff --git a/test/MC/Disassembler/Hexagon/xtype_bit.txt b/test/MC/Disassembler/Hexagon/xtype_bit.txt new file mode 100644 index 0000000..89b6906 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/xtype_bit.txt @@ -0,0 +1,118 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.10.2 XTYPE/BIT + +# Count leading +0x11 0xc0 0x54 0x88 +# CHECK: r17 = clb(r21:20) +0x51 0xc0 0x54 0x88 +# CHECK: r17 = cl0(r21:20) +0x91 0xc0 0x54 0x88 +# CHECK: r17 = cl1(r21:20) +0x11 0xc0 0x74 0x88 +# CHECK: r17 = normamt(r21:20) +0x51 0xd7 0x74 0x88 +# CHECK: r17 = add(clb(r21:20), #23) +0x11 0xd7 0x35 0x8c +# CHECK: r17 = add(clb(r21), #23) +0x91 0xc0 0x15 0x8c +# CHECK: r17 = clb(r21) +0xb1 0xc0 0x15 0x8c +# CHECK: r17 = cl0(r21) +0xd1 0xc0 0x15 0x8c +# CHECK: r17 = cl1(r21) +0xf1 0xc0 0x15 0x8c +# CHECK: r17 = normamt(r21) + +# Count population +0x71 0xc0 0x74 0x88 +# CHECK: r17 = popcount(r21:20) + +# Count trailing +0x51 0xc0 0xf4 0x88 +# CHECK: r17 = ct0(r21:20) +0x91 0xc0 0xf4 0x88 +# CHECK: r17 = ct1(r21:20) +0x91 0xc0 0x55 0x8c +# CHECK: r17 = ct0(r21) +0xb1 0xc0 0x55 0x8c +# CHECK: r17 = ct1(r21) + +# Extract bitfield +0xf0 0xdf 0x54 0x81 +# CHECK: r17:16 = extractu(r21:20, #31, #23) +0xf0 0xdf 0x54 0x8a +# CHECK: r17:16 = extract(r21:20, #31, #23) +0xf1 0xdf 0x55 0x8d +# CHECK: r17 = extractu(r21, #31, #23) +0xf1 0xdf 0xd5 0x8d +# CHECK: r17 = extract(r21, #31, #23) +0x10 0xde 0x14 0xc1 +# CHECK: r17:16 = extractu(r21:20, r31:30) +0x90 0xde 0xd4 0xc1 +# CHECK: r17:16 = extract(r21:20, r31:30) +0x11 0xde 0x15 0xc9 +# CHECK: r17 = extractu(r21, r31:30) +0x51 0xde 0x15 0xc9 +# CHECK: r17 = extract(r21, r31:30) + +# Insert bitfield +0xf0 0xdf 0x54 0x83 +# CHECK: r17:16 = insert(r21:20, #31, #23) +0xf1 0xdf 0x55 0x8f +# CHECK: r17 = insert(r21, #31, #23) +0x11 0xde 0x15 0xc8 +# CHECK: r17 = insert(r21, r31:30) +0x10 0xde 0x14 0xca +# CHECK: r17:16 = insert(r21:20, r31:30) + +# Interleave/deinterleave +0x90 0xc0 0xd4 0x80 +# CHECK: r17:16 = deinterleave(r21:20) +0xb0 0xc0 0xd4 0x80 +# CHECK: r17:16 = interleave(r21:20) + +# Linear feedback-shift iteration +0xd0 0xde 0x94 0xc1 +# CHECK: r17:16 = lfs(r21:20, r31:30) + +# Masked parity +0x11 0xde 0x14 0xd0 +# CHECK: r17 = parity(r21:20, r31:30) +0x11 0xdf 0xf5 0xd5 +# CHECK: r17 = parity(r21, r31) + +# Bit reverse +0xd0 0xc0 0xd4 0x80 +# CHECK: r17:16 = brev(r21:20) +0xd1 0xc0 0x55 0x8c +# CHECK: r17 = brev(r21) + +# Set/clear/toggle bit +0x11 0xdf 0xd5 0x8c +# CHECK: r17 = setbit(r21, #31) +0x31 0xdf 0xd5 0x8c +# CHECK: r17 = clrbit(r21, #31) +0x51 0xdf 0xd5 0x8c +# CHECK: r17 = togglebit(r21, #31) +0x11 0xdf 0x95 0xc6 +# CHECK: r17 = setbit(r21, r31) +0x51 0xdf 0x95 0xc6 +# CHECK: r17 = clrbit(r21, r31) +0x91 0xdf 0x95 0xc6 +# CHECK: r17 = togglebit(r21, r31) + +# Split bitfield +0x90 0xdf 0xd5 0x88 +# CHECK: r17:16 = bitsplit(r21, #31) +0x10 0xdf 0x35 0xd4 +# CHECK: r17:16 = bitsplit(r21, r31) + +# Table index +0xf1 0xcd 0x15 0x87 +# CHECK: r17 = tableidxb(r21, #7, #13):raw +0xf1 0xcd 0x55 0x87 +# CHECK: r17 = tableidxh(r21, #7, #13):raw +0xf1 0xcd 0x95 0x87 +# CHECK: r17 = tableidxw(r21, #7, #13):raw +0xf1 0xcd 0xd5 0x87 +# CHECK: r17 = tableidxd(r21, #7, #13):raw diff --git a/test/MC/Disassembler/Hexagon/xtype_complex.txt b/test/MC/Disassembler/Hexagon/xtype_complex.txt new file mode 100644 index 0000000..2332082 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/xtype_complex.txt @@ -0,0 +1,128 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.10.3 XTYPE/COMPLEX + +# Complex add/sub halfwords +0x90 0xde 0x54 0xc1 +# CHECK: r17:16 = vxaddsubh(r21:20, r31:30):sat +0xd0 0xde 0x54 0xc1 +# CHECK: r17:16 = vxsubaddh(r21:20, r31:30):sat +0x10 0xde 0xd4 0xc1 +# CHECK: r17:16 = vxaddsubh(r21:20, r31:30):rnd:>>1:sat +0x50 0xde 0xd4 0xc1 +# CHECK: r17:16 = vxsubaddh(r21:20, r31:30):rnd:>>1:sat + +# Complex add/sub words +0x10 0xde 0x54 0xc1 +# CHECK: r17:16 = vxaddsubw(r21:20, r31:30):sat +0x50 0xde 0x54 0xc1 +# CHECK: r17:16 = vxsubaddw(r21:20, r31:30):sat + +# Complex multiply +0xd0 0xdf 0x15 0xe5 +# CHECK: r17:16 = cmpy(r21, r31):sat +0xd0 0xdf 0x95 0xe5 +# CHECK: r17:16 = cmpy(r21, r31):<<1:sat +0xd0 0xdf 0x55 0xe5 +# CHECK: r17:16 = cmpy(r21, r31*):sat +0xd0 0xdf 0xd5 0xe5 +# CHECK: r17:16 = cmpy(r21, r31*):<<1:sat +0xd0 0xdf 0x15 0xe7 +# CHECK: r17:16 += cmpy(r21, r31):sat +0xd0 0xdf 0x95 0xe7 +# CHECK: r17:16 += cmpy(r21, r31):<<1:sat +0xf0 0xdf 0x15 0xe7 +# CHECK: r17:16 -= cmpy(r21, r31):sat +0xf0 0xdf 0x95 0xe7 +# CHECK: r17:16 -= cmpy(r21, r31):<<1:sat +0xd0 0xdf 0x55 0xe7 +# CHECK: r17:16 += cmpy(r21, r31*):sat +0xd0 0xdf 0xd5 0xe7 +# CHECK: r17:16 += cmpy(r21, r31*):<<1:sat +0xf0 0xdf 0x55 0xe7 +# CHECK: r17:16 -= cmpy(r21, r31*):sat +0xf0 0xdf 0xd5 0xe7 +# CHECK: r17:16 -= cmpy(r21, r31*):<<1:sat + +# Complex multiply real or imaginary +0x30 0xdf 0x15 0xe5 +# CHECK: r17:16 = cmpyi(r21, r31) +0x50 0xdf 0x15 0xe5 +# CHECK: r17:16 = cmpyr(r21, r31) +0x30 0xdf 0x15 0xe7 +# CHECK: r17:16 += cmpyi(r21, r31) +0x50 0xdf 0x15 0xe7 +# CHECK: r17:16 += cmpyr(r21, r31) + +# Complex multiply with round and pack +0xd1 0xdf 0x35 0xed +# CHECK: r17 = cmpy(r21, r31):rnd:sat +0xd1 0xdf 0xb5 0xed +# CHECK: r17 = cmpy(r21, r31):<<1:rnd:sat +0xd1 0xdf 0x75 0xed +# CHECK: r17 = cmpy(r21, r31*):rnd:sat +0xd1 0xdf 0xf5 0xed +# CHECK: r17 = cmpy(r21, r31*):<<1:rnd:sat + +# Complex multiply 32x16 +0x91 0xdf 0x14 0xc5 +# CHECK: r17 = cmpyiwh(r21:20, r31):<<1:rnd:sat +0xb1 0xdf 0x14 0xc5 +# CHECK: r17 = cmpyiwh(r21:20, r31*):<<1:rnd:sat +0xd1 0xdf 0x14 0xc5 +# CHECK: r17 = cmpyrwh(r21:20, r31):<<1:rnd:sat +0xf1 0xdf 0x14 0xc5 +# CHECK: r17 = cmpyrwh(r21:20, r31*):<<1:rnd:sat + +# Vector complex multiply real or imaginary +0xd0 0xde 0x34 0xe8 +# CHECK: r17:16 = vcmpyr(r21:20, r31:30):sat +0xd0 0xde 0xb4 0xe8 +# CHECK: r17:16 = vcmpyr(r21:20, r31:30):<<1:sat +0xd0 0xde 0x54 0xe8 +# CHECK: r17:16 = vcmpyi(r21:20, r31:30):sat +0xd0 0xde 0xd4 0xe8 +# CHECK: r17:16 = vcmpyi(r21:20, r31:30):<<1:sat +0x90 0xde 0x34 0xea +# CHECK: r17:16 += vcmpyr(r21:20, r31:30):sat +0x90 0xde 0x54 0xea +# CHECK: r17:16 += vcmpyi(r21:20, r31:30):sat + +# Vector complex conjugate +0xf0 0xc0 0x94 0x80 +# CHECK: r17:16 = vconj(r21:20):sat + +# Vector complex rotate +0x10 0xdf 0xd4 0xc3 +# CHECK: r17:16 = vcrotate(r21:20, r31) + +# Vector reduce complex multiply real or imaginary +0x10 0xde 0x14 0xe8 +# CHECK: r17:16 = vrcmpyi(r21:20, r31:30) +0x30 0xde 0x14 0xe8 +# CHECK: r17:16 = vrcmpyr(r21:20, r31:30) +0x10 0xde 0x54 0xe8 +# CHECK: r17:16 = vrcmpyi(r21:20, r31:30*) +0x30 0xde 0x74 0xe8 +# CHECK: r17:16 = vrcmpyr(r21:20, r31:30*) + +# Vector reduce complex multiply by scalar +0x90 0xde 0xb4 0xe8 +# CHECK: r17:16 = vrcmpys(r21:20, r31:30):<<1:sat:raw:hi +0x90 0xde 0xf4 0xe8 +# CHECK: r17:16 = vrcmpys(r21:20, r31:30):<<1:sat:raw:lo +0x90 0xde 0xb4 0xea +# CHECK: r17:16 += vrcmpys(r21:20, r31:30):<<1:sat:raw:hi +0x90 0xde 0xf4 0xea +# CHECK: r17:16 += vrcmpys(r21:20, r31:30):<<1:sat:raw:lo + +# Vector reduce complex multiply by scalar with round and pack +0xd1 0xde 0xb4 0xe9 +# CHECK: r17 = vrcmpys(r21:20, r31:30):<<1:rnd:sat:raw:hi +0xf1 0xde 0xb4 0xe9 +# CHECK: r17 = vrcmpys(r21:20, r31:30):<<1:rnd:sat:raw:lo + +# Vector reduce complex rotate +0xf0 0xff 0xd4 0xc3 +# CHECK: r17:16 = vrcrotate(r21:20, r31, #3) +0x30 0xff 0xb4 0xcb +# CHECK: r17:16 += vrcrotate(r21:20, r31, #3) diff --git a/test/MC/Disassembler/Hexagon/xtype_fp.txt b/test/MC/Disassembler/Hexagon/xtype_fp.txt new file mode 100644 index 0000000..7007420 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/xtype_fp.txt @@ -0,0 +1,146 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.10.4 XTYPE/FP + +# Floating point addition +0x11 0xdf 0x15 0xeb +# CHECK: r17 = sfadd(r21, r31) + +# Classify floating-point value +0x03 0xd5 0xf1 0x85 +# CHECK: p3 = sfclass(r17, #21) +0xb3 0xc2 0x90 0xdc +# CHECK: p3 = dfclass(r17:16, #21) + +# Compare floating-point value +0x03 0xd5 0xf1 0xc7 +# CHECK: p3 = sfcmp.ge(r17, r21) +0x23 0xd5 0xf1 0xc7 +# CHECK: p3 = sfcmp.uo(r17, r21) +0x63 0xd5 0xf1 0xc7 +# CHECK: p3 = sfcmp.eq(r17, r21) +0x83 0xd5 0xf1 0xc7 +# CHECK: p3 = sfcmp.gt(r17, r21) +0x03 0xd4 0xf0 0xd2 +# CHECK: p3 = dfcmp.eq(r17:16, r21:20) +0x23 0xd4 0xf0 0xd2 +# CHECK: p3 = dfcmp.gt(r17:16, r21:20) +0x43 0xd4 0xf0 0xd2 +# CHECK: p3 = dfcmp.ge(r17:16, r21:20) +0x63 0xd4 0xf0 0xd2 +# CHECK: p3 = dfcmp.uo(r17:16, r21:20) + +# Convert floating-point value to other format +0x10 0xc0 0x95 0x84 +# CHECK: r17:16 = convert_sf2df(r21) +0x31 0xc0 0x14 0x88 +# CHECK: r17 = convert_df2sf(r21:20) + +# Convert integer to floating-point value +0x50 0xc0 0xf4 0x80 +# CHECK: r17:16 = convert_ud2df(r21:20) +0x70 0xc0 0xf4 0x80 +# CHECK: r17:16 = convert_d2df(r21:20) +0x30 0xc0 0x95 0x84 +# CHECK: r17:16 = convert_uw2df(r21) +0x50 0xc0 0x95 0x84 +# CHECK: r17:16 = convert_w2df(r21) +0x31 0xc0 0x34 0x88 +# CHECK: r17 = convert_ud2sf(r21:20) +0x31 0xc0 0x54 0x88 +# CHECK: r17 = convert_d2sf(r21:20) +0x11 0xc0 0x35 0x8b +# CHECK: r17 = convert_uw2sf(r21) +0x11 0xc0 0x55 0x8b +# CHECK: r17 = convert_w2sf(r21) + +# Convert floating-point value to integer +0x10 0xc0 0xf4 0x80 +# CHECK: r17:16 = convert_df2d(r21:20) +0x30 0xc0 0xf4 0x80 +# CHECK: r17:16 = convert_df2ud(r21:20) +0xd0 0xc0 0xf4 0x80 +# CHECK: r17:16 = convert_df2d(r21:20):chop +0xf0 0xc0 0xf4 0x80 +# CHECK: r17:16 = convert_df2ud(r21:20):chop +0x70 0xc0 0x95 0x84 +# CHECK: r17:16 = convert_sf2ud(r21) +0x90 0xc0 0x95 0x84 +# CHECK: r17:16 = convert_sf2d(r21) +0xb0 0xc0 0x95 0x84 +# CHECK: r17:16 = convert_sf2ud(r21):chop +0xd0 0xc0 0x95 0x84 +# CHECK: r17:16 = convert_sf2d(r21):chop +0x31 0xc0 0x74 0x88 +# CHECK: r17 = convert_df2uw(r21:20) +0x31 0xc0 0x94 0x88 +# CHECK: r17 = convert_df2w(r21:20) +0x31 0xc0 0xb4 0x88 +# CHECK: r17 = convert_df2uw(r21:20):chop +0x31 0xc0 0xf4 0x88 +# CHECK: r17 = convert_df2w(r21:20):chop +0x11 0xc0 0x75 0x8b +# CHECK: r17 = convert_sf2uw(r21) +0x31 0xc0 0x75 0x8b +# CHECK: r17 = convert_sf2uw(r21):chop +0x11 0xc0 0x95 0x8b +# CHECK: r17 = convert_sf2w(r21) +0x31 0xc0 0x95 0x8b +# CHECK: r17 = convert_sf2w(r21):chop + +# Floating point extreme value assistance +0x11 0xc0 0xb5 0x8b +# CHECK: r17 = sffixupr(r21) +0x11 0xdf 0xd5 0xeb +# CHECK: r17 = sffixupn(r21, r31) +0x31 0xdf 0xd5 0xeb +# CHECK: r17 = sffixupd(r21, r31) + +# Floating point fused multiply-add +0x91 0xdf 0x15 0xef +# CHECK: r17 += sfmpy(r21, r31) +0xb1 0xdf 0x15 0xef +# CHECK: r17 -= sfmpy(r21, r31) + +# Floating point fused multiply-add with scaling +0xf1 0xdf 0x75 0xef +# CHECK: r17 += sfmpy(r21, r31, p3):scale + +# Floating point reciprocal square root approximation +0x71 0xc0 0xf5 0x8b +# CHECK: r17, p3 = sfinvsqrta(r21) + +# Floating point fused multiply-add for library routines +0xd1 0xdf 0x15 0xef +# CHECK: r17 += sfmpy(r21, r31):lib +0xf1 0xdf 0x15 0xef +# CHECK: r17 -= sfmpy(r21, r31):lib + +# Create floating-point constant +0xb1 0xc2 0x00 0xd6 +# CHECK: r17 = sfmake(#21):pos +0xb1 0xc2 0x40 0xd6 +# CHECK: r17 = sfmake(#21):neg +0xb0 0xc2 0x00 0xd9 +# CHECK: r17:16 = dfmake(#21):pos +0xb0 0xc2 0x40 0xd9 +# CHECK: r17:16 = dfmake(#21):neg + +# Floating point maximum +0x11 0xdf 0x95 0xeb +# CHECK: r17 = sfmax(r21, r31) + +# Floating point minimum +0x31 0xdf 0x95 0xeb +# CHECK: r17 = sfmin(r21, r31) + +# Floating point multiply +0x11 0xdf 0x55 0xeb +# CHECK: r17 = sfmpy(r21, r31) + +# Floating point reciprocal approximation +0xf1 0xdf 0xf5 0xeb +# CHECK: r17, p3 = sfrecipa(r21, r31) + +# Floating point subtraction +0x31 0xdf 0x15 0xeb +# CHECK: r17 = sfsub(r21, r31) diff --git a/test/MC/Disassembler/Hexagon/xtype_mpy.txt b/test/MC/Disassembler/Hexagon/xtype_mpy.txt new file mode 100644 index 0000000..ada3216 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/xtype_mpy.txt @@ -0,0 +1,400 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.10.5 XTYPE/MPY + +# Multiply and use lower result +0xb1 0xdf 0x35 0xd7 +# CHECK: r17 = add(#21, mpyi(r21, r31)) +0xbf 0xd1 0x35 0xd8 +# CHECK: r17 = add(#21, mpyi(r21, #31)) +0xb5 0xd1 0x3f 0xdf +# CHECK: r17 = add(r21, mpyi(#84, r31)) +0xf5 0xf1 0xb5 0xdf +# CHECK: r17 = add(r21, mpyi(r21, #31)) +0x15 0xd1 0x1f 0xe3 +# CHECK: r17 = add(r21, mpyi(r17, r31)) +0xf1 0xc3 0x15 0xe0 +# CHECK: r17 =+ mpyi(r21, #31) +0xf1 0xc3 0x95 0xe0 +# CHECK: r17 =- mpyi(r21, #31) +0xf1 0xc3 0x15 0xe1 +# CHECK: r17 += mpyi(r21, #31) +0xf1 0xc3 0x95 0xe1 +# CHECK: r17 -= mpyi(r21, #31) +0x11 0xdf 0x15 0xed +# CHECK: r17 = mpyi(r21, r31) +0x11 0xdf 0x15 0xef +# CHECK: r17 += mpyi(r21, r31) + +# Vector multiply word by signed half (32x16) +0xb0 0xde 0x14 0xe8 +# CHECK: r17:16 = vmpyweh(r21:20, r31:30):sat +0xb0 0xde 0x94 0xe8 +# CHECK: r17:16 = vmpyweh(r21:20, r31:30):<<1:sat +0xf0 0xde 0x14 0xe8 +# CHECK: r17:16 = vmpywoh(r21:20, r31:30):sat +0xf0 0xde 0x94 0xe8 +# CHECK: r17:16 = vmpywoh(r21:20, r31:30):<<1:sat +0xb0 0xde 0x34 0xe8 +# CHECK: r17:16 = vmpyweh(r21:20, r31:30):rnd:sat +0xb0 0xde 0xb4 0xe8 +# CHECK: r17:16 = vmpyweh(r21:20, r31:30):<<1:rnd:sat +0xf0 0xde 0x34 0xe8 +# CHECK: r17:16 = vmpywoh(r21:20, r31:30):rnd:sat +0xf0 0xde 0xb4 0xe8 +# CHECK: r17:16 = vmpywoh(r21:20, r31:30):<<1:rnd:sat +0xb0 0xde 0x14 0xea +# CHECK: r17:16 += vmpyweh(r21:20, r31:30):sat +0xb0 0xde 0x94 0xea +# CHECK: r17:16 += vmpyweh(r21:20, r31:30):<<1:sat +0xf0 0xde 0x14 0xea +# CHECK: r17:16 += vmpywoh(r21:20, r31:30):sat +0xf0 0xde 0x94 0xea +# CHECK: r17:16 += vmpywoh(r21:20, r31:30):<<1:sat +0xb0 0xde 0x34 0xea +# CHECK: r17:16 += vmpyweh(r21:20, r31:30):rnd:sat +0xb0 0xde 0xb4 0xea +# CHECK: r17:16 += vmpyweh(r21:20, r31:30):<<1:rnd:sat +0xf0 0xde 0x34 0xea +# CHECK: r17:16 += vmpywoh(r21:20, r31:30):rnd:sat +0xf0 0xde 0xb4 0xea +# CHECK: r17:16 += vmpywoh(r21:20, r31:30):<<1:rnd:sat + +# Vector multiply word by unsigned half (32x16) +0xb0 0xde 0x54 0xe8 +# CHECK: r17:16 = vmpyweuh(r21:20, r31:30):sat +0xb0 0xde 0xd4 0xe8 +# CHECK: r17:16 = vmpyweuh(r21:20, r31:30):<<1:sat +0xf0 0xde 0x54 0xe8 +# CHECK: r17:16 = vmpywouh(r21:20, r31:30):sat +0xf0 0xde 0xd4 0xe8 +# CHECK: r17:16 = vmpywouh(r21:20, r31:30):<<1:sat +0xb0 0xde 0x74 0xe8 +# CHECK: r17:16 = vmpyweuh(r21:20, r31:30):rnd:sat +0xb0 0xde 0xf4 0xe8 +# CHECK: r17:16 = vmpyweuh(r21:20, r31:30):<<1:rnd:sat +0xf0 0xde 0x74 0xe8 +# CHECK: r17:16 = vmpywouh(r21:20, r31:30):rnd:sat +0xf0 0xde 0xf4 0xe8 +# CHECK: r17:16 = vmpywouh(r21:20, r31:30):<<1:rnd:sat +0xb0 0xde 0x54 0xea +# CHECK: r17:16 += vmpyweuh(r21:20, r31:30):sat +0xb0 0xde 0xd4 0xea +# CHECK: r17:16 += vmpyweuh(r21:20, r31:30):<<1:sat +0xf0 0xde 0x54 0xea +# CHECK: r17:16 += vmpywouh(r21:20, r31:30):sat +0xf0 0xde 0xd4 0xea +# CHECK: r17:16 += vmpywouh(r21:20, r31:30):<<1:sat +0xb0 0xde 0x74 0xea +# CHECK: r17:16 += vmpyweuh(r21:20, r31:30):rnd:sat +0xb0 0xde 0xf4 0xea +# CHECK: r17:16 += vmpyweuh(r21:20, r31:30):<<1:rnd:sat +0xf0 0xde 0x74 0xea +# CHECK: r17:16 += vmpywouh(r21:20, r31:30):rnd:sat +0xf0 0xde 0xf4 0xea +# CHECK: r17:16 += vmpywouh(r21:20, r31:30):<<1:rnd:sat + +# Multiply signed halfwords +0x10 0xdf 0x95 0xe4 +# CHECK: r17:16 = mpy(r21.l, r31.l):<<1 +0x30 0xdf 0x95 0xe4 +# CHECK: r17:16 = mpy(r21.l, r31.h):<<1 +0x50 0xdf 0x95 0xe4 +# CHECK: r17:16 = mpy(r21.h, r31.l):<<1 +0x70 0xdf 0x95 0xe4 +# CHECK: r17:16 = mpy(r21.h, r31.h):<<1 +0x10 0xdf 0xb5 0xe4 +# CHECK: r17:16 = mpy(r21.l, r31.l):<<1:rnd +0x30 0xdf 0xb5 0xe4 +# CHECK: r17:16 = mpy(r21.l, r31.h):<<1:rnd +0x50 0xdf 0xb5 0xe4 +# CHECK: r17:16 = mpy(r21.h, r31.l):<<1:rnd +0x70 0xdf 0xb5 0xe4 +# CHECK: r17:16 = mpy(r21.h, r31.h):<<1:rnd +0x10 0xdf 0x95 0xe6 +# CHECK: r17:16 += mpy(r21.l, r31.l):<<1 +0x30 0xdf 0x95 0xe6 +# CHECK: r17:16 += mpy(r21.l, r31.h):<<1 +0x50 0xdf 0x95 0xe6 +# CHECK: r17:16 += mpy(r21.h, r31.l):<<1 +0x70 0xdf 0x95 0xe6 +# CHECK: r17:16 += mpy(r21.h, r31.h):<<1 +0x10 0xdf 0xb5 0xe6 +# CHECK: r17:16 -= mpy(r21.l, r31.l):<<1 +0x30 0xdf 0xb5 0xe6 +# CHECK: r17:16 -= mpy(r21.l, r31.h):<<1 +0x50 0xdf 0xb5 0xe6 +# CHECK: r17:16 -= mpy(r21.h, r31.l):<<1 +0x70 0xdf 0xb5 0xe6 +# CHECK: r17:16 -= mpy(r21.h, r31.h):<<1 +0x11 0xdf 0x95 0xec +# CHECK: r17 = mpy(r21.l, r31.l):<<1 +0x31 0xdf 0x95 0xec +# CHECK: r17 = mpy(r21.l, r31.h):<<1 +0x51 0xdf 0x95 0xec +# CHECK: r17 = mpy(r21.h, r31.l):<<1 +0x71 0xdf 0x95 0xec +# CHECK: r17 = mpy(r21.h, r31.h):<<1 +0x91 0xdf 0x95 0xec +# CHECK: r17 = mpy(r21.l, r31.l):<<1:sat +0xb1 0xdf 0x95 0xec +# CHECK: r17 = mpy(r21.l, r31.h):<<1:sat +0xd1 0xdf 0x95 0xec +# CHECK: r17 = mpy(r21.h, r31.l):<<1:sat +0xf1 0xdf 0x95 0xec +# CHECK: r17 = mpy(r21.h, r31.h):<<1:sat +0x11 0xdf 0xb5 0xec +# CHECK: r17 = mpy(r21.l, r31.l):<<1:rnd +0x31 0xdf 0xb5 0xec +# CHECK: r17 = mpy(r21.l, r31.h):<<1:rnd +0x51 0xdf 0xb5 0xec +# CHECK: r17 = mpy(r21.h, r31.l):<<1:rnd +0x71 0xdf 0xb5 0xec +# CHECK: r17 = mpy(r21.h, r31.h):<<1:rnd +0x91 0xdf 0xb5 0xec +# CHECK: r17 = mpy(r21.l, r31.l):<<1:rnd:sat +0xb1 0xdf 0xb5 0xec +# CHECK: r17 = mpy(r21.l, r31.h):<<1:rnd:sat +0xd1 0xdf 0xb5 0xec +# CHECK: r17 = mpy(r21.h, r31.l):<<1:rnd:sat +0xf1 0xdf 0xb5 0xec +# CHECK: r17 = mpy(r21.h, r31.h):<<1:rnd:sat +0x11 0xdf 0x95 0xee +# CHECK: r17 += mpy(r21.l, r31.l):<<1 +0x31 0xdf 0x95 0xee +# CHECK: r17 += mpy(r21.l, r31.h):<<1 +0x51 0xdf 0x95 0xee +# CHECK: r17 += mpy(r21.h, r31.l):<<1 +0x71 0xdf 0x95 0xee +# CHECK: r17 += mpy(r21.h, r31.h):<<1 +0x91 0xdf 0x95 0xee +# CHECK: r17 += mpy(r21.l, r31.l):<<1:sat +0xb1 0xdf 0x95 0xee +# CHECK: r17 += mpy(r21.l, r31.h):<<1:sat +0xd1 0xdf 0x95 0xee +# CHECK: r17 += mpy(r21.h, r31.l):<<1:sat +0xf1 0xdf 0x95 0xee +# CHECK: r17 += mpy(r21.h, r31.h):<<1:sat +0x11 0xdf 0xb5 0xee +# CHECK: r17 -= mpy(r21.l, r31.l):<<1 +0x31 0xdf 0xb5 0xee +# CHECK: r17 -= mpy(r21.l, r31.h):<<1 +0x51 0xdf 0xb5 0xee +# CHECK: r17 -= mpy(r21.h, r31.l):<<1 +0x71 0xdf 0xb5 0xee +# CHECK: r17 -= mpy(r21.h, r31.h):<<1 +0x91 0xdf 0xb5 0xee +# CHECK: r17 -= mpy(r21.l, r31.l):<<1:sat +0xb1 0xdf 0xb5 0xee +# CHECK: r17 -= mpy(r21.l, r31.h):<<1:sat +0xd1 0xdf 0xb5 0xee +# CHECK: r17 -= mpy(r21.h, r31.l):<<1:sat +0xf1 0xdf 0xb5 0xee +# CHECK: r17 -= mpy(r21.h, r31.h):<<1:sat + +# Multiply unsigned halfwords +0x10 0xdf 0xd5 0xe4 +# CHECK: r17:16 = mpyu(r21.l, r31.l):<<1 +0x30 0xdf 0xd5 0xe4 +# CHECK: r17:16 = mpyu(r21.l, r31.h):<<1 +0x50 0xdf 0xd5 0xe4 +# CHECK: r17:16 = mpyu(r21.h, r31.l):<<1 +0x70 0xdf 0xd5 0xe4 +# CHECK: r17:16 = mpyu(r21.h, r31.h):<<1 +0x10 0xdf 0xd5 0xe6 +# CHECK: r17:16 += mpyu(r21.l, r31.l):<<1 +0x30 0xdf 0xd5 0xe6 +# CHECK: r17:16 += mpyu(r21.l, r31.h):<<1 +0x50 0xdf 0xd5 0xe6 +# CHECK: r17:16 += mpyu(r21.h, r31.l):<<1 +0x70 0xdf 0xd5 0xe6 +# CHECK: r17:16 += mpyu(r21.h, r31.h):<<1 +0x10 0xdf 0xf5 0xe6 +# CHECK: r17:16 -= mpyu(r21.l, r31.l):<<1 +0x30 0xdf 0xf5 0xe6 +# CHECK: r17:16 -= mpyu(r21.l, r31.h):<<1 +0x50 0xdf 0xf5 0xe6 +# CHECK: r17:16 -= mpyu(r21.h, r31.l):<<1 +0x70 0xdf 0xf5 0xe6 +# CHECK: r17:16 -= mpyu(r21.h, r31.h):<<1 +0x11 0xdf 0xd5 0xec +# CHECK: r17 = mpyu(r21.l, r31.l):<<1 +0x31 0xdf 0xd5 0xec +# CHECK: r17 = mpyu(r21.l, r31.h):<<1 +0x51 0xdf 0xd5 0xec +# CHECK: r17 = mpyu(r21.h, r31.l):<<1 +0x71 0xdf 0xd5 0xec +# CHECK: r17 = mpyu(r21.h, r31.h):<<1 +0x11 0xdf 0xd5 0xee +# CHECK: r17 += mpyu(r21.l, r31.l):<<1 +0x31 0xdf 0xd5 0xee +# CHECK: r17 += mpyu(r21.l, r31.h):<<1 +0x51 0xdf 0xd5 0xee +# CHECK: r17 += mpyu(r21.h, r31.l):<<1 +0x71 0xdf 0xd5 0xee +# CHECK: r17 += mpyu(r21.h, r31.h):<<1 +0x11 0xdf 0xf5 0xee +# CHECK: r17 -= mpyu(r21.l, r31.l):<<1 +0x31 0xdf 0xf5 0xee +# CHECK: r17 -= mpyu(r21.l, r31.h):<<1 +0x51 0xdf 0xf5 0xee +# CHECK: r17 -= mpyu(r21.h, r31.l):<<1 +0x71 0xdf 0xf5 0xee +# CHECK: r17 -= mpyu(r21.h, r31.h):<<1 + +# Polynomial multiply words +0xf0 0xdf 0x55 0xe5 +# CHECK: r17:16 = pmpyw(r21, r31) +0xf0 0xdf 0x35 0xe7 +# CHECK: r17:16 ^= pmpyw(r21, r31) + +# Vector reduce multiply word by signed half (32x16) +0x50 0xde 0x34 0xe8 +# CHECK: r17:16 = vrmpywoh(r21:20, r31:30) +0x50 0xde 0xb4 0xe8 +# CHECK: r17:16 = vrmpywoh(r21:20, r31:30):<<1 +0x90 0xde 0x54 0xe8 +# CHECK: r17:16 = vrmpyweh(r21:20, r31:30) +0x90 0xde 0xd4 0xe8 +# CHECK: r17:16 = vrmpyweh(r21:20, r31:30):<<1 +0xd0 0xde 0x74 0xea +# CHECK: r17:16 += vrmpywoh(r21:20, r31:30) +0xd0 0xde 0xf4 0xea +# CHECK: r17:16 += vrmpywoh(r21:20, r31:30):<<1 +0xd0 0xde 0x34 0xea +# CHECK: r17:16 += vrmpyweh(r21:20, r31:30) +0xd0 0xde 0xb4 0xea +# CHECK: r17:16 += vrmpyweh(r21:20, r31:30):<<1 + +# Multiply and use upper result +0x31 0xdf 0x15 0xed +# CHECK: r17 = mpy(r21, r31) +0x31 0xdf 0x35 0xed +# CHECK: r17 = mpy(r21, r31):rnd +0x31 0xdf 0x55 0xed +# CHECK: r17 = mpyu(r21, r31) +0x31 0xdf 0x75 0xed +# CHECK: r17 = mpysu(r21, r31) +0x11 0xdf 0xb5 0xed +# CHECK: r17 = mpy(r21, r31.h):<<1:sat +0x31 0xdf 0xb5 0xed +# CHECK: r17 = mpy(r21, r31.l):<<1:sat +0x91 0xdf 0xb5 0xed +# CHECK: r17 = mpy(r21, r31.h):<<1:rnd:sat +0x11 0xdf 0xf5 0xed +# CHECK: r17 = mpy(r21, r31):<<1:sat +0x91 0xdf 0xf5 0xed +# CHECK: r17 = mpy(r21, r31.l):<<1:rnd:sat +0x51 0xdf 0xb5 0xed +# CHECK: r17 = mpy(r21, r31):<<1 +0x11 0xdf 0x75 0xef +# CHECK: r17 += mpy(r21, r31):<<1:sat +0x31 0xdf 0x75 0xef +# CHECK: r17 -= mpy(r21, r31):<<1:sat + +# Multiply and use full result +0x10 0xdf 0x15 0xe5 +# CHECK: r17:16 = mpy(r21, r31) +0x10 0xdf 0x55 0xe5 +# CHECK: r17:16 = mpyu(r21, r31) +0x10 0xdf 0x15 0xe7 +# CHECK: r17:16 += mpy(r21, r31) +0x10 0xdf 0x35 0xe7 +# CHECK: r17:16 -= mpy(r21, r31) +0x10 0xdf 0x55 0xe7 +# CHECK: r17:16 += mpyu(r21, r31) +0x10 0xdf 0x75 0xe7 +# CHECK: r17:16 -= mpyu(r21, r31) + +# Vector dual multiply +0x90 0xde 0x14 0xe8 +# CHECK: r17:16 = vdmpy(r21:20, r31:30):sat +0x90 0xde 0x94 0xe8 +# CHECK: r17:16 = vdmpy(r21:20, r31:30):<<1:sat +0x90 0xde 0x14 0xea +# CHECK: r17:16 += vdmpy(r21:20, r31:30):sat +0x90 0xde 0x94 0xea +# CHECK: r17:16 += vdmpy(r21:20, r31:30):<<1:sat + +# Vector dual multiply with round and pack +0x11 0xde 0x14 0xe9 +# CHECK: r17 = vdmpy(r21:20, r31:30):rnd:sat +0x11 0xde 0x94 0xe9 +# CHECK: r17 = vdmpy(r21:20, r31:30):<<1:rnd:sat + +# Vector reduce multiply bytes +0x30 0xde 0x94 0xe8 +# CHECK: r17:16 = vrmpybu(r21:20, r31:30) +0x30 0xde 0xd4 0xe8 +# CHECK: r17:16 = vrmpybsu(r21:20, r31:30) +0x30 0xde 0x94 0xea +# CHECK: r17:16 += vrmpybu(r21:20, r31:30) +0x30 0xde 0xd4 0xea +# CHECK: r17:16 += vrmpybsu(r21:20, r31:30) + +# Vector dual multiply signed by unsigned bytes +0x30 0xde 0xb4 0xe8 +# CHECK: r17:16 = vdmpybsu(r21:20, r31:30):sat +0x30 0xde 0x34 0xea +# CHECK: r17:16 += vdmpybsu(r21:20, r31:30):sat + +# Vector multiply even haldwords +0xd0 0xde 0x14 0xe8 +# CHECK: r17:16 = vmpyeh(r21:20, r31:30):sat +0xd0 0xde 0x94 0xe8 +# CHECK: r17:16 = vmpyeh(r21:20, r31:30):<<1:sat +0x50 0xde 0x34 0xea +# CHECK: r17:16 += vmpyeh(r21:20, r31:30) +0xd0 0xde 0x14 0xea +# CHECK: r17:16 += vmpyeh(r21:20, r31:30):sat +0xd0 0xde 0x94 0xea +# CHECK: r17:16 += vmpyeh(r21:20, r31:30):<<1:sat + +# Vector multiply halfwords +0xb0 0xdf 0x15 0xe5 +# CHECK: r17:16 = vmpyh(r21, r31):sat +0xb0 0xdf 0x95 0xe5 +# CHECK: r17:16 = vmpyh(r21, r31):<<1:sat +0x30 0xdf 0x35 0xe7 +# CHECK: r17:16 += vmpyh(r21, r31) +0xb0 0xdf 0x15 0xe7 +# CHECK: r17:16 += vmpyh(r21, r31):sat +0xb0 0xdf 0x95 0xe7 +# CHECK: r17:16 += vmpyh(r21, r31):<<1:sat + +# Vector multiply halfwords with round and pack +0xf1 0xdf 0x35 0xed +# CHECK: r17 = vmpyh(r21, r31):rnd:sat +0xf1 0xdf 0xb5 0xed +# CHECK: r17 = vmpyh(r21, r31):<<1:rnd:sat + +# Vector multiply halfwords signed by unsigned +0xf0 0xdf 0x15 0xe5 +# CHECK: r17:16 = vmpyhsu(r21, r31):sat +0xf0 0xdf 0x95 0xe5 +# CHECK: r17:16 = vmpyhsu(r21, r31):<<1:sat +0xb0 0xdf 0x75 0xe7 +# CHECK: r17:16 += vmpyhsu(r21, r31):sat +0xb0 0xdf 0xf5 0xe7 +# CHECK: r17:16 += vmpyhsu(r21, r31):<<1:sat + +# Vector reduce multiply halfwords +0x50 0xde 0x14 0xe8 +# CHECK: r17:16 = vrmpyh(r21:20, r31:30) +0x50 0xde 0x14 0xea +# CHECK: r17:16 += vrmpyh(r21:20, r31:30) + +# Vector multiply bytes +0x30 0xdf 0x55 0xe5 +# CHECK: r17:16 = vmpybsu(r21, r31) +0x30 0xdf 0x95 0xe5 +# CHECK: r17:16 = vmpybu(r21, r31) +0x30 0xdf 0x95 0xe7 +# CHECK: r17:16 += vmpybu(r21, r31) +0x30 0xdf 0xd5 0xe7 +# CHECK: r17:16 += vmpybsu(r21, r31) + +# Vector polynomial multiply halfwords +0xf0 0xdf 0xd5 0xe5 +# CHECK: r17:16 = vpmpyh(r21, r31) +0xf0 0xdf 0xb5 0xe7 +# CHECK: r17:16 ^= vpmpyh(r21, r31) diff --git a/test/MC/Disassembler/Hexagon/xtype_perm.txt b/test/MC/Disassembler/Hexagon/xtype_perm.txt new file mode 100644 index 0000000..91d2fc5 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/xtype_perm.txt @@ -0,0 +1,104 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.10.6 XTYPE/PERM + +# CABAC decode bin +0xd0 0xde 0xd4 0xc1 +# CHECK: r17:16 = decbin(r21:20, r31:30) + +# Saturate +0x11 0xc0 0xd4 0x88 +# CHECK: r17 = sat(r21:20) +0x91 0xc0 0xd5 0x8c +# CHECK: r17 = sath(r21) +0xb1 0xc0 0xd5 0x8c +# CHECK: r17 = satuh(r21) +0xd1 0xc0 0xd5 0x8c +# CHECK: r17 = satub(r21) +0xf1 0xc0 0xd5 0x8c +# CHECK: r17 = satb(r21) + +# Swizzle bytes +0xf1 0xc0 0x95 0x8c +# CHECK: r17 = swiz(r21) + +# Vector align +0x70 0xd4 0x1e 0xc2 +# CHECK: r17:16 = valignb(r21:20, r31:30, p3) +0x70 0xde 0x94 0xc2 +# CHECK: r17:16 = vspliceb(r21:20, r31:30, p3) + +# Vector round and pack +0x91 0xc0 0x94 0x88 +# CHECK: r17 = vrndwh(r21:20) +0xd1 0xc0 0x94 0x88 +# CHECK: r17 = vrndwh(r21:20):sat + +# Vector saturate and pack +0x11 0xc0 0x14 0x88 +# CHECK: r17 = vsathub(r21:20) +0x51 0xc0 0x14 0x88 +# CHECK: r17 = vsatwh(r21:20) +0x91 0xc0 0x14 0x88 +# CHECK: r17 = vsatwuh(r21:20) +0xd1 0xc0 0x14 0x88 +# CHECK: r17 = vsathb(r21:20) +0x11 0xc0 0x95 0x8c +# CHECK: r17 = vsathb(r21) +0x51 0xc0 0x95 0x8c +# CHECK: r17 = vsathub(r21) + +# Vector saturate without pack +0x90 0xc0 0x14 0x80 +# CHECK: r17:16 = vsathub(r21:20) +0xb0 0xc0 0x14 0x80 +# CHECK: r17:16 = vsatwuh(r21:20) +0xd0 0xc0 0x14 0x80 +# CHECK: r17:16 = vsatwh(r21:20) +0xf0 0xc0 0x14 0x80 +# CHECK: r17:16 = vsathb(r21:20) + +# Vector shuffle +0x50 0xde 0x14 0xc1 +# CHECK: r17:16 = shuffeb(r21:20, r31:30) +0x90 0xd4 0x1e 0xc1 +# CHECK: r17:16 = shuffob(r21:20, r31:30) +0xd0 0xde 0x14 0xc1 +# CHECK: r17:16 = shuffeh(r21:20, r31:30) +0x10 0xd4 0x9e 0xc1 +# CHECK: r17:16 = shuffoh(r21:20, r31:30) + +# Vector splat bytes +0xf1 0xc0 0x55 0x8c +# CHECK: r17 = vsplatb(r21) + +# Vector splat halfwords +0x50 0xc0 0x55 0x84 +# CHECK: r17:16 = vsplath(r21) + +# Vector splice +0x70 0xde 0x94 0xc0 +# CHECK: r17:16 = vspliceb(r21:20, r31:30, #3) +0x70 0xde 0x94 0xc2 +# CHECK: r17:16 = vspliceb(r21:20, r31:30, p3) + +# Vector sign extend +0x10 0xc0 0x15 0x84 +# CHECK: r17:16 = vsxtbh(r21) +0x90 0xc0 0x15 0x84 +# CHECK: r17:16 = vsxthw(r21) + +# Vector truncate +0x11 0xc0 0x94 0x88 +# CHECK: r17 = vtrunohb(r21:20) +0x51 0xc0 0x94 0x88 +# CHECK: r17 = vtrunehb(r21:20) +0x50 0xde 0x94 0xc1 +# CHECK: r17:16 = vtrunewh(r21:20, r31:30) +0x90 0xde 0x94 0xc1 +# CHECK: r17:16 = vtrunowh(r21:20, r31:30) + +# Vector zero extend +0x50 0xc0 0x15 0x84 +# CHECK: r17:16 = vzxtbh(r21) +0xd0 0xc0 0x15 0x84 +# CHECK: r17:16 = vzxthw(r21) diff --git a/test/MC/Disassembler/Hexagon/xtype_pred.txt b/test/MC/Disassembler/Hexagon/xtype_pred.txt new file mode 100644 index 0000000..cec6d1b --- /dev/null +++ b/test/MC/Disassembler/Hexagon/xtype_pred.txt @@ -0,0 +1,136 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.10.7 XTYPE/PRED + +# Bounds check +0x83 0xf4 0x10 0xd2 +# CHECK: p3 = boundscheck(r17:16, r21:20):raw:lo +0xa3 0xf4 0x10 0xd2 +# CHECK: p3 = boundscheck(r17:16, r21:20):raw:hi + +# Compare byte +0x43 0xd5 0xd1 0xc7 +# CHECK: p3 = cmpb.gt(r17, r21) +0xc3 0xd5 0xd1 0xc7 +# CHECK: p3 = cmpb.eq(r17, r21) +0xe3 0xd5 0xd1 0xc7 +# CHECK: p3 = cmpb.gtu(r17, r21) +0xa3 0xc2 0x11 0xdd +# CHECK: p3 = cmpb.eq(r17, #21) +0xa3 0xc2 0x31 0xdd +# CHECK: p3 = cmpb.gt(r17, #21) +0xa3 0xc2 0x51 0xdd +# CHECK: p3 = cmpb.gtu(r17, #21) + +# Compare half +0x63 0xd5 0xd1 0xc7 +# CHECK: p3 = cmph.eq(r17, r21) +0x83 0xd5 0xd1 0xc7 +# CHECK: p3 = cmph.gt(r17, r21) +0xa3 0xd5 0xd1 0xc7 +# CHECK: p3 = cmph.gtu(r17, r21) +0xab 0xc2 0x11 0xdd +# CHECK: p3 = cmph.eq(r17, #21) +0xab 0xc2 0x31 0xdd +# CHECK: p3 = cmph.gt(r17, #21) +0xab 0xc2 0x51 0xdd +# CHECK: p3 = cmph.gtu(r17, #21) + +# Compare doublewords +0x03 0xde 0x94 0xd2 +# CHECK: p3 = cmp.eq(r21:20, r31:30) +0x43 0xde 0x94 0xd2 +# CHECK: p3 = cmp.gt(r21:20, r31:30) +0x83 0xde 0x94 0xd2 +# CHECK: p3 = cmp.gtu(r21:20, r31:30) + +# Compare bitmask +0x03 0xd5 0x91 0x85 +# CHECK: p3 = bitsclr(r17, #21) +0x03 0xd5 0xb1 0x85 +# CHECK: p3 = !bitsclr(r17, #21) +0x03 0xd5 0x51 0xc7 +# CHECK: p3 = bitsset(r17, r21) +0x03 0xd5 0x71 0xc7 +# CHECK: p3 = !bitsset(r17, r21) +0x03 0xd5 0x91 0xc7 +# CHECK: p3 = bitsclr(r17, r21) +0x03 0xd5 0xb1 0xc7 +# CHECK: p3 = !bitsclr(r17, r21) + +# mask generate from predicate +0x10 0xc3 0x00 0x86 +# CHECK: r17:16 = mask(p3) + +# Check for TLB match +0x63 0xf5 0x10 0xd2 +# CHECK: p3 = tlbmatch(r17:16, r21) + +# Predicate Transfer +0x03 0xc0 0x45 0x85 +# CHECK: p3 = r5 +0x05 0xc0 0x43 0x89 +# CHECK: r5 = p3 + +# Test bit +0x03 0xd5 0x11 0x85 +# CHECK: p3 = tstbit(r17, #21) +0x03 0xd5 0x31 0x85 +# CHECK: p3 = !tstbit(r17, #21) +0x03 0xd5 0x11 0xc7 +# CHECK: p3 = tstbit(r17, r21) +0x03 0xd5 0x31 0xc7 +# CHECK: p3 = !tstbit(r17, r21) + +# Vector compare halfwords +0x63 0xde 0x14 0xd2 +# CHECK: p3 = vcmph.eq(r21:20, r31:30) +0x83 0xde 0x14 0xd2 +# CHECK: p3 = vcmph.gt(r21:20, r31:30) +0xa3 0xde 0x14 0xd2 +# CHECK: p3 = vcmph.gtu(r21:20, r31:30) +0xeb 0xc3 0x14 0xdc +# CHECK: p3 = vcmph.eq(r21:20, #31) +0xeb 0xc3 0x34 0xdc +# CHECK: p3 = vcmph.gt(r21:20, #31) +0xeb 0xc3 0x54 0xdc +# CHECK: p3 = vcmph.gtu(r21:20, #31) + +# Vector compare bytes for any match +0x03 0xfe 0x14 0xd2 +# CHECK: p3 = any8(vcmpb.eq(r21:20, r31:30)) + +# Vector compare bytes +0x63 0xde 0x14 0xd2 +# CHECK: p3 = vcmph.eq(r21:20, r31:30) +0x83 0xde 0x14 0xd2 +# CHECK: p3 = vcmph.gt(r21:20, r31:30) +0xa3 0xde 0x14 0xd2 +# CHECK: p3 = vcmph.gtu(r21:20, r31:30) +0xeb 0xc3 0x14 0xdc +# CHECK: p3 = vcmph.eq(r21:20, #31) +0xeb 0xc3 0x34 0xdc +# CHECK: p3 = vcmph.gt(r21:20, #31) +0xeb 0xc3 0x54 0xdc +# CHECK: p3 = vcmph.gtu(r21:20, #31) + +# Vector compare words +0x03 0xde 0x14 0xd2 +# CHECK: p3 = vcmpw.eq(r21:20, r31:30) +0x23 0xde 0x14 0xd2 +# CHECK: p3 = vcmpw.gt(r21:20, r31:30) +0x43 0xde 0x14 0xd2 +# CHECK: p3 = vcmpw.gtu(r21:20, r31:30) +0xf3 0xc3 0x14 0xdc +# CHECK: p3 = vcmpw.eq(r21:20, #31) +0xf3 0xc3 0x34 0xdc +# CHECK: p3 = vcmpw.gt(r21:20, #31) +0xf3 0xc3 0x54 0xdc +# CHECK: p3 = vcmpw.gtu(r21:20, #31) + +# Viterbi pack even and odd predicate bits +0x11 0xc2 0x03 0x89 +# CHECK: r17 = vitpack(p3, p2) + +# Vector mux +0x70 0xde 0x14 0xd1 +# CHECK: r17:16 = vmux(p3, r21:20, r31:30) diff --git a/test/MC/Disassembler/Hexagon/xtype_shift.txt b/test/MC/Disassembler/Hexagon/xtype_shift.txt new file mode 100644 index 0000000..e2d6816 --- /dev/null +++ b/test/MC/Disassembler/Hexagon/xtype_shift.txt @@ -0,0 +1,260 @@ +# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s +# Hexagon Programmer's Reference Manual 11.10.8 XTYPE/SHIFT + +# Shift by immediate +0x10 0xdf 0x14 0x80 +# CHECK: r17:16 = asr(r21:20, #31) +0x30 0xdf 0x14 0x80 +# CHECK: r17:16 = lsr(r21:20, #31) +0x50 0xdf 0x14 0x80 +# CHECK: r17:16 = asl(r21:20, #31) +0x11 0xdf 0x15 0x8c +# CHECK: r17 = asr(r21, #31) +0x31 0xdf 0x15 0x8c +# CHECK: r17 = lsr(r21, #31) +0x51 0xdf 0x15 0x8c +# CHECK: r17 = asl(r21, #31) + +# Shift by immediate and accumulate +0x10 0xdf 0x14 0x82 +# CHECK: r17:16 -= asr(r21:20, #31) +0x30 0xdf 0x14 0x82 +# CHECK: r17:16 -= lsr(r21:20, #31) +0x50 0xdf 0x14 0x82 +# CHECK: r17:16 -= asl(r21:20, #31) +0x90 0xdf 0x14 0x82 +# CHECK: r17:16 += asr(r21:20, #31) +0xb0 0xdf 0x14 0x82 +# CHECK: r17:16 += lsr(r21:20, #31) +0xd0 0xdf 0x14 0x82 +# CHECK: r17:16 += asl(r21:20, #31) +0x11 0xdf 0x15 0x8e +# CHECK: r17 -= asr(r21, #31) +0x31 0xdf 0x15 0x8e +# CHECK: r17 -= lsr(r21, #31) +0x51 0xdf 0x15 0x8e +# CHECK: r17 -= asl(r21, #31) +0x91 0xdf 0x15 0x8e +# CHECK: r17 += asr(r21, #31) +0xb1 0xdf 0x15 0x8e +# CHECK: r17 += lsr(r21, #31) +0xd1 0xdf 0x15 0x8e +# CHECK: r17 += asl(r21, #31) +0x4c 0xf7 0x11 0xde +# CHECK: r17 = add(#21, asl(r17, #23)) +0x4e 0xf7 0x11 0xde +# CHECK: r17 = sub(#21, asl(r17, #23)) +0x5c 0xf7 0x11 0xde +# CHECK: r17 = add(#21, lsr(r17, #23)) +0x5e 0xf7 0x11 0xde +# CHECK: r17 = sub(#21, lsr(r17, #23)) + +# Shift by immediate and add +0xf1 0xd5 0x1f 0xc4 +# CHECK: r17 = addasl(r21, r31, #7) + +# Shift by immediate and logical +0x10 0xdf 0x54 0x82 +# CHECK: r17:16 &= asr(r21:20, #31) +0x30 0xdf 0x54 0x82 +# CHECK: r17:16 &= lsr(r21:20, #31) +0x50 0xdf 0x54 0x82 +# CHECK: r17:16 &= asl(r21:20, #31) +0x90 0xdf 0x54 0x82 +# CHECK: r17:16 |= asr(r21:20, #31) +0xb0 0xdf 0x54 0x82 +# CHECK: r17:16 |= lsr(r21:20, #31) +0xd0 0xdf 0x54 0x82 +# CHECK: r17:16 |= asl(r21:20, #31) +0x30 0xdf 0x94 0x82 +# CHECK: r17:16 ^= lsr(r21:20, #31) +0x50 0xdf 0x94 0x82 +# CHECK: r17:16 ^= asl(r21:20, #31) +0x11 0xdf 0x55 0x8e +# CHECK: r17 &= asr(r21, #31) +0x31 0xdf 0x55 0x8e +# CHECK: r17 &= lsr(r21, #31) +0x51 0xdf 0x55 0x8e +# CHECK: r17 &= asl(r21, #31) +0x91 0xdf 0x55 0x8e +# CHECK: r17 |= asr(r21, #31) +0xb1 0xdf 0x55 0x8e +# CHECK: r17 |= lsr(r21, #31) +0xd1 0xdf 0x55 0x8e +# CHECK: r17 |= asl(r21, #31) +0x31 0xdf 0x95 0x8e +# CHECK: r17 ^= lsr(r21, #31) +0x51 0xdf 0x95 0x8e +# CHECK: r17 ^= asl(r21, #31) +0x48 0xff 0x11 0xde +# CHECK: r17 = and(#21, asl(r17, #31)) +0x4a 0xff 0x11 0xde +# CHECK: r17 = or(#21, asl(r17, #31)) +0x58 0xff 0x11 0xde +# CHECK: r17 = and(#21, lsr(r17, #31)) +0x5a 0xff 0x11 0xde +# CHECK: r17 = or(#21, lsr(r17, #31)) + +# Shift right by immediate with rounding +0xf0 0xdf 0xd4 0x80 +# CHECK: r17:16 = asr(r21:20, #31):rnd +0x11 0xdf 0x55 0x8c +# CHECK: r17 = asr(r21, #31):rnd + +# Shift left by immediate with saturation +0x51 0xdf 0x55 0x8c +# CHECK: r17 = asl(r21, #31):sat + +# Shift by register +0x10 0xdf 0x94 0xc3 +# CHECK: r17:16 = asr(r21:20, r31) +0x50 0xdf 0x94 0xc3 +# CHECK: r17:16 = lsr(r21:20, r31) +0x90 0xdf 0x94 0xc3 +# CHECK: r17:16 = asl(r21:20, r31) +0xd0 0xdf 0x94 0xc3 +# CHECK: r17:16 = lsl(r21:20, r31) +0x11 0xdf 0x55 0xc6 +# CHECK: r17 = asr(r21, r31) +0x51 0xdf 0x55 0xc6 +# CHECK: r17 = lsr(r21, r31) +0x91 0xdf 0x55 0xc6 +# CHECK: r17 = asl(r21, r31) +0xd1 0xdf 0x55 0xc6 +# CHECK: r17 = lsl(r21, r31) +0xf1 0xdf 0x8a 0xc6 +# CHECK: r17 = lsl(#21, r31) + +# Shift by register and accumulate +0x10 0xdf 0x94 0xcb +# CHECK: r17:16 -= asr(r21:20, r31) +0x50 0xdf 0x94 0xcb +# CHECK: r17:16 -= lsr(r21:20, r31) +0x90 0xdf 0x94 0xcb +# CHECK: r17:16 -= asl(r21:20, r31) +0xd0 0xdf 0x94 0xcb +# CHECK: r17:16 -= lsl(r21:20, r31) +0x10 0xdf 0xd4 0xcb +# CHECK: r17:16 += asr(r21:20, r31) +0x50 0xdf 0xd4 0xcb +# CHECK: r17:16 += lsr(r21:20, r31) +0x90 0xdf 0xd4 0xcb +# CHECK: r17:16 += asl(r21:20, r31) +0xd0 0xdf 0xd4 0xcb +# CHECK: r17:16 += lsl(r21:20, r31) +0x11 0xdf 0x95 0xcc +# CHECK: r17 -= asr(r21, r31) +0x51 0xdf 0x95 0xcc +# CHECK: r17 -= lsr(r21, r31) +0x91 0xdf 0x95 0xcc +# CHECK: r17 -= asl(r21, r31) +0xd1 0xdf 0x95 0xcc +# CHECK: r17 -= lsl(r21, r31) +0x11 0xdf 0xd5 0xcc +# CHECK: r17 += asr(r21, r31) +0x51 0xdf 0xd5 0xcc +# CHECK: r17 += lsr(r21, r31) +0x91 0xdf 0xd5 0xcc +# CHECK: r17 += asl(r21, r31) +0xd1 0xdf 0xd5 0xcc +# CHECK: r17 += lsl(r21, r31) + +# Shift by register and logical +0x10 0xdf 0x14 0xcb +# CHECK: r17:16 |= asr(r21:20, r31) +0x50 0xdf 0x14 0xcb +# CHECK: r17:16 |= lsr(r21:20, r31) +0x90 0xdf 0x14 0xcb +# CHECK: r17:16 |= asl(r21:20, r31) +0xd0 0xdf 0x14 0xcb +# CHECK: r17:16 |= lsl(r21:20, r31) +0x10 0xdf 0x54 0xcb +# CHECK: r17:16 &= asr(r21:20, r31) +0x50 0xdf 0x54 0xcb +# CHECK: r17:16 &= lsr(r21:20, r31) +0x90 0xdf 0x54 0xcb +# CHECK: r17:16 &= asl(r21:20, r31) +0xd0 0xdf 0x54 0xcb +# CHECK: r17:16 &= lsl(r21:20, r31) +0x10 0xdf 0x74 0xcb +# CHECK: r17:16 ^= asr(r21:20, r31) +0x50 0xdf 0x74 0xcb +# CHECK: r17:16 ^= lsr(r21:20, r31) +0x90 0xdf 0x74 0xcb +# CHECK: r17:16 ^= asl(r21:20, r31) +0xd0 0xdf 0x74 0xcb +# CHECK: r17:16 ^= lsl(r21:20, r31) +0x11 0xdf 0x15 0xcc +# CHECK: r17 |= asr(r21, r31) +0x51 0xdf 0x15 0xcc +# CHECK: r17 |= lsr(r21, r31) +0x91 0xdf 0x15 0xcc +# CHECK: r17 |= asl(r21, r31) +0xd1 0xdf 0x15 0xcc +# CHECK: r17 |= lsl(r21, r31) +0x11 0xdf 0x55 0xcc +# CHECK: r17 &= asr(r21, r31) +0x51 0xdf 0x55 0xcc +# CHECK: r17 &= lsr(r21, r31) +0x91 0xdf 0x55 0xcc +# CHECK: r17 &= asl(r21, r31) +0xd1 0xdf 0x55 0xcc +# CHECK: r17 &= lsl(r21, r31) + +# Shift by register with saturation +0x11 0xdf 0x15 0xc6 +# CHECK: r17 = asr(r21, r31):sat +0x91 0xdf 0x15 0xc6 +# CHECK: r17 = asl(r21, r31):sat + +# Vector shift halfwords by immediate +0x10 0xc5 0x94 0x80 +# CHECK: r17:16 = vasrh(r21:20, #5) +0x30 0xc5 0x94 0x80 +# CHECK: r17:16 = vlsrh(r21:20, #5) +0x50 0xc5 0x94 0x80 +# CHECK: r17:16 = vaslh(r21:20, #5) + +# Vector arithmetic shift halfwords with round +0x10 0xc5 0x34 0x80 +# CHECK: r17:16 = vasrh(r21:20, #5):raw + +# Vector arithmetic shift halfwords with saturate and pack +0x91 0xc5 0x74 0x88 +# CHECK: r17 = vasrhub(r21:20, #5):raw +0xb1 0xc5 0x74 0x88 +# CHECK: r17 = vasrhub(r21:20, #5):sat + +# Vector shift halfwords by register +0x10 0xdf 0x54 0xc3 +# CHECK: r17:16 = vasrh(r21:20, r31) +0x50 0xdf 0x54 0xc3 +# CHECK: r17:16 = vlsrh(r21:20, r31) +0x90 0xdf 0x54 0xc3 +# CHECK: r17:16 = vaslh(r21:20, r31) +0xd0 0xdf 0x54 0xc3 +# CHECK: r17:16 = vlslh(r21:20, r31) + +# Vector shift words by immediate +0x10 0xdf 0x54 0x80 +# CHECK: r17:16 = vasrw(r21:20, #31) +0x30 0xdf 0x54 0x80 +# CHECK: r17:16 = vlsrw(r21:20, #31) +0x50 0xdf 0x54 0x80 +# CHECK: r17:16 = vaslw(r21:20, #31) + +# Vector shift words by register +0x10 0xdf 0x14 0xc3 +# CHECK: r17:16 = vasrw(r21:20, r31) +0x50 0xdf 0x14 0xc3 +# CHECK: r17:16 = vlsrw(r21:20, r31) +0x90 0xdf 0x14 0xc3 +# CHECK: r17:16 = vaslw(r21:20, r31) +0xd0 0xdf 0x14 0xc3 +# CHECK: r17:16 = vlslw(r21:20, r31) + +# Vector shift words with truncate and pack +0x51 0xdf 0xd4 0x88 +# CHECK: r17 = vasrw(r21:20, #31) +0x51 0xdf 0x14 0xc5 +# CHECK: r17 = vasrw(r21:20, r31) diff --git a/test/MC/Disassembler/Mips/micromips.txt b/test/MC/Disassembler/Mips/micromips.txt index 6464824..2b75d46 100644 --- a/test/MC/Disassembler/Mips/micromips.txt +++ b/test/MC/Disassembler/Mips/micromips.txt @@ -16,6 +16,21 @@ # CHECK: addiu $9, $6, -15001 0x31 0x26 0xc5 0x67 +# CHECK: addiusp -16 +0x4f 0xf9 + +# CHECK: addiusp -1028 +0x4f 0xff + +# CHECK: addiusp -1032 +0x4f 0xfd + +# CHECK: addiusp 1024 +0x4c 0x01 + +# CHECK: addiusp 1028 +0x4c 0x03 + # CHECK: addu $9, $6, $7 0x00 0xe6 0x49 0x50 @@ -61,6 +76,9 @@ # CHECK: andi $9, $6, 17767 0xd1 0x26 0x45 0x67 +# CHECK: andi16 $16, $2, 31 +0x2c 0x29 + # CHECK: or $3, $4, $5 0x00 0xa4 0x1a 0x90 @@ -136,6 +154,9 @@ # CHECK: lw $6, 4($5) 0xfc 0xc5 0x00 0x04 +# CHECK: lw $6, 123($sp) +0xfc 0xdd 0x00 0x7b + # CHECK: sb $5, 8($4) 0x18 0xa4 0x00 0x08 @@ -145,6 +166,9 @@ # CHECK: sw $5, 4($6) 0xf8 0xa6 0x00 0x04 +# CHECK: sw $5, 123($sp) +0xf8 0xbd 0x00 0x7b + # CHECK: lwu $2, 8($4) 0x60 0x44 0xe0 0x08 @@ -229,6 +253,9 @@ # CHECK: jr $7 0x00 0x07 0x0f 0x3c +# CHECK: jraddiusp 20 +0x47 0x05 + # CHECK: beq $9, $6, 1332 0x94 0xc9 0x02 0x9a @@ -289,6 +316,21 @@ # CHECK: tnei $9, 17767 0x41 0x89 0x45 0x67 +# CHECK: cache 1, 8($5) +0x20 0x25 0x60 0x08 + +# CHECK: pref 1, 8($5) +0x60 0x25 0x20 0x08 + +# CHECK: ssnop +0x00 0x00 0x08 0x00 + +# CHECK: ehb +0x00 0x00 0x18 0x00 + +# CHECK: pause +0x00 0x00 0x28 0x00 + # CHECK: ll $2, 8($4) 0x60 0x44 0x30 0x08 @@ -321,3 +363,144 @@ # CHECK: swm32 $16, $17, 8($4) 0x20 0x44 0xd0 0x08 + +# CHECK: swp $16, 8($4) +0x22 0x04 0x90 0x08 + +# CHECK: lwp $16, 8($4) +0x22 0x04 0x10 0x08 + +# CHECK: nop +0x00 0x00 0x00 0x00 + +# CHECK: addiupc $2, 20 +0x79 0x00 0x00 0x05 + +# CHECK: addiupc $7, 16777212 +0x7b 0xbf 0xff 0xff + +# CHECK: addiupc $7, -16777216 +0x7b 0xc0 0x00 0x00 + +# CHECK: addu16 $6, $17, $4 +0x07 0x42 + +# CHECK: subu16 $5, $16, $3 +0x06 0xb1 + +# CHECK: and16 $16, $2 +0x44 0x82 + +# CHECK: not16 $17, $3 +0x44 0x0b + +# CHECK: or16 $16, $4 +0x44 0xc4 + +# CHECK: xor16 $17, $5 +0x44 0x4d + +# CHECK: sll16 $3, $16, 5 +0x25 0x8a + +# CHECK: srl16 $4, $17, 6 +0x26 0x1d + +# CHECK: lbu16 $3, 4($17) +0x09 0x94 + +# CHECK: lbu16 $3, -1($16) +0x09 0x8f + +# CHECK: lhu16 $3, 4($16) +0x29 0x82 + +# CHECK: lw16 $4, 8($17) +0x6a 0x12 + +# CHECK: sb16 $3, 4($16) +0x89 0x84 + +# CHECK: sh16 $4, 8($17) +0xaa 0x14 + +# CHECK: sw16 $4, 4($17) +0xea 0x11 + +# CHECK: sw16 $zero, 4($17) +0xe8 0x11 + +# CHECK: mfhi $9 +0x46 0x09 + +# CHECK: mflo $9 +0x46 0x49 + +# CHECK: move $25, $1 +0x0f 0x21 + +# CHECK: jrc $9 +0x45 0xa9 + +# CHECK: jalr $9 +0x45 0xc9 + +# CHECK: jalrs16 $9 +0x45 0xe9 + +# CHECK: jr16 $9 +0x45 0x89 + +# CHECK: li16 $3, -1 +0xed 0xff + +# CHECK: li16 $3, 126 +0xed 0xfe + +# CHECK: addiur1sp $7, 4 +0x6f 0x83 + +# CHECK: addiur2 $6, $7, -1 +0x6f 0x7e + +# CHECK: addiur2 $6, $7, 12 +0x6f 0x76 + +# CHECK: addius5 $7, -2 +0x4c 0xfc + +# CHECK: nop +0x0c 0x00 + +# CHECK: lw $3, 32($sp) +0x48 0x68 + +# CHECK: sw $4, 124($sp) +0xc8 0x9f + +# CHECK: beqz16 $6, 20 +0x8f 0x0a + +# CHECK: bnez16 $6, 20 +0xaf 0x0a + +# CHECK: b16 132 +0xcc 0x42 + +# CHECK: lw $3, 32($gp) +0x65 0x88 + +# CHECK: lwm16 $16, $17, $ra, 8($sp) +0x45 0x12 + +# CHECK: swm16 $16, $17, $ra, 8($sp) +0x45 0x52 + +# CHECK: break16 8 +0x46 0x88 + +# CHECK: sdbbp16 14 +0x46 0xce + +# CHECK: movep $5, $6, $2, $3 +0x84 0x34 diff --git a/test/MC/Disassembler/Mips/micromips_le.txt b/test/MC/Disassembler/Mips/micromips_le.txt index d4dbc46..3f3b325 100644 --- a/test/MC/Disassembler/Mips/micromips_le.txt +++ b/test/MC/Disassembler/Mips/micromips_le.txt @@ -16,9 +16,27 @@ # CHECK: addiu $9, $6, -15001 0x26 0x31 0x67 0xc5 +# CHECK: addiusp -16 +0xf9 0x4f + +# CHECK: addiusp -1028 +0xff 0x4f + +# CHECK: addiusp -1032 +0xfd 0x4f + +# CHECK: addiusp 1024 +0x01 0x4c + +# CHECK: addiusp 1028 +0x03 0x4c + # CHECK: addu $9, $6, $7 0xe6 0x00 0x50 0x49 +# CHECK: andi16 $16, $2, 31 +0x29 0x2c + # CHECK: sub $9, $6, $7 0xe6 0x00 0x90 0x49 @@ -136,6 +154,9 @@ # CHECK: lw $6, 4($5) 0xc5 0xfc 0x04 0x00 +# CHECK: lw $6, 123($sp) +0xdd 0xfc 0x7b 0x00 + # CHECK: sb $5, 8($4) 0xa4 0x18 0x08 0x00 @@ -145,6 +166,9 @@ # CHECK: sw $5, 4($6) 0xa6 0xf8 0x04 0x00 +# CHECK: sw $5, 123($sp) +0xbd 0xf8 0x7b 0x00 + # CHECK: lwu $2, 8($4) 0x44 0x60 0x08 0xe0 @@ -229,6 +253,9 @@ # CHECK: jr $7 0x07 0x00 0x3c 0x0f +# CHECK: jraddiusp 20 +0x05 0x47 + # CHECK: beq $9, $6, 1332 0xc9 0x94 0x9a 0x02 @@ -289,6 +316,21 @@ # CHECK: tnei $9, 17767 0x89 0x41 0x67 0x45 +# CHECK: cache 1, 8($5) +0x25 0x20 0x08 0x60 + +# CHECK: pref 1, 8($5) +0x25 0x60 0x08 0x20 + +# CHECK: ssnop +0x00 0x00 0x00 0x08 + +# CHECK: ehb +0x00 0x00 0x00 0x18 + +# CHECK: pause +0x00 0x00 0x00 0x28 + # CHECK: ll $2, 8($4) 0x44 0x60 0x08 0x30 @@ -321,3 +363,144 @@ # CHECK: swm32 $16, $17, 8($4) 0x44 0x20 0x08 0xd0 + +# CHECK: swp $16, 8($4) +0x04 0x22 0x08 0x90 + +# CHECK: lwp $16, 8($4) +0x04 0x22 0x08 0x10 + +# CHECK: nop +0x00 0x00 0x00 0x00 + +# CHECK: addiupc $2, 20 +0x00 0x79 0x05 0x00 + +# CHECK: addiupc $7, 16777212 +0xbf 0x7b 0xff 0xff + +# CHECK: addiupc $7, -16777216 +0xc0 0x7b 0x00 0x00 + +# CHECK: addu16 $6, $17, $4 +0x42 0x07 + +# CHECK: subu16 $5, $16, $3 +0xb1 0x06 + +# CHECK: and16 $16, $2 +0x82 0x44 + +# CHECK: not16 $17, $3 +0x0b 0x44 + +# CHECK: or16 $16, $4 +0xc4 0x44 + +# CHECK: xor16 $17, $5 +0x4d 0x44 + +# CHECK: sll16 $3, $16, 5 +0x8a 0x25 + +# CHECK: srl16 $4, $17, 6 +0x1d 0x26 + +# CHECK: lbu16 $3, 4($17) +0x94 0x09 + +# CHECK: lbu16 $3, -1($16) +0x8f 0x09 + +# CHECK: lhu16 $3, 4($16) +0x82 0x29 + +# CHECK: lw16 $4, 8($17) +0x12 0x6a + +# CHECK: sb16 $3, 4($16) +0x84 0x89 + +# CHECK: sh16 $4, 8($17) +0x14 0xaa + +# CHECK: sw16 $4, 4($17) +0x11 0xea + +# CHECK: sw16 $zero, 4($17) +0x11 0xe8 + +# CHECK: mfhi $9 +0x09 0x46 + +# CHECK: mflo $9 +0x49 0x46 + +# CHECK: move $25, $1 +0x21 0x0f + +# CHECK: jrc $9 +0xa9 0x45 + +# CHECK: jalr $9 +0xc9 0x45 + +# CHECK: jalrs16 $9 +0xe9 0x45 + +# CHECK: jr16 $9 +0x89 0x45 + +# CHECK: li16 $3, -1 +0xff 0xed + +# CHECK: li16 $3, 126 +0xfe 0xed + +# CHECK: addiur1sp $7, 4 +0x83 0x6f + +# CHECK: addiur2 $6, $7, -1 +0x7e 0x6f + +# CHECK: addiur2 $6, $7, 12 +0x76 0x6f + +# CHECK: addius5 $7, -2 +0xfc 0x4c + +# CHECK: nop +0x00 0x0c + +# CHECK: lw $3, 32($sp) +0x68 0x48 + +# CHECK: sw $4, 124($sp) +0x9f 0xc8 + +# CHECK: beqz16 $6, 20 +0x0a 0x8f + +# CHECK: bnez16 $6, 20 +0x0a 0xaf + +# CHECK: b16 132 +0x42 0xcc + +# CHECK: lw $3, 32($gp) +0x88 0x65 + +# CHECK: lwm16 $16, $17, $ra, 8($sp) +0x12 0x45 + +# CHECK: swm16 $16, $17, $ra, 8($sp) +0x52 0x45 + +# CHECK: break16 8 +0x88 0x46 + +# CHECK: sdbbp16 14 +0xce 0x46 + +# CHECK: movep $5, $6, $2, $3 +0x34 0x84 diff --git a/test/MC/Disassembler/Mips/mips1/valid-mips1-el.txt b/test/MC/Disassembler/Mips/mips1/valid-mips1-el.txt new file mode 100644 index 0000000..dba949a --- /dev/null +++ b/test/MC/Disassembler/Mips/mips1/valid-mips1-el.txt @@ -0,0 +1,116 @@ +# RUN: llvm-mc %s -triple=mipsel-unknown-linux -disassemble -mcpu=mips1 | FileCheck %s +# CHECK: .text +0x85 0xc1 0x20 0x46 # CHECK: abs.d $f6, $f24 +0x45 0x82 0x00 0x46 # CHECK: abs.s $f9, $f16 +0x20 0xb8 0x45 0x02 # CHECK: add $23, $18, $5 +0x00 0x30 0x3c 0x46 # CHECK: add.d $f0, $f6, $f28 +0x00 0xaa 0x18 0x46 # CHECK: add.s $f8, $f21, $f24 +0xd2 0x66 0x2d 0x21 # CHECK: addi $13, $9, 26322 +0xfe 0xff 0x08 0x21 # CHECK: addi $8, $8, -2 +0x48 0x3b 0xc9 0x21 # CHECK: addi $9, $14, 15176 +0xe7 0xe3 0x18 0x23 # CHECK: addi $24, $24, -7193 +0x21 0x48 0x86 0x00 # CHECK: addu $9, $4, $6 +0x0a 0x00 0x29 0x25 # CHECK: addiu $9, $9, 10 +0x24 0xb8 0x4c 0x00 # CHECK: and $23, $2, $12 +0x01 0x00 0x00 0x45 # CHECK: bc1f 8 +0x04 0x00 0x42 0x30 # CHECK: andi $2, $2, 4 +0x01 0x00 0x01 0x45 # CHECK: bc1t 8 +0x00 0x00 0x00 0x00 # CHECK: nop +0x9b 0x14 0x11 0x04 # CHECK: bal 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x9b 0x14 0x11 0x04 # CHECK: bal 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x9b 0x14 0xd1 0x04 # CHECK: bgezal $6, 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x9b 0x14 0xd0 0x04 # CHECK: bltzal $6, 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x3b 0xe0 0x3c 0x46 # CHECK: c.ngl.d $f28, $f28 +0x39 0x00 0x30 0x46 # CHECK: c.ngle.d $f0, $f16 +0x38 0xf0 0x20 0x46 # CHECK: c.sf.d $f30, $f0 +0x38 0x70 0x16 0x46 # CHECK: c.sf.s $f14, $f22 +0x00 0xa8 0x51 0x44 # CHECK: cfc1 $17, $21 +0x00 0xd0 0xc6 0x44 # CHECK: ctc1 $6, $26 +0xa1 0xe5 0x00 0x46 # CHECK: cvt.d.s $f22, $f28 +0xa1 0x5e 0x80 0x46 # CHECK: cvt.d.w $f26, $f11 +0xa0 0x46 0x20 0x46 # CHECK: cvt.s.d $f26, $f8 +0xa0 0x7d 0x80 0x46 # CHECK: cvt.s.w $f22, $f15 +0x24 0x75 0x20 0x46 # CHECK: cvt.w.d $f20, $f14 +0x24 0xc5 0x00 0x46 # CHECK: cvt.w.s $f20, $f24 +0x1a 0x00 0x2b 0x03 # CHECK: div $zero, $25, $11 +0x03 0xa7 0x3a 0x46 # CHECK: div.d $f28, $f20, $f26 +0x03 0x29 0x0f 0x46 # CHECK: div.s $f4, $f5, $f15 +0x1b 0x00 0x2f 0x03 # CHECK: divu $zero, $25, $15 +0x4d 0xc7 0x58 0x81 # CHECK: lb $24, -14515($10) +0xf3 0x75 0x68 0x90 # CHECK: lbu $8, 30195($3) +0x94 0xde 0xab 0x86 # CHECK: lh $11, -8556($21) +0xbd 0xa6 0x53 0x94 # CHECK: lhu $19, -22851($2) +0xb3 0x8b 0x01 0x24 # CHECK: addiu $1, $zero, -29773 +0x3f 0x8b 0x00 0x24 # CHECK: addiu $zero, $zero, -29889 +0x2a 0x16 0xa8 0x8c # CHECK: lw $8, 5674($5) +0xf1 0x27 0x50 0xc7 # CHECK: lwc1 $f16, 10225($26) +0xb7 0xfc 0xd2 0xc8 # CHECK: lwc2 $18, -841($6) +0xf7 0x81 0x4a 0xcf # CHECK: lwc3 $10, -32265($26) +0x79 0xef 0xf4 0x89 # CHECK: lwl $20, -4231($15) +0x35 0xb5 0x80 0x9b # CHECK: lwr $zero, -19147($gp) +0x00 0xd8 0x07 0x44 # CHECK: mfc1 $7, $f27 +0x10 0x98 0x00 0x00 # CHECK: mfhi $19 +0x10 0xe8 0x00 0x00 # CHECK: mfhi $sp +0x12 0x88 0x00 0x00 # CHECK: mflo $17 +0x06 0x75 0x20 0x46 # CHECK: mov.d $f20, $f14 +0x86 0xd8 0x00 0x46 # CHECK: mov.s $f2, $f27 +0x21 0xf0 0x80 0x00 # CHECK: move $fp, $4 +0x21 0xc8 0xc0 0x00 # CHECK: move $25, $6 +0x00 0x48 0x9e 0x44 # CHECK: mtc1 $fp, $f9 +0x11 0x00 0x20 0x02 # CHECK: mthi $17 +0x13 0x00 0xa0 0x03 # CHECK: mtlo $sp +0x13 0x00 0x20 0x03 # CHECK: mtlo $25 +0x02 0xa5 0x30 0x46 # CHECK: mul.d $f20, $f20, $f16 +0x82 0x57 0x02 0x46 # CHECK: mul.s $f30, $f10, $f2 +0x18 0x00 0xb4 0x03 # CHECK: mult $sp, $20 +0x18 0x00 0xa2 0x03 # CHECK: mult $sp, $2 +0x19 0x00 0x9a 0x03 # CHECK: multu $gp, $26 +0x19 0x00 0x32 0x01 # CHECK: multu $9, $18 +0x23 0x10 0x02 0x00 # CHECK: negu $2, $2 +0x23 0x10 0x03 0x00 # CHECK: negu $2, $3 +0x87 0x96 0x20 0x46 # CHECK: neg.d $f26, $f18 +0x47 0x78 0x00 0x46 # CHECK: neg.s $f1, $f15 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x38 0x07 0x00 # CHECK: nor $7, $zero, $7 +0x25 0x60 0x1d 0x02 # CHECK: or $12, $16, $sp +0x04 0x00 0x42 0x34 # CHECK: ori $2, $2, 4 +0x6f 0xb2 0xd6 0xa1 # CHECK: sb $22, -19857($14) +0xd0 0xe5 0xee 0xa5 # CHECK: sh $14, -6704($15) +0x80 0x3c 0x07 0x00 # CHECK: sll $7, $7, 18 +0x80 0x3c 0x00 0x00 # CHECK: sll $7, $zero, 18 +0x04 0x38 0x20 0x01 # CHECK: sllv $7, $zero, $9 +0x04 0x38 0x20 0x01 # CHECK: sllv $7, $zero, $9 +0x2a 0xb8 0x7b 0x01 # CHECK: slt $23, $11, $27 +0x11 0x25 0x51 0x29 # CHECK: slti $17, $10, 9489 +0x55 0xc3 0x39 0x2f # CHECK: sltiu $25, $25, -15531 +0x2b 0xa0 0xab 0x02 # CHECK: sltu $20, $21, $11 +0x55 0xc3 0x38 0x2f # CHECK: sltiu $24, $25, -15531 +0xc3 0x8b 0x11 0x00 # CHECK: sra $17, $17, 15 +0xc3 0x8b 0x17 0x00 # CHECK: sra $17, $23, 15 +0x07 0x88 0xb7 0x03 # CHECK: srav $17, $23, $sp +0x07 0x88 0xb7 0x03 # CHECK: srav $17, $23, $sp +0xc2 0x11 0x02 0x00 # CHECK: srl $2, $2, 7 +0xc2 0x11 0x02 0x00 # CHECK: srl $2, $2, 7 +0x06 0xc8 0x94 0x00 # CHECK: srlv $25, $20, $4 +0x06 0xc8 0x94 0x00 # CHECK: srlv $25, $20, $4 +0x40 0x00 0x00 0x00 # CHECK: ssnop +0x22 0xb0 0x6c 0x02 # CHECK: sub $22, $19, $12 +0x36 0x0c 0x36 0x22 # CHECK: addi $22, $17, 3126 +0x90 0xe6 0xad 0x21 # CHECK: addi $13, $13, -6512 +0x81 0x14 0x30 0x46 # CHECK: sub.d $f18, $f2, $f16 +0xc1 0xb5 0x16 0x46 # CHECK: sub.s $f23, $f22, $f22 +0x23 0xe8 0xd6 0x02 # CHECK: subu $sp, $22, $22 +0x50 0xd8 0xbf 0xaf # CHECK: sw $ra, -10160($sp) +0xef 0xde 0x06 0xe7 # CHECK: swc1 $f6, -8465($24) +0x30 0x61 0x19 0xea # CHECK: swc2 $25, 24880($16) +0x7e 0x35 0x6f 0xaa # CHECK: swl $15, 13694($19) +0x22 0x98 0xd1 0xb9 # CHECK: swr $17, -26590($14) +0x08 0x00 0x00 0x42 # CHECK: tlbp +0x01 0x00 0x00 0x42 # CHECK: tlbr +0x02 0x00 0x00 0x42 # CHECK: tlbwi +0x06 0x00 0x00 0x42 # CHECK: tlbwr +0x26 0x90 0x9e 0x00 # CHECK: xor $18, $4, $fp diff --git a/test/MC/Disassembler/Mips/mips1/valid-mips1.txt b/test/MC/Disassembler/Mips/mips1/valid-mips1.txt new file mode 100644 index 0000000..1a4f94f --- /dev/null +++ b/test/MC/Disassembler/Mips/mips1/valid-mips1.txt @@ -0,0 +1,116 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble -mcpu=mips1 | FileCheck %s +# CHECK: .text +0x46 0x20 0xc1 0x85 # CHECK: abs.d $f6, $f24 +0x46 0x00 0x82 0x45 # CHECK: abs.s $f9, $f16 +0x02 0x45 0xb8 0x20 # CHECK: add $23, $18, $5 +0x46 0x3c 0x30 0x00 # CHECK: add.d $f0, $f6, $f28 +0x46 0x18 0xaa 0x00 # CHECK: add.s $f8, $f21, $f24 +0x21 0x2d 0x66 0xd2 # CHECK: addi $13, $9, 26322 +0x21 0x08 0xff 0xfe # CHECK: addi $8, $8, -2 +0x21 0xc9 0x3b 0x48 # CHECK: addi $9, $14, 15176 +0x23 0x18 0xe3 0xe7 # CHECK: addi $24, $24, -7193 +0x00 0x86 0x48 0x21 # CHECK: addu $9, $4, $6 +0x25 0x29 0x00 0x0a # CHECK: addiu $9, $9, 10 +0x00 0x4c 0xb8 0x24 # CHECK: and $23, $2, $12 +0x45 0x00 0x00 0x01 # CHECK: bc1f 8 +0x30 0x42 0x00 0x04 # CHECK: andi $2, $2, 4 +0x45 0x01 0x00 0x01 # CHECK: bc1t 8 +0x00 0x00 0x00 0x00 # CHECK: nop +0x04 0x11 0x14 0x9b # CHECK: bal 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x04 0x11 0x14 0x9b # CHECK: bal 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x04 0xd1 0x14 0x9b # CHECK: bgezal $6, 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x04 0xd0 0x14 0x9b # CHECK: bltzal $6, 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x46 0x3c 0xe0 0x3b # CHECK: c.ngl.d $f28, $f28 +0x46 0x30 0x00 0x39 # CHECK: c.ngle.d $f0, $f16 +0x46 0x20 0xf0 0x38 # CHECK: c.sf.d $f30, $f0 +0x46 0x16 0x70 0x38 # CHECK: c.sf.s $f14, $f22 +0x44 0x51 0xa8 0x00 # CHECK: cfc1 $17, $21 +0x44 0xc6 0xd0 0x00 # CHECK: ctc1 $6, $26 +0x46 0x00 0xe5 0xa1 # CHECK: cvt.d.s $f22, $f28 +0x46 0x80 0x5e 0xa1 # CHECK: cvt.d.w $f26, $f11 +0x46 0x20 0x46 0xa0 # CHECK: cvt.s.d $f26, $f8 +0x46 0x80 0x7d 0xa0 # CHECK: cvt.s.w $f22, $f15 +0x46 0x20 0x75 0x24 # CHECK: cvt.w.d $f20, $f14 +0x46 0x00 0xc5 0x24 # CHECK: cvt.w.s $f20, $f24 +0x03 0x2b 0x00 0x1a # CHECK: div $zero, $25, $11 +0x46 0x3a 0xa7 0x03 # CHECK: div.d $f28, $f20, $f26 +0x46 0x0f 0x29 0x03 # CHECK: div.s $f4, $f5, $f15 +0x03 0x2f 0x00 0x1b # CHECK: divu $zero, $25, $15 +0x81 0x58 0xc7 0x4d # CHECK: lb $24, -14515($10) +0x90 0x68 0x75 0xf3 # CHECK: lbu $8, 30195($3) +0x86 0xab 0xde 0x94 # CHECK: lh $11, -8556($21) +0x94 0x53 0xa6 0xbd # CHECK: lhu $19, -22851($2) +0x24 0x01 0x8b 0xb3 # CHECK: addiu $1, $zero, -29773 +0x24 0x00 0x8b 0x3f # CHECK: addiu $zero, $zero, -29889 +0x8c 0xa8 0x16 0x2a # CHECK: lw $8, 5674($5) +0xc7 0x50 0x27 0xf1 # CHECK: lwc1 $f16, 10225($26) +0xc8 0xd2 0xfc 0xb7 # CHECK: lwc2 $18, -841($6) +0xcf 0x4a 0x81 0xf7 # CHECK: lwc3 $10, -32265($26) +0x89 0xf4 0xef 0x79 # CHECK: lwl $20, -4231($15) +0x9b 0x80 0xb5 0x35 # CHECK: lwr $zero, -19147($gp) +0x44 0x07 0xd8 0x00 # CHECK: mfc1 $7, $f27 +0x00 0x00 0x98 0x10 # CHECK: mfhi $19 +0x00 0x00 0xe8 0x10 # CHECK: mfhi $sp +0x00 0x00 0x88 0x12 # CHECK: mflo $17 +0x46 0x20 0x75 0x06 # CHECK: mov.d $f20, $f14 +0x46 0x00 0xd8 0x86 # CHECK: mov.s $f2, $f27 +0x00 0x80 0xf0 0x21 # CHECK: move $fp, $4 +0x00 0xc0 0xc8 0x21 # CHECK: move $25, $6 +0x44 0x9e 0x48 0x00 # CHECK: mtc1 $fp, $f9 +0x02 0x20 0x00 0x11 # CHECK: mthi $17 +0x03 0xa0 0x00 0x13 # CHECK: mtlo $sp +0x03 0x20 0x00 0x13 # CHECK: mtlo $25 +0x46 0x30 0xa5 0x02 # CHECK: mul.d $f20, $f20, $f16 +0x46 0x02 0x57 0x82 # CHECK: mul.s $f30, $f10, $f2 +0x03 0xb4 0x00 0x18 # CHECK: mult $sp, $20 +0x03 0xa2 0x00 0x18 # CHECK: mult $sp, $2 +0x03 0x9a 0x00 0x19 # CHECK: multu $gp, $26 +0x01 0x32 0x00 0x19 # CHECK: multu $9, $18 +0x00 0x02 0x10 0x23 # CHECK: negu $2, $2 +0x00 0x03 0x10 0x23 # CHECK: negu $2, $3 +0x46 0x20 0x96 0x87 # CHECK: neg.d $f26, $f18 +0x46 0x00 0x78 0x47 # CHECK: neg.s $f1, $f15 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0x07 0x38 0x27 # CHECK: nor $7, $zero, $7 +0x02 0x1d 0x60 0x25 # CHECK: or $12, $16, $sp +0x34 0x42 0x00 0x04 # CHECK: ori $2, $2, 4 +0xa1 0xd6 0xb2 0x6f # CHECK: sb $22, -19857($14) +0xa5 0xee 0xe5 0xd0 # CHECK: sh $14, -6704($15) +0x00 0x07 0x3c 0x80 # CHECK: sll $7, $7, 18 +0x00 0x00 0x3c 0x80 # CHECK: sll $7, $zero, 18 +0x01 0x20 0x38 0x04 # CHECK: sllv $7, $zero, $9 +0x01 0x20 0x38 0x04 # CHECK: sllv $7, $zero, $9 +0x01 0x7b 0xb8 0x2a # CHECK: slt $23, $11, $27 +0x29 0x51 0x25 0x11 # CHECK: slti $17, $10, 9489 +0x2f 0x39 0xc3 0x55 # CHECK: sltiu $25, $25, -15531 +0x02 0xab 0xa0 0x2b # CHECK: sltu $20, $21, $11 +0x2f 0x38 0xc3 0x55 # CHECK: sltiu $24, $25, -15531 +0x00 0x11 0x8b 0xc3 # CHECK: sra $17, $17, 15 +0x00 0x17 0x8b 0xc3 # CHECK: sra $17, $23, 15 +0x03 0xb7 0x88 0x07 # CHECK: srav $17, $23, $sp +0x03 0xb7 0x88 0x07 # CHECK: srav $17, $23, $sp +0x00 0x02 0x11 0xc2 # CHECK: srl $2, $2, 7 +0x00 0x02 0x11 0xc2 # CHECK: srl $2, $2, 7 +0x00 0x94 0xc8 0x06 # CHECK: srlv $25, $20, $4 +0x00 0x94 0xc8 0x06 # CHECK: srlv $25, $20, $4 +0x00 0x00 0x00 0x40 # CHECK: ssnop +0x02 0x6c 0xb0 0x22 # CHECK: sub $22, $19, $12 +0x22 0x36 0x0c 0x36 # CHECK: addi $22, $17, 3126 +0x21 0xad 0xe6 0x90 # CHECK: addi $13, $13, -6512 +0x46 0x30 0x14 0x81 # CHECK: sub.d $f18, $f2, $f16 +0x46 0x16 0xb5 0xc1 # CHECK: sub.s $f23, $f22, $f22 +0x02 0xd6 0xe8 0x23 # CHECK: subu $sp, $22, $22 +0xaf 0xbf 0xd8 0x50 # CHECK: sw $ra, -10160($sp) +0xe7 0x06 0xde 0xef # CHECK: swc1 $f6, -8465($24) +0xea 0x19 0x61 0x30 # CHECK: swc2 $25, 24880($16) +0xaa 0x6f 0x35 0x7e # CHECK: swl $15, 13694($19) +0xb9 0xd1 0x98 0x22 # CHECK: swr $17, -26590($14) +0x42 0x00 0x00 0x08 # CHECK: tlbp +0x42 0x00 0x00 0x01 # CHECK: tlbr +0x42 0x00 0x00 0x02 # CHECK: tlbwi +0x42 0x00 0x00 0x06 # CHECK: tlbwr +0x00 0x9e 0x90 0x26 # CHECK: xor $18, $4, $fp diff --git a/test/MC/Disassembler/Mips/mips1/valid-xfail.txt b/test/MC/Disassembler/Mips/mips1/valid-xfail.txt new file mode 100644 index 0000000..759097c --- /dev/null +++ b/test/MC/Disassembler/Mips/mips1/valid-xfail.txt @@ -0,0 +1,4 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble -mcpu=mips1 | FileCheck %s +# XFAIL: * +0xc2 0x44 0xe3 0x67 # CHECK: lwc0 $4, -7321($18) +0xe2 0x64 0x49 0xd8 # CHECK: swc0 $4, 18904($19) diff --git a/test/MC/Disassembler/Mips/mips2/valid-mips2-el.txt b/test/MC/Disassembler/Mips/mips2/valid-mips2-el.txt new file mode 100644 index 0000000..8060409 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips2/valid-mips2-el.txt @@ -0,0 +1,159 @@ +# RUN: llvm-mc %s -triple=mipsel-unknown-linux -disassemble -mcpu=mips2 | FileCheck %s +# CHECK: .text +0x85 0xc1 0x20 0x46 # CHECK: abs.d $f6, $f24 +0x45 0x82 0x00 0x46 # CHECK: abs.s $f9, $f16 +0x20 0xb8 0x45 0x02 # CHECK: add $23, $18, $5 +0x48 0x3b 0xc9 0x21 # CHECK: addi $9, $14, 15176 +0xe7 0xe3 0x18 0x23 # CHECK: addi $24, $24, -7193 +0x00 0x30 0x3c 0x46 # CHECK: add.d $f0, $f6, $f28 +0x00 0xaa 0x18 0x46 # CHECK: add.s $f8, $f21, $f24 +0xd2 0x66 0x2d 0x21 # CHECK: addi $13, $9, 26322 +0xfe 0xff 0x08 0x21 # CHECK: addi $8, $8, -2 +0x21 0x48 0x86 0x00 # CHECK: addu $9, $4, $6 +0x0a 0x00 0x29 0x25 # CHECK: addiu $9, $9, 10 +0x24 0xb8 0x4c 0x00 # CHECK: and $23, $2, $12 +0x04 0x00 0x42 0x30 # CHECK: andi $2, $2, 4 +0x01 0x00 0x00 0x45 # CHECK: bc1f 8 +0x0c 0x00 0x02 0x45 # CHECK: bc1fl 52 +0x01 0x00 0x01 0x45 # CHECK: bc1t 8 +0xf4 0xf7 0x03 0x45 # CHECK: bc1tl -8236 +0x9b 0x14 0x11 0x04 # CHECK: bal 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x9b 0x14 0xd0 0x04 # CHECK: bltzal $6, 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x40 0x0c 0xd3 0x51 # CHECK: beql $14, $19, 12548 +0x1f 0x07 0x93 0x05 # CHECK: bgezall $12, 7296 +0x4d 0xf9 0x83 0x04 # CHECK: bgezl $4, -6856 +0x59 0xfc 0x40 0x5d # CHECK: bgtzl $10, -3736 +0xe7 0x02 0xc0 0x58 # CHECK: blezl $6, 2976 +0x7a 0x00 0xd2 0x04 # CHECK: bltzall $6, 492 +0x45 0xf6 0x22 0x06 # CHECK: bltzl $17, -9960 +0xfc 0x04 0x94 0x57 # CHECK: bnel $gp, $20, 5108 +0x3b 0xe0 0x3c 0x46 # CHECK: c.ngl.d $f28, $f28 +0x39 0x00 0x30 0x46 # CHECK: c.ngle.d $f0, $f16 +0x38 0xf0 0x20 0x46 # CHECK: c.sf.d $f30, $f0 +0x38 0x70 0x16 0x46 # CHECK: c.sf.s $f14, $f22 +0xce 0xc2 0x20 0x46 # CHECK: ceil.w.d $f11, $f24 +0x8e 0xa1 0x00 0x46 # CHECK: ceil.w.s $f6, $f20 +0x00 0xa8 0x51 0x44 # CHECK: cfc1 $17, $21 +0x00 0xd0 0xc6 0x44 # CHECK: ctc1 $6, $26 +0xa1 0xe5 0x00 0x46 # CHECK: cvt.d.s $f22, $f28 +0xa1 0x5e 0x80 0x46 # CHECK: cvt.d.w $f26, $f11 +0xa0 0x46 0x20 0x46 # CHECK: cvt.s.d $f26, $f8 +0xa0 0x7d 0x80 0x46 # CHECK: cvt.s.w $f22, $f15 +0x24 0x75 0x20 0x46 # CHECK: cvt.w.d $f20, $f14 +0x24 0xc5 0x00 0x46 # CHECK: cvt.w.s $f20, $f24 +0x1a 0x00 0x2b 0x03 # CHECK: div $zero, $25, $11 +0x03 0xa7 0x3a 0x46 # CHECK: div.d $f28, $f20, $f26 +0x03 0x29 0x0f 0x46 # CHECK: div.s $f4, $f5, $f15 +0x1b 0x00 0x2f 0x03 # CHECK: divu $zero, $25, $15 +0xc0 0x00 0x00 0x00 # CHECK: ehb +0x8f 0x53 0x20 0x46 # CHECK: floor.w.d $f14, $f10 +0x0f 0x4a 0x00 0x46 # CHECK: floor.w.s $f8, $f9 +0x4d 0xc7 0x58 0x81 # CHECK: lb $24, -14515($10) +0xf3 0x75 0x68 0x90 # CHECK: lbu $8, 30195($3) +0x07 0x40 0x0a 0xd6 # CHECK: ldc1 $f10, 16391($16) +0x43 0xad 0x28 0xd8 # CHECK: ldc2 $8, -21181($1) +0x1b 0x90 0x3d 0xde # CHECK: ldc3 $29, -28645($17) +0x94 0xde 0xab 0x86 # CHECK: lh $11, -8556($21) +0xbd 0xa6 0x53 0x94 # CHECK: lhu $19, -22851($2) +0xb3 0x8b 0x01 0x24 # CHECK: addiu $1, $zero, -29773 +0x3f 0x8b 0x00 0x24 # CHECK: addiu $zero, $zero, -29889 +0x67 0xe3 0x42 0xc2 # CHECK: ll $2, -7321($18) +0x2a 0x16 0xa8 0x8c # CHECK: lw $8, 5674($5) +0xf1 0x27 0x50 0xc7 # CHECK: lwc1 $f16, 10225($26) +0xb7 0xfc 0xd2 0xc8 # CHECK: lwc2 $18, -841($6) +0xf7 0x81 0x4a 0xcf # CHECK: lwc3 $10, -32265($26) +0x79 0xef 0xf4 0x89 # CHECK: lwl $20, -4231($15) +0x35 0xb5 0x80 0x9b # CHECK: lwr $zero, -19147($gp) +0x00 0xd8 0x07 0x44 # CHECK: mfc1 $7, $f27 +0x10 0x98 0x00 0x00 # CHECK: mfhi $19 +0x10 0xe8 0x00 0x00 # CHECK: mfhi $sp +0x12 0x88 0x00 0x00 # CHECK: mflo $17 +0x06 0x75 0x20 0x46 # CHECK: mov.d $f20, $f14 +0x86 0xd8 0x00 0x46 # CHECK: mov.s $f2, $f27 +0x21 0xf0 0x80 0x00 # CHECK: move $fp, $4 +0x21 0xc8 0xc0 0x00 # CHECK: move $25, $6 +0x00 0x48 0x9e 0x44 # CHECK: mtc1 $fp, $f9 +0x11 0x00 0x20 0x02 # CHECK: mthi $17 +0x13 0x00 0xa0 0x03 # CHECK: mtlo $sp +0x13 0x00 0x20 0x03 # CHECK: mtlo $25 +0x02 0xa5 0x30 0x46 # CHECK: mul.d $f20, $f20, $f16 +0x82 0x57 0x02 0x46 # CHECK: mul.s $f30, $f10, $f2 +0x18 0x00 0xb4 0x03 # CHECK: mult $sp, $20 +0x18 0x00 0xa2 0x03 # CHECK: mult $sp, $2 +0x19 0x00 0x9a 0x03 # CHECK: multu $gp, $26 +0x19 0x00 0x32 0x01 # CHECK: multu $9, $18 +0x23 0x10 0x02 0x00 # CHECK: negu $2, $2 +0x23 0x10 0x03 0x00 # CHECK: negu $2, $3 +0x87 0x96 0x20 0x46 # CHECK: neg.d $f26, $f18 +0x47 0x78 0x00 0x46 # CHECK: neg.s $f1, $f15 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x38 0x07 0x00 # CHECK: nor $7, $zero, $7 +0x25 0x60 0x1d 0x02 # CHECK: or $12, $16, $sp +0x04 0x00 0x42 0x34 # CHECK: ori $2, $2, 4 +0x8c 0x21 0x20 0x46 # CHECK: round.w.d $f6, $f4 +0xcc 0xe6 0x00 0x46 # CHECK: round.w.s $f27, $f28 +0x6f 0xb2 0xd6 0xa1 # CHECK: sb $22, -19857($14) +0xd8 0x49 0x6f 0xe2 # CHECK: sc $15, 18904($19) +0x6e 0x77 0xbe 0xf5 # CHECK: sdc1 $f30, 30574($13) +0x75 0x5a 0x54 0xfa # CHECK: sdc2 $20, 23157($18) +0xcb 0x16 0x4c 0xfd # CHECK: sdc3 $12, 5835($10) +0xd0 0xe5 0xee 0xa5 # CHECK: sh $14, -6704($15) +0x80 0x3c 0x07 0x00 # CHECK: sll $7, $7, 18 +0x80 0x3c 0x00 0x00 # CHECK: sll $7, $zero, 18 +0x04 0x38 0x20 0x01 # CHECK: sllv $7, $zero, $9 +0x04 0x38 0x20 0x01 # CHECK: sllv $7, $zero, $9 +0x2a 0xb8 0x7b 0x01 # CHECK: slt $23, $11, $27 +0x11 0x25 0x51 0x29 # CHECK: slti $17, $10, 9489 +0x55 0xc3 0x39 0x2f # CHECK: sltiu $25, $25, -15531 +0x2b 0xa0 0xab 0x02 # CHECK: sltu $20, $21, $11 +0x55 0xc3 0x38 0x2f # CHECK: sltiu $24, $25, -15531 +0x04 0xb4 0x20 0x46 # CHECK: sqrt.d $f16, $f22 +0x04 0x08 0x00 0x46 # CHECK: sqrt.s $f0, $f1 +0xc3 0x8b 0x11 0x00 # CHECK: sra $17, $17, 15 +0xc3 0x8b 0x17 0x00 # CHECK: sra $17, $23, 15 +0x07 0x88 0xb7 0x03 # CHECK: srav $17, $23, $sp +0x07 0x88 0xb7 0x03 # CHECK: srav $17, $23, $sp +0xc2 0x11 0x02 0x00 # CHECK: srl $2, $2, 7 +0xc2 0x11 0x02 0x00 # CHECK: srl $2, $2, 7 +0x06 0xc8 0x94 0x00 # CHECK: srlv $25, $20, $4 +0x06 0xc8 0x94 0x00 # CHECK: srlv $25, $20, $4 +0x40 0x00 0x00 0x00 # CHECK: ssnop +0x22 0xb0 0x6c 0x02 # CHECK: sub $22, $19, $12 +0x36 0x0c 0x36 0x22 # CHECK: addi $22, $17, 3126 +0x90 0xe6 0xad 0x21 # CHECK: addi $13, $13, -6512 +0x81 0x14 0x30 0x46 # CHECK: sub.d $f18, $f2, $f16 +0xc1 0xb5 0x16 0x46 # CHECK: sub.s $f23, $f22, $f22 +0x23 0xe8 0xd6 0x02 # CHECK: subu $sp, $22, $22 +0x50 0xd8 0xbf 0xaf # CHECK: sw $ra, -10160($sp) +0xef 0xde 0x06 0xe7 # CHECK: swc1 $f6, -8465($24) +0x30 0x61 0x19 0xea # CHECK: swc2 $25, 24880($16) +0xf7 0x81 0x4a 0xef # CHECK: swc3 $10, -32265($26) +0x7e 0x35 0x6f 0xaa # CHECK: swl $15, 13694($19) +0x22 0x98 0xd1 0xb9 # CHECK: swr $17, -26590($14) +0x34 0x00 0x03 0x00 # CHECK: teq $zero, $3 +0x34 0x9b 0xa7 0x00 # CHECK: teq $5, $7, 620 +0xa0 0xbb 0xac 0x06 # CHECK: teqi $21, 48032 +0x30 0x00 0xea 0x00 # CHECK: tge $7, $10 +0x30 0x55 0xb3 0x00 # CHECK: tge $5, $19, 340 +0xa1 0x13 0x28 0x06 # CHECK: tgei $17, 5025 +0x33 0x90 0xa9 0x07 # CHECK: tgeiu $sp, 36915 +0x31 0x00 0xdc 0x02 # CHECK: tgeu $22, $gp +0xf1 0x5e 0x8e 0x02 # CHECK: tgeu $20, $14, 379 +0x08 0x00 0x00 0x42 # CHECK: tlbp +0x01 0x00 0x00 0x42 # CHECK: tlbr +0x02 0x00 0x00 0x42 # CHECK: tlbwi +0x06 0x00 0x00 0x42 # CHECK: tlbwr +0x32 0x00 0xed 0x01 # CHECK: tlt $15, $13 +0x72 0x21 0x53 0x00 # CHECK: tlt $2, $19, 133 +0xbd 0xad 0xca 0x05 # CHECK: tlti $14, 44477 +0x2c 0xec 0xeb 0x07 # CHECK: tltiu $ra, 60460 +0x33 0x00 0x70 0x01 # CHECK: tltu $11, $16 +0x33 0xfe 0x1d 0x02 # CHECK: tltu $16, $sp, 1016 +0x36 0x00 0xd1 0x00 # CHECK: tne $6, $17 +0x76 0xdd 0xe8 0x00 # CHECK: tne $7, $8, 885 +0x31 0x8c 0x8e 0x05 # CHECK: tnei $12, 35889 +0x8d 0x75 0x20 0x46 # CHECK: trunc.w.d $f22, $f14 +0x0d 0xf7 0x00 0x46 # CHECK: trunc.w.s $f28, $f30 +0x26 0x90 0x9e 0x00 # CHECK: xor $18, $4, $fp diff --git a/test/MC/Disassembler/Mips/mips2/valid-mips2.txt b/test/MC/Disassembler/Mips/mips2/valid-mips2.txt new file mode 100644 index 0000000..3dc5231 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips2/valid-mips2.txt @@ -0,0 +1,159 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble -mcpu=mips2 | FileCheck %s +# CHECK: .text +0x46 0x20 0xc1 0x85 # CHECK: abs.d $f6, $f24 +0x46 0x00 0x82 0x45 # CHECK: abs.s $f9, $f16 +0x02 0x45 0xb8 0x20 # CHECK: add $23, $18, $5 +0x21 0xc9 0x3b 0x48 # CHECK: addi $9, $14, 15176 +0x23 0x18 0xe3 0xe7 # CHECK: addi $24, $24, -7193 +0x46 0x3c 0x30 0x00 # CHECK: add.d $f0, $f6, $f28 +0x46 0x18 0xaa 0x00 # CHECK: add.s $f8, $f21, $f24 +0x21 0x2d 0x66 0xd2 # CHECK: addi $13, $9, 26322 +0x21 0x08 0xff 0xfe # CHECK: addi $8, $8, -2 +0x00 0x86 0x48 0x21 # CHECK: addu $9, $4, $6 +0x25 0x29 0x00 0x0a # CHECK: addiu $9, $9, 10 +0x00 0x4c 0xb8 0x24 # CHECK: and $23, $2, $12 +0x30 0x42 0x00 0x04 # CHECK: andi $2, $2, 4 +0x45 0x00 0x00 0x01 # CHECK: bc1f 8 +0x45 0x02 0x00 0x0c # CHECK: bc1fl 52 +0x45 0x01 0x00 0x01 # CHECK: bc1t 8 +0x45 0x03 0xf7 0xf4 # CHECK: bc1tl -8236 +0x04 0x11 0x14 0x9b # CHECK: bal 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x04 0xd0 0x14 0x9b # CHECK: bltzal $6, 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x51 0xd3 0x0c 0x40 # CHECK: beql $14, $19, 12548 +0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 +0x04 0x83 0xf9 0x4d # CHECK: bgezl $4, -6856 +0x5d 0x40 0xfc 0x59 # CHECK: bgtzl $10, -3736 +0x58 0xc0 0x02 0xe7 # CHECK: blezl $6, 2976 +0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 +0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 +0x57 0x94 0x04 0xfc # CHECK: bnel $gp, $20, 5108 +0x46 0x3c 0xe0 0x3b # CHECK: c.ngl.d $f28, $f28 +0x46 0x30 0x00 0x39 # CHECK: c.ngle.d $f0, $f16 +0x46 0x20 0xf0 0x38 # CHECK: c.sf.d $f30, $f0 +0x46 0x16 0x70 0x38 # CHECK: c.sf.s $f14, $f22 +0x46 0x20 0xc2 0xce # CHECK: ceil.w.d $f11, $f24 +0x46 0x00 0xa1 0x8e # CHECK: ceil.w.s $f6, $f20 +0x44 0x51 0xa8 0x00 # CHECK: cfc1 $17, $21 +0x44 0xc6 0xd0 0x00 # CHECK: ctc1 $6, $26 +0x46 0x00 0xe5 0xa1 # CHECK: cvt.d.s $f22, $f28 +0x46 0x80 0x5e 0xa1 # CHECK: cvt.d.w $f26, $f11 +0x46 0x20 0x46 0xa0 # CHECK: cvt.s.d $f26, $f8 +0x46 0x80 0x7d 0xa0 # CHECK: cvt.s.w $f22, $f15 +0x46 0x20 0x75 0x24 # CHECK: cvt.w.d $f20, $f14 +0x46 0x00 0xc5 0x24 # CHECK: cvt.w.s $f20, $f24 +0x03 0x2b 0x00 0x1a # CHECK: div $zero, $25, $11 +0x46 0x3a 0xa7 0x03 # CHECK: div.d $f28, $f20, $f26 +0x46 0x0f 0x29 0x03 # CHECK: div.s $f4, $f5, $f15 +0x03 0x2f 0x00 0x1b # CHECK: divu $zero, $25, $15 +0x00 0x00 0x00 0xc0 # CHECK: ehb +0x46 0x20 0x53 0x8f # CHECK: floor.w.d $f14, $f10 +0x46 0x00 0x4a 0x0f # CHECK: floor.w.s $f8, $f9 +0x81 0x58 0xc7 0x4d # CHECK: lb $24, -14515($10) +0x90 0x68 0x75 0xf3 # CHECK: lbu $8, 30195($3) +0xd6 0x0a 0x40 0x07 # CHECK: ldc1 $f10, 16391($16) +0xd8 0x28 0xad 0x43 # CHECK: ldc2 $8, -21181($1) +0xde 0x3d 0x90 0x1b # CHECK: ldc3 $29, -28645($17) +0x86 0xab 0xde 0x94 # CHECK: lh $11, -8556($21) +0x94 0x53 0xa6 0xbd # CHECK: lhu $19, -22851($2) +0x24 0x01 0x8b 0xb3 # CHECK: addiu $1, $zero, -29773 +0x24 0x00 0x8b 0x3f # CHECK: addiu $zero, $zero, -29889 +0xc2 0x42 0xe3 0x67 # CHECK: ll $2, -7321($18) +0x8c 0xa8 0x16 0x2a # CHECK: lw $8, 5674($5) +0xc7 0x50 0x27 0xf1 # CHECK: lwc1 $f16, 10225($26) +0xc8 0xd2 0xfc 0xb7 # CHECK: lwc2 $18, -841($6) +0xcf 0x4a 0x81 0xf7 # CHECK: lwc3 $10, -32265($26) +0x89 0xf4 0xef 0x79 # CHECK: lwl $20, -4231($15) +0x9b 0x80 0xb5 0x35 # CHECK: lwr $zero, -19147($gp) +0x44 0x07 0xd8 0x00 # CHECK: mfc1 $7, $f27 +0x00 0x00 0x98 0x10 # CHECK: mfhi $19 +0x00 0x00 0xe8 0x10 # CHECK: mfhi $sp +0x00 0x00 0x88 0x12 # CHECK: mflo $17 +0x46 0x20 0x75 0x06 # CHECK: mov.d $f20, $f14 +0x46 0x00 0xd8 0x86 # CHECK: mov.s $f2, $f27 +0x00 0x80 0xf0 0x21 # CHECK: move $fp, $4 +0x00 0xc0 0xc8 0x21 # CHECK: move $25, $6 +0x44 0x9e 0x48 0x00 # CHECK: mtc1 $fp, $f9 +0x02 0x20 0x00 0x11 # CHECK: mthi $17 +0x03 0xa0 0x00 0x13 # CHECK: mtlo $sp +0x03 0x20 0x00 0x13 # CHECK: mtlo $25 +0x46 0x30 0xa5 0x02 # CHECK: mul.d $f20, $f20, $f16 +0x46 0x02 0x57 0x82 # CHECK: mul.s $f30, $f10, $f2 +0x03 0xb4 0x00 0x18 # CHECK: mult $sp, $20 +0x03 0xa2 0x00 0x18 # CHECK: mult $sp, $2 +0x03 0x9a 0x00 0x19 # CHECK: multu $gp, $26 +0x01 0x32 0x00 0x19 # CHECK: multu $9, $18 +0x00 0x02 0x10 0x23 # CHECK: negu $2, $2 +0x00 0x03 0x10 0x23 # CHECK: negu $2, $3 +0x46 0x20 0x96 0x87 # CHECK: neg.d $f26, $f18 +0x46 0x00 0x78 0x47 # CHECK: neg.s $f1, $f15 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0x07 0x38 0x27 # CHECK: nor $7, $zero, $7 +0x02 0x1d 0x60 0x25 # CHECK: or $12, $16, $sp +0x34 0x42 0x00 0x04 # CHECK: ori $2, $2, 4 +0x46 0x20 0x21 0x8c # CHECK: round.w.d $f6, $f4 +0x46 0x00 0xe6 0xcc # CHECK: round.w.s $f27, $f28 +0xa1 0xd6 0xb2 0x6f # CHECK: sb $22, -19857($14) +0xe2 0x6f 0x49 0xd8 # CHECK: sc $15, 18904($19) +0xf5 0xbe 0x77 0x6e # CHECK: sdc1 $f30, 30574($13) +0xfa 0x54 0x5a 0x75 # CHECK: sdc2 $20, 23157($18) +0xfd 0x4c 0x16 0xcb # CHECK: sdc3 $12, 5835($10) +0xa5 0xee 0xe5 0xd0 # CHECK: sh $14, -6704($15) +0x00 0x07 0x3c 0x80 # CHECK: sll $7, $7, 18 +0x00 0x00 0x3c 0x80 # CHECK: sll $7, $zero, 18 +0x01 0x20 0x38 0x04 # CHECK: sllv $7, $zero, $9 +0x01 0x20 0x38 0x04 # CHECK: sllv $7, $zero, $9 +0x01 0x7b 0xb8 0x2a # CHECK: slt $23, $11, $27 +0x29 0x51 0x25 0x11 # CHECK: slti $17, $10, 9489 +0x2f 0x39 0xc3 0x55 # CHECK: sltiu $25, $25, -15531 +0x02 0xab 0xa0 0x2b # CHECK: sltu $20, $21, $11 +0x2f 0x38 0xc3 0x55 # CHECK: sltiu $24, $25, -15531 +0x46 0x20 0xb4 0x04 # CHECK: sqrt.d $f16, $f22 +0x46 0x00 0x08 0x04 # CHECK: sqrt.s $f0, $f1 +0x00 0x11 0x8b 0xc3 # CHECK: sra $17, $17, 15 +0x00 0x17 0x8b 0xc3 # CHECK: sra $17, $23, 15 +0x03 0xb7 0x88 0x07 # CHECK: srav $17, $23, $sp +0x03 0xb7 0x88 0x07 # CHECK: srav $17, $23, $sp +0x00 0x02 0x11 0xc2 # CHECK: srl $2, $2, 7 +0x00 0x02 0x11 0xc2 # CHECK: srl $2, $2, 7 +0x00 0x94 0xc8 0x06 # CHECK: srlv $25, $20, $4 +0x00 0x94 0xc8 0x06 # CHECK: srlv $25, $20, $4 +0x00 0x00 0x00 0x40 # CHECK: ssnop +0x02 0x6c 0xb0 0x22 # CHECK: sub $22, $19, $12 +0x22 0x36 0x0c 0x36 # CHECK: addi $22, $17, 3126 +0x21 0xad 0xe6 0x90 # CHECK: addi $13, $13, -6512 +0x46 0x30 0x14 0x81 # CHECK: sub.d $f18, $f2, $f16 +0x46 0x16 0xb5 0xc1 # CHECK: sub.s $f23, $f22, $f22 +0x02 0xd6 0xe8 0x23 # CHECK: subu $sp, $22, $22 +0xaf 0xbf 0xd8 0x50 # CHECK: sw $ra, -10160($sp) +0xe7 0x06 0xde 0xef # CHECK: swc1 $f6, -8465($24) +0xea 0x19 0x61 0x30 # CHECK: swc2 $25, 24880($16) +0xef 0x4a 0x81 0xf7 # CHECK: swc3 $10, -32265($26) +0xaa 0x6f 0x35 0x7e # CHECK: swl $15, 13694($19) +0xb9 0xd1 0x98 0x22 # CHECK: swr $17, -26590($14) +0x00 0x03 0x00 0x34 # CHECK: teq $zero, $3 +0x00 0xa7 0x9b 0x34 # CHECK: teq $5, $7, 620 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 +0x00 0xea 0x00 0x30 # CHECK: tge $7, $10 +0x00 0xb3 0x55 0x30 # CHECK: tge $5, $19, 340 +0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 +0x02 0xdc 0x00 0x31 # CHECK: tgeu $22, $gp +0x02 0x8e 0x5e 0xf1 # CHECK: tgeu $20, $14, 379 +0x42 0x00 0x00 0x08 # CHECK: tlbp +0x42 0x00 0x00 0x01 # CHECK: tlbr +0x42 0x00 0x00 0x02 # CHECK: tlbwi +0x42 0x00 0x00 0x06 # CHECK: tlbwr +0x01 0xed 0x00 0x32 # CHECK: tlt $15, $13 +0x00 0x53 0x21 0x72 # CHECK: tlt $2, $19, 133 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x01 0x70 0x00 0x33 # CHECK: tltu $11, $16 +0x02 0x1d 0xfe 0x33 # CHECK: tltu $16, $sp, 1016 +0x00 0xd1 0x00 0x36 # CHECK: tne $6, $17 +0x00 0xe8 0xdd 0x76 # CHECK: tne $7, $8, 885 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x46 0x20 0x75 0x8d # CHECK: trunc.w.d $f22, $f14 +0x46 0x00 0xf7 0x0d # CHECK: trunc.w.s $f28, $f30 +0x00 0x9e 0x90 0x26 # CHECK: xor $18, $4, $fp diff --git a/test/MC/Disassembler/Mips/mips3/valid-mips3-el.txt b/test/MC/Disassembler/Mips/mips3/valid-mips3-el.txt new file mode 100644 index 0000000..98ce16b --- /dev/null +++ b/test/MC/Disassembler/Mips/mips3/valid-mips3-el.txt @@ -0,0 +1,209 @@ +# RUN: llvm-mc %s -triple=mips64el-unknown-linux -disassemble -mcpu=mips3 | FileCheck %s +# CHECK: .text +0x85 0xc1 0x20 0x46 # CHECK: abs.d $f6, $f24 +0x45 0x82 0x00 0x46 # CHECK: abs.s $f9, $f16 +0x20 0xb8 0x45 0x02 # CHECK: add $23, $18, $5 +0x48 0x3b 0xc9 0x21 # CHECK: addi $9, $14, 15176 +0xe7 0xe3 0x18 0x23 # CHECK: addi $24, $24, -7193 +0x00 0x30 0x3c 0x46 # CHECK: add.d $f0, $f6, $f28 +0x00 0xaa 0x18 0x46 # CHECK: add.s $f8, $f21, $f24 +0xd2 0x66 0x2d 0x21 # CHECK: addi $13, $9, 26322 +0xfe 0xff 0x08 0x21 # CHECK: addi $8, $8, -2 +0x21 0x48 0x86 0x00 # CHECK: addu $9, $4, $6 +0x0a 0x00 0x29 0x25 # CHECK: addiu $9, $9, 10 +0x24 0xb8 0x4c 0x00 # CHECK: and $23, $2, $12 +0x04 0x00 0x42 0x30 # CHECK: andi $2, $2, 4 +0x01 0x00 0x00 0x45 # CHECK: bc1f 8 +0x0c 0x00 0x02 0x45 # CHECK: bc1fl 52 +0x01 0x00 0x01 0x45 # CHECK: bc1t 8 +0xf4 0xf7 0x03 0x45 # CHECK: bc1tl -8236 +0x9b 0x14 0x11 0x04 # CHECK: bal 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x9b 0x14 0xd0 0x04 # CHECK: bltzal $6, 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x40 0x0c 0xd3 0x51 # CHECK: beql $14, $19, 12548 +0x1f 0x07 0x93 0x05 # CHECK: bgezall $12, 7296 +0x4d 0xf9 0x83 0x04 # CHECK: bgezl $4, -6856 +0x59 0xfc 0x40 0x5d # CHECK: bgtzl $10, -3736 +0xe7 0x02 0xc0 0x58 # CHECK: blezl $6, 2976 +0x7a 0x00 0xd2 0x04 # CHECK: bltzall $6, 492 +0x45 0xf6 0x22 0x06 # CHECK: bltzl $17, -9960 +0xfc 0x04 0x94 0x57 # CHECK: bnel $gp, $20, 5108 +0x08 0x00 0xa1 0xbc # CHECK: cache 1, 8($5) +0x3b 0xe0 0x3c 0x46 # CHECK: c.ngl.d $f28, $f28 +0x39 0x00 0x30 0x46 # CHECK: c.ngle.d $f0, $f16 +0x38 0xf0 0x20 0x46 # CHECK: c.sf.d $f30, $f0 +0x38 0x70 0x16 0x46 # CHECK: c.sf.s $f14, $f22 +0x4a 0x18 0x20 0x46 # CHECK: ceil.l.d $f1, $f3 +0x8a 0x6c 0x00 0x46 # CHECK: ceil.l.s $f18, $f13 +0xce 0xc2 0x20 0x46 # CHECK: ceil.w.d $f11, $f24 +0x8e 0xa1 0x00 0x46 # CHECK: ceil.w.s $f6, $f20 +0x00 0xa8 0x51 0x44 # CHECK: cfc1 $17, $21 +0x00 0xd0 0xc6 0x44 # CHECK: ctc1 $6, $26 +0xa1 0xe5 0x00 0x46 # CHECK: cvt.d.s $f22, $f28 +0xa1 0x5e 0x80 0x46 # CHECK: cvt.d.w $f26, $f11 +0x21 0x81 0xa0 0x46 # CHECK: cvt.d.l $f4, $f16 +0x25 0x7e 0x20 0x46 # CHECK: cvt.l.d $f24, $f15 +0xe5 0xea 0x00 0x46 # CHECK: cvt.l.s $f11, $f29 +0xe0 0xf3 0xa0 0x46 # CHECK: cvt.s.l $f15, $f30 +0xa0 0x46 0x20 0x46 # CHECK: cvt.s.d $f26, $f8 +0xa0 0x7d 0x80 0x46 # CHECK: cvt.s.w $f22, $f15 +0x24 0x75 0x20 0x46 # CHECK: cvt.w.d $f20, $f14 +0x24 0xc5 0x00 0x46 # CHECK: cvt.w.s $f20, $f24 +0x2c 0x98 0x3f 0x00 # CHECK: dadd $19, $1, $ra +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0x16 0xee 0xda 0x66 # CHECK: daddiu $26, $22, -4586 +0x2d 0x98 0x3f 0x00 # CHECK: daddu $19, $1, $ra +0x9f 0x46 0x58 0x64 # CHECK: daddiu $24, $2, 18079 +0x3f 0x69 0x73 0x66 # CHECK: daddiu $19, $19, 26943 +0x1e 0x00 0x53 0x03 # CHECK: ddiv $zero, $26, $19 +0x1f 0x00 0x11 0x02 # CHECK: ddivu $zero, $16, $17 +0x1a 0x00 0x2b 0x03 # CHECK: div $zero, $25, $11 +0x03 0xa7 0x3a 0x46 # CHECK: div.d $f28, $f20, $f26 +0x03 0x29 0x0f 0x46 # CHECK: div.s $f4, $f5, $f15 +0x1b 0x00 0x2f 0x03 # CHECK: divu $zero, $25, $15 +0x00 0x68 0x2c 0x44 # CHECK: dmfc1 $12, $f13 +0x00 0x70 0xb0 0x44 # CHECK: dmtc1 $16, $f14 +0x1c 0x00 0xe9 0x02 # CHECK: dmult $23, $9 +0x1d 0x00 0xa6 0x00 # CHECK: dmultu $5, $6 +0xb8 0x04 0x00 0x00 # CHECK: dsll $zero, $zero, 18 +0xb8 0x04 0x14 0x00 # CHECK: dsll $zero, $20, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbb 0xe2 0x1c 0x00 # CHECK: dsra $gp, $gp, 10 +0xbb 0xe2 0x12 0x00 # CHECK: dsra $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xbf 0xe2 0x1c 0x00 # CHECK: dsra32 $gp, $gp, 10 +0xbf 0xe2 0x12 0x00 # CHECK: dsra32 $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xfa 0x9d 0x13 0x00 # CHECK: dsrl $19, $19, 23 +0xfa 0x9d 0x06 0x00 # CHECK: dsrl $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0xfe 0x9d 0x13 0x00 # CHECK: dsrl32 $19, $19, 23 +0xfe 0x9d 0x06 0x00 # CHECK: dsrl32 $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0x2e 0x38 0xc8 0x02 # CHECK: dsub $7, $22, $8 +0x2f 0x28 0xba 0x00 # CHECK: dsubu $5, $5, $26 +0xc0 0x00 0x00 0x00 # CHECK: ehb +0x18 0x00 0x00 0x42 # CHECK: eret +0x8f 0x53 0x20 0x46 # CHECK: floor.w.d $f14, $f10 +0x0f 0x4a 0x00 0x46 # CHECK: floor.w.s $f8, $f9 +0x8b 0x3e 0x20 0x46 # CHECK: floor.l.d $f26, $f7 +0x0b 0x2b 0x00 0x46 # CHECK: floor.l.s $f12, $f5 +0x4d 0xc7 0x58 0x81 # CHECK: lb $24, -14515($10) +0xf3 0x75 0x68 0x90 # CHECK: lbu $8, 30195($3) +0x07 0x40 0x0a 0xd6 # CHECK: ldc1 $f10, 16391($16) +0x43 0xad 0x28 0xd8 # CHECK: ldc2 $8, -21181($1) +0x94 0xde 0xab 0x86 # CHECK: lh $11, -8556($21) +0xbd 0xa6 0x53 0x94 # CHECK: lhu $19, -22851($2) +0xb3 0x8b 0x01 0x24 # CHECK: addiu $1, $zero, -29773 +0x3f 0x8b 0x00 0x24 # CHECK: addiu $zero, $zero, -29889 +0x67 0xe3 0x42 0xc2 # CHECK: ll $2, -7321($18) +0x2a 0x16 0xa8 0x8c # CHECK: lw $8, 5674($5) +0xf1 0x27 0x50 0xc7 # CHECK: lwc1 $f16, 10225($26) +0xb7 0xfc 0xd2 0xc8 # CHECK: lwc2 $18, -841($6) +0x79 0xef 0xf4 0x89 # CHECK: lwl $20, -4231($15) +0x35 0xb5 0x80 0x9b # CHECK: lwr $zero, -19147($gp) +0x00 0xd8 0x07 0x44 # CHECK: mfc1 $7, $f27 +0x10 0x98 0x00 0x00 # CHECK: mfhi $19 +0x10 0xe8 0x00 0x00 # CHECK: mfhi $sp +0x12 0x88 0x00 0x00 # CHECK: mflo $17 +0x06 0x75 0x20 0x46 # CHECK: mov.d $f20, $f14 +0x86 0xd8 0x00 0x46 # CHECK: mov.s $f2, $f27 +0x21 0xf0 0x80 0x00 # CHECK: move $fp, $4 +0x21 0xc8 0xc0 0x00 # CHECK: move $25, $6 +0x00 0x48 0x9e 0x44 # CHECK: mtc1 $fp, $f9 +0x11 0x00 0x20 0x02 # CHECK: mthi $17 +0x13 0x00 0xa0 0x03 # CHECK: mtlo $sp +0x13 0x00 0x20 0x03 # CHECK: mtlo $25 +0x02 0xa5 0x30 0x46 # CHECK: mul.d $f20, $f20, $f16 +0x82 0x57 0x02 0x46 # CHECK: mul.s $f30, $f10, $f2 +0x18 0x00 0xb4 0x03 # CHECK: mult $sp, $20 +0x18 0x00 0xa2 0x03 # CHECK: mult $sp, $2 +0x19 0x00 0x9a 0x03 # CHECK: multu $gp, $26 +0x19 0x00 0x32 0x01 # CHECK: multu $9, $18 +0x23 0x10 0x02 0x00 # CHECK: negu $2, $2 +0x23 0x10 0x03 0x00 # CHECK: negu $2, $3 +0x87 0x96 0x20 0x46 # CHECK: neg.d $f26, $f18 +0x47 0x78 0x00 0x46 # CHECK: neg.s $f1, $f15 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x38 0x07 0x00 # CHECK: nor $7, $zero, $7 +0x25 0x60 0x1d 0x02 # CHECK: or $12, $16, $sp +0x04 0x00 0x42 0x34 # CHECK: ori $2, $2, 4 +0x08 0x0b 0x20 0x46 # CHECK: round.l.d $f12, $f1 +0x48 0x2e 0x00 0x46 # CHECK: round.l.s $f25, $f5 +0x8c 0x21 0x20 0x46 # CHECK: round.w.d $f6, $f4 +0xcc 0xe6 0x00 0x46 # CHECK: round.w.s $f27, $f28 +0x6f 0xb2 0xd6 0xa1 # CHECK: sb $22, -19857($14) +0xd8 0x49 0x6f 0xe2 # CHECK: sc $15, 18904($19) +0xcd 0xdf 0xaf 0xf3 # CHECK: scd $15, -8243($sp) +0xcb 0x16 0x4c 0xfd # CHECK: sd $12, 5835($10) +0x1f 0xae 0xc7 0xb3 # CHECK: sdl $7, -20961($fp) +0x39 0xb0 0x8b 0xb5 # CHECK: sdr $11, -20423($12) +0x6e 0x77 0xbe 0xf5 # CHECK: sdc1 $f30, 30574($13) +0x75 0x5a 0x54 0xfa # CHECK: sdc2 $20, 23157($18) +0xd0 0xe5 0xee 0xa5 # CHECK: sh $14, -6704($15) +0x80 0x3c 0x07 0x00 # CHECK: sll $7, $7, 18 +0x80 0x3c 0x00 0x00 # CHECK: sll $7, $zero, 18 +0x04 0x38 0x20 0x01 # CHECK: sllv $7, $zero, $9 +0x04 0x38 0x20 0x01 # CHECK: sllv $7, $zero, $9 +0x2a 0xb8 0x7b 0x01 # CHECK: slt $23, $11, $27 +0x11 0x25 0x51 0x29 # CHECK: slti $17, $10, 9489 +0x55 0xc3 0x39 0x2f # CHECK: sltiu $25, $25, -15531 +0x2b 0xa0 0xab 0x02 # CHECK: sltu $20, $21, $11 +0x55 0xc3 0x38 0x2f # CHECK: sltiu $24, $25, -15531 +0x04 0xb4 0x20 0x46 # CHECK: sqrt.d $f16, $f22 +0x04 0x08 0x00 0x46 # CHECK: sqrt.s $f0, $f1 +0xc3 0x8b 0x11 0x00 # CHECK: sra $17, $17, 15 +0xc3 0x8b 0x17 0x00 # CHECK: sra $17, $23, 15 +0x07 0x88 0xb7 0x03 # CHECK: srav $17, $23, $sp +0x07 0x88 0xb7 0x03 # CHECK: srav $17, $23, $sp +0xc2 0x11 0x02 0x00 # CHECK: srl $2, $2, 7 +0xc2 0x11 0x02 0x00 # CHECK: srl $2, $2, 7 +0x06 0xc8 0x94 0x00 # CHECK: srlv $25, $20, $4 +0x06 0xc8 0x94 0x00 # CHECK: srlv $25, $20, $4 +0x40 0x00 0x00 0x00 # CHECK: ssnop +0x22 0xb0 0x6c 0x02 # CHECK: sub $22, $19, $12 +0x36 0x0c 0x36 0x22 # CHECK: addi $22, $17, 3126 +0x90 0xe6 0xad 0x21 # CHECK: addi $13, $13, -6512 +0x81 0x14 0x30 0x46 # CHECK: sub.d $f18, $f2, $f16 +0xc1 0xb5 0x16 0x46 # CHECK: sub.s $f23, $f22, $f22 +0x23 0xe8 0xd6 0x02 # CHECK: subu $sp, $22, $22 +0x50 0xd8 0xbf 0xaf # CHECK: sw $ra, -10160($sp) +0xef 0xde 0x06 0xe7 # CHECK: swc1 $f6, -8465($24) +0x30 0x61 0x19 0xea # CHECK: swc2 $25, 24880($16) +0x7e 0x35 0x6f 0xaa # CHECK: swl $15, 13694($19) +0x22 0x98 0xd1 0xb9 # CHECK: swr $17, -26590($14) +0x34 0x00 0x03 0x00 # CHECK: teq $zero, $3 +0x34 0x9b 0xa7 0x00 # CHECK: teq $5, $7, 620 +0xa0 0xbb 0xac 0x06 # CHECK: teqi $21, 48032 +0x30 0x00 0xea 0x00 # CHECK: tge $7, $10 +0x30 0x55 0xb3 0x00 # CHECK: tge $5, $19, 340 +0xa1 0x13 0x28 0x06 # CHECK: tgei $17, 5025 +0x33 0x90 0xa9 0x07 # CHECK: tgeiu $sp, 36915 +0x31 0x00 0xdc 0x02 # CHECK: tgeu $22, $gp +0xf1 0x5e 0x8e 0x02 # CHECK: tgeu $20, $14, 379 +0x08 0x00 0x00 0x42 # CHECK: tlbp +0x01 0x00 0x00 0x42 # CHECK: tlbr +0x02 0x00 0x00 0x42 # CHECK: tlbwi +0x06 0x00 0x00 0x42 # CHECK: tlbwr +0x32 0x00 0xed 0x01 # CHECK: tlt $15, $13 +0x72 0x21 0x53 0x00 # CHECK: tlt $2, $19, 133 +0xbd 0xad 0xca 0x05 # CHECK: tlti $14, 44477 +0x2c 0xec 0xeb 0x07 # CHECK: tltiu $ra, 60460 +0x33 0x00 0x70 0x01 # CHECK: tltu $11, $16 +0x33 0xfe 0x1d 0x02 # CHECK: tltu $16, $sp, 1016 +0x36 0x00 0xd1 0x00 # CHECK: tne $6, $17 +0x76 0xdd 0xe8 0x00 # CHECK: tne $7, $8, 885 +0x31 0x8c 0x8e 0x05 # CHECK: tnei $12, 35889 +0xc9 0xbd 0x20 0x46 # CHECK: trunc.l.d $f23, $f23 +0x09 0xff 0x00 0x46 # CHECK: trunc.l.s $f28, $f31 +0x8d 0x75 0x20 0x46 # CHECK: trunc.w.d $f22, $f14 +0x0d 0xf7 0x00 0x46 # CHECK: trunc.w.s $f28, $f30 +0x26 0x90 0x9e 0x00 # CHECK: xor $18, $4, $fp diff --git a/test/MC/Disassembler/Mips/mips3/valid-mips3.txt b/test/MC/Disassembler/Mips/mips3/valid-mips3.txt new file mode 100644 index 0000000..cb602a3 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips3/valid-mips3.txt @@ -0,0 +1,209 @@ +# RUN: llvm-mc %s -triple=mips64-unknown-linux -disassemble -mcpu=mips3 | FileCheck %s +# CHECK: .text +0x46 0x20 0xc1 0x85 # CHECK: abs.d $f6, $f24 +0x46 0x00 0x82 0x45 # CHECK: abs.s $f9, $f16 +0x02 0x45 0xb8 0x20 # CHECK: add $23, $18, $5 +0x21 0xc9 0x3b 0x48 # CHECK: addi $9, $14, 15176 +0x23 0x18 0xe3 0xe7 # CHECK: addi $24, $24, -7193 +0x46 0x3c 0x30 0x00 # CHECK: add.d $f0, $f6, $f28 +0x46 0x18 0xaa 0x00 # CHECK: add.s $f8, $f21, $f24 +0x21 0x2d 0x66 0xd2 # CHECK: addi $13, $9, 26322 +0x21 0x08 0xff 0xfe # CHECK: addi $8, $8, -2 +0x00 0x86 0x48 0x21 # CHECK: addu $9, $4, $6 +0x25 0x29 0x00 0x0a # CHECK: addiu $9, $9, 10 +0x00 0x4c 0xb8 0x24 # CHECK: and $23, $2, $12 +0x30 0x42 0x00 0x04 # CHECK: andi $2, $2, 4 +0x45 0x00 0x00 0x01 # CHECK: bc1f 8 +0x45 0x02 0x00 0x0c # CHECK: bc1fl 52 +0x45 0x01 0x00 0x01 # CHECK: bc1t 8 +0x45 0x03 0xf7 0xf4 # CHECK: bc1tl -8236 +0x04 0x11 0x14 0x9b # CHECK: bal 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x04 0xd0 0x14 0x9b # CHECK: bltzal $6, 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x51 0xd3 0x0c 0x40 # CHECK: beql $14, $19, 12548 +0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 +0x04 0x83 0xf9 0x4d # CHECK: bgezl $4, -6856 +0x5d 0x40 0xfc 0x59 # CHECK: bgtzl $10, -3736 +0x58 0xc0 0x02 0xe7 # CHECK: blezl $6, 2976 +0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 +0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 +0x57 0x94 0x04 0xfc # CHECK: bnel $gp, $20, 5108 +0xbc 0xa1 0x00 0x08 # CHECK: cache 1, 8($5) +0x46 0x3c 0xe0 0x3b # CHECK: c.ngl.d $f28, $f28 +0x46 0x30 0x00 0x39 # CHECK: c.ngle.d $f0, $f16 +0x46 0x20 0xf0 0x38 # CHECK: c.sf.d $f30, $f0 +0x46 0x16 0x70 0x38 # CHECK: c.sf.s $f14, $f22 +0x46 0x20 0x18 0x4a # CHECK: ceil.l.d $f1, $f3 +0x46 0x00 0x6c 0x8a # CHECK: ceil.l.s $f18, $f13 +0x46 0x20 0xc2 0xce # CHECK: ceil.w.d $f11, $f24 +0x46 0x00 0xa1 0x8e # CHECK: ceil.w.s $f6, $f20 +0x44 0x51 0xa8 0x00 # CHECK: cfc1 $17, $21 +0x44 0xc6 0xd0 0x00 # CHECK: ctc1 $6, $26 +0x46 0x00 0xe5 0xa1 # CHECK: cvt.d.s $f22, $f28 +0x46 0x80 0x5e 0xa1 # CHECK: cvt.d.w $f26, $f11 +0x46 0xa0 0x81 0x21 # CHECK: cvt.d.l $f4, $f16 +0x46 0x20 0x7e 0x25 # CHECK: cvt.l.d $f24, $f15 +0x46 0x00 0xea 0xe5 # CHECK: cvt.l.s $f11, $f29 +0x46 0xa0 0xf3 0xe0 # CHECK: cvt.s.l $f15, $f30 +0x46 0x20 0x46 0xa0 # CHECK: cvt.s.d $f26, $f8 +0x46 0x80 0x7d 0xa0 # CHECK: cvt.s.w $f22, $f15 +0x46 0x20 0x75 0x24 # CHECK: cvt.w.d $f20, $f14 +0x46 0x00 0xc5 0x24 # CHECK: cvt.w.s $f20, $f24 +0x00 0x3f 0x98 0x2c # CHECK: dadd $19, $1, $ra +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x66 0xda 0xee 0x16 # CHECK: daddiu $26, $22, -4586 +0x00 0x3f 0x98 0x2d # CHECK: daddu $19, $1, $ra +0x64 0x58 0x46 0x9f # CHECK: daddiu $24, $2, 18079 +0x66 0x73 0x69 0x3f # CHECK: daddiu $19, $19, 26943 +0x03 0x53 0x00 0x1e # CHECK: ddiv $zero, $26, $19 +0x02 0x11 0x00 0x1f # CHECK: ddivu $zero, $16, $17 +0x03 0x2b 0x00 0x1a # CHECK: div $zero, $25, $11 +0x46 0x3a 0xa7 0x03 # CHECK: div.d $f28, $f20, $f26 +0x46 0x0f 0x29 0x03 # CHECK: div.s $f4, $f5, $f15 +0x03 0x2f 0x00 0x1b # CHECK: divu $zero, $25, $15 +0x44 0x2c 0x68 0x00 # CHECK: dmfc1 $12, $f13 +0x44 0xb0 0x70 0x00 # CHECK: dmtc1 $16, $f14 +0x02 0xe9 0x00 0x1c # CHECK: dmult $23, $9 +0x00 0xa6 0x00 0x1d # CHECK: dmultu $5, $6 +0x00 0x00 0x04 0xb8 # CHECK: dsll $zero, $zero, 18 +0x00 0x14 0x04 0xb8 # CHECK: dsll $zero, $20, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x1c 0xe2 0xbb # CHECK: dsra $gp, $gp, 10 +0x00 0x12 0xe2 0xbb # CHECK: dsra $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x1c 0xe2 0xbf # CHECK: dsra32 $gp, $gp, 10 +0x00 0x12 0xe2 0xbf # CHECK: dsra32 $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x13 0x9d 0xfa # CHECK: dsrl $19, $19, 23 +0x00 0x06 0x9d 0xfa # CHECK: dsrl $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x00 0x13 0x9d 0xfe # CHECK: dsrl32 $19, $19, 23 +0x00 0x06 0x9d 0xfe # CHECK: dsrl32 $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x02 0xc8 0x38 0x2e # CHECK: dsub $7, $22, $8 +0x00 0xba 0x28 0x2f # CHECK: dsubu $5, $5, $26 +0x00 0x00 0x00 0xc0 # CHECK: ehb +0x42 0x00 0x00 0x18 # CHECK: eret +0x46 0x20 0x53 0x8f # CHECK: floor.w.d $f14, $f10 +0x46 0x00 0x4a 0x0f # CHECK: floor.w.s $f8, $f9 +0x46 0x20 0x3e 0x8b # CHECK: floor.l.d $f26, $f7 +0x46 0x00 0x2b 0x0b # CHECK: floor.l.s $f12, $f5 +0x81 0x58 0xc7 0x4d # CHECK: lb $24, -14515($10) +0x90 0x68 0x75 0xf3 # CHECK: lbu $8, 30195($3) +0xd6 0x0a 0x40 0x07 # CHECK: ldc1 $f10, 16391($16) +0xd8 0x28 0xad 0x43 # CHECK: ldc2 $8, -21181($1) +0x86 0xab 0xde 0x94 # CHECK: lh $11, -8556($21) +0x94 0x53 0xa6 0xbd # CHECK: lhu $19, -22851($2) +0x24 0x01 0x8b 0xb3 # CHECK: addiu $1, $zero, -29773 +0x24 0x00 0x8b 0x3f # CHECK: addiu $zero, $zero, -29889 +0xc2 0x42 0xe3 0x67 # CHECK: ll $2, -7321($18) +0x8c 0xa8 0x16 0x2a # CHECK: lw $8, 5674($5) +0xc7 0x50 0x27 0xf1 # CHECK: lwc1 $f16, 10225($26) +0xc8 0xd2 0xfc 0xb7 # CHECK: lwc2 $18, -841($6) +0x89 0xf4 0xef 0x79 # CHECK: lwl $20, -4231($15) +0x9b 0x80 0xb5 0x35 # CHECK: lwr $zero, -19147($gp) +0x44 0x07 0xd8 0x00 # CHECK: mfc1 $7, $f27 +0x00 0x00 0x98 0x10 # CHECK: mfhi $19 +0x00 0x00 0xe8 0x10 # CHECK: mfhi $sp +0x00 0x00 0x88 0x12 # CHECK: mflo $17 +0x46 0x20 0x75 0x06 # CHECK: mov.d $f20, $f14 +0x46 0x00 0xd8 0x86 # CHECK: mov.s $f2, $f27 +0x00 0x80 0xf0 0x21 # CHECK: move $fp, $4 +0x00 0xc0 0xc8 0x21 # CHECK: move $25, $6 +0x44 0x9e 0x48 0x00 # CHECK: mtc1 $fp, $f9 +0x02 0x20 0x00 0x11 # CHECK: mthi $17 +0x03 0xa0 0x00 0x13 # CHECK: mtlo $sp +0x03 0x20 0x00 0x13 # CHECK: mtlo $25 +0x46 0x30 0xa5 0x02 # CHECK: mul.d $f20, $f20, $f16 +0x46 0x02 0x57 0x82 # CHECK: mul.s $f30, $f10, $f2 +0x03 0xb4 0x00 0x18 # CHECK: mult $sp, $20 +0x03 0xa2 0x00 0x18 # CHECK: mult $sp, $2 +0x03 0x9a 0x00 0x19 # CHECK: multu $gp, $26 +0x01 0x32 0x00 0x19 # CHECK: multu $9, $18 +0x00 0x02 0x10 0x23 # CHECK: negu $2, $2 +0x00 0x03 0x10 0x23 # CHECK: negu $2, $3 +0x46 0x20 0x96 0x87 # CHECK: neg.d $f26, $f18 +0x46 0x00 0x78 0x47 # CHECK: neg.s $f1, $f15 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0x07 0x38 0x27 # CHECK: nor $7, $zero, $7 +0x02 0x1d 0x60 0x25 # CHECK: or $12, $16, $sp +0x34 0x42 0x00 0x04 # CHECK: ori $2, $2, 4 +0x46 0x20 0x0b 0x08 # CHECK: round.l.d $f12, $f1 +0x46 0x00 0x2e 0x48 # CHECK: round.l.s $f25, $f5 +0x46 0x20 0x21 0x8c # CHECK: round.w.d $f6, $f4 +0x46 0x00 0xe6 0xcc # CHECK: round.w.s $f27, $f28 +0xa1 0xd6 0xb2 0x6f # CHECK: sb $22, -19857($14) +0xe2 0x6f 0x49 0xd8 # CHECK: sc $15, 18904($19) +0xf3 0xaf 0xdf 0xcd # CHECK: scd $15, -8243($sp) +0xfd 0x4c 0x16 0xcb # CHECK: sd $12, 5835($10) +0xb3 0xc7 0xae 0x1f # CHECK: sdl $7, -20961($fp) +0xb5 0x8b 0xb0 0x39 # CHECK: sdr $11, -20423($12) +0xf5 0xbe 0x77 0x6e # CHECK: sdc1 $f30, 30574($13) +0xfa 0x54 0x5a 0x75 # CHECK: sdc2 $20, 23157($18) +0xa5 0xee 0xe5 0xd0 # CHECK: sh $14, -6704($15) +0x00 0x07 0x3c 0x80 # CHECK: sll $7, $7, 18 +0x00 0x00 0x3c 0x80 # CHECK: sll $7, $zero, 18 +0x01 0x20 0x38 0x04 # CHECK: sllv $7, $zero, $9 +0x01 0x20 0x38 0x04 # CHECK: sllv $7, $zero, $9 +0x01 0x7b 0xb8 0x2a # CHECK: slt $23, $11, $27 +0x29 0x51 0x25 0x11 # CHECK: slti $17, $10, 9489 +0x2f 0x39 0xc3 0x55 # CHECK: sltiu $25, $25, -15531 +0x02 0xab 0xa0 0x2b # CHECK: sltu $20, $21, $11 +0x2f 0x38 0xc3 0x55 # CHECK: sltiu $24, $25, -15531 +0x46 0x20 0xb4 0x04 # CHECK: sqrt.d $f16, $f22 +0x46 0x00 0x08 0x04 # CHECK: sqrt.s $f0, $f1 +0x00 0x11 0x8b 0xc3 # CHECK: sra $17, $17, 15 +0x00 0x17 0x8b 0xc3 # CHECK: sra $17, $23, 15 +0x03 0xb7 0x88 0x07 # CHECK: srav $17, $23, $sp +0x03 0xb7 0x88 0x07 # CHECK: srav $17, $23, $sp +0x00 0x02 0x11 0xc2 # CHECK: srl $2, $2, 7 +0x00 0x02 0x11 0xc2 # CHECK: srl $2, $2, 7 +0x00 0x94 0xc8 0x06 # CHECK: srlv $25, $20, $4 +0x00 0x94 0xc8 0x06 # CHECK: srlv $25, $20, $4 +0x00 0x00 0x00 0x40 # CHECK: ssnop +0x02 0x6c 0xb0 0x22 # CHECK: sub $22, $19, $12 +0x22 0x36 0x0c 0x36 # CHECK: addi $22, $17, 3126 +0x21 0xad 0xe6 0x90 # CHECK: addi $13, $13, -6512 +0x46 0x30 0x14 0x81 # CHECK: sub.d $f18, $f2, $f16 +0x46 0x16 0xb5 0xc1 # CHECK: sub.s $f23, $f22, $f22 +0x02 0xd6 0xe8 0x23 # CHECK: subu $sp, $22, $22 +0xaf 0xbf 0xd8 0x50 # CHECK: sw $ra, -10160($sp) +0xe7 0x06 0xde 0xef # CHECK: swc1 $f6, -8465($24) +0xea 0x19 0x61 0x30 # CHECK: swc2 $25, 24880($16) +0xaa 0x6f 0x35 0x7e # CHECK: swl $15, 13694($19) +0xb9 0xd1 0x98 0x22 # CHECK: swr $17, -26590($14) +0x00 0x03 0x00 0x34 # CHECK: teq $zero, $3 +0x00 0xa7 0x9b 0x34 # CHECK: teq $5, $7, 620 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 +0x00 0xea 0x00 0x30 # CHECK: tge $7, $10 +0x00 0xb3 0x55 0x30 # CHECK: tge $5, $19, 340 +0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 +0x02 0xdc 0x00 0x31 # CHECK: tgeu $22, $gp +0x02 0x8e 0x5e 0xf1 # CHECK: tgeu $20, $14, 379 +0x42 0x00 0x00 0x08 # CHECK: tlbp +0x42 0x00 0x00 0x01 # CHECK: tlbr +0x42 0x00 0x00 0x02 # CHECK: tlbwi +0x42 0x00 0x00 0x06 # CHECK: tlbwr +0x01 0xed 0x00 0x32 # CHECK: tlt $15, $13 +0x00 0x53 0x21 0x72 # CHECK: tlt $2, $19, 133 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x01 0x70 0x00 0x33 # CHECK: tltu $11, $16 +0x02 0x1d 0xfe 0x33 # CHECK: tltu $16, $sp, 1016 +0x00 0xd1 0x00 0x36 # CHECK: tne $6, $17 +0x00 0xe8 0xdd 0x76 # CHECK: tne $7, $8, 885 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x46 0x20 0xbd 0xc9 # CHECK: trunc.l.d $f23, $f23 +0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31 +0x46 0x20 0x75 0x8d # CHECK: trunc.w.d $f22, $f14 +0x46 0x00 0xf7 0x0d # CHECK: trunc.w.s $f28, $f30 +0x00 0x9e 0x90 0x26 # CHECK: xor $18, $4, $fp diff --git a/test/MC/Disassembler/Mips/mips32/valid-mips32-el.txt b/test/MC/Disassembler/Mips/mips32/valid-mips32-el.txt new file mode 100644 index 0000000..ea209d1 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32/valid-mips32-el.txt @@ -0,0 +1,149 @@ +# RUN: llvm-mc --disassemble %s -triple=mipsel-unknown-linux | FileCheck %s +0x05 0x73 0x20 0x46 # CHECK: abs.d $f12, $f14 +0x85 0x39 0x00 0x46 # CHECK: abs.s $f6, $f7 +0x20 0x48 0xc7 0x00 # CHECK: add $9, $6, $7 +0x00 0x62 0x2e 0x46 # CHECK: add.d $f8, $f12, $f14 +0x40 0x32 0x07 0x46 # CHECK: add.s $f9, $f6, $f7 +0x67 0x45 0xc9 0x20 # CHECK: addi $9, $6, 17767 +0x67 0xc5 0xc9 0x24 # CHECK: addiu $9, $6, -15001 +0x21 0x48 0xc7 0x00 # CHECK: addu $9, $6, $7 +0x24 0x48 0xc7 0x00 # CHECK: and $9, $6, $7 +0x67 0x45 0xc9 0x30 # CHECK: andi $9, $6, 17767 +0x4c 0x01 0x00 0x10 # CHECK: b 1332 +0x4c 0x01 0x00 0x45 # CHECK: bc1f 1332 +0x4c 0x01 0x1c 0x45 # CHECK: bc1f $fcc7, 1332 +0x4c 0x01 0x01 0x45 # CHECK: bc1t 1332 +0x4c 0x01 0x1d 0x45 # CHECK: bc1t $fcc7, 1332 +0x4c 0x01 0x26 0x11 # CHECK: beq $9, $6, 1332 +0x4c 0x01 0xc1 0x04 # CHECK: bgez $6, 1332 +0x4c 0x01 0xd1 0x04 # CHECK: bgezal $6, 1332 +0x4c 0x01 0xc0 0x1c # CHECK: bgtz $6, 1332 +0x4c 0x01 0xc0 0x18 # CHECK: blez $6, 1332 +0x4c 0x01 0x26 0x15 # CHECK: bne $9, $6, 1332 +0x32 0x60 0x2e 0x46 # CHECK: c.eq.d $f12, $f14 +0x32 0x30 0x07 0x46 # CHECK: c.eq.s $f6, $f7 +0x30 0x60 0x2e 0x46 # CHECK: c.f.d $f12, $f14 +0x30 0x30 0x07 0x46 # CHECK: c.f.s $f6, $f7 +0x3e 0x60 0x2e 0x46 # CHECK: c.le.d $f12, $f14 +0x3e 0x30 0x07 0x46 # CHECK: c.le.s $f6, $f7 +0x3c 0x60 0x2e 0x46 # CHECK: c.lt.d $f12, $f14 +0x3c 0x30 0x07 0x46 # CHECK: c.lt.s $f6, $f7 +0x3d 0x60 0x2e 0x46 # CHECK: c.nge.d $f12, $f14 +0x3d 0x30 0x07 0x46 # CHECK: c.nge.s $f6, $f7 +0x3b 0x60 0x2e 0x46 # CHECK: c.ngl.d $f12, $f14 +0x3b 0x30 0x07 0x46 # CHECK: c.ngl.s $f6, $f7 +0x39 0x60 0x2e 0x46 # CHECK: c.ngle.d $f12, $f14 +0x39 0x30 0x07 0x46 # CHECK: c.ngle.s $f6, $f7 +0x3f 0x60 0x2e 0x46 # CHECK: c.ngt.d $f12, $f14 +0x3f 0x30 0x07 0x46 # CHECK: c.ngt.s $f6, $f7 +0x36 0x60 0x2e 0x46 # CHECK: c.ole.d $f12, $f14 +0x36 0x30 0x07 0x46 # CHECK: c.ole.s $f6, $f7 +0x34 0x60 0x2e 0x46 # CHECK: c.olt.d $f12, $f14 +0x34 0x30 0x07 0x46 # CHECK: c.olt.s $f6, $f7 +0x3a 0x60 0x2e 0x46 # CHECK: c.seq.d $f12, $f14 +0x3a 0x30 0x07 0x46 # CHECK: c.seq.s $f6, $f7 +0x38 0x60 0x2e 0x46 # CHECK: c.sf.d $f12, $f14 +0x38 0x30 0x07 0x46 # CHECK: c.sf.s $f6, $f7 +0x33 0x60 0x2e 0x46 # CHECK: c.ueq.d $f12, $f14 +0x33 0xe0 0x12 0x46 # CHECK: c.ueq.s $f28, $f18 +0x37 0x60 0x2e 0x46 # CHECK: c.ule.d $f12, $f14 +0x37 0x30 0x07 0x46 # CHECK: c.ule.s $f6, $f7 +0x35 0x60 0x2e 0x46 # CHECK: c.ult.d $f12, $f14 +0x35 0x30 0x07 0x46 # CHECK: c.ult.s $f6, $f7 +0x31 0x60 0x2e 0x46 # CHECK: c.un.d $f12, $f14 +0x31 0x30 0x07 0x46 # CHECK: c.un.s $f6, $f7 +0x0e 0x73 0x20 0x46 # CHECK: ceil.w.d $f12, $f14 +0x8e 0x39 0x00 0x46 # CHECK: ceil.w.s $f6, $f7 +0x00 0x38 0x46 0x44 # CHECK: cfc1 $6, $7 +0x21 0x30 0xe6 0x70 # CHECK: clo $6, $7 +0x20 0x30 0xe6 0x70 # CHECK: clz $6, $7 +0x00 0x38 0xc6 0x44 # CHECK: ctc1 $6, $7 +0xa1 0x39 0x00 0x46 # CHECK: cvt.d.s $f6, $f7 +0x21 0x73 0x80 0x46 # CHECK: cvt.d.w $f12, $f14 +0x20 0x73 0x20 0x46 # CHECK: cvt.s.d $f12, $f14 +0xa0 0x39 0x80 0x46 # CHECK: cvt.s.w $f6, $f7 +0x24 0x73 0x20 0x46 # CHECK: cvt.w.d $f12, $f14 +0xa4 0x39 0x00 0x46 # CHECK: cvt.w.s $f6, $f7 +0x0f 0x73 0x20 0x46 # CHECK: floor.w.d $f12, $f14 +0x8f 0x39 0x00 0x46 # CHECK: floor.w.s $f6, $f7 +0x4c 0x01 0x00 0x08 # CHECK: j 1328 +0x4c 0x01 0x00 0x0c # CHECK: jal 1328 +0x4c 0x01 0x00 0x74 # CHECK: jalx 1328 +0x09 0xf8 0xe0 0x00 # CHECK: jalr $7 +0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 +0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0x08 0x00 0xe0 0x00 # CHECK: jr $7 +0xc6 0x23 0xa4 0x80 # CHECK: lb $4, 9158($5) +0x06 0x00 0xa4 0x90 # CHECK: lbu $4, 6($5) +0xc6 0x23 0xe9 0xd4 # CHECK: ldc1 $f9, 9158($7) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0xc6 0x23 0xe9 0xc0 # CHECK: ll $9, 9158($7) +0x67 0x45 0x06 0x3c # CHECK: lui $6, 17767 +0x18 0x00 0xa4 0x8c # CHECK: lw $4, 24($5) +0xc6 0x23 0xe9 0xc4 # CHECK: lwc1 $f9, 9158($7) +0x03 0x00 0x82 0x88 # CHECK: lwl $2, 3($4) +0x10 0x00 0xa3 0x98 # CHECK: lwr $3, 16($5) +0x00 0x00 0xc7 0x70 # CHECK: madd $6, $7 +0x01 0x00 0xc7 0x70 # CHECK: maddu $6, $7 +0x00 0x38 0x06 0x44 # CHECK: mfc1 $6, $f7 +0x10 0x28 0x00 0x00 # CHECK: mfhi $5 +0x12 0x28 0x00 0x00 # CHECK: mflo $5 +0x86 0x41 0x20 0x46 # CHECK: mov.d $f6, $f8 +0x86 0x39 0x00 0x46 # CHECK: mov.s $f6, $f7 +0x04 0x00 0xc7 0x70 # CHECK: msub $6, $7 +0x05 0x00 0xc7 0x70 # CHECK: msubu $6, $7 +0x00 0x38 0x86 0x44 # CHECK: mtc1 $6, $f7 +0x11 0x00 0xe0 0x00 # CHECK: mthi $7 +0x13 0x00 0xe0 0x00 # CHECK: mtlo $7 +0x02 0x62 0x2e 0x46 # CHECK: mul.d $f8, $f12, $f14 +0x42 0x32 0x07 0x46 # CHECK: mul.s $f9, $f6, $f7 +0x02 0x48 0xc7 0x70 # CHECK: mul $9, $6, $7 +0x18 0x00 0x65 0x00 # CHECK: mult $3, $5 +0x19 0x00 0x65 0x00 # CHECK: multu $3, $5 +0x07 0x73 0x20 0x46 # CHECK: neg.d $f12, $f14 +0x87 0x39 0x00 0x46 # CHECK: neg.s $f6, $f7 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x48 0xc7 0x00 # CHECK: nor $9, $6, $7 +0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5 +0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767 +0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14 +0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7 +0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5) +0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5) +0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7) +0xc6 0x23 0xe9 0xf4 # CHECK: sdc1 $f9, 9158($7) +0xc6 0x23 0xa4 0xa4 # CHECK: sh $4, 9158($5) +0xc0 0x21 0x03 0x00 # CHECK: sll $4, $3, 7 +0x04 0x10 0xa3 0x00 # CHECK: sllv $2, $3, $5 +0x2a 0x18 0x65 0x00 # CHECK: slt $3, $3, $5 +0x67 0x00 0x63 0x28 # CHECK: slti $3, $3, 103 +0x67 0x00 0x63 0x2c # CHECK: sltiu $3, $3, 103 +0x2b 0x18 0x65 0x00 # CHECK: sltu $3, $3, $5 +0x04 0x73 0x20 0x46 # CHECK: sqrt.d $f12, $f14 +0x84 0x39 0x00 0x46 # CHECK: sqrt.s $f6, $f7 +0xc3 0x21 0x03 0x00 # CHECK: sra $4, $3, 7 +0x07 0x10 0xa3 0x00 # CHECK: srav $2, $3, $5 +0xc2 0x21 0x03 0x00 # CHECK: srl $4, $3, 7 +0x06 0x10 0xa3 0x00 # CHECK: srlv $2, $3, $5 +0x01 0x62 0x2e 0x46 # CHECK: sub.d $f8, $f12, $f14 +0x41 0x32 0x07 0x46 # CHECK: sub.s $f9, $f6, $f7 +0x22 0x48 0xc7 0x00 # CHECK: sub $9, $6, $7 +0x23 0x20 0x65 0x00 # CHECK: subu $4, $3, $5 +0x18 0x00 0xa4 0xac # CHECK: sw $4, 24($5) +0xc6 0x23 0xe9 0xe4 # CHECK: swc1 $f9, 9158($7) +0x10 0x00 0xa4 0xa8 # CHECK: swl $4, 16($5) +0x10 0x00 0xe6 0xb8 # CHECK: swr $6, 16($7) +0xcf 0x01 0x00 0x00 # CHECK: sync 7 +0x0d 0x73 0x20 0x46 # CHECK: trunc.w.d $f12, $f14 +0x8d 0x39 0x00 0x46 # CHECK: trunc.w.s $f6, $f7 +0x26 0x18 0x65 0x00 # CHECK: xor $3, $3, $5 +0x67 0x45 0xc9 0x38 # CHECK: xori $9, $6, 17767 +0x3b 0xe8 0x05 0x7c # CHECK: .set push + # CHECK: .set mips32r2 + # CHECK: rdhwr $5, $29 + # CHECK: .set pop +0x02 0x00 0x61 0xbc # CHECK: cache 1, 2($3) +0x04 0x00 0x43 0xcc # CHECK: pref 3, 4($2) +0xc6 0x23 0xe9 0xe8 # CHECK: swc2 $9, 9158($7) +0xca 0x23 0xc8 0xc8 # CHECK: lwc2 $8, 9162($6) diff --git a/test/MC/Disassembler/Mips/mips32/valid-mips32.txt b/test/MC/Disassembler/Mips/mips32/valid-mips32.txt new file mode 100644 index 0000000..45b672b --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32/valid-mips32.txt @@ -0,0 +1,149 @@ +# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux | FileCheck %s +0x46 0x20 0x73 0x05 # CHECK: abs.d $f12, $f14 +0x46 0x00 0x39 0x85 # CHECK: abs.s $f6, $f7 +0x00 0xc7 0x48 0x20 # CHECK: add $9, $6, $7 +0x46 0x2e 0x62 0x00 # CHECK: add.d $f8, $f12, $f14 +0x46 0x07 0x32 0x40 # CHECK: add.s $f9, $f6, $f7 +0x20 0xc9 0x45 0x67 # CHECK: addi $9, $6, 17767 +0x24 0xc9 0xc5 0x67 # CHECK: addiu $9, $6, -15001 +0x00 0xc7 0x48 0x21 # CHECK: addu $9, $6, $7 +0x00 0xc7 0x48 0x24 # CHECK: and $9, $6, $7 +0x30 0xc9 0x45 0x67 # CHECK: andi $9, $6, 17767 +0x10 0x00 0x01 0x4c # CHECK: b 1332 +0x45 0x00 0x01 0x4c # CHECK: bc1f 1332 +0x45 0x1c 0x01 0x4c # CHECK: bc1f $fcc7, 1332 +0x45 0x01 0x01 0x4c # CHECK: bc1t 1332 +0x45 0x1d 0x01 0x4c # CHECK: bc1t $fcc7, 1332 +0x11 0x26 0x01 0x4c # CHECK: beq $9, $6, 1332 +0x04 0xc1 0x01 0x4c # CHECK: bgez $6, 1332 +0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 +0x1c 0xc0 0x01 0x4c # CHECK: bgtz $6, 1332 +0x18 0xc0 0x01 0x4c # CHECK: blez $6, 1332 +0x15 0x26 0x01 0x4c # CHECK: bne $9, $6, 1332 +0x46 0x2e 0x60 0x32 # CHECK: c.eq.d $f12, $f14 +0x46 0x07 0x30 0x32 # CHECK: c.eq.s $f6, $f7 +0x46 0x2e 0x60 0x30 # CHECK: c.f.d $f12, $f14 +0x46 0x07 0x30 0x30 # CHECK: c.f.s $f6, $f7 +0x46 0x2e 0x60 0x3e # CHECK: c.le.d $f12, $f14 +0x46 0x07 0x30 0x3e # CHECK: c.le.s $f6, $f7 +0x46 0x2e 0x60 0x3c # CHECK: c.lt.d $f12, $f14 +0x46 0x07 0x30 0x3c # CHECK: c.lt.s $f6, $f7 +0x46 0x2e 0x60 0x3d # CHECK: c.nge.d $f12, $f14 +0x46 0x07 0x30 0x3d # CHECK: c.nge.s $f6, $f7 +0x46 0x2e 0x60 0x3b # CHECK: c.ngl.d $f12, $f14 +0x46 0x07 0x30 0x3b # CHECK: c.ngl.s $f6, $f7 +0x46 0x2e 0x60 0x39 # CHECK: c.ngle.d $f12, $f14 +0x46 0x07 0x30 0x39 # CHECK: c.ngle.s $f6, $f7 +0x46 0x2e 0x60 0x3f # CHECK: c.ngt.d $f12, $f14 +0x46 0x07 0x30 0x3f # CHECK: c.ngt.s $f6, $f7 +0x46 0x2e 0x60 0x36 # CHECK: c.ole.d $f12, $f14 +0x46 0x07 0x30 0x36 # CHECK: c.ole.s $f6, $f7 +0x46 0x2e 0x60 0x34 # CHECK: c.olt.d $f12, $f14 +0x46 0x07 0x30 0x34 # CHECK: c.olt.s $f6, $f7 +0x46 0x2e 0x60 0x3a # CHECK: c.seq.d $f12, $f14 +0x46 0x07 0x30 0x3a # CHECK: c.seq.s $f6, $f7 +0x46 0x2e 0x60 0x38 # CHECK: c.sf.d $f12, $f14 +0x46 0x07 0x30 0x38 # CHECK: c.sf.s $f6, $f7 +0x46 0x2e 0x60 0x33 # CHECK: c.ueq.d $f12, $f14 +0x46 0x12 0xe0 0x33 # CHECK: c.ueq.s $f28, $f18 +0x46 0x2e 0x60 0x37 # CHECK: c.ule.d $f12, $f14 +0x46 0x07 0x30 0x37 # CHECK: c.ule.s $f6, $f7 +0x46 0x2e 0x60 0x35 # CHECK: c.ult.d $f12, $f14 +0x46 0x07 0x30 0x35 # CHECK: c.ult.s $f6, $f7 +0x46 0x2e 0x60 0x31 # CHECK: c.un.d $f12, $f14 +0x46 0x07 0x30 0x31 # CHECK: c.un.s $f6, $f7 +0x46 0x20 0x73 0x0e # CHECK: ceil.w.d $f12, $f14 +0x46 0x00 0x39 0x8e # CHECK: ceil.w.s $f6, $f7 +0x44 0x46 0x38 0x00 # CHECK: cfc1 $6, $7 +0x70 0xe6 0x30 0x21 # CHECK: clo $6, $7 +0x70 0xe6 0x30 0x20 # CHECK: clz $6, $7 +0x44 0xc6 0x38 0x00 # CHECK: ctc1 $6, $7 +0x46 0x00 0x39 0xa1 # CHECK: cvt.d.s $f6, $f7 +0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14 +0x46 0x20 0x73 0x20 # CHECK: cvt.s.d $f12, $f14 +0x46 0x80 0x39 0xa0 # CHECK: cvt.s.w $f6, $f7 +0x46 0x20 0x73 0x24 # CHECK: cvt.w.d $f12, $f14 +0x46 0x00 0x39 0xa4 # CHECK: cvt.w.s $f6, $f7 +0x46 0x20 0x73 0x0f # CHECK: floor.w.d $f12, $f14 +0x46 0x00 0x39 0x8f # CHECK: floor.w.s $f6, $f7 +0x08 0x00 0x01 0x4c # CHECK: j 1328 +0x0c 0x00 0x01 0x4c # CHECK: jal 1328 +0x74 0x00 0x01 0x4c # CHECK: jalx 1328 +0x00 0xe0 0xf8 0x09 # CHECK: jalr $7 +0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 +0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0x00 0xe0 0x00 0x08 # CHECK: jr $7 +0x80 0xa4 0x23 0xc6 # CHECK: lb $4, 9158($5) +0x90 0xa4 0x00 0x06 # CHECK: lbu $4, 6($5) +0xd4 0xe9 0x23 0xc6 # CHECK: ldc1 $f9, 9158($7) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0xc0 0xe9 0x23 0xc6 # CHECK: ll $9, 9158($7) +0x3c 0x06 0x45 0x67 # CHECK: lui $6, 17767 +0x8c 0xa4 0x00 0x18 # CHECK: lw $4, 24($5) +0xc4 0xe9 0x23 0xc6 # CHECK: lwc1 $f9, 9158($7) +0x88 0x82 0x00 0x03 # CHECK: lwl $2, 3($4) +0x98 0xa3 0x00 0x10 # CHECK: lwr $3, 16($5) +0x70 0xc7 0x00 0x00 # CHECK: madd $6, $7 +0x70 0xc7 0x00 0x01 # CHECK: maddu $6, $7 +0x44 0x06 0x38 0x00 # CHECK: mfc1 $6, $f7 +0x00 0x00 0x28 0x10 # CHECK: mfhi $5 +0x00 0x00 0x28 0x12 # CHECK: mflo $5 +0x46 0x20 0x41 0x86 # CHECK: mov.d $f6, $f8 +0x46 0x00 0x39 0x86 # CHECK: mov.s $f6, $f7 +0x70 0xc7 0x00 0x04 # CHECK: msub $6, $7 +0x70 0xc7 0x00 0x05 # CHECK: msubu $6, $7 +0x44 0x86 0x38 0x00 # CHECK: mtc1 $6, $f7 +0x00 0xe0 0x00 0x11 # CHECK: mthi $7 +0x00 0xe0 0x00 0x13 # CHECK: mtlo $7 +0x46 0x2e 0x62 0x02 # CHECK: mul.d $f8, $f12, $f14 +0x46 0x07 0x32 0x42 # CHECK: mul.s $f9, $f6, $f7 +0x70 0xc7 0x48 0x02 # CHECK: mul $9, $6, $7 +0x00 0x65 0x00 0x18 # CHECK: mult $3, $5 +0x00 0x65 0x00 0x19 # CHECK: multu $3, $5 +0x46 0x20 0x73 0x07 # CHECK: neg.d $f12, $f14 +0x46 0x00 0x39 0x87 # CHECK: neg.s $f6, $f7 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0xc7 0x48 0x27 # CHECK: nor $9, $6, $7 +0x00 0x65 0x18 0x25 # CHECK: or $3, $3, $5 +0x34 0xc9 0x45 0x67 # CHECK: ori $9, $6, 17767 +0x46 0x20 0x73 0x0c # CHECK: round.w.d $f12, $f14 +0x46 0x00 0x39 0x8c # CHECK: round.w.s $f6, $f7 +0xa0 0xa4 0x23 0xc6 # CHECK: sb $4, 9158($5) +0xa0 0xa4 0x00 0x06 # CHECK: sb $4, 6($5) +0xe0 0xe9 0x23 0xc6 # CHECK: sc $9, 9158($7) +0xf4 0xe9 0x23 0xc6 # CHECK: sdc1 $f9, 9158($7) +0xa4 0xa4 0x23 0xc6 # CHECK: sh $4, 9158($5) +0x00 0x03 0x21 0xc0 # CHECK: sll $4, $3, 7 +0x00 0xa3 0x10 0x04 # CHECK: sllv $2, $3, $5 +0x00 0x65 0x18 0x2a # CHECK: slt $3, $3, $5 +0x28 0x63 0x00 0x67 # CHECK: slti $3, $3, 103 +0x2c 0x63 0x00 0x67 # CHECK: sltiu $3, $3, 103 +0x00 0x65 0x18 0x2b # CHECK: sltu $3, $3, $5 +0x46 0x20 0x73 0x04 # CHECK: sqrt.d $f12, $f14 +0x46 0x00 0x39 0x84 # CHECK: sqrt.s $f6, $f7 +0x00 0x03 0x21 0xc3 # CHECK: sra $4, $3, 7 +0x00 0xa3 0x10 0x07 # CHECK: srav $2, $3, $5 +0x00 0x03 0x21 0xc2 # CHECK: srl $4, $3, 7 +0x00 0xa3 0x10 0x06 # CHECK: srlv $2, $3, $5 +0x46 0x2e 0x62 0x01 # CHECK: sub.d $f8, $f12, $f14 +0x46 0x07 0x32 0x41 # CHECK: sub.s $f9, $f6, $f7 +0x00 0xc7 0x48 0x22 # CHECK: sub $9, $6, $7 +0x00 0x65 0x20 0x23 # CHECK: subu $4, $3, $5 +0xac 0xa4 0x00 0x18 # CHECK: sw $4, 24($5) +0xe4 0xe9 0x23 0xc6 # CHECK: swc1 $f9, 9158($7) +0xa8 0xa4 0x00 0x10 # CHECK: swl $4, 16($5) +0xb8 0xe6 0x00 0x10 # CHECK: swr $6, 16($7) +0x00 0x00 0x01 0xcf # CHECK: sync 7 +0x46 0x20 0x73 0x0d # CHECK: trunc.w.d $f12, $f14 +0x46 0x00 0x39 0x8d # CHECK: trunc.w.s $f6, $f7 +0x00 0x65 0x18 0x26 # CHECK: xor $3, $3, $5 +0x38 0xc9 0x45 0x67 # CHECK: xori $9, $6, 17767 +0x7c 0x05 0xe8 0x3b # CHECK: .set push + # CHECK: .set mips32r2 + # CHECK: rdhwr $5, $29 + # CHECK: .set pop +0xbc 0x61 0x00 0x02 # CHECK: cache 1, 2($3) +0xcc 0x43 0x00 0x04 # CHECK: pref 3, 4($2) +0xe8 0xe9 0x23 0xc6 # CHECK: swc2 $9, 9158($7) +0xc8 0xc8 0x23 0xca # CHECK: lwc2 $8, 9162($6) diff --git a/test/MC/Disassembler/Mips/mips32/valid-xfail-mips32.txt b/test/MC/Disassembler/Mips/mips32/valid-xfail-mips32.txt new file mode 100644 index 0000000..f614271 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32/valid-xfail-mips32.txt @@ -0,0 +1,30 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble | FileCheck %s +# XFAIL: * +0x46 0x2f 0x79 0x32 # CHECK: c.eq.d $fcc1, $f15, $f15 +0x46 0x11 0xc5 0x32 # CHECK: c.eq.s $fcc5, $f24, $f17 +0x46 0x35 0x5c 0x30 # CHECK: c.f.d $fcc4, $f11, $f21 +0x46 0x07 0xf4 0x30 # CHECK: c.f.s $fcc4, $f30, $f7 +0x46 0x21 0x94 0x3e # CHECK: c.le.d $fcc4, $f18, $f1 +0x46 0x04 0xc6 0x3e # CHECK: c.le.s $fcc6, $f24, $f4 +0x46 0x23 0x4b 0x3c # CHECK: c.lt.d $fcc3, $f9, $f3 +0x46 0x0e 0x8a 0x3c # CHECK: c.lt.s $fcc2, $f17, $f14 +0x46 0x30 0xad 0x3d # CHECK: c.nge.d $fcc5, $f21, $f16 +0x46 0x08 0x5b 0x3d # CHECK: c.nge.s $fcc3, $f11, $f8 +0x46 0x17 0xfa 0x3b # CHECK: c.ngl.s $fcc2, $f31, $f23 +0x46 0x17 0x92 0x39 # CHECK: c.ngle.s $fcc2, $f18, $f23 +0x46 0x27 0xc4 0x3f # CHECK: c.ngt.d $fcc4, $f24, $f7 +0x46 0x0d 0x45 0x3f # CHECK: c.ngt.s $fcc5, $f8, $f13 +0x46 0x3f 0x82 0x36 # CHECK: c.ole.d $fcc2, $f16, $f31 +0x46 0x14 0x3b 0x36 # CHECK: c.ole.s $fcc3, $f7, $f20 +0x46 0x3c 0x9c 0x34 # CHECK: c.olt.d $fcc4, $f19, $f28 +0x46 0x07 0xa6 0x34 # CHECK: c.olt.s $fcc6, $f20, $f7 +0x46 0x27 0xfc 0x3a # CHECK: c.seq.d $fcc4, $f31, $f7 +0x46 0x19 0x0f 0x3a # CHECK: c.seq.s $fcc7, $f1, $f25 +0x46 0x39 0x6c 0x33 # CHECK: c.ueq.d $fcc4, $f13, $f25 +0x46 0x1e 0x1e 0x33 # CHECK: c.ueq.s $fcc6, $f3, $f30 +0x46 0x32 0xcf 0x37 # CHECK: c.ule.d $fcc7, $f25, $f18 +0x46 0x1e 0xaf 0x37 # CHECK: c.ule.s $fcc7, $f21, $f30 +0x46 0x31 0x36 0x35 # CHECK: c.ult.d $fcc6, $f6, $f17 +0x46 0x0a 0xc7 0x35 # CHECK: c.ult.s $fcc7, $f24, $f10 +0x46 0x38 0xbe 0x31 # CHECK: c.un.d $fcc6, $f23, $f24 +0x46 0x04 0xf1 0x31 # CHECK: c.un.s $fcc1, $f30, $f4 diff --git a/test/MC/Disassembler/Mips/mips32r2.txt b/test/MC/Disassembler/Mips/mips32r2.txt index 299f6f0..354ef74 100644 --- a/test/MC/Disassembler/Mips/mips32r2.txt +++ b/test/MC/Disassembler/Mips/mips32r2.txt @@ -448,3 +448,6 @@ # CHECK: xori $9, $6, 17767 0x38 0xc9 0x45 0x67 + +# CHECK: synci -6137($fp) +0x07 0xdf 0xe8 0x07 diff --git a/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2-le.txt b/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2-le.txt new file mode 100644 index 0000000..d0eb13c --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2-le.txt @@ -0,0 +1,172 @@ +# RUN: llvm-mc --disassemble %s -triple=mipsel-unknown-linux -mcpu=mips32r2 | FileCheck %s +# Try a mips64* triple to confirm that mips* vs mips64* triples no longer have +# an effect on the disassembler behaviour. +# RUN: llvm-mc --disassemble %s -triple=mips64el-unknown-linux -mcpu=mips32r2 | FileCheck %s +0x05 0x73 0x20 0x46 # CHECK: abs.d $f12, $f14 +0x85 0x39 0x00 0x46 # CHECK: abs.s $f6, $f7 +0x20 0x48 0xc7 0x00 # CHECK: add $9, $6, $7 +0x00 0x62 0x2e 0x46 # CHECK: add.d $f8, $f12, $f14 +0x40 0x32 0x07 0x46 # CHECK: add.s $f9, $f6, $f7 +0x67 0x45 0xc9 0x20 # CHECK: addi $9, $6, 17767 +0x67 0xc5 0xc9 0x24 # CHECK: addiu $9, $6, -15001 +0x21 0x48 0xc7 0x00 # CHECK: addu $9, $6, $7 +0x24 0x48 0xc7 0x00 # CHECK: and $9, $6, $7 +0x67 0x45 0xc9 0x30 # CHECK: andi $9, $6, 17767 +0x4c 0x01 0x00 0x10 # CHECK: b 1332 +0x4c 0x01 0x00 0x45 # CHECK: bc1f 1332 +0x4c 0x01 0x1c 0x45 # CHECK: bc1f $fcc7, 1332 +0x4c 0x01 0x01 0x45 # CHECK: bc1t 1332 +0x4c 0x01 0x1d 0x45 # CHECK: bc1t $fcc7, 1332 +0x4c 0x01 0x26 0x11 # CHECK: beq $9, $6, 1332 +0x4c 0x01 0xc1 0x04 # CHECK: bgez $6, 1332 +0x4c 0x01 0xd1 0x04 # CHECK: bgezal $6, 1332 +0x4c 0x01 0xc0 0x1c # CHECK: bgtz $6, 1332 +0x4c 0x01 0xc0 0x18 # CHECK: blez $6, 1332 +0x4c 0x01 0x26 0x15 # CHECK: bne $9, $6, 1332 +0x32 0x60 0x2e 0x46 # CHECK: c.eq.d $f12, $f14 +0x32 0x30 0x07 0x46 # CHECK: c.eq.s $f6, $f7 +0x30 0x60 0x2e 0x46 # CHECK: c.f.d $f12, $f14 +0x30 0x30 0x07 0x46 # CHECK: c.f.s $f6, $f7 +0x3e 0x60 0x2e 0x46 # CHECK: c.le.d $f12, $f14 +0x3e 0x30 0x07 0x46 # CHECK: c.le.s $f6, $f7 +0x3c 0x60 0x2e 0x46 # CHECK: c.lt.d $f12, $f14 +0x3c 0x30 0x07 0x46 # CHECK: c.lt.s $f6, $f7 +0x3d 0x60 0x2e 0x46 # CHECK: c.nge.d $f12, $f14 +0x3d 0x30 0x07 0x46 # CHECK: c.nge.s $f6, $f7 +0x3b 0x60 0x2e 0x46 # CHECK: c.ngl.d $f12, $f14 +0x3b 0x30 0x07 0x46 # CHECK: c.ngl.s $f6, $f7 +0x39 0x60 0x2e 0x46 # CHECK: c.ngle.d $f12, $f14 +0x39 0x30 0x07 0x46 # CHECK: c.ngle.s $f6, $f7 +0x3f 0x60 0x2e 0x46 # CHECK: c.ngt.d $f12, $f14 +0x3f 0x30 0x07 0x46 # CHECK: c.ngt.s $f6, $f7 +0x36 0x60 0x2e 0x46 # CHECK: c.ole.d $f12, $f14 +0x36 0x30 0x07 0x46 # CHECK: c.ole.s $f6, $f7 +0x34 0x60 0x2e 0x46 # CHECK: c.olt.d $f12, $f14 +0x34 0x30 0x07 0x46 # CHECK: c.olt.s $f6, $f7 +0x3a 0x60 0x2e 0x46 # CHECK: c.seq.d $f12, $f14 +0x3a 0x30 0x07 0x46 # CHECK: c.seq.s $f6, $f7 +0x38 0x60 0x2e 0x46 # CHECK: c.sf.d $f12, $f14 +0x38 0x30 0x07 0x46 # CHECK: c.sf.s $f6, $f7 +0x33 0x60 0x2e 0x46 # CHECK: c.ueq.d $f12, $f14 +0x33 0xe0 0x12 0x46 # CHECK: c.ueq.s $f28, $f18 +0x37 0x60 0x2e 0x46 # CHECK: c.ule.d $f12, $f14 +0x37 0x30 0x07 0x46 # CHECK: c.ule.s $f6, $f7 +0x35 0x60 0x2e 0x46 # CHECK: c.ult.d $f12, $f14 +0x35 0x30 0x07 0x46 # CHECK: c.ult.s $f6, $f7 +0x31 0x60 0x2e 0x46 # CHECK: c.un.d $f12, $f14 +0x31 0x30 0x07 0x46 # CHECK: c.un.s $f6, $f7 +0x0e 0x73 0x20 0x46 # CHECK: ceil.w.d $f12, $f14 +0x8e 0x39 0x00 0x46 # CHECK: ceil.w.s $f6, $f7 +0x00 0x38 0x46 0x44 # CHECK: cfc1 $6, $7 +0x21 0x30 0xe6 0x70 # CHECK: clo $6, $7 +0x20 0x30 0xe6 0x70 # CHECK: clz $6, $7 +0x00 0x38 0xc6 0x44 # CHECK: ctc1 $6, $7 +0xa1 0x39 0x00 0x46 # CHECK: cvt.d.s $f6, $f7 +0x21 0x73 0x80 0x46 # CHECK: cvt.d.w $f12, $f14 +0x25 0x73 0x20 0x46 # CHECK: cvt.l.d $f12, $f14 +0xa5 0x39 0x00 0x46 # CHECK: cvt.l.s $f6, $f7 +0x20 0x73 0x20 0x46 # CHECK: cvt.s.d $f12, $f14 +0xa0 0x39 0x80 0x46 # CHECK: cvt.s.w $f6, $f7 +0x24 0x73 0x20 0x46 # CHECK: cvt.w.d $f12, $f14 +0xa4 0x39 0x00 0x46 # CHECK: cvt.w.s $f6, $f7 +0x00 0x60 0x7e 0x41 # CHECK: di $fp +0x00 0x60 0x60 0x41 # CHECK: di +0x20 0x60 0x6e 0x41 # CHECK: ei $14 +0x20 0x60 0x60 0x41 # CHECK: ei +0x0f 0x73 0x20 0x46 # CHECK: floor.w.d $f12, $f14 +0x8f 0x39 0x00 0x46 # CHECK: floor.w.s $f6, $f7 +0x84 0x61 0x33 0x7d # CHECK: ins $19, $9, 6, 7 +0x4c 0x01 0x00 0x08 # CHECK: j 1328 +0x4c 0x01 0x00 0x0c # CHECK: jal 1328 +0x4c 0x01 0x00 0x74 # CHECK: jalx 1328 +0x09 0xf8 0xe0 0x00 # CHECK: jalr $7 +0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 +0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0x08 0x00 0xe0 0x00 # CHECK: jr $7 +0xc6 0x23 0xa4 0x80 # CHECK: lb $4, 9158($5) +0x06 0x00 0xa4 0x90 # CHECK: lbu $4, 6($5) +0xc6 0x23 0xe9 0xd4 # CHECK: ldc1 $f9, 9158($7) +0x01 0x02 0xf7 0x4d # CHECK: ldxc1 $f8, $23($15) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0xc6 0x23 0xe9 0xc0 # CHECK: ll $9, 9158($7) +0x67 0x45 0x06 0x3c # CHECK: lui $6, 17767 +0x05 0x00 0xa6 0x4c # CHECK: luxc1 $f0, $6($5) +0x18 0x00 0xa4 0x8c # CHECK: lw $4, 24($5) +0xc6 0x23 0xe9 0xc4 # CHECK: lwc1 $f9, 9158($7) +0x03 0x00 0x82 0x88 # CHECK: lwl $2, 3($4) +0x10 0x00 0xa3 0x98 # CHECK: lwr $3, 16($5) +0x00 0x05 0xcc 0x4d # CHECK: lwxc1 $f20, $12($14) +0x00 0x00 0xc7 0x70 # CHECK: madd $6, $7 +0xa1 0xd4 0x94 0x4e # CHECK: madd.d $f18, $f20, $f26, $f20 +0x60 0x98 0xf9 0x4f # CHECK: madd.s $f1, $f31, $f19, $f25 +0x01 0x00 0xc7 0x70 # CHECK: maddu $6, $7 +0x00 0x38 0x06 0x44 # CHECK: mfc1 $6, $f7 +0x10 0x28 0x00 0x00 # CHECK: mfhi $5 +0x00 0xc0 0x7e 0x44 # CHECK: mfhc1 $fp, $f24 +0x12 0x28 0x00 0x00 # CHECK: mflo $5 +0x86 0x41 0x20 0x46 # CHECK: mov.d $f6, $f8 +0x86 0x39 0x00 0x46 # CHECK: mov.s $f6, $f7 +0x04 0x00 0xc7 0x70 # CHECK: msub $6, $7 +0xa9 0xf2 0x52 0x4c # CHECK: msub.d $f10, $f2, $f30, $f18 +0x28 0x53 0x70 0x4e # CHECK: msub.s $f12, $f19, $f10, $f16 +0x05 0x00 0xc7 0x70 # CHECK: msubu $6, $7 +0x00 0x38 0x86 0x44 # CHECK: mtc1 $6, $f7 +0x11 0x00 0xe0 0x00 # CHECK: mthi $7 +0x00 0x80 0xe0 0x44 # CHECK: mthc1 $zero, $f16 +0x13 0x00 0xe0 0x00 # CHECK: mtlo $7 +0x02 0x62 0x2e 0x46 # CHECK: mul.d $f8, $f12, $f14 +0x42 0x32 0x07 0x46 # CHECK: mul.s $f9, $f6, $f7 +0x02 0x48 0xc7 0x70 # CHECK: mul $9, $6, $7 +0x18 0x00 0x65 0x00 # CHECK: mult $3, $5 +0x19 0x00 0x65 0x00 # CHECK: multu $3, $5 +0x07 0x73 0x20 0x46 # CHECK: neg.d $f12, $f14 +0x87 0x39 0x00 0x46 # CHECK: neg.s $f6, $f7 +0xb1 0x74 0x54 0x4d # CHECK: nmadd.d $f18, $f10, $f14, $f20 +0x30 0xc8 0xac 0x4c # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x48 0xc7 0x00 # CHECK: nor $9, $6, $7 +0xb9 0x87 0x1e 0x4d # CHECK: nmsub.d $f30, $f8, $f16, $f30 +0x78 0x98 0x04 0x4f # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5 +0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767 +0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7 +0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7 +0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14 +0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7 +0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5) +0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5) +0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7) +0xc6 0x23 0xe9 0xf4 # CHECK: sdc1 $f9, 9158($7) +0x09 0x40 0x24 0x4f # CHECK: sdxc1 $f8, $4($25) +0x20 0x34 0x07 0x7c # CHECK: seb $6, $7 +0x20 0x36 0x07 0x7c # CHECK: seh $6, $7 +0xc6 0x23 0xa4 0xa4 # CHECK: sh $4, 9158($5) +0xc0 0x21 0x03 0x00 # CHECK: sll $4, $3, 7 +0x04 0x10 0xa3 0x00 # CHECK: sllv $2, $3, $5 +0x2a 0x18 0x65 0x00 # CHECK: slt $3, $3, $5 +0x67 0x00 0x63 0x28 # CHECK: slti $3, $3, 103 +0x67 0x00 0x63 0x2c # CHECK: sltiu $3, $3, 103 +0x2b 0x18 0x65 0x00 # CHECK: sltu $3, $3, $5 +0x04 0x73 0x20 0x46 # CHECK: sqrt.d $f12, $f14 +0x84 0x39 0x00 0x46 # CHECK: sqrt.s $f6, $f7 +0xc3 0x21 0x03 0x00 # CHECK: sra $4, $3, 7 +0x07 0x10 0xa3 0x00 # CHECK: srav $2, $3, $5 +0xc2 0x21 0x03 0x00 # CHECK: srl $4, $3, 7 +0x06 0x10 0xa3 0x00 # CHECK: srlv $2, $3, $5 +0x01 0x62 0x2e 0x46 # CHECK: sub.d $f8, $f12, $f14 +0x41 0x32 0x07 0x46 # CHECK: sub.s $f9, $f6, $f7 +0x22 0x48 0xc7 0x00 # CHECK: sub $9, $6, $7 +0x23 0x20 0x65 0x00 # CHECK: subu $4, $3, $5 +0x0d 0x20 0xb8 0x4c # CHECK: suxc1 $f4, $24($5) +0x18 0x00 0xa4 0xac # CHECK: sw $4, 24($5) +0xc6 0x23 0xe9 0xe4 # CHECK: swc1 $f9, 9158($7) +0x10 0x00 0xa4 0xa8 # CHECK: swl $4, 16($5) +0x10 0x00 0xe6 0xb8 # CHECK: swr $6, 16($7) +0x08 0xd0 0xd2 0x4e # CHECK: swxc1 $f26, $18($22) +0xcf 0x01 0x00 0x00 # CHECK: sync 7 +0x0d 0x73 0x20 0x46 # CHECK: trunc.w.d $f12, $f14 +0x8d 0x39 0x00 0x46 # CHECK: trunc.w.s $f6, $f7 +0xa0 0x30 0x07 0x7c # CHECK: wsbh $6, $7 +0x26 0x18 0x65 0x00 # CHECK: xor $3, $3, $5 +0x67 0x45 0xc9 0x38 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2.txt b/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2.txt new file mode 100644 index 0000000..9637835 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2.txt @@ -0,0 +1,172 @@ +# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux -mcpu=mips32r2 | FileCheck %s +# Try a mips64* triple to confirm that mips* vs mips64* triples no longer have +# an effect on the disassembler behaviour. +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips32r2 | FileCheck %s +0x46 0x20 0x73 0x05 # CHECK: abs.d $f12, $f14 +0x46 0x00 0x39 0x85 # CHECK: abs.s $f6, $f7 +0x00 0xc7 0x48 0x20 # CHECK: add $9, $6, $7 +0x46 0x2e 0x62 0x00 # CHECK: add.d $f8, $f12, $f14 +0x46 0x07 0x32 0x40 # CHECK: add.s $f9, $f6, $f7 +0x20 0xc9 0x45 0x67 # CHECK: addi $9, $6, 17767 +0x24 0xc9 0xc5 0x67 # CHECK: addiu $9, $6, -15001 +0x00 0xc7 0x48 0x21 # CHECK: addu $9, $6, $7 +0x00 0xc7 0x48 0x24 # CHECK: and $9, $6, $7 +0x30 0xc9 0x45 0x67 # CHECK: andi $9, $6, 17767 +0x10 0x00 0x01 0x4c # CHECK: b 1332 +0x45 0x00 0x01 0x4c # CHECK: bc1f 1332 +0x45 0x1c 0x01 0x4c # CHECK: bc1f $fcc7, 1332 +0x45 0x01 0x01 0x4c # CHECK: bc1t 1332 +0x45 0x1d 0x01 0x4c # CHECK: bc1t $fcc7, 1332 +0x11 0x26 0x01 0x4c # CHECK: beq $9, $6, 1332 +0x04 0xc1 0x01 0x4c # CHECK: bgez $6, 1332 +0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 +0x1c 0xc0 0x01 0x4c # CHECK: bgtz $6, 1332 +0x18 0xc0 0x01 0x4c # CHECK: blez $6, 1332 +0x15 0x26 0x01 0x4c # CHECK: bne $9, $6, 1332 +0x46 0x2e 0x60 0x32 # CHECK: c.eq.d $f12, $f14 +0x46 0x07 0x30 0x32 # CHECK: c.eq.s $f6, $f7 +0x46 0x2e 0x60 0x30 # CHECK: c.f.d $f12, $f14 +0x46 0x07 0x30 0x30 # CHECK: c.f.s $f6, $f7 +0x46 0x2e 0x60 0x3e # CHECK: c.le.d $f12, $f14 +0x46 0x07 0x30 0x3e # CHECK: c.le.s $f6, $f7 +0x46 0x2e 0x60 0x3c # CHECK: c.lt.d $f12, $f14 +0x46 0x07 0x30 0x3c # CHECK: c.lt.s $f6, $f7 +0x46 0x2e 0x60 0x3d # CHECK: c.nge.d $f12, $f14 +0x46 0x07 0x30 0x3d # CHECK: c.nge.s $f6, $f7 +0x46 0x2e 0x60 0x3b # CHECK: c.ngl.d $f12, $f14 +0x46 0x07 0x30 0x3b # CHECK: c.ngl.s $f6, $f7 +0x46 0x2e 0x60 0x39 # CHECK: c.ngle.d $f12, $f14 +0x46 0x07 0x30 0x39 # CHECK: c.ngle.s $f6, $f7 +0x46 0x2e 0x60 0x3f # CHECK: c.ngt.d $f12, $f14 +0x46 0x07 0x30 0x3f # CHECK: c.ngt.s $f6, $f7 +0x46 0x2e 0x60 0x36 # CHECK: c.ole.d $f12, $f14 +0x46 0x07 0x30 0x36 # CHECK: c.ole.s $f6, $f7 +0x46 0x2e 0x60 0x34 # CHECK: c.olt.d $f12, $f14 +0x46 0x07 0x30 0x34 # CHECK: c.olt.s $f6, $f7 +0x46 0x2e 0x60 0x3a # CHECK: c.seq.d $f12, $f14 +0x46 0x07 0x30 0x3a # CHECK: c.seq.s $f6, $f7 +0x46 0x2e 0x60 0x38 # CHECK: c.sf.d $f12, $f14 +0x46 0x07 0x30 0x38 # CHECK: c.sf.s $f6, $f7 +0x46 0x2e 0x60 0x33 # CHECK: c.ueq.d $f12, $f14 +0x46 0x12 0xe0 0x33 # CHECK: c.ueq.s $f28, $f18 +0x46 0x2e 0x60 0x37 # CHECK: c.ule.d $f12, $f14 +0x46 0x07 0x30 0x37 # CHECK: c.ule.s $f6, $f7 +0x46 0x2e 0x60 0x35 # CHECK: c.ult.d $f12, $f14 +0x46 0x07 0x30 0x35 # CHECK: c.ult.s $f6, $f7 +0x46 0x2e 0x60 0x31 # CHECK: c.un.d $f12, $f14 +0x46 0x07 0x30 0x31 # CHECK: c.un.s $f6, $f7 +0x46 0x20 0x73 0x0e # CHECK: ceil.w.d $f12, $f14 +0x46 0x00 0x39 0x8e # CHECK: ceil.w.s $f6, $f7 +0x44 0x46 0x38 0x00 # CHECK: cfc1 $6, $7 +0x70 0xe6 0x30 0x21 # CHECK: clo $6, $7 +0x70 0xe6 0x30 0x20 # CHECK: clz $6, $7 +0x44 0xc6 0x38 0x00 # CHECK: ctc1 $6, $7 +0x46 0x00 0x39 0xa1 # CHECK: cvt.d.s $f6, $f7 +0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14 +0x46 0x20 0x73 0x25 # CHECK: cvt.l.d $f12, $f14 +0x46 0x00 0x39 0xa5 # CHECK: cvt.l.s $f6, $f7 +0x46 0x20 0x73 0x20 # CHECK: cvt.s.d $f12, $f14 +0x46 0x80 0x39 0xa0 # CHECK: cvt.s.w $f6, $f7 +0x46 0x20 0x73 0x24 # CHECK: cvt.w.d $f12, $f14 +0x46 0x00 0x39 0xa4 # CHECK: cvt.w.s $f6, $f7 +0x41 0x7e 0x60 0x00 # CHECK: di $fp +0x41 0x60 0x60 0x00 # CHECK: di +0x41 0x6e 0x60 0x20 # CHECK: ei $14 +0x41 0x60 0x60 0x20 # CHECK: ei +0x46 0x20 0x73 0x0f # CHECK: floor.w.d $f12, $f14 +0x46 0x00 0x39 0x8f # CHECK: floor.w.s $f6, $f7 +0x7d 0x33 0x61 0x84 # CHECK: ins $19, $9, 6, 7 +0x08 0x00 0x01 0x4c # CHECK: j 1328 +0x0c 0x00 0x01 0x4c # CHECK: jal 1328 +0x74 0x00 0x01 0x4c # CHECK: jalx 1328 +0x00 0xe0 0xf8 0x09 # CHECK: jalr $7 +0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 +0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0x00 0xe0 0x00 0x08 # CHECK: jr $7 +0x80 0xa4 0x23 0xc6 # CHECK: lb $4, 9158($5) +0x90 0xa4 0x00 0x06 # CHECK: lbu $4, 6($5) +0xd4 0xe9 0x23 0xc6 # CHECK: ldc1 $f9, 9158($7) +0x4d 0xf7 0x02 0x01 # CHECK: ldxc1 $f8, $23($15) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0xc0 0xe9 0x23 0xc6 # CHECK: ll $9, 9158($7) +0x3c 0x06 0x45 0x67 # CHECK: lui $6, 17767 +0x4c 0xa6 0x00 0x05 # CHECK: luxc1 $f0, $6($5) +0x8c 0xa4 0x00 0x18 # CHECK: lw $4, 24($5) +0xc4 0xe9 0x23 0xc6 # CHECK: lwc1 $f9, 9158($7) +0x88 0x82 0x00 0x03 # CHECK: lwl $2, 3($4) +0x98 0xa3 0x00 0x10 # CHECK: lwr $3, 16($5) +0x4d 0xcc 0x05 0x00 # CHECK: lwxc1 $f20, $12($14) +0x70 0xc7 0x00 0x00 # CHECK: madd $6, $7 +0x4e 0x94 0xd4 0xa1 # CHECK: madd.d $f18, $f20, $f26, $f20 +0x4f 0xf9 0x98 0x60 # CHECK: madd.s $f1, $f31, $f19, $f25 +0x70 0xc7 0x00 0x01 # CHECK: maddu $6, $7 +0x44 0x06 0x38 0x00 # CHECK: mfc1 $6, $f7 +0x00 0x00 0x28 0x10 # CHECK: mfhi $5 +0x44 0x7e 0xc0 0x00 # CHECK: mfhc1 $fp, $f24 +0x00 0x00 0x28 0x12 # CHECK: mflo $5 +0x46 0x20 0x41 0x86 # CHECK: mov.d $f6, $f8 +0x46 0x00 0x39 0x86 # CHECK: mov.s $f6, $f7 +0x70 0xc7 0x00 0x04 # CHECK: msub $6, $7 +0x4c 0x52 0xf2 0xa9 # CHECK: msub.d $f10, $f2, $f30, $f18 +0x4e 0x70 0x53 0x28 # CHECK: msub.s $f12, $f19, $f10, $f16 +0x70 0xc7 0x00 0x05 # CHECK: msubu $6, $7 +0x44 0x86 0x38 0x00 # CHECK: mtc1 $6, $f7 +0x00 0xe0 0x00 0x11 # CHECK: mthi $7 +0x44 0xe0 0x80 0x00 # CHECK: mthc1 $zero, $f16 +0x00 0xe0 0x00 0x13 # CHECK: mtlo $7 +0x46 0x2e 0x62 0x02 # CHECK: mul.d $f8, $f12, $f14 +0x46 0x07 0x32 0x42 # CHECK: mul.s $f9, $f6, $f7 +0x70 0xc7 0x48 0x02 # CHECK: mul $9, $6, $7 +0x00 0x65 0x00 0x18 # CHECK: mult $3, $5 +0x00 0x65 0x00 0x19 # CHECK: multu $3, $5 +0x46 0x20 0x73 0x07 # CHECK: neg.d $f12, $f14 +0x46 0x00 0x39 0x87 # CHECK: neg.s $f6, $f7 +0x4d 0x54 0x74 0xb1 # CHECK: nmadd.d $f18, $f10, $f14, $f20 +0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0xc7 0x48 0x27 # CHECK: nor $9, $6, $7 +0x4d 0x1e 0x87 0xb9 # CHECK: nmsub.d $f30, $f8, $f16, $f30 +0x4f 0x04 0x98 0x78 # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x00 0x65 0x18 0x25 # CHECK: or $3, $3, $5 +0x34 0xc9 0x45 0x67 # CHECK: ori $9, $6, 17767 +0x00 0x26 0x49 0xc2 # CHECK: rotr $9, $6, 7 +0x00 0xe6 0x48 0x46 # CHECK: rotrv $9, $6, $7 +0x46 0x20 0x73 0x0c # CHECK: round.w.d $f12, $f14 +0x46 0x00 0x39 0x8c # CHECK: round.w.s $f6, $f7 +0xa0 0xa4 0x23 0xc6 # CHECK: sb $4, 9158($5) +0xa0 0xa4 0x00 0x06 # CHECK: sb $4, 6($5) +0xe0 0xe9 0x23 0xc6 # CHECK: sc $9, 9158($7) +0xf4 0xe9 0x23 0xc6 # CHECK: sdc1 $f9, 9158($7) +0x4f 0x24 0x40 0x09 # CHECK: sdxc1 $f8, $4($25) +0x7c 0x07 0x34 0x20 # CHECK: seb $6, $7 +0x7c 0x07 0x36 0x20 # CHECK: seh $6, $7 +0xa4 0xa4 0x23 0xc6 # CHECK: sh $4, 9158($5) +0x00 0x03 0x21 0xc0 # CHECK: sll $4, $3, 7 +0x00 0xa3 0x10 0x04 # CHECK: sllv $2, $3, $5 +0x00 0x65 0x18 0x2a # CHECK: slt $3, $3, $5 +0x28 0x63 0x00 0x67 # CHECK: slti $3, $3, 103 +0x2c 0x63 0x00 0x67 # CHECK: sltiu $3, $3, 103 +0x00 0x65 0x18 0x2b # CHECK: sltu $3, $3, $5 +0x46 0x20 0x73 0x04 # CHECK: sqrt.d $f12, $f14 +0x46 0x00 0x39 0x84 # CHECK: sqrt.s $f6, $f7 +0x00 0x03 0x21 0xc3 # CHECK: sra $4, $3, 7 +0x00 0xa3 0x10 0x07 # CHECK: srav $2, $3, $5 +0x00 0x03 0x21 0xc2 # CHECK: srl $4, $3, 7 +0x00 0xa3 0x10 0x06 # CHECK: srlv $2, $3, $5 +0x46 0x2e 0x62 0x01 # CHECK: sub.d $f8, $f12, $f14 +0x46 0x07 0x32 0x41 # CHECK: sub.s $f9, $f6, $f7 +0x00 0xc7 0x48 0x22 # CHECK: sub $9, $6, $7 +0x00 0x65 0x20 0x23 # CHECK: subu $4, $3, $5 +0x4c 0xb8 0x20 0x0d # CHECK: suxc1 $f4, $24($5) +0xac 0xa4 0x00 0x18 # CHECK: sw $4, 24($5) +0xe4 0xe9 0x23 0xc6 # CHECK: swc1 $f9, 9158($7) +0xa8 0xa4 0x00 0x10 # CHECK: swl $4, 16($5) +0xb8 0xe6 0x00 0x10 # CHECK: swr $6, 16($7) +0x4e 0xd2 0xd0 0x08 # CHECK: swxc1 $f26, $18($22) +0x00 0x00 0x01 0xcf # CHECK: sync 7 +0x46 0x20 0x73 0x0d # CHECK: trunc.w.d $f12, $f14 +0x46 0x00 0x39 0x8d # CHECK: trunc.w.s $f6, $f7 +0x7c 0x07 0x30 0xa0 # CHECK: wsbh $6, $7 +0x00 0x65 0x18 0x26 # CHECK: xor $3, $3, $5 +0x38 0xc9 0x45 0x67 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips32r2/valid-xfail-mips32r2.txt b/test/MC/Disassembler/Mips/mips32r2/valid-xfail-mips32r2.txt new file mode 100644 index 0000000..da8130c --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r2/valid-xfail-mips32r2.txt @@ -0,0 +1,83 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble -mcpu=mips32r2 | FileCheck %s +# XFAIL: * +0x46 0x2f 0x79 0x32 # CHECK: c.eq.d $fcc1, $f15, $f15 +0x46 0x11 0xc5 0x32 # CHECK: c.eq.s $fcc5, $f24, $f17 +0x46 0x35 0x5c 0x30 # CHECK: c.f.d $fcc4, $f11, $f21 +0x46 0x07 0xf4 0x30 # CHECK: c.f.s $fcc4, $f30, $f7 +0x46 0x21 0x94 0x3e # CHECK: c.le.d $fcc4, $f18, $f1 +0x46 0x04 0xc6 0x3e # CHECK: c.le.s $fcc6, $f24, $f4 +0x46 0x23 0x4b 0x3c # CHECK: c.lt.d $fcc3, $f9, $f3 +0x46 0x0e 0x8a 0x3c # CHECK: c.lt.s $fcc2, $f17, $f14 +0x46 0x30 0xad 0x3d # CHECK: c.nge.d $fcc5, $f21, $f16 +0x46 0x08 0x5b 0x3d # CHECK: c.nge.s $fcc3, $f11, $f8 +0x46 0x17 0xfa 0x3b # CHECK: c.ngl.s $fcc2, $f31, $f23 +0x46 0x17 0x92 0x39 # CHECK: c.ngle.s $fcc2, $f18, $f23 +0x46 0x27 0xc4 0x3f # CHECK: c.ngt.d $fcc4, $f24, $f7 +0x46 0x0d 0x45 0x3f # CHECK: c.ngt.s $fcc5, $f8, $f13 +0x46 0x3f 0x82 0x36 # CHECK: c.ole.d $fcc2, $f16, $f31 +0x46 0x14 0x3b 0x36 # CHECK: c.ole.s $fcc3, $f7, $f20 +0x46 0x3c 0x9c 0x34 # CHECK: c.olt.d $fcc4, $f19, $f28 +0x46 0x07 0xa6 0x34 # CHECK: c.olt.s $fcc6, $f20, $f7 +0x46 0x27 0xfc 0x3a # CHECK: c.seq.d $fcc4, $f31, $f7 +0x46 0x19 0x0f 0x3a # CHECK: c.seq.s $fcc7, $f1, $f25 +0x46 0x39 0x6c 0x33 # CHECK: c.ueq.d $fcc4, $f13, $f25 +0x46 0x1e 0x1e 0x33 # CHECK: c.ueq.s $fcc6, $f3, $f30 +0x46 0x32 0xcf 0x37 # CHECK: c.ule.d $fcc7, $f25, $f18 +0x46 0x1e 0xaf 0x37 # CHECK: c.ule.s $fcc7, $f21, $f30 +0x46 0x31 0x36 0x35 # CHECK: c.ult.d $fcc6, $f6, $f17 +0x46 0x0a 0xc7 0x35 # CHECK: c.ult.s $fcc7, $f24, $f10 +0x46 0x38 0xbe 0x31 # CHECK: c.un.d $fcc6, $f23, $f24 +0x46 0x04 0xf1 0x31 # CHECK: c.un.s $fcc1, $f30, $f4 +0x46 0xc0 0x45 0x85 # CHECK: abs.ps $f22, $f8 +0x46 0xcc 0xc6 0x00 # CHECK: add.ps $f24, $f24, $f12 +0x46 0xca 0x04 0x32 # CHECK: c.eq.ps $fcc4, $f0, $f10 +0x46 0xcc 0x66 0x30 # CHECK: c.f.ps $fcc6, $f12, $f12 +0x46 0xd4 0x42 0x3e # CHECK: c.le.ps $fcc2, $f8, $f20 +0x46 0xc4 0x90 0x3c # CHECK: c.lt.ps $f18, $f4 +0x46 0xda 0x10 0x3d # CHECK: c.nge.ps $f2, $f26 +0x46 0xde 0xb0 0x3b # CHECK: c.ngl.ps $f22, $f30 +0x46 0xd4 0x66 0x39 # CHECK: c.ngle.ps $fcc6, $f12, $f20 +0x46 0xc6 0xf6 0x3f # CHECK: c.ngt.ps $fcc6, $f30, $f6 +0x46 0xc8 0xa6 0x36 # CHECK: c.ole.ps $fcc6, $f20, $f8 +0x46 0xd0 0x32 0x34 # CHECK: c.olt.ps $fcc2, $f6, $f16 +0x46 0xce 0xf6 0x3a # CHECK: c.seq.ps $fcc6, $f30, $f14 +0x46 0xc6 0x26 0x38 # CHECK: c.sf.ps $fcc6, $f4, $f6 +0x46 0xdc 0x20 0x33 # CHECK: c.ueq.ps $f4, $f28 +0x46 0xc2 0x86 0x37 # CHECK: c.ule.ps $fcc6, $f16, $f2 +0x46 0xc0 0x76 0x35 # CHECK: c.ult.ps $fcc6, $f14, $f0 +0x46 0xda 0x14 0x31 # CHECK: c.un.ps $fcc4, $f2, $f26 +0x46 0x20 0x20 0x8a # CHECK: ceil.l.d $f2, $f4 +0x46 0x00 0x6c 0x8a # CHECK: ceil.l.s $f18, $f13 +0x46 0xa0 0x81 0x21 # CHECK: cvt.d.l $f4, $f16 +0x46 0x14 0x90 0xa6 # CHECK: cvt.ps.s $f2, $f18, $f20 +0x46 0xa0 0xf3 0xe0 # CHECK: cvt.s.l $f15, $f30 +0x46 0xc0 0x17 0xa8 # CHECK: cvt.s.pl $f30, $f2 +0x46 0xc0 0xd3 0xa0 # CHECK: cvt.s.pu $f14, $f26 +0x46 0x20 0x36 0x8b # CHECK: floor.l.d $f26, $f6 +0x46 0x00 0x23 0x0b # CHECK: floor.l.s $f12, $f4 +0x4c 0x42 0x75 0xa6 # CHECK: madd.ps $f22, $f2, $f14, $f2 +0x46 0xc0 0x85 0x86 # CHECK: mov.ps $f22, $f16 +0x46 0xd8 0xe2 0x91 # CHECK: movf.ps $f10, $f28, $fcc6 +0x46 0xd3 0xf7 0x93 # CHECK: movn.ps $f30, $f30, s3 +0x46 0xc9 0xc5 0x11 # CHECK: movt.ps $f20, $f24, $fcc2 +0x46 0xdf 0x84 0x92 # CHECK: movz.ps $f18, $f16, ra +0x4d 0xd0 0xe3 0x2e # CHECK: msub.ps $f12, $f14, $f28, $f16 +0x46 0xc0 0x64 0x87 # CHECK: neg.ps $f18, $f12 +0x4c 0x98 0x46 0xb6 # CHECK: nmadd.ps $f26, $f4, $f8, $f24 +0x4d 0x90 0x71 0xbe # CHECK: nmsub.ps $f6, $f12, $f14, $f16 +0x46 0xde 0x46 0x2c # CHECK: pll.ps $f24, $f8, $f30 +0x46 0xdc 0xd0 0x2d # CHECK: plu.ps $f0, $f26, $f28 +0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26 +0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2 +0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1 +0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6 +0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30 +0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5 +0x46 0x20 0x03 0x08 # CHECK: round.l.d $f12, $f0 +0x46 0x00 0x2e 0x08 # CHECK: round.l.s $f24, $f5 +0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28 +0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8 +0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26 +0x46 0x20 0xb5 0x89 # CHECK: trunc.l.d $f22, $f22 +0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31 +0x41 0xcd 0x00 0x00 # CHECK: wrpgpr zero, t5 diff --git a/test/MC/Disassembler/Mips/mips32r2_le.txt b/test/MC/Disassembler/Mips/mips32r2_le.txt index 0362ca6..81a05b3 100644 --- a/test/MC/Disassembler/Mips/mips32r2_le.txt +++ b/test/MC/Disassembler/Mips/mips32r2_le.txt @@ -448,3 +448,6 @@ # CHECK: xori $9, $6, 17767 0x67 0x45 0xc9 0x38 + +# CHECK: synci 7500($19) +0x4c 0x1d 0x7f 0x06 diff --git a/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3-le.txt b/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3-le.txt new file mode 100644 index 0000000..1909e2a --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3-le.txt @@ -0,0 +1,169 @@ +# RUN: llvm-mc --disassemble %s -triple=mipsel-unknown-linux -mcpu=mips32r3 | FileCheck %s +0x05 0x73 0x20 0x46 # CHECK: abs.d $f12, $f14 +0x85 0x39 0x00 0x46 # CHECK: abs.s $f6, $f7 +0x20 0x48 0xc7 0x00 # CHECK: add $9, $6, $7 +0x00 0x62 0x2e 0x46 # CHECK: add.d $f8, $f12, $f14 +0x40 0x32 0x07 0x46 # CHECK: add.s $f9, $f6, $f7 +0x67 0x45 0xc9 0x20 # CHECK: addi $9, $6, 17767 +0x67 0xc5 0xc9 0x24 # CHECK: addiu $9, $6, -15001 +0x21 0x48 0xc7 0x00 # CHECK: addu $9, $6, $7 +0x24 0x48 0xc7 0x00 # CHECK: and $9, $6, $7 +0x67 0x45 0xc9 0x30 # CHECK: andi $9, $6, 17767 +0x4c 0x01 0x00 0x10 # CHECK: b 1332 +0x4c 0x01 0x00 0x45 # CHECK: bc1f 1332 +0x4c 0x01 0x1c 0x45 # CHECK: bc1f $fcc7, 1332 +0x4c 0x01 0x01 0x45 # CHECK: bc1t 1332 +0x4c 0x01 0x1d 0x45 # CHECK: bc1t $fcc7, 1332 +0x4c 0x01 0x26 0x11 # CHECK: beq $9, $6, 1332 +0x4c 0x01 0xc1 0x04 # CHECK: bgez $6, 1332 +0x4c 0x01 0xd1 0x04 # CHECK: bgezal $6, 1332 +0x4c 0x01 0xc0 0x1c # CHECK: bgtz $6, 1332 +0x4c 0x01 0xc0 0x18 # CHECK: blez $6, 1332 +0x4c 0x01 0x26 0x15 # CHECK: bne $9, $6, 1332 +0x32 0x60 0x2e 0x46 # CHECK: c.eq.d $f12, $f14 +0x32 0x30 0x07 0x46 # CHECK: c.eq.s $f6, $f7 +0x30 0x60 0x2e 0x46 # CHECK: c.f.d $f12, $f14 +0x30 0x30 0x07 0x46 # CHECK: c.f.s $f6, $f7 +0x3e 0x60 0x2e 0x46 # CHECK: c.le.d $f12, $f14 +0x3e 0x30 0x07 0x46 # CHECK: c.le.s $f6, $f7 +0x3c 0x60 0x2e 0x46 # CHECK: c.lt.d $f12, $f14 +0x3c 0x30 0x07 0x46 # CHECK: c.lt.s $f6, $f7 +0x3d 0x60 0x2e 0x46 # CHECK: c.nge.d $f12, $f14 +0x3d 0x30 0x07 0x46 # CHECK: c.nge.s $f6, $f7 +0x3b 0x60 0x2e 0x46 # CHECK: c.ngl.d $f12, $f14 +0x3b 0x30 0x07 0x46 # CHECK: c.ngl.s $f6, $f7 +0x39 0x60 0x2e 0x46 # CHECK: c.ngle.d $f12, $f14 +0x39 0x30 0x07 0x46 # CHECK: c.ngle.s $f6, $f7 +0x3f 0x60 0x2e 0x46 # CHECK: c.ngt.d $f12, $f14 +0x3f 0x30 0x07 0x46 # CHECK: c.ngt.s $f6, $f7 +0x36 0x60 0x2e 0x46 # CHECK: c.ole.d $f12, $f14 +0x36 0x30 0x07 0x46 # CHECK: c.ole.s $f6, $f7 +0x34 0x60 0x2e 0x46 # CHECK: c.olt.d $f12, $f14 +0x34 0x30 0x07 0x46 # CHECK: c.olt.s $f6, $f7 +0x3a 0x60 0x2e 0x46 # CHECK: c.seq.d $f12, $f14 +0x3a 0x30 0x07 0x46 # CHECK: c.seq.s $f6, $f7 +0x38 0x60 0x2e 0x46 # CHECK: c.sf.d $f12, $f14 +0x38 0x30 0x07 0x46 # CHECK: c.sf.s $f6, $f7 +0x33 0x60 0x2e 0x46 # CHECK: c.ueq.d $f12, $f14 +0x33 0xe0 0x12 0x46 # CHECK: c.ueq.s $f28, $f18 +0x37 0x60 0x2e 0x46 # CHECK: c.ule.d $f12, $f14 +0x37 0x30 0x07 0x46 # CHECK: c.ule.s $f6, $f7 +0x35 0x60 0x2e 0x46 # CHECK: c.ult.d $f12, $f14 +0x35 0x30 0x07 0x46 # CHECK: c.ult.s $f6, $f7 +0x31 0x60 0x2e 0x46 # CHECK: c.un.d $f12, $f14 +0x31 0x30 0x07 0x46 # CHECK: c.un.s $f6, $f7 +0x0e 0x73 0x20 0x46 # CHECK: ceil.w.d $f12, $f14 +0x8e 0x39 0x00 0x46 # CHECK: ceil.w.s $f6, $f7 +0x00 0x38 0x46 0x44 # CHECK: cfc1 $6, $7 +0x21 0x30 0xe6 0x70 # CHECK: clo $6, $7 +0x20 0x30 0xe6 0x70 # CHECK: clz $6, $7 +0x00 0x38 0xc6 0x44 # CHECK: ctc1 $6, $7 +0xa1 0x39 0x00 0x46 # CHECK: cvt.d.s $f6, $f7 +0x21 0x73 0x80 0x46 # CHECK: cvt.d.w $f12, $f14 +0x25 0x73 0x20 0x46 # CHECK: cvt.l.d $f12, $f14 +0xa5 0x39 0x00 0x46 # CHECK: cvt.l.s $f6, $f7 +0x20 0x73 0x20 0x46 # CHECK: cvt.s.d $f12, $f14 +0xa0 0x39 0x80 0x46 # CHECK: cvt.s.w $f6, $f7 +0x24 0x73 0x20 0x46 # CHECK: cvt.w.d $f12, $f14 +0xa4 0x39 0x00 0x46 # CHECK: cvt.w.s $f6, $f7 +0x00 0x60 0x7e 0x41 # CHECK: di $fp +0x00 0x60 0x60 0x41 # CHECK: di +0x20 0x60 0x6e 0x41 # CHECK: ei $14 +0x20 0x60 0x60 0x41 # CHECK: ei +0x0f 0x73 0x20 0x46 # CHECK: floor.w.d $f12, $f14 +0x8f 0x39 0x00 0x46 # CHECK: floor.w.s $f6, $f7 +0x84 0x61 0x33 0x7d # CHECK: ins $19, $9, 6, 7 +0x4c 0x01 0x00 0x08 # CHECK: j 1328 +0x4c 0x01 0x00 0x0c # CHECK: jal 1328 +0x4c 0x01 0x00 0x74 # CHECK: jalx 1328 +0x09 0xf8 0xe0 0x00 # CHECK: jalr $7 +0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 +0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0x08 0x00 0xe0 0x00 # CHECK: jr $7 +0xc6 0x23 0xa4 0x80 # CHECK: lb $4, 9158($5) +0x06 0x00 0xa4 0x90 # CHECK: lbu $4, 6($5) +0xc6 0x23 0xe9 0xd4 # CHECK: ldc1 $f9, 9158($7) +0x01 0x02 0xf7 0x4d # CHECK: ldxc1 $f8, $23($15) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0xc6 0x23 0xe9 0xc0 # CHECK: ll $9, 9158($7) +0x67 0x45 0x06 0x3c # CHECK: lui $6, 17767 +0x05 0x00 0xa6 0x4c # CHECK: luxc1 $f0, $6($5) +0x18 0x00 0xa4 0x8c # CHECK: lw $4, 24($5) +0xc6 0x23 0xe9 0xc4 # CHECK: lwc1 $f9, 9158($7) +0x03 0x00 0x82 0x88 # CHECK: lwl $2, 3($4) +0x10 0x00 0xa3 0x98 # CHECK: lwr $3, 16($5) +0x00 0x05 0xcc 0x4d # CHECK: lwxc1 $f20, $12($14) +0x00 0x00 0xc7 0x70 # CHECK: madd $6, $7 +0xa1 0xd4 0x94 0x4e # CHECK: madd.d $f18, $f20, $f26, $f20 +0x60 0x98 0xf9 0x4f # CHECK: madd.s $f1, $f31, $f19, $f25 +0x01 0x00 0xc7 0x70 # CHECK: maddu $6, $7 +0x00 0x38 0x06 0x44 # CHECK: mfc1 $6, $f7 +0x10 0x28 0x00 0x00 # CHECK: mfhi $5 +0x00 0xc0 0x7e 0x44 # CHECK: mfhc1 $fp, $f24 +0x12 0x28 0x00 0x00 # CHECK: mflo $5 +0x86 0x41 0x20 0x46 # CHECK: mov.d $f6, $f8 +0x86 0x39 0x00 0x46 # CHECK: mov.s $f6, $f7 +0x04 0x00 0xc7 0x70 # CHECK: msub $6, $7 +0xa9 0xf2 0x52 0x4c # CHECK: msub.d $f10, $f2, $f30, $f18 +0x28 0x53 0x70 0x4e # CHECK: msub.s $f12, $f19, $f10, $f16 +0x05 0x00 0xc7 0x70 # CHECK: msubu $6, $7 +0x00 0x38 0x86 0x44 # CHECK: mtc1 $6, $f7 +0x11 0x00 0xe0 0x00 # CHECK: mthi $7 +0x00 0x80 0xe0 0x44 # CHECK: mthc1 $zero, $f16 +0x13 0x00 0xe0 0x00 # CHECK: mtlo $7 +0x02 0x62 0x2e 0x46 # CHECK: mul.d $f8, $f12, $f14 +0x42 0x32 0x07 0x46 # CHECK: mul.s $f9, $f6, $f7 +0x02 0x48 0xc7 0x70 # CHECK: mul $9, $6, $7 +0x18 0x00 0x65 0x00 # CHECK: mult $3, $5 +0x19 0x00 0x65 0x00 # CHECK: multu $3, $5 +0x07 0x73 0x20 0x46 # CHECK: neg.d $f12, $f14 +0x87 0x39 0x00 0x46 # CHECK: neg.s $f6, $f7 +0xb1 0x74 0x54 0x4d # CHECK: nmadd.d $f18, $f10, $f14, $f20 +0x30 0xc8 0xac 0x4c # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x48 0xc7 0x00 # CHECK: nor $9, $6, $7 +0xb9 0x87 0x1e 0x4d # CHECK: nmsub.d $f30, $f8, $f16, $f30 +0x78 0x98 0x04 0x4f # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5 +0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767 +0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7 +0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7 +0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14 +0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7 +0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5) +0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5) +0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7) +0xc6 0x23 0xe9 0xf4 # CHECK: sdc1 $f9, 9158($7) +0x09 0x40 0x24 0x4f # CHECK: sdxc1 $f8, $4($25) +0x20 0x34 0x07 0x7c # CHECK: seb $6, $7 +0x20 0x36 0x07 0x7c # CHECK: seh $6, $7 +0xc6 0x23 0xa4 0xa4 # CHECK: sh $4, 9158($5) +0xc0 0x21 0x03 0x00 # CHECK: sll $4, $3, 7 +0x04 0x10 0xa3 0x00 # CHECK: sllv $2, $3, $5 +0x2a 0x18 0x65 0x00 # CHECK: slt $3, $3, $5 +0x67 0x00 0x63 0x28 # CHECK: slti $3, $3, 103 +0x67 0x00 0x63 0x2c # CHECK: sltiu $3, $3, 103 +0x2b 0x18 0x65 0x00 # CHECK: sltu $3, $3, $5 +0x04 0x73 0x20 0x46 # CHECK: sqrt.d $f12, $f14 +0x84 0x39 0x00 0x46 # CHECK: sqrt.s $f6, $f7 +0xc3 0x21 0x03 0x00 # CHECK: sra $4, $3, 7 +0x07 0x10 0xa3 0x00 # CHECK: srav $2, $3, $5 +0xc2 0x21 0x03 0x00 # CHECK: srl $4, $3, 7 +0x06 0x10 0xa3 0x00 # CHECK: srlv $2, $3, $5 +0x01 0x62 0x2e 0x46 # CHECK: sub.d $f8, $f12, $f14 +0x41 0x32 0x07 0x46 # CHECK: sub.s $f9, $f6, $f7 +0x22 0x48 0xc7 0x00 # CHECK: sub $9, $6, $7 +0x23 0x20 0x65 0x00 # CHECK: subu $4, $3, $5 +0x0d 0x20 0xb8 0x4c # CHECK: suxc1 $f4, $24($5) +0x18 0x00 0xa4 0xac # CHECK: sw $4, 24($5) +0xc6 0x23 0xe9 0xe4 # CHECK: swc1 $f9, 9158($7) +0x10 0x00 0xa4 0xa8 # CHECK: swl $4, 16($5) +0x10 0x00 0xe6 0xb8 # CHECK: swr $6, 16($7) +0x08 0xd0 0xd2 0x4e # CHECK: swxc1 $f26, $18($22) +0xcf 0x01 0x00 0x00 # CHECK: sync 7 +0x0d 0x73 0x20 0x46 # CHECK: trunc.w.d $f12, $f14 +0x8d 0x39 0x00 0x46 # CHECK: trunc.w.s $f6, $f7 +0xa0 0x30 0x07 0x7c # CHECK: wsbh $6, $7 +0x26 0x18 0x65 0x00 # CHECK: xor $3, $3, $5 +0x67 0x45 0xc9 0x38 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3.txt b/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3.txt new file mode 100644 index 0000000..a273c24 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3.txt @@ -0,0 +1,169 @@ +# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux -mcpu=mips32r3 | FileCheck %s +0x46 0x20 0x73 0x05 # CHECK: abs.d $f12, $f14 +0x46 0x00 0x39 0x85 # CHECK: abs.s $f6, $f7 +0x00 0xc7 0x48 0x20 # CHECK: add $9, $6, $7 +0x46 0x2e 0x62 0x00 # CHECK: add.d $f8, $f12, $f14 +0x46 0x07 0x32 0x40 # CHECK: add.s $f9, $f6, $f7 +0x20 0xc9 0x45 0x67 # CHECK: addi $9, $6, 17767 +0x24 0xc9 0xc5 0x67 # CHECK: addiu $9, $6, -15001 +0x00 0xc7 0x48 0x21 # CHECK: addu $9, $6, $7 +0x00 0xc7 0x48 0x24 # CHECK: and $9, $6, $7 +0x30 0xc9 0x45 0x67 # CHECK: andi $9, $6, 17767 +0x10 0x00 0x01 0x4c # CHECK: b 1332 +0x45 0x00 0x01 0x4c # CHECK: bc1f 1332 +0x45 0x1c 0x01 0x4c # CHECK: bc1f $fcc7, 1332 +0x45 0x01 0x01 0x4c # CHECK: bc1t 1332 +0x45 0x1d 0x01 0x4c # CHECK: bc1t $fcc7, 1332 +0x11 0x26 0x01 0x4c # CHECK: beq $9, $6, 1332 +0x04 0xc1 0x01 0x4c # CHECK: bgez $6, 1332 +0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 +0x1c 0xc0 0x01 0x4c # CHECK: bgtz $6, 1332 +0x18 0xc0 0x01 0x4c # CHECK: blez $6, 1332 +0x15 0x26 0x01 0x4c # CHECK: bne $9, $6, 1332 +0x46 0x2e 0x60 0x32 # CHECK: c.eq.d $f12, $f14 +0x46 0x07 0x30 0x32 # CHECK: c.eq.s $f6, $f7 +0x46 0x2e 0x60 0x30 # CHECK: c.f.d $f12, $f14 +0x46 0x07 0x30 0x30 # CHECK: c.f.s $f6, $f7 +0x46 0x2e 0x60 0x3e # CHECK: c.le.d $f12, $f14 +0x46 0x07 0x30 0x3e # CHECK: c.le.s $f6, $f7 +0x46 0x2e 0x60 0x3c # CHECK: c.lt.d $f12, $f14 +0x46 0x07 0x30 0x3c # CHECK: c.lt.s $f6, $f7 +0x46 0x2e 0x60 0x3d # CHECK: c.nge.d $f12, $f14 +0x46 0x07 0x30 0x3d # CHECK: c.nge.s $f6, $f7 +0x46 0x2e 0x60 0x3b # CHECK: c.ngl.d $f12, $f14 +0x46 0x07 0x30 0x3b # CHECK: c.ngl.s $f6, $f7 +0x46 0x2e 0x60 0x39 # CHECK: c.ngle.d $f12, $f14 +0x46 0x07 0x30 0x39 # CHECK: c.ngle.s $f6, $f7 +0x46 0x2e 0x60 0x3f # CHECK: c.ngt.d $f12, $f14 +0x46 0x07 0x30 0x3f # CHECK: c.ngt.s $f6, $f7 +0x46 0x2e 0x60 0x36 # CHECK: c.ole.d $f12, $f14 +0x46 0x07 0x30 0x36 # CHECK: c.ole.s $f6, $f7 +0x46 0x2e 0x60 0x34 # CHECK: c.olt.d $f12, $f14 +0x46 0x07 0x30 0x34 # CHECK: c.olt.s $f6, $f7 +0x46 0x2e 0x60 0x3a # CHECK: c.seq.d $f12, $f14 +0x46 0x07 0x30 0x3a # CHECK: c.seq.s $f6, $f7 +0x46 0x2e 0x60 0x38 # CHECK: c.sf.d $f12, $f14 +0x46 0x07 0x30 0x38 # CHECK: c.sf.s $f6, $f7 +0x46 0x2e 0x60 0x33 # CHECK: c.ueq.d $f12, $f14 +0x46 0x12 0xe0 0x33 # CHECK: c.ueq.s $f28, $f18 +0x46 0x2e 0x60 0x37 # CHECK: c.ule.d $f12, $f14 +0x46 0x07 0x30 0x37 # CHECK: c.ule.s $f6, $f7 +0x46 0x2e 0x60 0x35 # CHECK: c.ult.d $f12, $f14 +0x46 0x07 0x30 0x35 # CHECK: c.ult.s $f6, $f7 +0x46 0x2e 0x60 0x31 # CHECK: c.un.d $f12, $f14 +0x46 0x07 0x30 0x31 # CHECK: c.un.s $f6, $f7 +0x46 0x20 0x73 0x0e # CHECK: ceil.w.d $f12, $f14 +0x46 0x00 0x39 0x8e # CHECK: ceil.w.s $f6, $f7 +0x44 0x46 0x38 0x00 # CHECK: cfc1 $6, $7 +0x70 0xe6 0x30 0x21 # CHECK: clo $6, $7 +0x70 0xe6 0x30 0x20 # CHECK: clz $6, $7 +0x44 0xc6 0x38 0x00 # CHECK: ctc1 $6, $7 +0x46 0x00 0x39 0xa1 # CHECK: cvt.d.s $f6, $f7 +0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14 +0x46 0x20 0x73 0x25 # CHECK: cvt.l.d $f12, $f14 +0x46 0x00 0x39 0xa5 # CHECK: cvt.l.s $f6, $f7 +0x46 0x20 0x73 0x20 # CHECK: cvt.s.d $f12, $f14 +0x46 0x80 0x39 0xa0 # CHECK: cvt.s.w $f6, $f7 +0x46 0x20 0x73 0x24 # CHECK: cvt.w.d $f12, $f14 +0x46 0x00 0x39 0xa4 # CHECK: cvt.w.s $f6, $f7 +0x41 0x7e 0x60 0x00 # CHECK: di $fp +0x41 0x60 0x60 0x00 # CHECK: di +0x41 0x6e 0x60 0x20 # CHECK: ei $14 +0x41 0x60 0x60 0x20 # CHECK: ei +0x46 0x20 0x73 0x0f # CHECK: floor.w.d $f12, $f14 +0x46 0x00 0x39 0x8f # CHECK: floor.w.s $f6, $f7 +0x7d 0x33 0x61 0x84 # CHECK: ins $19, $9, 6, 7 +0x08 0x00 0x01 0x4c # CHECK: j 1328 +0x0c 0x00 0x01 0x4c # CHECK: jal 1328 +0x74 0x00 0x01 0x4c # CHECK: jalx 1328 +0x00 0xe0 0xf8 0x09 # CHECK: jalr $7 +0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 +0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0x00 0xe0 0x00 0x08 # CHECK: jr $7 +0x80 0xa4 0x23 0xc6 # CHECK: lb $4, 9158($5) +0x90 0xa4 0x00 0x06 # CHECK: lbu $4, 6($5) +0xd4 0xe9 0x23 0xc6 # CHECK: ldc1 $f9, 9158($7) +0x4d 0xf7 0x02 0x01 # CHECK: ldxc1 $f8, $23($15) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0xc0 0xe9 0x23 0xc6 # CHECK: ll $9, 9158($7) +0x3c 0x06 0x45 0x67 # CHECK: lui $6, 17767 +0x4c 0xa6 0x00 0x05 # CHECK: luxc1 $f0, $6($5) +0x8c 0xa4 0x00 0x18 # CHECK: lw $4, 24($5) +0xc4 0xe9 0x23 0xc6 # CHECK: lwc1 $f9, 9158($7) +0x88 0x82 0x00 0x03 # CHECK: lwl $2, 3($4) +0x98 0xa3 0x00 0x10 # CHECK: lwr $3, 16($5) +0x4d 0xcc 0x05 0x00 # CHECK: lwxc1 $f20, $12($14) +0x70 0xc7 0x00 0x00 # CHECK: madd $6, $7 +0x4e 0x94 0xd4 0xa1 # CHECK: madd.d $f18, $f20, $f26, $f20 +0x4f 0xf9 0x98 0x60 # CHECK: madd.s $f1, $f31, $f19, $f25 +0x70 0xc7 0x00 0x01 # CHECK: maddu $6, $7 +0x44 0x06 0x38 0x00 # CHECK: mfc1 $6, $f7 +0x00 0x00 0x28 0x10 # CHECK: mfhi $5 +0x44 0x7e 0xc0 0x00 # CHECK: mfhc1 $fp, $f24 +0x00 0x00 0x28 0x12 # CHECK: mflo $5 +0x46 0x20 0x41 0x86 # CHECK: mov.d $f6, $f8 +0x46 0x00 0x39 0x86 # CHECK: mov.s $f6, $f7 +0x70 0xc7 0x00 0x04 # CHECK: msub $6, $7 +0x4c 0x52 0xf2 0xa9 # CHECK: msub.d $f10, $f2, $f30, $f18 +0x4e 0x70 0x53 0x28 # CHECK: msub.s $f12, $f19, $f10, $f16 +0x70 0xc7 0x00 0x05 # CHECK: msubu $6, $7 +0x44 0x86 0x38 0x00 # CHECK: mtc1 $6, $f7 +0x00 0xe0 0x00 0x11 # CHECK: mthi $7 +0x44 0xe0 0x80 0x00 # CHECK: mthc1 $zero, $f16 +0x00 0xe0 0x00 0x13 # CHECK: mtlo $7 +0x46 0x2e 0x62 0x02 # CHECK: mul.d $f8, $f12, $f14 +0x46 0x07 0x32 0x42 # CHECK: mul.s $f9, $f6, $f7 +0x70 0xc7 0x48 0x02 # CHECK: mul $9, $6, $7 +0x00 0x65 0x00 0x18 # CHECK: mult $3, $5 +0x00 0x65 0x00 0x19 # CHECK: multu $3, $5 +0x46 0x20 0x73 0x07 # CHECK: neg.d $f12, $f14 +0x46 0x00 0x39 0x87 # CHECK: neg.s $f6, $f7 +0x4d 0x54 0x74 0xb1 # CHECK: nmadd.d $f18, $f10, $f14, $f20 +0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0xc7 0x48 0x27 # CHECK: nor $9, $6, $7 +0x4d 0x1e 0x87 0xb9 # CHECK: nmsub.d $f30, $f8, $f16, $f30 +0x4f 0x04 0x98 0x78 # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x00 0x65 0x18 0x25 # CHECK: or $3, $3, $5 +0x34 0xc9 0x45 0x67 # CHECK: ori $9, $6, 17767 +0x00 0x26 0x49 0xc2 # CHECK: rotr $9, $6, 7 +0x00 0xe6 0x48 0x46 # CHECK: rotrv $9, $6, $7 +0x46 0x20 0x73 0x0c # CHECK: round.w.d $f12, $f14 +0x46 0x00 0x39 0x8c # CHECK: round.w.s $f6, $f7 +0xa0 0xa4 0x23 0xc6 # CHECK: sb $4, 9158($5) +0xa0 0xa4 0x00 0x06 # CHECK: sb $4, 6($5) +0xe0 0xe9 0x23 0xc6 # CHECK: sc $9, 9158($7) +0xf4 0xe9 0x23 0xc6 # CHECK: sdc1 $f9, 9158($7) +0x4f 0x24 0x40 0x09 # CHECK: sdxc1 $f8, $4($25) +0x7c 0x07 0x34 0x20 # CHECK: seb $6, $7 +0x7c 0x07 0x36 0x20 # CHECK: seh $6, $7 +0xa4 0xa4 0x23 0xc6 # CHECK: sh $4, 9158($5) +0x00 0x03 0x21 0xc0 # CHECK: sll $4, $3, 7 +0x00 0xa3 0x10 0x04 # CHECK: sllv $2, $3, $5 +0x00 0x65 0x18 0x2a # CHECK: slt $3, $3, $5 +0x28 0x63 0x00 0x67 # CHECK: slti $3, $3, 103 +0x2c 0x63 0x00 0x67 # CHECK: sltiu $3, $3, 103 +0x00 0x65 0x18 0x2b # CHECK: sltu $3, $3, $5 +0x46 0x20 0x73 0x04 # CHECK: sqrt.d $f12, $f14 +0x46 0x00 0x39 0x84 # CHECK: sqrt.s $f6, $f7 +0x00 0x03 0x21 0xc3 # CHECK: sra $4, $3, 7 +0x00 0xa3 0x10 0x07 # CHECK: srav $2, $3, $5 +0x00 0x03 0x21 0xc2 # CHECK: srl $4, $3, 7 +0x00 0xa3 0x10 0x06 # CHECK: srlv $2, $3, $5 +0x46 0x2e 0x62 0x01 # CHECK: sub.d $f8, $f12, $f14 +0x46 0x07 0x32 0x41 # CHECK: sub.s $f9, $f6, $f7 +0x00 0xc7 0x48 0x22 # CHECK: sub $9, $6, $7 +0x00 0x65 0x20 0x23 # CHECK: subu $4, $3, $5 +0x4c 0xb8 0x20 0x0d # CHECK: suxc1 $f4, $24($5) +0xac 0xa4 0x00 0x18 # CHECK: sw $4, 24($5) +0xe4 0xe9 0x23 0xc6 # CHECK: swc1 $f9, 9158($7) +0xa8 0xa4 0x00 0x10 # CHECK: swl $4, 16($5) +0xb8 0xe6 0x00 0x10 # CHECK: swr $6, 16($7) +0x4e 0xd2 0xd0 0x08 # CHECK: swxc1 $f26, $18($22) +0x00 0x00 0x01 0xcf # CHECK: sync 7 +0x46 0x20 0x73 0x0d # CHECK: trunc.w.d $f12, $f14 +0x46 0x00 0x39 0x8d # CHECK: trunc.w.s $f6, $f7 +0x7c 0x07 0x30 0xa0 # CHECK: wsbh $6, $7 +0x00 0x65 0x18 0x26 # CHECK: xor $3, $3, $5 +0x38 0xc9 0x45 0x67 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips32r3/valid-xfail-mips32r3.txt b/test/MC/Disassembler/Mips/mips32r3/valid-xfail-mips32r3.txt new file mode 100644 index 0000000..7623bba --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r3/valid-xfail-mips32r3.txt @@ -0,0 +1,83 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble -mcpu=mips32r3 | FileCheck %s +# XFAIL: * +0x46 0x2f 0x79 0x32 # CHECK: c.eq.d $fcc1, $f15, $f15 +0x46 0x11 0xc5 0x32 # CHECK: c.eq.s $fcc5, $f24, $f17 +0x46 0x35 0x5c 0x30 # CHECK: c.f.d $fcc4, $f11, $f21 +0x46 0x07 0xf4 0x30 # CHECK: c.f.s $fcc4, $f30, $f7 +0x46 0x21 0x94 0x3e # CHECK: c.le.d $fcc4, $f18, $f1 +0x46 0x04 0xc6 0x3e # CHECK: c.le.s $fcc6, $f24, $f4 +0x46 0x23 0x4b 0x3c # CHECK: c.lt.d $fcc3, $f9, $f3 +0x46 0x0e 0x8a 0x3c # CHECK: c.lt.s $fcc2, $f17, $f14 +0x46 0x30 0xad 0x3d # CHECK: c.nge.d $fcc5, $f21, $f16 +0x46 0x08 0x5b 0x3d # CHECK: c.nge.s $fcc3, $f11, $f8 +0x46 0x17 0xfa 0x3b # CHECK: c.ngl.s $fcc2, $f31, $f23 +0x46 0x17 0x92 0x39 # CHECK: c.ngle.s $fcc2, $f18, $f23 +0x46 0x27 0xc4 0x3f # CHECK: c.ngt.d $fcc4, $f24, $f7 +0x46 0x0d 0x45 0x3f # CHECK: c.ngt.s $fcc5, $f8, $f13 +0x46 0x3f 0x82 0x36 # CHECK: c.ole.d $fcc2, $f16, $f31 +0x46 0x14 0x3b 0x36 # CHECK: c.ole.s $fcc3, $f7, $f20 +0x46 0x3c 0x9c 0x34 # CHECK: c.olt.d $fcc4, $f19, $f28 +0x46 0x07 0xa6 0x34 # CHECK: c.olt.s $fcc6, $f20, $f7 +0x46 0x27 0xfc 0x3a # CHECK: c.seq.d $fcc4, $f31, $f7 +0x46 0x19 0x0f 0x3a # CHECK: c.seq.s $fcc7, $f1, $f25 +0x46 0x39 0x6c 0x33 # CHECK: c.ueq.d $fcc4, $f13, $f25 +0x46 0x1e 0x1e 0x33 # CHECK: c.ueq.s $fcc6, $f3, $f30 +0x46 0x32 0xcf 0x37 # CHECK: c.ule.d $fcc7, $f25, $f18 +0x46 0x1e 0xaf 0x37 # CHECK: c.ule.s $fcc7, $f21, $f30 +0x46 0x31 0x36 0x35 # CHECK: c.ult.d $fcc6, $f6, $f17 +0x46 0x0a 0xc7 0x35 # CHECK: c.ult.s $fcc7, $f24, $f10 +0x46 0x38 0xbe 0x31 # CHECK: c.un.d $fcc6, $f23, $f24 +0x46 0x04 0xf1 0x31 # CHECK: c.un.s $fcc1, $f30, $f4 +0x46 0xc0 0x45 0x85 # CHECK: abs.ps $f22, $f8 +0x46 0xcc 0xc6 0x00 # CHECK: add.ps $f24, $f24, $f12 +0x46 0xca 0x04 0x32 # CHECK: c.eq.ps $fcc4, $f0, $f10 +0x46 0xcc 0x66 0x30 # CHECK: c.f.ps $fcc6, $f12, $f12 +0x46 0xd4 0x42 0x3e # CHECK: c.le.ps $fcc2, $f8, $f20 +0x46 0xc4 0x90 0x3c # CHECK: c.lt.ps $f18, $f4 +0x46 0xda 0x10 0x3d # CHECK: c.nge.ps $f2, $f26 +0x46 0xde 0xb0 0x3b # CHECK: c.ngl.ps $f22, $f30 +0x46 0xd4 0x66 0x39 # CHECK: c.ngle.ps $fcc6, $f12, $f20 +0x46 0xc6 0xf6 0x3f # CHECK: c.ngt.ps $fcc6, $f30, $f6 +0x46 0xc8 0xa6 0x36 # CHECK: c.ole.ps $fcc6, $f20, $f8 +0x46 0xd0 0x32 0x34 # CHECK: c.olt.ps $fcc2, $f6, $f16 +0x46 0xce 0xf6 0x3a # CHECK: c.seq.ps $fcc6, $f30, $f14 +0x46 0xc6 0x26 0x38 # CHECK: c.sf.ps $fcc6, $f4, $f6 +0x46 0xdc 0x20 0x33 # CHECK: c.ueq.ps $f4, $f28 +0x46 0xc2 0x86 0x37 # CHECK: c.ule.ps $fcc6, $f16, $f2 +0x46 0xc0 0x76 0x35 # CHECK: c.ult.ps $fcc6, $f14, $f0 +0x46 0xda 0x14 0x31 # CHECK: c.un.ps $fcc4, $f2, $f26 +0x46 0x20 0x20 0x8a # CHECK: ceil.l.d $f2, $f4 +0x46 0x00 0x6c 0x8a # CHECK: ceil.l.s $f18, $f13 +0x46 0xa0 0x81 0x21 # CHECK: cvt.d.l $f4, $f16 +0x46 0x14 0x90 0xa6 # CHECK: cvt.ps.s $f2, $f18, $f20 +0x46 0xa0 0xf3 0xe0 # CHECK: cvt.s.l $f15, $f30 +0x46 0xc0 0x17 0xa8 # CHECK: cvt.s.pl $f30, $f2 +0x46 0xc0 0xd3 0xa0 # CHECK: cvt.s.pu $f14, $f26 +0x46 0x20 0x36 0x8b # CHECK: floor.l.d $f26, $f6 +0x46 0x00 0x23 0x0b # CHECK: floor.l.s $f12, $f4 +0x4c 0x42 0x75 0xa6 # CHECK: madd.ps $f22, $f2, $f14, $f2 +0x46 0xc0 0x85 0x86 # CHECK: mov.ps $f22, $f16 +0x46 0xd8 0xe2 0x91 # CHECK: movf.ps $f10, $f28, $fcc6 +0x46 0xd3 0xf7 0x93 # CHECK: movn.ps $f30, $f30, s3 +0x46 0xc9 0xc5 0x11 # CHECK: movt.ps $f20, $f24, $fcc2 +0x46 0xdf 0x84 0x92 # CHECK: movz.ps $f18, $f16, ra +0x4d 0xd0 0xe3 0x2e # CHECK: msub.ps $f12, $f14, $f28, $f16 +0x46 0xc0 0x64 0x87 # CHECK: neg.ps $f18, $f12 +0x4c 0x98 0x46 0xb6 # CHECK: nmadd.ps $f26, $f4, $f8, $f24 +0x4d 0x90 0x71 0xbe # CHECK: nmsub.ps $f6, $f12, $f14, $f16 +0x46 0xde 0x46 0x2c # CHECK: pll.ps $f24, $f8, $f30 +0x46 0xdc 0xd0 0x2d # CHECK: plu.ps $f0, $f26, $f28 +0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26 +0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2 +0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1 +0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6 +0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30 +0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5 +0x46 0x20 0x03 0x08 # CHECK: round.l.d $f12, $f0 +0x46 0x00 0x2e 0x08 # CHECK: round.l.s $f24, $f5 +0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28 +0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8 +0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26 +0x46 0x20 0xb5 0x89 # CHECK: trunc.l.d $f22, $f22 +0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31 +0x41 0xcd 0x00 0x00 # CHECK: wrpgpr zero, t5 diff --git a/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5-le.txt b/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5-le.txt new file mode 100644 index 0000000..62977dc --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5-le.txt @@ -0,0 +1,169 @@ +# RUN: llvm-mc --disassemble %s -triple=mipsel-unknown-linux -mcpu=mips32r5 | FileCheck %s +0x05 0x73 0x20 0x46 # CHECK: abs.d $f12, $f14 +0x85 0x39 0x00 0x46 # CHECK: abs.s $f6, $f7 +0x20 0x48 0xc7 0x00 # CHECK: add $9, $6, $7 +0x00 0x62 0x2e 0x46 # CHECK: add.d $f8, $f12, $f14 +0x40 0x32 0x07 0x46 # CHECK: add.s $f9, $f6, $f7 +0x67 0x45 0xc9 0x20 # CHECK: addi $9, $6, 17767 +0x67 0xc5 0xc9 0x24 # CHECK: addiu $9, $6, -15001 +0x21 0x48 0xc7 0x00 # CHECK: addu $9, $6, $7 +0x24 0x48 0xc7 0x00 # CHECK: and $9, $6, $7 +0x67 0x45 0xc9 0x30 # CHECK: andi $9, $6, 17767 +0x4c 0x01 0x00 0x10 # CHECK: b 1332 +0x4c 0x01 0x00 0x45 # CHECK: bc1f 1332 +0x4c 0x01 0x1c 0x45 # CHECK: bc1f $fcc7, 1332 +0x4c 0x01 0x01 0x45 # CHECK: bc1t 1332 +0x4c 0x01 0x1d 0x45 # CHECK: bc1t $fcc7, 1332 +0x4c 0x01 0x26 0x11 # CHECK: beq $9, $6, 1332 +0x4c 0x01 0xc1 0x04 # CHECK: bgez $6, 1332 +0x4c 0x01 0xd1 0x04 # CHECK: bgezal $6, 1332 +0x4c 0x01 0xc0 0x1c # CHECK: bgtz $6, 1332 +0x4c 0x01 0xc0 0x18 # CHECK: blez $6, 1332 +0x4c 0x01 0x26 0x15 # CHECK: bne $9, $6, 1332 +0x32 0x60 0x2e 0x46 # CHECK: c.eq.d $f12, $f14 +0x32 0x30 0x07 0x46 # CHECK: c.eq.s $f6, $f7 +0x30 0x60 0x2e 0x46 # CHECK: c.f.d $f12, $f14 +0x30 0x30 0x07 0x46 # CHECK: c.f.s $f6, $f7 +0x3e 0x60 0x2e 0x46 # CHECK: c.le.d $f12, $f14 +0x3e 0x30 0x07 0x46 # CHECK: c.le.s $f6, $f7 +0x3c 0x60 0x2e 0x46 # CHECK: c.lt.d $f12, $f14 +0x3c 0x30 0x07 0x46 # CHECK: c.lt.s $f6, $f7 +0x3d 0x60 0x2e 0x46 # CHECK: c.nge.d $f12, $f14 +0x3d 0x30 0x07 0x46 # CHECK: c.nge.s $f6, $f7 +0x3b 0x60 0x2e 0x46 # CHECK: c.ngl.d $f12, $f14 +0x3b 0x30 0x07 0x46 # CHECK: c.ngl.s $f6, $f7 +0x39 0x60 0x2e 0x46 # CHECK: c.ngle.d $f12, $f14 +0x39 0x30 0x07 0x46 # CHECK: c.ngle.s $f6, $f7 +0x3f 0x60 0x2e 0x46 # CHECK: c.ngt.d $f12, $f14 +0x3f 0x30 0x07 0x46 # CHECK: c.ngt.s $f6, $f7 +0x36 0x60 0x2e 0x46 # CHECK: c.ole.d $f12, $f14 +0x36 0x30 0x07 0x46 # CHECK: c.ole.s $f6, $f7 +0x34 0x60 0x2e 0x46 # CHECK: c.olt.d $f12, $f14 +0x34 0x30 0x07 0x46 # CHECK: c.olt.s $f6, $f7 +0x3a 0x60 0x2e 0x46 # CHECK: c.seq.d $f12, $f14 +0x3a 0x30 0x07 0x46 # CHECK: c.seq.s $f6, $f7 +0x38 0x60 0x2e 0x46 # CHECK: c.sf.d $f12, $f14 +0x38 0x30 0x07 0x46 # CHECK: c.sf.s $f6, $f7 +0x33 0x60 0x2e 0x46 # CHECK: c.ueq.d $f12, $f14 +0x33 0xe0 0x12 0x46 # CHECK: c.ueq.s $f28, $f18 +0x37 0x60 0x2e 0x46 # CHECK: c.ule.d $f12, $f14 +0x37 0x30 0x07 0x46 # CHECK: c.ule.s $f6, $f7 +0x35 0x60 0x2e 0x46 # CHECK: c.ult.d $f12, $f14 +0x35 0x30 0x07 0x46 # CHECK: c.ult.s $f6, $f7 +0x31 0x60 0x2e 0x46 # CHECK: c.un.d $f12, $f14 +0x31 0x30 0x07 0x46 # CHECK: c.un.s $f6, $f7 +0x0e 0x73 0x20 0x46 # CHECK: ceil.w.d $f12, $f14 +0x8e 0x39 0x00 0x46 # CHECK: ceil.w.s $f6, $f7 +0x00 0x38 0x46 0x44 # CHECK: cfc1 $6, $7 +0x21 0x30 0xe6 0x70 # CHECK: clo $6, $7 +0x20 0x30 0xe6 0x70 # CHECK: clz $6, $7 +0x00 0x38 0xc6 0x44 # CHECK: ctc1 $6, $7 +0xa1 0x39 0x00 0x46 # CHECK: cvt.d.s $f6, $f7 +0x21 0x73 0x80 0x46 # CHECK: cvt.d.w $f12, $f14 +0x25 0x73 0x20 0x46 # CHECK: cvt.l.d $f12, $f14 +0xa5 0x39 0x00 0x46 # CHECK: cvt.l.s $f6, $f7 +0x20 0x73 0x20 0x46 # CHECK: cvt.s.d $f12, $f14 +0xa0 0x39 0x80 0x46 # CHECK: cvt.s.w $f6, $f7 +0x24 0x73 0x20 0x46 # CHECK: cvt.w.d $f12, $f14 +0xa4 0x39 0x00 0x46 # CHECK: cvt.w.s $f6, $f7 +0x00 0x60 0x7e 0x41 # CHECK: di $fp +0x00 0x60 0x60 0x41 # CHECK: di +0x20 0x60 0x6e 0x41 # CHECK: ei $14 +0x20 0x60 0x60 0x41 # CHECK: ei +0x0f 0x73 0x20 0x46 # CHECK: floor.w.d $f12, $f14 +0x8f 0x39 0x00 0x46 # CHECK: floor.w.s $f6, $f7 +0x84 0x61 0x33 0x7d # CHECK: ins $19, $9, 6, 7 +0x4c 0x01 0x00 0x08 # CHECK: j 1328 +0x4c 0x01 0x00 0x0c # CHECK: jal 1328 +0x4c 0x01 0x00 0x74 # CHECK: jalx 1328 +0x09 0xf8 0xe0 0x00 # CHECK: jalr $7 +0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 +0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0x08 0x00 0xe0 0x00 # CHECK: jr $7 +0xc6 0x23 0xa4 0x80 # CHECK: lb $4, 9158($5) +0x06 0x00 0xa4 0x90 # CHECK: lbu $4, 6($5) +0xc6 0x23 0xe9 0xd4 # CHECK: ldc1 $f9, 9158($7) +0x01 0x02 0xf7 0x4d # CHECK: ldxc1 $f8, $23($15) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0xc6 0x23 0xe9 0xc0 # CHECK: ll $9, 9158($7) +0x67 0x45 0x06 0x3c # CHECK: lui $6, 17767 +0x05 0x00 0xa6 0x4c # CHECK: luxc1 $f0, $6($5) +0x18 0x00 0xa4 0x8c # CHECK: lw $4, 24($5) +0xc6 0x23 0xe9 0xc4 # CHECK: lwc1 $f9, 9158($7) +0x03 0x00 0x82 0x88 # CHECK: lwl $2, 3($4) +0x10 0x00 0xa3 0x98 # CHECK: lwr $3, 16($5) +0x00 0x05 0xcc 0x4d # CHECK: lwxc1 $f20, $12($14) +0x00 0x00 0xc7 0x70 # CHECK: madd $6, $7 +0xa1 0xd4 0x94 0x4e # CHECK: madd.d $f18, $f20, $f26, $f20 +0x60 0x98 0xf9 0x4f # CHECK: madd.s $f1, $f31, $f19, $f25 +0x01 0x00 0xc7 0x70 # CHECK: maddu $6, $7 +0x00 0x38 0x06 0x44 # CHECK: mfc1 $6, $f7 +0x10 0x28 0x00 0x00 # CHECK: mfhi $5 +0x00 0xc0 0x7e 0x44 # CHECK: mfhc1 $fp, $f24 +0x12 0x28 0x00 0x00 # CHECK: mflo $5 +0x86 0x41 0x20 0x46 # CHECK: mov.d $f6, $f8 +0x86 0x39 0x00 0x46 # CHECK: mov.s $f6, $f7 +0x04 0x00 0xc7 0x70 # CHECK: msub $6, $7 +0xa9 0xf2 0x52 0x4c # CHECK: msub.d $f10, $f2, $f30, $f18 +0x28 0x53 0x70 0x4e # CHECK: msub.s $f12, $f19, $f10, $f16 +0x05 0x00 0xc7 0x70 # CHECK: msubu $6, $7 +0x00 0x38 0x86 0x44 # CHECK: mtc1 $6, $f7 +0x11 0x00 0xe0 0x00 # CHECK: mthi $7 +0x00 0x80 0xe0 0x44 # CHECK: mthc1 $zero, $f16 +0x13 0x00 0xe0 0x00 # CHECK: mtlo $7 +0x02 0x62 0x2e 0x46 # CHECK: mul.d $f8, $f12, $f14 +0x42 0x32 0x07 0x46 # CHECK: mul.s $f9, $f6, $f7 +0x02 0x48 0xc7 0x70 # CHECK: mul $9, $6, $7 +0x18 0x00 0x65 0x00 # CHECK: mult $3, $5 +0x19 0x00 0x65 0x00 # CHECK: multu $3, $5 +0x07 0x73 0x20 0x46 # CHECK: neg.d $f12, $f14 +0x87 0x39 0x00 0x46 # CHECK: neg.s $f6, $f7 +0xb1 0x74 0x54 0x4d # CHECK: nmadd.d $f18, $f10, $f14, $f20 +0x30 0xc8 0xac 0x4c # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x48 0xc7 0x00 # CHECK: nor $9, $6, $7 +0xb9 0x87 0x1e 0x4d # CHECK: nmsub.d $f30, $f8, $f16, $f30 +0x78 0x98 0x04 0x4f # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5 +0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767 +0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7 +0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7 +0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14 +0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7 +0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5) +0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5) +0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7) +0xc6 0x23 0xe9 0xf4 # CHECK: sdc1 $f9, 9158($7) +0x09 0x40 0x24 0x4f # CHECK: sdxc1 $f8, $4($25) +0x20 0x34 0x07 0x7c # CHECK: seb $6, $7 +0x20 0x36 0x07 0x7c # CHECK: seh $6, $7 +0xc6 0x23 0xa4 0xa4 # CHECK: sh $4, 9158($5) +0xc0 0x21 0x03 0x00 # CHECK: sll $4, $3, 7 +0x04 0x10 0xa3 0x00 # CHECK: sllv $2, $3, $5 +0x2a 0x18 0x65 0x00 # CHECK: slt $3, $3, $5 +0x67 0x00 0x63 0x28 # CHECK: slti $3, $3, 103 +0x67 0x00 0x63 0x2c # CHECK: sltiu $3, $3, 103 +0x2b 0x18 0x65 0x00 # CHECK: sltu $3, $3, $5 +0x04 0x73 0x20 0x46 # CHECK: sqrt.d $f12, $f14 +0x84 0x39 0x00 0x46 # CHECK: sqrt.s $f6, $f7 +0xc3 0x21 0x03 0x00 # CHECK: sra $4, $3, 7 +0x07 0x10 0xa3 0x00 # CHECK: srav $2, $3, $5 +0xc2 0x21 0x03 0x00 # CHECK: srl $4, $3, 7 +0x06 0x10 0xa3 0x00 # CHECK: srlv $2, $3, $5 +0x01 0x62 0x2e 0x46 # CHECK: sub.d $f8, $f12, $f14 +0x41 0x32 0x07 0x46 # CHECK: sub.s $f9, $f6, $f7 +0x22 0x48 0xc7 0x00 # CHECK: sub $9, $6, $7 +0x23 0x20 0x65 0x00 # CHECK: subu $4, $3, $5 +0x0d 0x20 0xb8 0x4c # CHECK: suxc1 $f4, $24($5) +0x18 0x00 0xa4 0xac # CHECK: sw $4, 24($5) +0xc6 0x23 0xe9 0xe4 # CHECK: swc1 $f9, 9158($7) +0x10 0x00 0xa4 0xa8 # CHECK: swl $4, 16($5) +0x10 0x00 0xe6 0xb8 # CHECK: swr $6, 16($7) +0x08 0xd0 0xd2 0x4e # CHECK: swxc1 $f26, $18($22) +0xcf 0x01 0x00 0x00 # CHECK: sync 7 +0x0d 0x73 0x20 0x46 # CHECK: trunc.w.d $f12, $f14 +0x8d 0x39 0x00 0x46 # CHECK: trunc.w.s $f6, $f7 +0xa0 0x30 0x07 0x7c # CHECK: wsbh $6, $7 +0x26 0x18 0x65 0x00 # CHECK: xor $3, $3, $5 +0x67 0x45 0xc9 0x38 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5.txt b/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5.txt new file mode 100644 index 0000000..39c4644 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5.txt @@ -0,0 +1,169 @@ +# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux -mcpu=mips32r5 | FileCheck %s +0x46 0x20 0x73 0x05 # CHECK: abs.d $f12, $f14 +0x46 0x00 0x39 0x85 # CHECK: abs.s $f6, $f7 +0x00 0xc7 0x48 0x20 # CHECK: add $9, $6, $7 +0x46 0x2e 0x62 0x00 # CHECK: add.d $f8, $f12, $f14 +0x46 0x07 0x32 0x40 # CHECK: add.s $f9, $f6, $f7 +0x20 0xc9 0x45 0x67 # CHECK: addi $9, $6, 17767 +0x24 0xc9 0xc5 0x67 # CHECK: addiu $9, $6, -15001 +0x00 0xc7 0x48 0x21 # CHECK: addu $9, $6, $7 +0x00 0xc7 0x48 0x24 # CHECK: and $9, $6, $7 +0x30 0xc9 0x45 0x67 # CHECK: andi $9, $6, 17767 +0x10 0x00 0x01 0x4c # CHECK: b 1332 +0x45 0x00 0x01 0x4c # CHECK: bc1f 1332 +0x45 0x1c 0x01 0x4c # CHECK: bc1f $fcc7, 1332 +0x45 0x01 0x01 0x4c # CHECK: bc1t 1332 +0x45 0x1d 0x01 0x4c # CHECK: bc1t $fcc7, 1332 +0x11 0x26 0x01 0x4c # CHECK: beq $9, $6, 1332 +0x04 0xc1 0x01 0x4c # CHECK: bgez $6, 1332 +0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 +0x1c 0xc0 0x01 0x4c # CHECK: bgtz $6, 1332 +0x18 0xc0 0x01 0x4c # CHECK: blez $6, 1332 +0x15 0x26 0x01 0x4c # CHECK: bne $9, $6, 1332 +0x46 0x2e 0x60 0x32 # CHECK: c.eq.d $f12, $f14 +0x46 0x07 0x30 0x32 # CHECK: c.eq.s $f6, $f7 +0x46 0x2e 0x60 0x30 # CHECK: c.f.d $f12, $f14 +0x46 0x07 0x30 0x30 # CHECK: c.f.s $f6, $f7 +0x46 0x2e 0x60 0x3e # CHECK: c.le.d $f12, $f14 +0x46 0x07 0x30 0x3e # CHECK: c.le.s $f6, $f7 +0x46 0x2e 0x60 0x3c # CHECK: c.lt.d $f12, $f14 +0x46 0x07 0x30 0x3c # CHECK: c.lt.s $f6, $f7 +0x46 0x2e 0x60 0x3d # CHECK: c.nge.d $f12, $f14 +0x46 0x07 0x30 0x3d # CHECK: c.nge.s $f6, $f7 +0x46 0x2e 0x60 0x3b # CHECK: c.ngl.d $f12, $f14 +0x46 0x07 0x30 0x3b # CHECK: c.ngl.s $f6, $f7 +0x46 0x2e 0x60 0x39 # CHECK: c.ngle.d $f12, $f14 +0x46 0x07 0x30 0x39 # CHECK: c.ngle.s $f6, $f7 +0x46 0x2e 0x60 0x3f # CHECK: c.ngt.d $f12, $f14 +0x46 0x07 0x30 0x3f # CHECK: c.ngt.s $f6, $f7 +0x46 0x2e 0x60 0x36 # CHECK: c.ole.d $f12, $f14 +0x46 0x07 0x30 0x36 # CHECK: c.ole.s $f6, $f7 +0x46 0x2e 0x60 0x34 # CHECK: c.olt.d $f12, $f14 +0x46 0x07 0x30 0x34 # CHECK: c.olt.s $f6, $f7 +0x46 0x2e 0x60 0x3a # CHECK: c.seq.d $f12, $f14 +0x46 0x07 0x30 0x3a # CHECK: c.seq.s $f6, $f7 +0x46 0x2e 0x60 0x38 # CHECK: c.sf.d $f12, $f14 +0x46 0x07 0x30 0x38 # CHECK: c.sf.s $f6, $f7 +0x46 0x2e 0x60 0x33 # CHECK: c.ueq.d $f12, $f14 +0x46 0x12 0xe0 0x33 # CHECK: c.ueq.s $f28, $f18 +0x46 0x2e 0x60 0x37 # CHECK: c.ule.d $f12, $f14 +0x46 0x07 0x30 0x37 # CHECK: c.ule.s $f6, $f7 +0x46 0x2e 0x60 0x35 # CHECK: c.ult.d $f12, $f14 +0x46 0x07 0x30 0x35 # CHECK: c.ult.s $f6, $f7 +0x46 0x2e 0x60 0x31 # CHECK: c.un.d $f12, $f14 +0x46 0x07 0x30 0x31 # CHECK: c.un.s $f6, $f7 +0x46 0x20 0x73 0x0e # CHECK: ceil.w.d $f12, $f14 +0x46 0x00 0x39 0x8e # CHECK: ceil.w.s $f6, $f7 +0x44 0x46 0x38 0x00 # CHECK: cfc1 $6, $7 +0x70 0xe6 0x30 0x21 # CHECK: clo $6, $7 +0x70 0xe6 0x30 0x20 # CHECK: clz $6, $7 +0x44 0xc6 0x38 0x00 # CHECK: ctc1 $6, $7 +0x46 0x00 0x39 0xa1 # CHECK: cvt.d.s $f6, $f7 +0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14 +0x46 0x20 0x73 0x25 # CHECK: cvt.l.d $f12, $f14 +0x46 0x00 0x39 0xa5 # CHECK: cvt.l.s $f6, $f7 +0x46 0x20 0x73 0x20 # CHECK: cvt.s.d $f12, $f14 +0x46 0x80 0x39 0xa0 # CHECK: cvt.s.w $f6, $f7 +0x46 0x20 0x73 0x24 # CHECK: cvt.w.d $f12, $f14 +0x46 0x00 0x39 0xa4 # CHECK: cvt.w.s $f6, $f7 +0x41 0x7e 0x60 0x00 # CHECK: di $fp +0x41 0x60 0x60 0x00 # CHECK: di +0x41 0x6e 0x60 0x20 # CHECK: ei $14 +0x41 0x60 0x60 0x20 # CHECK: ei +0x46 0x20 0x73 0x0f # CHECK: floor.w.d $f12, $f14 +0x46 0x00 0x39 0x8f # CHECK: floor.w.s $f6, $f7 +0x7d 0x33 0x61 0x84 # CHECK: ins $19, $9, 6, 7 +0x08 0x00 0x01 0x4c # CHECK: j 1328 +0x0c 0x00 0x01 0x4c # CHECK: jal 1328 +0x74 0x00 0x01 0x4c # CHECK: jalx 1328 +0x00 0xe0 0xf8 0x09 # CHECK: jalr $7 +0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 +0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0x00 0xe0 0x00 0x08 # CHECK: jr $7 +0x80 0xa4 0x23 0xc6 # CHECK: lb $4, 9158($5) +0x90 0xa4 0x00 0x06 # CHECK: lbu $4, 6($5) +0xd4 0xe9 0x23 0xc6 # CHECK: ldc1 $f9, 9158($7) +0x4d 0xf7 0x02 0x01 # CHECK: ldxc1 $f8, $23($15) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0xc0 0xe9 0x23 0xc6 # CHECK: ll $9, 9158($7) +0x3c 0x06 0x45 0x67 # CHECK: lui $6, 17767 +0x4c 0xa6 0x00 0x05 # CHECK: luxc1 $f0, $6($5) +0x8c 0xa4 0x00 0x18 # CHECK: lw $4, 24($5) +0xc4 0xe9 0x23 0xc6 # CHECK: lwc1 $f9, 9158($7) +0x88 0x82 0x00 0x03 # CHECK: lwl $2, 3($4) +0x98 0xa3 0x00 0x10 # CHECK: lwr $3, 16($5) +0x4d 0xcc 0x05 0x00 # CHECK: lwxc1 $f20, $12($14) +0x70 0xc7 0x00 0x00 # CHECK: madd $6, $7 +0x4e 0x94 0xd4 0xa1 # CHECK: madd.d $f18, $f20, $f26, $f20 +0x4f 0xf9 0x98 0x60 # CHECK: madd.s $f1, $f31, $f19, $f25 +0x70 0xc7 0x00 0x01 # CHECK: maddu $6, $7 +0x44 0x06 0x38 0x00 # CHECK: mfc1 $6, $f7 +0x00 0x00 0x28 0x10 # CHECK: mfhi $5 +0x44 0x7e 0xc0 0x00 # CHECK: mfhc1 $fp, $f24 +0x00 0x00 0x28 0x12 # CHECK: mflo $5 +0x46 0x20 0x41 0x86 # CHECK: mov.d $f6, $f8 +0x46 0x00 0x39 0x86 # CHECK: mov.s $f6, $f7 +0x70 0xc7 0x00 0x04 # CHECK: msub $6, $7 +0x4c 0x52 0xf2 0xa9 # CHECK: msub.d $f10, $f2, $f30, $f18 +0x4e 0x70 0x53 0x28 # CHECK: msub.s $f12, $f19, $f10, $f16 +0x70 0xc7 0x00 0x05 # CHECK: msubu $6, $7 +0x44 0x86 0x38 0x00 # CHECK: mtc1 $6, $f7 +0x00 0xe0 0x00 0x11 # CHECK: mthi $7 +0x44 0xe0 0x80 0x00 # CHECK: mthc1 $zero, $f16 +0x00 0xe0 0x00 0x13 # CHECK: mtlo $7 +0x46 0x2e 0x62 0x02 # CHECK: mul.d $f8, $f12, $f14 +0x46 0x07 0x32 0x42 # CHECK: mul.s $f9, $f6, $f7 +0x70 0xc7 0x48 0x02 # CHECK: mul $9, $6, $7 +0x00 0x65 0x00 0x18 # CHECK: mult $3, $5 +0x00 0x65 0x00 0x19 # CHECK: multu $3, $5 +0x46 0x20 0x73 0x07 # CHECK: neg.d $f12, $f14 +0x46 0x00 0x39 0x87 # CHECK: neg.s $f6, $f7 +0x4d 0x54 0x74 0xb1 # CHECK: nmadd.d $f18, $f10, $f14, $f20 +0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0xc7 0x48 0x27 # CHECK: nor $9, $6, $7 +0x4d 0x1e 0x87 0xb9 # CHECK: nmsub.d $f30, $f8, $f16, $f30 +0x4f 0x04 0x98 0x78 # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x00 0x65 0x18 0x25 # CHECK: or $3, $3, $5 +0x34 0xc9 0x45 0x67 # CHECK: ori $9, $6, 17767 +0x00 0x26 0x49 0xc2 # CHECK: rotr $9, $6, 7 +0x00 0xe6 0x48 0x46 # CHECK: rotrv $9, $6, $7 +0x46 0x20 0x73 0x0c # CHECK: round.w.d $f12, $f14 +0x46 0x00 0x39 0x8c # CHECK: round.w.s $f6, $f7 +0xa0 0xa4 0x23 0xc6 # CHECK: sb $4, 9158($5) +0xa0 0xa4 0x00 0x06 # CHECK: sb $4, 6($5) +0xe0 0xe9 0x23 0xc6 # CHECK: sc $9, 9158($7) +0xf4 0xe9 0x23 0xc6 # CHECK: sdc1 $f9, 9158($7) +0x4f 0x24 0x40 0x09 # CHECK: sdxc1 $f8, $4($25) +0x7c 0x07 0x34 0x20 # CHECK: seb $6, $7 +0x7c 0x07 0x36 0x20 # CHECK: seh $6, $7 +0xa4 0xa4 0x23 0xc6 # CHECK: sh $4, 9158($5) +0x00 0x03 0x21 0xc0 # CHECK: sll $4, $3, 7 +0x00 0xa3 0x10 0x04 # CHECK: sllv $2, $3, $5 +0x00 0x65 0x18 0x2a # CHECK: slt $3, $3, $5 +0x28 0x63 0x00 0x67 # CHECK: slti $3, $3, 103 +0x2c 0x63 0x00 0x67 # CHECK: sltiu $3, $3, 103 +0x00 0x65 0x18 0x2b # CHECK: sltu $3, $3, $5 +0x46 0x20 0x73 0x04 # CHECK: sqrt.d $f12, $f14 +0x46 0x00 0x39 0x84 # CHECK: sqrt.s $f6, $f7 +0x00 0x03 0x21 0xc3 # CHECK: sra $4, $3, 7 +0x00 0xa3 0x10 0x07 # CHECK: srav $2, $3, $5 +0x00 0x03 0x21 0xc2 # CHECK: srl $4, $3, 7 +0x00 0xa3 0x10 0x06 # CHECK: srlv $2, $3, $5 +0x46 0x2e 0x62 0x01 # CHECK: sub.d $f8, $f12, $f14 +0x46 0x07 0x32 0x41 # CHECK: sub.s $f9, $f6, $f7 +0x00 0xc7 0x48 0x22 # CHECK: sub $9, $6, $7 +0x00 0x65 0x20 0x23 # CHECK: subu $4, $3, $5 +0x4c 0xb8 0x20 0x0d # CHECK: suxc1 $f4, $24($5) +0xac 0xa4 0x00 0x18 # CHECK: sw $4, 24($5) +0xe4 0xe9 0x23 0xc6 # CHECK: swc1 $f9, 9158($7) +0xa8 0xa4 0x00 0x10 # CHECK: swl $4, 16($5) +0xb8 0xe6 0x00 0x10 # CHECK: swr $6, 16($7) +0x4e 0xd2 0xd0 0x08 # CHECK: swxc1 $f26, $18($22) +0x00 0x00 0x01 0xcf # CHECK: sync 7 +0x46 0x20 0x73 0x0d # CHECK: trunc.w.d $f12, $f14 +0x46 0x00 0x39 0x8d # CHECK: trunc.w.s $f6, $f7 +0x7c 0x07 0x30 0xa0 # CHECK: wsbh $6, $7 +0x00 0x65 0x18 0x26 # CHECK: xor $3, $3, $5 +0x38 0xc9 0x45 0x67 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips32r5/valid-xfail-mips32r5.txt b/test/MC/Disassembler/Mips/mips32r5/valid-xfail-mips32r5.txt new file mode 100644 index 0000000..27f5498 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r5/valid-xfail-mips32r5.txt @@ -0,0 +1,83 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble -mcpu=mips32r5 | FileCheck %s +# XFAIL: * +0x46 0x2f 0x79 0x32 # CHECK: c.eq.d $fcc1, $f15, $f15 +0x46 0x11 0xc5 0x32 # CHECK: c.eq.s $fcc5, $f24, $f17 +0x46 0x35 0x5c 0x30 # CHECK: c.f.d $fcc4, $f11, $f21 +0x46 0x07 0xf4 0x30 # CHECK: c.f.s $fcc4, $f30, $f7 +0x46 0x21 0x94 0x3e # CHECK: c.le.d $fcc4, $f18, $f1 +0x46 0x04 0xc6 0x3e # CHECK: c.le.s $fcc6, $f24, $f4 +0x46 0x23 0x4b 0x3c # CHECK: c.lt.d $fcc3, $f9, $f3 +0x46 0x0e 0x8a 0x3c # CHECK: c.lt.s $fcc2, $f17, $f14 +0x46 0x30 0xad 0x3d # CHECK: c.nge.d $fcc5, $f21, $f16 +0x46 0x08 0x5b 0x3d # CHECK: c.nge.s $fcc3, $f11, $f8 +0x46 0x17 0xfa 0x3b # CHECK: c.ngl.s $fcc2, $f31, $f23 +0x46 0x17 0x92 0x39 # CHECK: c.ngle.s $fcc2, $f18, $f23 +0x46 0x27 0xc4 0x3f # CHECK: c.ngt.d $fcc4, $f24, $f7 +0x46 0x0d 0x45 0x3f # CHECK: c.ngt.s $fcc5, $f8, $f13 +0x46 0x3f 0x82 0x36 # CHECK: c.ole.d $fcc2, $f16, $f31 +0x46 0x14 0x3b 0x36 # CHECK: c.ole.s $fcc3, $f7, $f20 +0x46 0x3c 0x9c 0x34 # CHECK: c.olt.d $fcc4, $f19, $f28 +0x46 0x07 0xa6 0x34 # CHECK: c.olt.s $fcc6, $f20, $f7 +0x46 0x27 0xfc 0x3a # CHECK: c.seq.d $fcc4, $f31, $f7 +0x46 0x19 0x0f 0x3a # CHECK: c.seq.s $fcc7, $f1, $f25 +0x46 0x39 0x6c 0x33 # CHECK: c.ueq.d $fcc4, $f13, $f25 +0x46 0x1e 0x1e 0x33 # CHECK: c.ueq.s $fcc6, $f3, $f30 +0x46 0x32 0xcf 0x37 # CHECK: c.ule.d $fcc7, $f25, $f18 +0x46 0x1e 0xaf 0x37 # CHECK: c.ule.s $fcc7, $f21, $f30 +0x46 0x31 0x36 0x35 # CHECK: c.ult.d $fcc6, $f6, $f17 +0x46 0x0a 0xc7 0x35 # CHECK: c.ult.s $fcc7, $f24, $f10 +0x46 0x38 0xbe 0x31 # CHECK: c.un.d $fcc6, $f23, $f24 +0x46 0x04 0xf1 0x31 # CHECK: c.un.s $fcc1, $f30, $f4 +0x46 0xc0 0x45 0x85 # CHECK: abs.ps $f22, $f8 +0x46 0xcc 0xc6 0x00 # CHECK: add.ps $f24, $f24, $f12 +0x46 0xca 0x04 0x32 # CHECK: c.eq.ps $fcc4, $f0, $f10 +0x46 0xcc 0x66 0x30 # CHECK: c.f.ps $fcc6, $f12, $f12 +0x46 0xd4 0x42 0x3e # CHECK: c.le.ps $fcc2, $f8, $f20 +0x46 0xc4 0x90 0x3c # CHECK: c.lt.ps $f18, $f4 +0x46 0xda 0x10 0x3d # CHECK: c.nge.ps $f2, $f26 +0x46 0xde 0xb0 0x3b # CHECK: c.ngl.ps $f22, $f30 +0x46 0xd4 0x66 0x39 # CHECK: c.ngle.ps $fcc6, $f12, $f20 +0x46 0xc6 0xf6 0x3f # CHECK: c.ngt.ps $fcc6, $f30, $f6 +0x46 0xc8 0xa6 0x36 # CHECK: c.ole.ps $fcc6, $f20, $f8 +0x46 0xd0 0x32 0x34 # CHECK: c.olt.ps $fcc2, $f6, $f16 +0x46 0xce 0xf6 0x3a # CHECK: c.seq.ps $fcc6, $f30, $f14 +0x46 0xc6 0x26 0x38 # CHECK: c.sf.ps $fcc6, $f4, $f6 +0x46 0xdc 0x20 0x33 # CHECK: c.ueq.ps $f4, $f28 +0x46 0xc2 0x86 0x37 # CHECK: c.ule.ps $fcc6, $f16, $f2 +0x46 0xc0 0x76 0x35 # CHECK: c.ult.ps $fcc6, $f14, $f0 +0x46 0xda 0x14 0x31 # CHECK: c.un.ps $fcc4, $f2, $f26 +0x46 0x20 0x20 0x8a # CHECK: ceil.l.d $f2, $f4 +0x46 0x00 0x6c 0x8a # CHECK: ceil.l.s $f18, $f13 +0x46 0xa0 0x81 0x21 # CHECK: cvt.d.l $f4, $f16 +0x46 0x14 0x90 0xa6 # CHECK: cvt.ps.s $f2, $f18, $f20 +0x46 0xa0 0xf3 0xe0 # CHECK: cvt.s.l $f15, $f30 +0x46 0xc0 0x17 0xa8 # CHECK: cvt.s.pl $f30, $f2 +0x46 0xc0 0xd3 0xa0 # CHECK: cvt.s.pu $f14, $f26 +0x46 0x20 0x36 0x8b # CHECK: floor.l.d $f26, $f6 +0x46 0x00 0x23 0x0b # CHECK: floor.l.s $f12, $f4 +0x4c 0x42 0x75 0xa6 # CHECK: madd.ps $f22, $f2, $f14, $f2 +0x46 0xc0 0x85 0x86 # CHECK: mov.ps $f22, $f16 +0x46 0xd8 0xe2 0x91 # CHECK: movf.ps $f10, $f28, $fcc6 +0x46 0xd3 0xf7 0x93 # CHECK: movn.ps $f30, $f30, s3 +0x46 0xc9 0xc5 0x11 # CHECK: movt.ps $f20, $f24, $fcc2 +0x46 0xdf 0x84 0x92 # CHECK: movz.ps $f18, $f16, ra +0x4d 0xd0 0xe3 0x2e # CHECK: msub.ps $f12, $f14, $f28, $f16 +0x46 0xc0 0x64 0x87 # CHECK: neg.ps $f18, $f12 +0x4c 0x98 0x46 0xb6 # CHECK: nmadd.ps $f26, $f4, $f8, $f24 +0x4d 0x90 0x71 0xbe # CHECK: nmsub.ps $f6, $f12, $f14, $f16 +0x46 0xde 0x46 0x2c # CHECK: pll.ps $f24, $f8, $f30 +0x46 0xdc 0xd0 0x2d # CHECK: plu.ps $f0, $f26, $f28 +0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26 +0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2 +0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1 +0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6 +0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30 +0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5 +0x46 0x20 0x03 0x08 # CHECK: round.l.d $f12, $f0 +0x46 0x00 0x2e 0x08 # CHECK: round.l.s $f24, $f5 +0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28 +0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8 +0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26 +0x46 0x20 0xb5 0x89 # CHECK: trunc.l.d $f22, $f22 +0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31 +0x41 0xcd 0x00 0x00 # CHECK: wrpgpr zero, t5 diff --git a/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6-el.txt b/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6-el.txt new file mode 100644 index 0000000..c10d166 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6-el.txt @@ -0,0 +1,148 @@ +# RUN: llvm-mc --disassemble %s -triple=mipsel-unknown-linux -mcpu=mips32r6 | FileCheck %s +0x04 0x00 0x42 0x30 # CHECK: andi $2, $2, 4 +0x19 0x00 0x80 0xec # CHECK: addiupc $4, 100 +0x0a 0x00 0x29 0x25 # CHECK: addiu $9, $9, 10 +0xa0 0x22 0x43 0x7c # CHECK: align $4, $2, $3, 2 +0x38 0x00 0x7f 0xec # CHECK: aluipc $3, 56 +0xe9 0xff 0x62 0x3c # CHECK: aui $3, $2, -23 +0xff 0xff 0x7e 0xec # CHECK: auipc $3, -1 +0x9b 0x14 0x11 0x04 # CHECK: bal 21104 +0xb8 0x96 0x37 0xe8 # CHECK: balc 14572256 +0xb8 0x96 0x37 0xc8 # CHECK: bc 14572256 +0x01 0x00 0x20 0x45 # CHECK: bc1eqz $f0, 8 +0x01 0x00 0x3f 0x45 # CHECK: bc1eqz $f31, 8 +0x01 0x00 0xa0 0x45 # CHECK: bc1nez $f0, 8 +0x01 0x00 0xbf 0x45 # CHECK: bc1nez $f31, 8 +0x02 0x00 0x20 0x49 # CHECK: bc2eqz $0, 12 +0x02 0x00 0x3f 0x49 # CHECK: bc2eqz $31, 12 +0x02 0x00 0xa0 0x49 # CHECK: bc2nez $0, 12 +0x02 0x00 0xbf 0x49 # CHECK: bc2nez $31, 12 +0x40 0x00 0xa6 0x20 # CHECK: beqc $5, $6, 256 +0x4d 0x01 0x02 0x20 # CHECK: beqzalc $2, 1332 +0x40 0x00 0xa6 0x60 # CHECK: bnec $5, $6, 256 +0x4d 0x01 0x02 0x60 # CHECK: bnezalc $2, 1332 +0x90 0x46 0xa0 0xd8 # CHECK: beqzc $5, 72256 +0x40 0x00 0x43 0x58 # CHECK: bgec $2, $3, 256 +0x40 0x00 0x43 0x18 # CHECK: bgeuc $2, $3, 256 +0x4d 0x01 0x42 0x18 # CHECK: bgezalc $2, 1332 +0x90 0x46 0xa0 0xf8 # CHECK: bnezc $5, 72256 +0x40 0x00 0xa5 0x5c # CHECK: bltzc $5, 256 +0x40 0x00 0xa5 0x58 # CHECK: bgezc $5, 256 +0x4d 0x01 0x02 0x1c # CHECK: bgtzalc $2, 1332 +0x40 0x00 0x05 0x58 # CHECK: blezc $5, 256 +0x4d 0x01 0x42 0x1c # CHECK: bltzalc $2, 1332 +0x40 0x00 0x05 0x5c # CHECK: bgtzc $5, 256 +0x20 0x20 0x02 0x7c # CHECK: bitswap $4, $2 +0x4d 0x01 0x02 0x18 # CHECK: blezalc $2, 1332 +0x40 0x00 0xa6 0x5c # CHECK: bltc $5, $6, 256 +0x40 0x00 0xa6 0x1c # CHECK: bltuc $5, $6, 256 +0x01 0x00 0x00 0x60 # CHECK: bnvc $zero, $zero, 4 +0x01 0x00 0x40 0x60 # CHECK: bnvc $2, $zero, 4 +0x01 0x00 0x82 0x60 # CHECK: bnvc $4, $2, 4 +0x01 0x00 0x00 0x20 # CHECK: bovc $zero, $zero, 4 +0x01 0x00 0x40 0x20 # CHECK: bovc $2, $zero, 4 +0x01 0x00 0x82 0x20 # CHECK: bovc $4, $2, 4 +0x80 0x18 0x84 0x46 # CHECK: cmp.af.s $f2, $f3, $f4 +0x80 0x18 0xa4 0x46 # CHECK: cmp.af.d $f2, $f3, $f4 +0x81 0x18 0x84 0x46 # CHECK: cmp.un.s $f2, $f3, $f4 +0x81 0x18 0xa4 0x46 # CHECK: cmp.un.d $f2, $f3, $f4 +0x82 0x18 0x84 0x46 # CHECK: cmp.eq.s $f2, $f3, $f4 +0x82 0x18 0xa4 0x46 # CHECK: cmp.eq.d $f2, $f3, $f4 +0x83 0x18 0x84 0x46 # CHECK: cmp.ueq.s $f2, $f3, $f4 +0x83 0x18 0xa4 0x46 # CHECK: cmp.ueq.d $f2, $f3, $f4 +0x84 0x18 0x84 0x46 # CHECK: cmp.lt.s $f2, $f3, $f4 +0x84 0x18 0xa4 0x46 # CHECK: cmp.lt.d $f2, $f3, $f4 +0x85 0x18 0x84 0x46 # CHECK: cmp.ult.s $f2, $f3, $f4 +0x85 0x18 0xa4 0x46 # CHECK: cmp.ult.d $f2, $f3, $f4 +0x86 0x18 0x84 0x46 # CHECK: cmp.le.s $f2, $f3, $f4 +0x86 0x18 0xa4 0x46 # CHECK: cmp.le.d $f2, $f3, $f4 +0x87 0x18 0x84 0x46 # CHECK: cmp.ule.s $f2, $f3, $f4 +0x87 0x18 0xa4 0x46 # CHECK: cmp.ule.d $f2, $f3, $f4 +0x88 0x18 0x84 0x46 # CHECK: cmp.saf.s $f2, $f3, $f4 +0x88 0x18 0xa4 0x46 # CHECK: cmp.saf.d $f2, $f3, $f4 +0x89 0x18 0x84 0x46 # CHECK: cmp.sun.s $f2, $f3, $f4 +0x89 0x18 0xa4 0x46 # CHECK: cmp.sun.d $f2, $f3, $f4 +0x8a 0x18 0x84 0x46 # CHECK: cmp.seq.s $f2, $f3, $f4 +0x8a 0x18 0xa4 0x46 # CHECK: cmp.seq.d $f2, $f3, $f4 +0x8b 0x18 0x84 0x46 # CHECK: cmp.sueq.s $f2, $f3, $f4 +0x8b 0x18 0xa4 0x46 # CHECK: cmp.sueq.d $f2, $f3, $f4 +0x8c 0x18 0x84 0x46 # CHECK: cmp.slt.s $f2, $f3, $f4 +0x8c 0x18 0xa4 0x46 # CHECK: cmp.slt.d $f2, $f3, $f4 +0x8d 0x18 0x84 0x46 # CHECK: cmp.sult.s $f2, $f3, $f4 +0x8d 0x18 0xa4 0x46 # CHECK: cmp.sult.d $f2, $f3, $f4 +0x8e 0x18 0x84 0x46 # CHECK: cmp.sle.s $f2, $f3, $f4 +0x8e 0x18 0xa4 0x46 # CHECK: cmp.sle.d $f2, $f3, $f4 +0x8f 0x18 0x84 0x46 # CHECK: cmp.sule.s $f2, $f3, $f4 +0x8f 0x18 0xa4 0x46 # CHECK: cmp.sule.d $f2, $f3, $f4 +0x00 0x60 0x7e 0x41 # CHECK: di $fp +0x00 0x60 0x60 0x41 # CHECK: di +0x9a 0x10 0x64 0x00 # CHECK: div $2, $3, $4 +0x9b 0x10 0x64 0x00 # CHECK: divu $2, $3, $4 +0x20 0x60 0x6e 0x41 # CHECK: ei $14 +0x20 0x60 0x60 0x41 # CHECK: ei +0xc5 0x10 0x64 0x00 # CHECK: lsa $2, $3, $4, 3 +0x43 0x00 0x48 0xec # CHECK: lwpc $2, 268 +0x43 0x00 0x50 0xec # CHECK: lwupc $2, 268 +0xda 0x10 0x64 0x00 # CHECK: mod $2, $3, $4 +0xdb 0x10 0x64 0x00 # CHECK: modu $2, $3, $4 +0x98 0x10 0x64 0x00 # CHECK: mul $2, $3, $4 +0xd8 0x10 0x64 0x00 # CHECK: muh $2, $3, $4 +0x99 0x10 0x64 0x00 # CHECK: mulu $2, $3, $4 +0xd9 0x10 0x64 0x00 # CHECK: muhu $2, $3, $4 +0x98 0x18 0x04 0x46 # CHECK: maddf.s $f2, $f3, $f4 +0x98 0x18 0x24 0x46 # CHECK: maddf.d $f2, $f3, $f4 +0x99 0x18 0x04 0x46 # CHECK: msubf.s $f2, $f3, $f4 +0x99 0x18 0x24 0x46 # CHECK: msubf.d $f2, $f3, $f4 +0x10 0x08 0x22 0x46 # CHECK: sel.d $f0, $f1, $f2 +0x10 0x08 0x02 0x46 # CHECK: sel.s $f0, $f1, $f2 +0x35 0x10 0x64 0x00 # CHECK: seleqz $2, $3, $4 +0x37 0x10 0x64 0x00 # CHECK: selnez $2, $3, $4 +0x1d 0x10 0x04 0x46 # CHECK: max.s $f0, $f2, $f4 +0x1d 0x10 0x24 0x46 # CHECK: max.d $f0, $f2, $f4 +0x1c 0x10 0x04 0x46 # CHECK: min.s $f0, $f2, $f4 +0x1c 0x10 0x24 0x46 # CHECK: min.d $f0, $f2, $f4 +0x1f 0x10 0x04 0x46 # CHECK: maxa.s $f0, $f2, $f4 +0x1f 0x10 0x24 0x46 # CHECK: maxa.d $f0, $f2, $f4 +0x1e 0x10 0x04 0x46 # CHECK: mina.s $f0, $f2, $f4 +0x1e 0x10 0x24 0x46 # CHECK: mina.d $f0, $f2, $f4 +0x04 0x00 0x42 0x34 # CHECK: ori $2, $2, 4 +0x14 0x10 0x04 0x46 # CHECK: seleqz.s $f0, $f2, $f4 +0x14 0x10 0x24 0x46 # CHECK: seleqz.d $f0, $f2, $f4 +0x17 0x10 0x04 0x46 # CHECK: selnez.s $f0, $f2, $f4 +0x17 0x10 0x24 0x46 # CHECK: selnez.d $f0, $f2, $f4 +0x9a 0x20 0x00 0x46 # CHECK: rint.s $f2, $f4 +0x9a 0x20 0x20 0x46 # CHECK: rint.d $f2, $f4 +0x9b 0x20 0x00 0x46 # CHECK: class.s $f2, $f4 +0x9b 0x20 0x20 0x46 # CHECK: class.d $f2, $f4 +0x09 0x04 0x80 0x00 # CHECK: jr.hb $4 +0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 +0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0xb6 0xb3 0x42 0x7e # CHECK: ll $2, -153($18) +0x26 0xec 0x6f 0x7e # CHECK: sc $15, -40($19) +0x51 0x58 0xa0 0x00 # CHECK: clo $11, $5 +0x50 0xe8 0x80 0x03 # CHECK: clz $sp, $gp +0x40 0x00 0x00 0x00 # CHECK: ssnop +0x0e 0x00 0x00 0x00 # CHECK: sdbbp +0x8e 0x08 0x00 0x00 # CHECK: sdbbp 34 +0x0f 0x00 0x00 0x00 # CHECK: sync +0x4f 0x00 0x00 0x00 # CHECK: sync 1 +0x34 0x00 0x03 0x00 # CHECK: teq $zero, $3 +0x34 0x9b 0xa7 0x00 # CHECK: teq $5, $7, 620 +0x30 0x00 0xea 0x00 # CHECK: tge $7, $10 +0x30 0x55 0xb3 0x00 # CHECK: tge $5, $19, 340 +0x31 0x00 0xdc 0x02 # CHECK: tgeu $22, $gp +0xf1 0x5e 0x8e 0x02 # CHECK: tgeu $20, $14, 379 +0x32 0x00 0xed 0x01 # CHECK: tlt $15, $13 +0x72 0x21 0x53 0x00 # CHECK: tlt $2, $19, 133 +0x33 0x00 0x70 0x01 # CHECK: tltu $11, $16 +0x33 0xfe 0x1d 0x02 # CHECK: tltu $16, $sp, 1016 +0x36 0x00 0xd1 0x00 # CHECK: tne $6, $17 +0x76 0xdd 0xe8 0x00 # CHECK: tne $7, $8, 885 +0x43 0x0d 0xc8 0x49 # CHECK: ldc2 $8, -701($1) +0xb7 0x34 0x52 0x49 # CHECK: lwc2 $18, -841($6) +0x75 0x92 0xf4 0x49 # CHECK: sdc2 $20, 629($18) +0x30 0x81 0x79 0x49 # CHECK: swc2 $25, 304($16) +0x00 0x01 0x05 0xf8 # CHECK: jialc $5, 256 +0x00 0x01 0x05 0xd8 # CHECK: jic $5, 256 +0x25 0x04 0xa1 0x7c # CHECK: cache 1, 8($5) +0x35 0x04 0xa1 0x7c # CHECK: pref 1, 8($5 diff --git a/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6.txt b/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6.txt new file mode 100644 index 0000000..0b78003 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r6/valid-mips32r6.txt @@ -0,0 +1,148 @@ +# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux -mcpu=mips32r6 | FileCheck %s +0x30 0x42 0x00 0x04 # CHECK: andi $2, $2, 4 +0xec 0x80 0x00 0x19 # CHECK: addiupc $4, 100 +0x25 0x29 0x00 0x0a # CHECK: addiu $9, $9, 10 +0x7c 0x43 0x22 0xa0 # CHECK: align $4, $2, $3, 2 +0xec 0x7f 0x00 0x38 # CHECK: aluipc $3, 56 +0x3c 0x62 0xff 0xe9 # CHECK: aui $3, $2, -23 +0xec 0x7e 0xff 0xff # CHECK: auipc $3, -1 +0x04 0x11 0x14 0x9b # CHECK: bal 21104 +0xe8 0x37 0x96 0xb8 # CHECK: balc 14572256 +0xc8 0x37 0x96 0xb8 # CHECK: bc 14572256 +0x45 0x20 0x00 0x01 # CHECK: bc1eqz $f0, 8 +0x45 0x3f 0x00 0x01 # CHECK: bc1eqz $f31, 8 +0x45 0xa0 0x00 0x01 # CHECK: bc1nez $f0, 8 +0x45 0xbf 0x00 0x01 # CHECK: bc1nez $f31, 8 +0x49 0x20 0x00 0x02 # CHECK: bc2eqz $0, 12 +0x49 0x3f 0x00 0x02 # CHECK: bc2eqz $31, 12 +0x49 0xa0 0x00 0x02 # CHECK: bc2nez $0, 12 +0x49 0xbf 0x00 0x02 # CHECK: bc2nez $31, 12 +0x20 0xa6 0x00 0x40 # CHECK: beqc $5, $6, 256 +0x20 0x02 0x01 0x4d # CHECK: beqzalc $2, 1332 +0x60 0xa6 0x00 0x40 # CHECK: bnec $5, $6, 256 +0x60 0x02 0x01 0x4d # CHECK: bnezalc $2, 1332 +0xd8 0xa0 0x46 0x90 # CHECK: beqzc $5, 72256 +0x58 0x43 0x00 0x40 # CHECK: bgec $2, $3, 256 +0x18 0x43 0x00 0x40 # CHECK: bgeuc $2, $3, 256 +0x18 0x42 0x01 0x4d # CHECK: bgezalc $2, 1332 +0xf8 0xa0 0x46 0x90 # CHECK: bnezc $5, 72256 +0x5c 0xa5 0x00 0x40 # CHECK: bltzc $5, 256 +0x58 0xa5 0x00 0x40 # CHECK: bgezc $5, 256 +0x1c 0x02 0x01 0x4d # CHECK: bgtzalc $2, 1332 +0x58 0x05 0x00 0x40 # CHECK: blezc $5, 256 +0x1c 0x42 0x01 0x4d # CHECK: bltzalc $2, 1332 +0x5c 0x05 0x00 0x40 # CHECK: bgtzc $5, 256 +0x7c 0x02 0x20 0x20 # CHECK: bitswap $4, $2 +0x18 0x02 0x01 0x4d # CHECK: blezalc $2, 1332 +0x5c 0xa6 0x00 0x40 # CHECK: bltc $5, $6, 256 +0x1c 0xa6 0x00 0x40 # CHECK: bltuc $5, $6, 256 +0x60 0x00 0x00 0x01 # CHECK: bnvc $zero, $zero, 4 +0x60 0x40 0x00 0x01 # CHECK: bnvc $2, $zero, 4 +0x60 0x82 0x00 0x01 # CHECK: bnvc $4, $2, 4 +0x20 0x00 0x00 0x01 # CHECK: bovc $zero, $zero, 4 +0x20 0x40 0x00 0x01 # CHECK: bovc $2, $zero, 4 +0x20 0x82 0x00 0x01 # CHECK: bovc $4, $2, 4 +0x46 0x84 0x18 0x80 # CHECK: cmp.af.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x80 # CHECK: cmp.af.d $f2, $f3, $f4 +0x46 0x84 0x18 0x81 # CHECK: cmp.un.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x81 # CHECK: cmp.un.d $f2, $f3, $f4 +0x46 0x84 0x18 0x82 # CHECK: cmp.eq.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x82 # CHECK: cmp.eq.d $f2, $f3, $f4 +0x46 0x84 0x18 0x83 # CHECK: cmp.ueq.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x83 # CHECK: cmp.ueq.d $f2, $f3, $f4 +0x46 0x84 0x18 0x84 # CHECK: cmp.lt.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x84 # CHECK: cmp.lt.d $f2, $f3, $f4 +0x46 0x84 0x18 0x85 # CHECK: cmp.ult.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x85 # CHECK: cmp.ult.d $f2, $f3, $f4 +0x46 0x84 0x18 0x86 # CHECK: cmp.le.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x86 # CHECK: cmp.le.d $f2, $f3, $f4 +0x46 0x84 0x18 0x87 # CHECK: cmp.ule.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x87 # CHECK: cmp.ule.d $f2, $f3, $f4 +0x46 0x84 0x18 0x88 # CHECK: cmp.saf.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x88 # CHECK: cmp.saf.d $f2, $f3, $f4 +0x46 0x84 0x18 0x89 # CHECK: cmp.sun.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x89 # CHECK: cmp.sun.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8a # CHECK: cmp.seq.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8a # CHECK: cmp.seq.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8b # CHECK: cmp.sueq.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8b # CHECK: cmp.sueq.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8c # CHECK: cmp.slt.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8c # CHECK: cmp.slt.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8d # CHECK: cmp.sult.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8d # CHECK: cmp.sult.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8e # CHECK: cmp.sle.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8e # CHECK: cmp.sle.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8f # CHECK: cmp.sule.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8f # CHECK: cmp.sule.d $f2, $f3, $f4 +0x41 0x7e 0x60 0x00 # CHECK: di $fp +0x41 0x60 0x60 0x00 # CHECK: di +0x00 0x64 0x10 0x9a # CHECK: div $2, $3, $4 +0x00 0x64 0x10 0x9b # CHECK: divu $2, $3, $4 +0x41 0x6e 0x60 0x20 # CHECK: ei $14 +0x41 0x60 0x60 0x20 # CHECK: ei +0x00 0x64 0x10 0xc5 # CHECK: lsa $2, $3, $4, 3 +0xec 0x48 0x00 0x43 # CHECK: lwpc $2, 268 +0xec 0x50 0x00 0x43 # CHECK: lwupc $2, 268 +0x00 0x64 0x10 0xda # CHECK: mod $2, $3, $4 +0x00 0x64 0x10 0xdb # CHECK: modu $2, $3, $4 +0x00 0x64 0x10 0x98 # CHECK: mul $2, $3, $4 +0x00 0x64 0x10 0xd8 # CHECK: muh $2, $3, $4 +0x00 0x64 0x10 0x99 # CHECK: mulu $2, $3, $4 +0x00 0x64 0x10 0xd9 # CHECK: muhu $2, $3, $4 +0x46 0x04 0x18 0x98 # CHECK: maddf.s $f2, $f3, $f4 +0x46 0x24 0x18 0x98 # CHECK: maddf.d $f2, $f3, $f4 +0x46 0x04 0x18 0x99 # CHECK: msubf.s $f2, $f3, $f4 +0x46 0x24 0x18 0x99 # CHECK: msubf.d $f2, $f3, $f4 +0x46 0x22 0x08 0x10 # CHECK: sel.d $f0, $f1, $f2 +0x46 0x02 0x08 0x10 # CHECK: sel.s $f0, $f1, $f2 +0x00 0x64 0x10 0x35 # CHECK: seleqz $2, $3, $4 +0x00 0x64 0x10 0x37 # CHECK: selnez $2, $3, $4 +0x46 0x04 0x10 0x1d # CHECK: max.s $f0, $f2, $f4 +0x46 0x24 0x10 0x1d # CHECK: max.d $f0, $f2, $f4 +0x46 0x04 0x10 0x1c # CHECK: min.s $f0, $f2, $f4 +0x46 0x24 0x10 0x1c # CHECK: min.d $f0, $f2, $f4 +0x46 0x04 0x10 0x1f # CHECK: maxa.s $f0, $f2, $f4 +0x46 0x24 0x10 0x1f # CHECK: maxa.d $f0, $f2, $f4 +0x46 0x04 0x10 0x1e # CHECK: mina.s $f0, $f2, $f4 +0x46 0x24 0x10 0x1e # CHECK: mina.d $f0, $f2, $f4 +0x34 0x42 0x00 0x04 # CHECK: ori $2, $2, 4 +0x46 0x04 0x10 0x14 # CHECK: seleqz.s $f0, $f2, $f4 +0x46 0x24 0x10 0x14 # CHECK: seleqz.d $f0, $f2, $f4 +0x46 0x04 0x10 0x17 # CHECK: selnez.s $f0, $f2, $f4 +0x46 0x24 0x10 0x17 # CHECK: selnez.d $f0, $f2, $f4 +0x46 0x00 0x20 0x9a # CHECK: rint.s $f2, $f4 +0x46 0x20 0x20 0x9a # CHECK: rint.d $f2, $f4 +0x46 0x00 0x20 0x9b # CHECK: class.s $f2, $f4 +0x46 0x20 0x20 0x9b # CHECK: class.d $f2, $f4 +0x00 0x80 0x04 0x09 # CHECK: jr.hb $4 +0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 +0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0x7e 0x42 0xb3 0xb6 # CHECK: ll $2, -153($18) +0x7e 0x6f 0xec 0x26 # CHECK: sc $15, -40($19) +0x00 0xa0 0x58 0x51 # CHECK: clo $11, $5 +0x03 0x80 0xe8 0x50 # CHECK: clz $sp, $gp +0x00 0x00 0x00 0x40 # CHECK: ssnop +0x00 0x00 0x00 0x0e # CHECK: sdbbp +0x00 0x00 0x08 0x8e # CHECK: sdbbp 34 +0x00 0x00 0x00 0x0f # CHECK: sync +0x00 0x00 0x00 0x4f # CHECK: sync 1 +0x00 0x03 0x00 0x34 # CHECK: teq $zero, $3 +0x00 0xa7 0x9b 0x34 # CHECK: teq $5, $7, 620 +0x00 0xea 0x00 0x30 # CHECK: tge $7, $10 +0x00 0xb3 0x55 0x30 # CHECK: tge $5, $19, 340 +0x02 0xdc 0x00 0x31 # CHECK: tgeu $22, $gp +0x02 0x8e 0x5e 0xf1 # CHECK: tgeu $20, $14, 379 +0x01 0xed 0x00 0x32 # CHECK: tlt $15, $13 +0x00 0x53 0x21 0x72 # CHECK: tlt $2, $19, 133 +0x01 0x70 0x00 0x33 # CHECK: tltu $11, $16 +0x02 0x1d 0xfe 0x33 # CHECK: tltu $16, $sp, 1016 +0x00 0xd1 0x00 0x36 # CHECK: tne $6, $17 +0x00 0xe8 0xdd 0x76 # CHECK: tne $7, $8, 885 +0x49 0xc8 0x0d 0x43 # CHECK: ldc2 $8, -701($1) +0x49 0x52 0x34 0xb7 # CHECK: lwc2 $18, -841($6) +0x49 0xf4 0x92 0x75 # CHECK: sdc2 $20, 629($18) +0x49 0x79 0x81 0x30 # CHECK: swc2 $25, 304($16) +0xf8 0x05 0x01 0x00 # CHECK: jialc $5, 256 +0xd8 0x05 0x01 0x00 # CHECK: jic $5, 256 +0x7c 0xa1 0x04 0x25 # CHECK: cache 1, 8($5) +0x7c 0xa1 0x04 0x35 # CHECK: pref 1, 8($5) diff --git a/test/MC/Disassembler/Mips/mips32r6/valid-xfail-mips32r6.txt b/test/MC/Disassembler/Mips/mips32r6/valid-xfail-mips32r6.txt new file mode 100644 index 0000000..e9afd03 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips32r6/valid-xfail-mips32r6.txt @@ -0,0 +1,15 @@ +# Instructions that should be valid but currently fail for known reasons (e.g. +# they aren't implemented yet). +# +# RUN: llvm-mc %s -disassemble -triple=mips-unknown-linux -mcpu=mips32r6 | FileCheck %s +# XFAIL: * +0x20 0x40 0x00 0x01 # CHECK: bovc $0, $2, 4 +0x20 0x82 0x00 0x01 # CHECK: bovc $2, $4, 4 +0x60 0x40 0x00 0x01 # CHECK: bnvc $0, $2, 4 +0x60 0x82 0x00 0x01 # CHECK: bnvc $2, $4, 4 +0x20 0xc0 0x00 0x40 # CHECK: beqc $6, $zero, 256 +0x20 0xa0 0x00 0x40 # CHECK: beqc $5, $zero, 256 +0x20 0xa6 0x00 0x40 # CHECK: beqc $5, $6, 256 +0x60 0xc0 0x00 0x40 # CHECK: bnec $6, $zero, 256 +0x60 0xa0 0x00 0x40 # CHECK: bnec $5, $zero, 256 +0x60 0xa6 0x00 0x40 # CHECK: bnec $5, $6, 256 diff --git a/test/MC/Disassembler/Mips/mips4/valid-mips4-el.txt b/test/MC/Disassembler/Mips/mips4/valid-mips4-el.txt new file mode 100644 index 0000000..0c9e2f1 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips4/valid-mips4-el.txt @@ -0,0 +1,229 @@ +# RUN: llvm-mc %s -triple=mips64el-unknown-linux -disassemble -mcpu=mips4 | FileCheck %s +# CHECK: .text +0x85 0xc1 0x20 0x46 # CHECK: abs.d $f6, $f24 +0x45 0x82 0x00 0x46 # CHECK: abs.s $f9, $f16 +0x20 0xb8 0x45 0x02 # CHECK: add $23, $18, $5 +0x48 0x3b 0xc9 0x21 # CHECK: addi $9, $14, 15176 +0xe7 0xe3 0x18 0x23 # CHECK: addi $24, $24, -7193 +0x00 0x30 0x3c 0x46 # CHECK: add.d $f0, $f6, $f28 +0x00 0xaa 0x18 0x46 # CHECK: add.s $f8, $f21, $f24 +0xd2 0x66 0x2d 0x21 # CHECK: addi $13, $9, 26322 +0xfe 0xff 0x08 0x21 # CHECK: addi $8, $8, -2 +0x21 0x48 0x86 0x00 # CHECK: addu $9, $4, $6 +0x0a 0x00 0x29 0x25 # CHECK: addiu $9, $9, 10 +0x24 0xb8 0x4c 0x00 # CHECK: and $23, $2, $12 +0x04 0x00 0x42 0x30 # CHECK: andi $2, $2, 4 +0x01 0x00 0x00 0x45 # CHECK: bc1f 8 +0x00 0x00 0x04 0x45 # CHECK: bc1f $fcc1, 4 +0x06 0x00 0x1e 0x45 # CHECK: bc1fl $fcc7, 28 +0x0c 0x00 0x02 0x45 # CHECK: bc1fl 52 +0x01 0x00 0x01 0x45 # CHECK: bc1t 8 +0x00 0x00 0x05 0x45 # CHECK: bc1t $fcc1, 4 +0xf4 0xf7 0x03 0x45 # CHECK: bc1tl -8236 +0x06 0x00 0x1f 0x45 # CHECK: bc1tl $fcc7, 28 +0x9b 0x14 0x11 0x04 # CHECK: bal 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x9b 0x14 0xd0 0x04 # CHECK: bltzal $6, 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x40 0x0c 0xd3 0x51 # CHECK: beql $14, $19, 12548 +0x1f 0x07 0x93 0x05 # CHECK: bgezall $12, 7296 +0x4d 0xf9 0x83 0x04 # CHECK: bgezl $4, -6856 +0x59 0xfc 0x40 0x5d # CHECK: bgtzl $10, -3736 +0xe7 0x02 0xc0 0x58 # CHECK: blezl $6, 2976 +0x7a 0x00 0xd2 0x04 # CHECK: bltzall $6, 492 +0x45 0xf6 0x22 0x06 # CHECK: bltzl $17, -9960 +0xfc 0x04 0x94 0x57 # CHECK: bnel $gp, $20, 5108 +0x08 0x00 0xa1 0xbc # CHECK: cache 1, 8($5) +0x3b 0xe0 0x3c 0x46 # CHECK: c.ngl.d $f28, $f28 +0x39 0x00 0x30 0x46 # CHECK: c.ngle.d $f0, $f16 +0x38 0xf0 0x20 0x46 # CHECK: c.sf.d $f30, $f0 +0x38 0x70 0x16 0x46 # CHECK: c.sf.s $f14, $f22 +0x4a 0x18 0x20 0x46 # CHECK: ceil.l.d $f1, $f3 +0x8a 0x6c 0x00 0x46 # CHECK: ceil.l.s $f18, $f13 +0xce 0xc2 0x20 0x46 # CHECK: ceil.w.d $f11, $f24 +0x8e 0xa1 0x00 0x46 # CHECK: ceil.w.s $f6, $f20 +0x00 0xa8 0x51 0x44 # CHECK: cfc1 $17, $21 +0x00 0xd0 0xc6 0x44 # CHECK: ctc1 $6, $26 +0xa1 0xe5 0x00 0x46 # CHECK: cvt.d.s $f22, $f28 +0xa1 0x5e 0x80 0x46 # CHECK: cvt.d.w $f26, $f11 +0x21 0x81 0xa0 0x46 # CHECK: cvt.d.l $f4, $f16 +0x25 0x7e 0x20 0x46 # CHECK: cvt.l.d $f24, $f15 +0xe5 0xea 0x00 0x46 # CHECK: cvt.l.s $f11, $f29 +0xe0 0xf3 0xa0 0x46 # CHECK: cvt.s.l $f15, $f30 +0xa0 0x46 0x20 0x46 # CHECK: cvt.s.d $f26, $f8 +0xa0 0x7d 0x80 0x46 # CHECK: cvt.s.w $f22, $f15 +0x24 0x75 0x20 0x46 # CHECK: cvt.w.d $f20, $f14 +0x24 0xc5 0x00 0x46 # CHECK: cvt.w.s $f20, $f24 +0x2c 0x98 0x3f 0x00 # CHECK: dadd $19, $1, $ra +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0x16 0xee 0xda 0x66 # CHECK: daddiu $26, $22, -4586 +0x2d 0x98 0x3f 0x00 # CHECK: daddu $19, $1, $ra +0x9f 0x46 0x58 0x64 # CHECK: daddiu $24, $2, 18079 +0x3f 0x69 0x73 0x66 # CHECK: daddiu $19, $19, 26943 +0x1e 0x00 0x53 0x03 # CHECK: ddiv $zero, $26, $19 +0x1f 0x00 0x11 0x02 # CHECK: ddivu $zero, $16, $17 +0x1a 0x00 0x2b 0x03 # CHECK: div $zero, $25, $11 +0x03 0xa7 0x3a 0x46 # CHECK: div.d $f28, $f20, $f26 +0x03 0x29 0x0f 0x46 # CHECK: div.s $f4, $f5, $f15 +0x1b 0x00 0x2f 0x03 # CHECK: divu $zero, $25, $15 +0x00 0x68 0x2c 0x44 # CHECK: dmfc1 $12, $f13 +0x00 0x70 0xb0 0x44 # CHECK: dmtc1 $16, $f14 +0x1c 0x00 0xe9 0x02 # CHECK: dmult $23, $9 +0x1d 0x00 0xa6 0x00 # CHECK: dmultu $5, $6 +0xb8 0x04 0x00 0x00 # CHECK: dsll $zero, $zero, 18 +0xb8 0x04 0x14 0x00 # CHECK: dsll $zero, $20, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbb 0xe2 0x1c 0x00 # CHECK: dsra $gp, $gp, 10 +0xbb 0xe2 0x12 0x00 # CHECK: dsra $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xbf 0xe2 0x1c 0x00 # CHECK: dsra32 $gp, $gp, 10 +0xbf 0xe2 0x12 0x00 # CHECK: dsra32 $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xfa 0x9d 0x13 0x00 # CHECK: dsrl $19, $19, 23 +0xfa 0x9d 0x06 0x00 # CHECK: dsrl $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0xfe 0x9d 0x13 0x00 # CHECK: dsrl32 $19, $19, 23 +0xfe 0x9d 0x06 0x00 # CHECK: dsrl32 $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0x2e 0x38 0xc8 0x02 # CHECK: dsub $7, $22, $8 +0x2f 0x28 0xba 0x00 # CHECK: dsubu $5, $5, $26 +0xc0 0x00 0x00 0x00 # CHECK: ehb +0x18 0x00 0x00 0x42 # CHECK: eret +0x8f 0x53 0x20 0x46 # CHECK: floor.w.d $f14, $f10 +0x0f 0x4a 0x00 0x46 # CHECK: floor.w.s $f8, $f9 +0x8b 0x3e 0x20 0x46 # CHECK: floor.l.d $f26, $f7 +0x0b 0x2b 0x00 0x46 # CHECK: floor.l.s $f12, $f5 +0x4d 0xc7 0x58 0x81 # CHECK: lb $24, -14515($10) +0xf3 0x75 0x68 0x90 # CHECK: lbu $8, 30195($3) +0x07 0x40 0x0a 0xd6 # CHECK: ldc1 $f10, 16391($16) +0x43 0xad 0x28 0xd8 # CHECK: ldc2 $8, -21181($1) +0x94 0xde 0xab 0x86 # CHECK: lh $11, -8556($21) +0xbd 0xa6 0x53 0x94 # CHECK: lhu $19, -22851($2) +0xb3 0x8b 0x01 0x24 # CHECK: addiu $1, $zero, -29773 +0x3f 0x8b 0x00 0x24 # CHECK: addiu $zero, $zero, -29889 +0x67 0xe3 0x42 0xc2 # CHECK: ll $2, -7321($18) +0x2a 0x16 0xa8 0x8c # CHECK: lw $8, 5674($5) +0xf1 0x27 0x50 0xc7 # CHECK: lwc1 $f16, 10225($26) +0xb7 0xfc 0xd2 0xc8 # CHECK: lwc2 $18, -841($6) +0x79 0xef 0xf4 0x89 # CHECK: lwl $20, -4231($15) +0x35 0xb5 0x80 0x9b # CHECK: lwr $zero, -19147($gp) +0x00 0x03 0xd1 0x4f # CHECK: lwxc1 $f12, $17($fp) +0x00 0xd8 0x07 0x44 # CHECK: mfc1 $7, $f27 +0x10 0x98 0x00 0x00 # CHECK: mfhi $19 +0x10 0xe8 0x00 0x00 # CHECK: mfhi $sp +0x12 0x88 0x00 0x00 # CHECK: mflo $17 +0x06 0x75 0x20 0x46 # CHECK: mov.d $f20, $f14 +0x86 0xd8 0x00 0x46 # CHECK: mov.s $f2, $f27 +0x01 0xe0 0x1c 0x01 # CHECK: movf $gp, $8, $fcc7 +0x91 0x59 0x34 0x46 # CHECK: movf.d $f6, $f11, $fcc5 +0xd1 0x2d 0x18 0x46 # CHECK: movf.s $f23, $f5, $fcc6 +0x21 0xf0 0x80 0x00 # CHECK: move $fp, $4 +0x21 0xc8 0xc0 0x00 # CHECK: move $25, $6 +0x0b 0x18 0x30 0x02 # CHECK: movn $3, $17, $16 +0xd3 0xae 0x3a 0x46 # CHECK: movn.d $f27, $f21, $26 +0x13 0x03 0x17 0x46 # CHECK: movn.s $f12, $f0, $23 +0x01 0x00 0x95 0x02 # CHECK: movt $zero, $20, $fcc5 +0x11 0x10 0x21 0x46 # CHECK: movt.d $f0, $f2, $fcc0 +0x91 0x17 0x05 0x46 # CHECK: movt.s $f30, $f2, $fcc1 +0x0a 0x28 0xc9 0x02 # CHECK: movz $5, $22, $9 +0x12 0xeb 0x29 0x46 # CHECK: movz.d $f12, $f29, $9 +0x52 0x3e 0x03 0x46 # CHECK: movz.s $f25, $f7, $3 +0x00 0x48 0x9e 0x44 # CHECK: mtc1 $fp, $f9 +0x11 0x00 0x20 0x02 # CHECK: mthi $17 +0x13 0x00 0xa0 0x03 # CHECK: mtlo $sp +0x13 0x00 0x20 0x03 # CHECK: mtlo $25 +0x02 0xa5 0x30 0x46 # CHECK: mul.d $f20, $f20, $f16 +0x82 0x57 0x02 0x46 # CHECK: mul.s $f30, $f10, $f2 +0x18 0x00 0xb4 0x03 # CHECK: mult $sp, $20 +0x18 0x00 0xa2 0x03 # CHECK: mult $sp, $2 +0x19 0x00 0x9a 0x03 # CHECK: multu $gp, $26 +0x19 0x00 0x32 0x01 # CHECK: multu $9, $18 +0x23 0x10 0x02 0x00 # CHECK: negu $2, $2 +0x23 0x10 0x03 0x00 # CHECK: negu $2, $3 +0x87 0x96 0x20 0x46 # CHECK: neg.d $f26, $f18 +0x47 0x78 0x00 0x46 # CHECK: neg.s $f1, $f15 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x38 0x07 0x00 # CHECK: nor $7, $zero, $7 +0x25 0x60 0x1d 0x02 # CHECK: or $12, $16, $sp +0x04 0x00 0x42 0x34 # CHECK: ori $2, $2, 4 +0x08 0x00 0xa1 0xcc # CHECK: pref 1, 8($5) +0x08 0x0b 0x20 0x46 # CHECK: round.l.d $f12, $f1 +0x48 0x2e 0x00 0x46 # CHECK: round.l.s $f25, $f5 +0x8c 0x21 0x20 0x46 # CHECK: round.w.d $f6, $f4 +0xcc 0xe6 0x00 0x46 # CHECK: round.w.s $f27, $f28 +0x6f 0xb2 0xd6 0xa1 # CHECK: sb $22, -19857($14) +0xd8 0x49 0x6f 0xe2 # CHECK: sc $15, 18904($19) +0xcd 0xdf 0xaf 0xf3 # CHECK: scd $15, -8243($sp) +0xcb 0x16 0x4c 0xfd # CHECK: sd $12, 5835($10) +0x1f 0xae 0xc7 0xb3 # CHECK: sdl $7, -20961($fp) +0x39 0xb0 0x8b 0xb5 # CHECK: sdr $11, -20423($12) +0x6e 0x77 0xbe 0xf5 # CHECK: sdc1 $f30, 30574($13) +0x75 0x5a 0x54 0xfa # CHECK: sdc2 $20, 23157($18) +0x09 0x58 0xca 0x4d # CHECK: sdxc1 $f11, $10($14) +0xd0 0xe5 0xee 0xa5 # CHECK: sh $14, -6704($15) +0x80 0x3c 0x07 0x00 # CHECK: sll $7, $7, 18 +0x80 0x3c 0x00 0x00 # CHECK: sll $7, $zero, 18 +0x04 0x38 0x20 0x01 # CHECK: sllv $7, $zero, $9 +0x04 0x38 0x20 0x01 # CHECK: sllv $7, $zero, $9 +0x2a 0xb8 0x7b 0x01 # CHECK: slt $23, $11, $27 +0x11 0x25 0x51 0x29 # CHECK: slti $17, $10, 9489 +0x55 0xc3 0x39 0x2f # CHECK: sltiu $25, $25, -15531 +0x2b 0xa0 0xab 0x02 # CHECK: sltu $20, $21, $11 +0x55 0xc3 0x38 0x2f # CHECK: sltiu $24, $25, -15531 +0x04 0xb4 0x20 0x46 # CHECK: sqrt.d $f16, $f22 +0x04 0x08 0x00 0x46 # CHECK: sqrt.s $f0, $f1 +0xc3 0x8b 0x11 0x00 # CHECK: sra $17, $17, 15 +0xc3 0x8b 0x17 0x00 # CHECK: sra $17, $23, 15 +0x07 0x88 0xb7 0x03 # CHECK: srav $17, $23, $sp +0x07 0x88 0xb7 0x03 # CHECK: srav $17, $23, $sp +0xc2 0x11 0x02 0x00 # CHECK: srl $2, $2, 7 +0xc2 0x11 0x02 0x00 # CHECK: srl $2, $2, 7 +0x06 0xc8 0x94 0x00 # CHECK: srlv $25, $20, $4 +0x06 0xc8 0x94 0x00 # CHECK: srlv $25, $20, $4 +0x40 0x00 0x00 0x00 # CHECK: ssnop +0x22 0xb0 0x6c 0x02 # CHECK: sub $22, $19, $12 +0x36 0x0c 0x36 0x22 # CHECK: addi $22, $17, 3126 +0x90 0xe6 0xad 0x21 # CHECK: addi $13, $13, -6512 +0x81 0x14 0x30 0x46 # CHECK: sub.d $f18, $f2, $f16 +0xc1 0xb5 0x16 0x46 # CHECK: sub.s $f23, $f22, $f22 +0x23 0xe8 0xd6 0x02 # CHECK: subu $sp, $22, $22 +0x50 0xd8 0xbf 0xaf # CHECK: sw $ra, -10160($sp) +0xef 0xde 0x06 0xe7 # CHECK: swc1 $f6, -8465($24) +0x30 0x61 0x19 0xea # CHECK: swc2 $25, 24880($16) +0x7e 0x35 0x6f 0xaa # CHECK: swl $15, 13694($19) +0x22 0x98 0xd1 0xb9 # CHECK: swr $17, -26590($14) +0x08 0x98 0x4c 0x4f # CHECK: swxc1 $f19, $12($26) +0x34 0x00 0x03 0x00 # CHECK: teq $zero, $3 +0x34 0x9b 0xa7 0x00 # CHECK: teq $5, $7, 620 +0xa0 0xbb 0xac 0x06 # CHECK: teqi $21, 48032 +0x30 0x00 0xea 0x00 # CHECK: tge $7, $10 +0x30 0x55 0xb3 0x00 # CHECK: tge $5, $19, 340 +0xa1 0x13 0x28 0x06 # CHECK: tgei $17, 5025 +0x33 0x90 0xa9 0x07 # CHECK: tgeiu $sp, 36915 +0x31 0x00 0xdc 0x02 # CHECK: tgeu $22, $gp +0xf1 0x5e 0x8e 0x02 # CHECK: tgeu $20, $14, 379 +0x08 0x00 0x00 0x42 # CHECK: tlbp +0x01 0x00 0x00 0x42 # CHECK: tlbr +0x02 0x00 0x00 0x42 # CHECK: tlbwi +0x06 0x00 0x00 0x42 # CHECK: tlbwr +0x32 0x00 0xed 0x01 # CHECK: tlt $15, $13 +0x72 0x21 0x53 0x00 # CHECK: tlt $2, $19, 133 +0xbd 0xad 0xca 0x05 # CHECK: tlti $14, 44477 +0x2c 0xec 0xeb 0x07 # CHECK: tltiu $ra, 60460 +0x33 0x00 0x70 0x01 # CHECK: tltu $11, $16 +0x33 0xfe 0x1d 0x02 # CHECK: tltu $16, $sp, 1016 +0x36 0x00 0xd1 0x00 # CHECK: tne $6, $17 +0x76 0xdd 0xe8 0x00 # CHECK: tne $7, $8, 885 +0x31 0x8c 0x8e 0x05 # CHECK: tnei $12, 35889 +0xc9 0xbd 0x20 0x46 # CHECK: trunc.l.d $f23, $f23 +0x09 0xff 0x00 0x46 # CHECK: trunc.l.s $f28, $f31 +0x8d 0x75 0x20 0x46 # CHECK: trunc.w.d $f22, $f14 +0x0d 0xf7 0x00 0x46 # CHECK: trunc.w.s $f28, $f30 +0x26 0x90 0x9e 0x00 # CHECK: xor $18, $4, $fp diff --git a/test/MC/Disassembler/Mips/mips4/valid-mips4.txt b/test/MC/Disassembler/Mips/mips4/valid-mips4.txt new file mode 100644 index 0000000..c8c35e9 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips4/valid-mips4.txt @@ -0,0 +1,229 @@ +# RUN: llvm-mc %s -triple=mips64-unknown-linux -disassemble -mcpu=mips4 | FileCheck %s +# CHECK: .text +0x46 0x20 0xc1 0x85 # CHECK: abs.d $f6, $f24 +0x46 0x00 0x82 0x45 # CHECK: abs.s $f9, $f16 +0x02 0x45 0xb8 0x20 # CHECK: add $23, $18, $5 +0x21 0xc9 0x3b 0x48 # CHECK: addi $9, $14, 15176 +0x23 0x18 0xe3 0xe7 # CHECK: addi $24, $24, -7193 +0x46 0x3c 0x30 0x00 # CHECK: add.d $f0, $f6, $f28 +0x46 0x18 0xaa 0x00 # CHECK: add.s $f8, $f21, $f24 +0x21 0x2d 0x66 0xd2 # CHECK: addi $13, $9, 26322 +0x21 0x08 0xff 0xfe # CHECK: addi $8, $8, -2 +0x00 0x86 0x48 0x21 # CHECK: addu $9, $4, $6 +0x25 0x29 0x00 0x0a # CHECK: addiu $9, $9, 10 +0x00 0x4c 0xb8 0x24 # CHECK: and $23, $2, $12 +0x30 0x42 0x00 0x04 # CHECK: andi $2, $2, 4 +0x45 0x00 0x00 0x01 # CHECK: bc1f 8 +0x45 0x04 0x00 0x00 # CHECK: bc1f $fcc1, 4 +0x45 0x1e 0x00 0x06 # CHECK: bc1fl $fcc7, 28 +0x45 0x02 0x00 0x0c # CHECK: bc1fl 52 +0x45 0x01 0x00 0x01 # CHECK: bc1t 8 +0x45 0x05 0x00 0x00 # CHECK: bc1t $fcc1, 4 +0x45 0x03 0xf7 0xf4 # CHECK: bc1tl -8236 +0x45 0x1f 0x00 0x06 # CHECK: bc1tl $fcc7, 28 +0x04 0x11 0x14 0x9b # CHECK: bal 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x04 0xd0 0x14 0x9b # CHECK: bltzal $6, 21104 +0x00 0x00 0x00 0x00 # CHECK: nop +0x51 0xd3 0x0c 0x40 # CHECK: beql $14, $19, 12548 +0x05 0x93 0x07 0x1f # CHECK: bgezall $12, 7296 +0x04 0x83 0xf9 0x4d # CHECK: bgezl $4, -6856 +0x5d 0x40 0xfc 0x59 # CHECK: bgtzl $10, -3736 +0x58 0xc0 0x02 0xe7 # CHECK: blezl $6, 2976 +0x04 0xd2 0x00 0x7a # CHECK: bltzall $6, 492 +0x06 0x22 0xf6 0x45 # CHECK: bltzl $17, -9960 +0x57 0x94 0x04 0xfc # CHECK: bnel $gp, $20, 5108 +0xbc 0xa1 0x00 0x08 # CHECK: cache 1, 8($5) +0x46 0x3c 0xe0 0x3b # CHECK: c.ngl.d $f28, $f28 +0x46 0x30 0x00 0x39 # CHECK: c.ngle.d $f0, $f16 +0x46 0x20 0xf0 0x38 # CHECK: c.sf.d $f30, $f0 +0x46 0x16 0x70 0x38 # CHECK: c.sf.s $f14, $f22 +0x46 0x20 0x18 0x4a # CHECK: ceil.l.d $f1, $f3 +0x46 0x00 0x6c 0x8a # CHECK: ceil.l.s $f18, $f13 +0x46 0x20 0xc2 0xce # CHECK: ceil.w.d $f11, $f24 +0x46 0x00 0xa1 0x8e # CHECK: ceil.w.s $f6, $f20 +0x44 0x51 0xa8 0x00 # CHECK: cfc1 $17, $21 +0x44 0xc6 0xd0 0x00 # CHECK: ctc1 $6, $26 +0x46 0x00 0xe5 0xa1 # CHECK: cvt.d.s $f22, $f28 +0x46 0x80 0x5e 0xa1 # CHECK: cvt.d.w $f26, $f11 +0x46 0xa0 0x81 0x21 # CHECK: cvt.d.l $f4, $f16 +0x46 0x20 0x7e 0x25 # CHECK: cvt.l.d $f24, $f15 +0x46 0x00 0xea 0xe5 # CHECK: cvt.l.s $f11, $f29 +0x46 0xa0 0xf3 0xe0 # CHECK: cvt.s.l $f15, $f30 +0x46 0x20 0x46 0xa0 # CHECK: cvt.s.d $f26, $f8 +0x46 0x80 0x7d 0xa0 # CHECK: cvt.s.w $f22, $f15 +0x46 0x20 0x75 0x24 # CHECK: cvt.w.d $f20, $f14 +0x46 0x00 0xc5 0x24 # CHECK: cvt.w.s $f20, $f24 +0x00 0x3f 0x98 0x2c # CHECK: dadd $19, $1, $ra +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x66 0xda 0xee 0x16 # CHECK: daddiu $26, $22, -4586 +0x00 0x3f 0x98 0x2d # CHECK: daddu $19, $1, $ra +0x64 0x58 0x46 0x9f # CHECK: daddiu $24, $2, 18079 +0x66 0x73 0x69 0x3f # CHECK: daddiu $19, $19, 26943 +0x03 0x53 0x00 0x1e # CHECK: ddiv $zero, $26, $19 +0x02 0x11 0x00 0x1f # CHECK: ddivu $zero, $16, $17 +0x03 0x2b 0x00 0x1a # CHECK: div $zero, $25, $11 +0x46 0x3a 0xa7 0x03 # CHECK: div.d $f28, $f20, $f26 +0x46 0x0f 0x29 0x03 # CHECK: div.s $f4, $f5, $f15 +0x03 0x2f 0x00 0x1b # CHECK: divu $zero, $25, $15 +0x44 0x2c 0x68 0x00 # CHECK: dmfc1 $12, $f13 +0x44 0xb0 0x70 0x00 # CHECK: dmtc1 $16, $f14 +0x02 0xe9 0x00 0x1c # CHECK: dmult $23, $9 +0x00 0xa6 0x00 0x1d # CHECK: dmultu $5, $6 +0x00 0x00 0x04 0xb8 # CHECK: dsll $zero, $zero, 18 +0x00 0x14 0x04 0xb8 # CHECK: dsll $zero, $20, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x1c 0xe2 0xbb # CHECK: dsra $gp, $gp, 10 +0x00 0x12 0xe2 0xbb # CHECK: dsra $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x1c 0xe2 0xbf # CHECK: dsra32 $gp, $gp, 10 +0x00 0x12 0xe2 0xbf # CHECK: dsra32 $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x13 0x9d 0xfa # CHECK: dsrl $19, $19, 23 +0x00 0x06 0x9d 0xfa # CHECK: dsrl $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x00 0x13 0x9d 0xfe # CHECK: dsrl32 $19, $19, 23 +0x00 0x06 0x9d 0xfe # CHECK: dsrl32 $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x02 0xc8 0x38 0x2e # CHECK: dsub $7, $22, $8 +0x00 0xba 0x28 0x2f # CHECK: dsubu $5, $5, $26 +0x00 0x00 0x00 0xc0 # CHECK: ehb +0x42 0x00 0x00 0x18 # CHECK: eret +0x46 0x20 0x53 0x8f # CHECK: floor.w.d $f14, $f10 +0x46 0x00 0x4a 0x0f # CHECK: floor.w.s $f8, $f9 +0x46 0x20 0x3e 0x8b # CHECK: floor.l.d $f26, $f7 +0x46 0x00 0x2b 0x0b # CHECK: floor.l.s $f12, $f5 +0x81 0x58 0xc7 0x4d # CHECK: lb $24, -14515($10) +0x90 0x68 0x75 0xf3 # CHECK: lbu $8, 30195($3) +0xd6 0x0a 0x40 0x07 # CHECK: ldc1 $f10, 16391($16) +0xd8 0x28 0xad 0x43 # CHECK: ldc2 $8, -21181($1) +0x86 0xab 0xde 0x94 # CHECK: lh $11, -8556($21) +0x94 0x53 0xa6 0xbd # CHECK: lhu $19, -22851($2) +0x24 0x01 0x8b 0xb3 # CHECK: addiu $1, $zero, -29773 +0x24 0x00 0x8b 0x3f # CHECK: addiu $zero, $zero, -29889 +0xc2 0x42 0xe3 0x67 # CHECK: ll $2, -7321($18) +0x8c 0xa8 0x16 0x2a # CHECK: lw $8, 5674($5) +0xc7 0x50 0x27 0xf1 # CHECK: lwc1 $f16, 10225($26) +0xc8 0xd2 0xfc 0xb7 # CHECK: lwc2 $18, -841($6) +0x89 0xf4 0xef 0x79 # CHECK: lwl $20, -4231($15) +0x9b 0x80 0xb5 0x35 # CHECK: lwr $zero, -19147($gp) +0x4f 0xd1 0x03 0x00 # CHECK: lwxc1 $f12, $17($fp) +0x44 0x07 0xd8 0x00 # CHECK: mfc1 $7, $f27 +0x00 0x00 0x98 0x10 # CHECK: mfhi $19 +0x00 0x00 0xe8 0x10 # CHECK: mfhi $sp +0x00 0x00 0x88 0x12 # CHECK: mflo $17 +0x46 0x20 0x75 0x06 # CHECK: mov.d $f20, $f14 +0x46 0x00 0xd8 0x86 # CHECK: mov.s $f2, $f27 +0x01 0x1c 0xe0 0x01 # CHECK: movf $gp, $8, $fcc7 +0x46 0x34 0x59 0x91 # CHECK: movf.d $f6, $f11, $fcc5 +0x46 0x18 0x2d 0xd1 # CHECK: movf.s $f23, $f5, $fcc6 +0x00 0x80 0xf0 0x21 # CHECK: move $fp, $4 +0x00 0xc0 0xc8 0x21 # CHECK: move $25, $6 +0x02 0x30 0x18 0x0b # CHECK: movn $3, $17, $16 +0x46 0x3a 0xae 0xd3 # CHECK: movn.d $f27, $f21, $26 +0x46 0x17 0x03 0x13 # CHECK: movn.s $f12, $f0, $23 +0x02 0x95 0x00 0x01 # CHECK: movt $zero, $20, $fcc5 +0x46 0x21 0x10 0x11 # CHECK: movt.d $f0, $f2, $fcc0 +0x46 0x05 0x17 0x91 # CHECK: movt.s $f30, $f2, $fcc1 +0x02 0xc9 0x28 0x0a # CHECK: movz $5, $22, $9 +0x46 0x29 0xeb 0x12 # CHECK: movz.d $f12, $f29, $9 +0x46 0x03 0x3e 0x52 # CHECK: movz.s $f25, $f7, $3 +0x44 0x9e 0x48 0x00 # CHECK: mtc1 $fp, $f9 +0x02 0x20 0x00 0x11 # CHECK: mthi $17 +0x03 0xa0 0x00 0x13 # CHECK: mtlo $sp +0x03 0x20 0x00 0x13 # CHECK: mtlo $25 +0x46 0x30 0xa5 0x02 # CHECK: mul.d $f20, $f20, $f16 +0x46 0x02 0x57 0x82 # CHECK: mul.s $f30, $f10, $f2 +0x03 0xb4 0x00 0x18 # CHECK: mult $sp, $20 +0x03 0xa2 0x00 0x18 # CHECK: mult $sp, $2 +0x03 0x9a 0x00 0x19 # CHECK: multu $gp, $26 +0x01 0x32 0x00 0x19 # CHECK: multu $9, $18 +0x00 0x02 0x10 0x23 # CHECK: negu $2, $2 +0x00 0x03 0x10 0x23 # CHECK: negu $2, $3 +0x46 0x20 0x96 0x87 # CHECK: neg.d $f26, $f18 +0x46 0x00 0x78 0x47 # CHECK: neg.s $f1, $f15 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0x07 0x38 0x27 # CHECK: nor $7, $zero, $7 +0x02 0x1d 0x60 0x25 # CHECK: or $12, $16, $sp +0x34 0x42 0x00 0x04 # CHECK: ori $2, $2, 4 +0xcc 0xa1 0x00 0x08 # CHECK: pref 1, 8($5) +0x46 0x20 0x0b 0x08 # CHECK: round.l.d $f12, $f1 +0x46 0x00 0x2e 0x48 # CHECK: round.l.s $f25, $f5 +0x46 0x20 0x21 0x8c # CHECK: round.w.d $f6, $f4 +0x46 0x00 0xe6 0xcc # CHECK: round.w.s $f27, $f28 +0xa1 0xd6 0xb2 0x6f # CHECK: sb $22, -19857($14) +0xe2 0x6f 0x49 0xd8 # CHECK: sc $15, 18904($19) +0xf3 0xaf 0xdf 0xcd # CHECK: scd $15, -8243($sp) +0xfd 0x4c 0x16 0xcb # CHECK: sd $12, 5835($10) +0xb3 0xc7 0xae 0x1f # CHECK: sdl $7, -20961($fp) +0xb5 0x8b 0xb0 0x39 # CHECK: sdr $11, -20423($12) +0xf5 0xbe 0x77 0x6e # CHECK: sdc1 $f30, 30574($13) +0xfa 0x54 0x5a 0x75 # CHECK: sdc2 $20, 23157($18) +0x4d 0xca 0x58 0x09 # CHECK: sdxc1 $f11, $10($14) +0xa5 0xee 0xe5 0xd0 # CHECK: sh $14, -6704($15) +0x00 0x07 0x3c 0x80 # CHECK: sll $7, $7, 18 +0x00 0x00 0x3c 0x80 # CHECK: sll $7, $zero, 18 +0x01 0x20 0x38 0x04 # CHECK: sllv $7, $zero, $9 +0x01 0x20 0x38 0x04 # CHECK: sllv $7, $zero, $9 +0x01 0x7b 0xb8 0x2a # CHECK: slt $23, $11, $27 +0x29 0x51 0x25 0x11 # CHECK: slti $17, $10, 9489 +0x2f 0x39 0xc3 0x55 # CHECK: sltiu $25, $25, -15531 +0x02 0xab 0xa0 0x2b # CHECK: sltu $20, $21, $11 +0x2f 0x38 0xc3 0x55 # CHECK: sltiu $24, $25, -15531 +0x46 0x20 0xb4 0x04 # CHECK: sqrt.d $f16, $f22 +0x46 0x00 0x08 0x04 # CHECK: sqrt.s $f0, $f1 +0x00 0x11 0x8b 0xc3 # CHECK: sra $17, $17, 15 +0x00 0x17 0x8b 0xc3 # CHECK: sra $17, $23, 15 +0x03 0xb7 0x88 0x07 # CHECK: srav $17, $23, $sp +0x03 0xb7 0x88 0x07 # CHECK: srav $17, $23, $sp +0x00 0x02 0x11 0xc2 # CHECK: srl $2, $2, 7 +0x00 0x02 0x11 0xc2 # CHECK: srl $2, $2, 7 +0x00 0x94 0xc8 0x06 # CHECK: srlv $25, $20, $4 +0x00 0x94 0xc8 0x06 # CHECK: srlv $25, $20, $4 +0x00 0x00 0x00 0x40 # CHECK: ssnop +0x02 0x6c 0xb0 0x22 # CHECK: sub $22, $19, $12 +0x22 0x36 0x0c 0x36 # CHECK: addi $22, $17, 3126 +0x21 0xad 0xe6 0x90 # CHECK: addi $13, $13, -6512 +0x46 0x30 0x14 0x81 # CHECK: sub.d $f18, $f2, $f16 +0x46 0x16 0xb5 0xc1 # CHECK: sub.s $f23, $f22, $f22 +0x02 0xd6 0xe8 0x23 # CHECK: subu $sp, $22, $22 +0xaf 0xbf 0xd8 0x50 # CHECK: sw $ra, -10160($sp) +0xe7 0x06 0xde 0xef # CHECK: swc1 $f6, -8465($24) +0xea 0x19 0x61 0x30 # CHECK: swc2 $25, 24880($16) +0xaa 0x6f 0x35 0x7e # CHECK: swl $15, 13694($19) +0xb9 0xd1 0x98 0x22 # CHECK: swr $17, -26590($14) +0x4f 0x4c 0x98 0x08 # CHECK: swxc1 $f19, $12($26) +0x00 0x03 0x00 0x34 # CHECK: teq $zero, $3 +0x00 0xa7 0x9b 0x34 # CHECK: teq $5, $7, 620 +0x06 0xac 0xbb 0xa0 # CHECK: teqi $21, 48032 +0x00 0xea 0x00 0x30 # CHECK: tge $7, $10 +0x00 0xb3 0x55 0x30 # CHECK: tge $5, $19, 340 +0x06 0x28 0x13 0xa1 # CHECK: tgei $17, 5025 +0x07 0xa9 0x90 0x33 # CHECK: tgeiu $sp, 36915 +0x02 0xdc 0x00 0x31 # CHECK: tgeu $22, $gp +0x02 0x8e 0x5e 0xf1 # CHECK: tgeu $20, $14, 379 +0x42 0x00 0x00 0x08 # CHECK: tlbp +0x42 0x00 0x00 0x01 # CHECK: tlbr +0x42 0x00 0x00 0x02 # CHECK: tlbwi +0x42 0x00 0x00 0x06 # CHECK: tlbwr +0x01 0xed 0x00 0x32 # CHECK: tlt $15, $13 +0x00 0x53 0x21 0x72 # CHECK: tlt $2, $19, 133 +0x05 0xca 0xad 0xbd # CHECK: tlti $14, 44477 +0x07 0xeb 0xec 0x2c # CHECK: tltiu $ra, 60460 +0x01 0x70 0x00 0x33 # CHECK: tltu $11, $16 +0x02 0x1d 0xfe 0x33 # CHECK: tltu $16, $sp, 1016 +0x00 0xd1 0x00 0x36 # CHECK: tne $6, $17 +0x00 0xe8 0xdd 0x76 # CHECK: tne $7, $8, 885 +0x05 0x8e 0x8c 0x31 # CHECK: tnei $12, 35889 +0x46 0x20 0xbd 0xc9 # CHECK: trunc.l.d $f23, $f23 +0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31 +0x46 0x20 0x75 0x8d # CHECK: trunc.w.d $f22, $f14 +0x46 0x00 0xf7 0x0d # CHECK: trunc.w.s $f28, $f30 +0x00 0x9e 0x90 0x26 # CHECK: xor $18, $4, $fp diff --git a/test/MC/Disassembler/Mips/mips4/valid-xfail-mips4.txt b/test/MC/Disassembler/Mips/mips4/valid-xfail-mips4.txt new file mode 100644 index 0000000..910de16 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips4/valid-xfail-mips4.txt @@ -0,0 +1,42 @@ +# RUN: llvm-mc %s -triple=mips64-unknown-linux -disassemble -mcpu=mips4 | FileCheck %s
+# XFAIL: *
+0x46 0x2f 0x79 0x32 # CHECK: c.eq.d $fcc1, $f15, $f15
+0x46 0x11 0xc5 0x32 # CHECK: c.eq.s $fcc5, $f24, $f17
+0x46 0x35 0x5c 0x30 # CHECK: c.f.d $fcc4, $f11, $f21
+0x46 0x07 0xf4 0x30 # CHECK: c.f.s $fcc4, $f30, $f7
+0x46 0x21 0x94 0x3e # CHECK: c.le.d $fcc4, $f18, $f1
+0x46 0x04 0xc6 0x3e # CHECK: c.le.s $fcc6, $f24, $f4
+0x46 0x23 0x4b 0x3c # CHECK: c.lt.d $fcc3, $f9, $f3
+0x46 0x0e 0x8a 0x3c # CHECK: c.lt.s $fcc2, $f17, $f14
+0x46 0x30 0xad 0x3d # CHECK: c.nge.d $fcc5, $f21, $f16
+0x46 0x08 0x5b 0x3d # CHECK: c.nge.s $fcc3, $f11, $f8
+0x46 0x17 0xfa 0x3b # CHECK: c.ngl.s $fcc2, $f31, $f23
+0x46 0x17 0x92 0x39 # CHECK: c.ngle.s $fcc2, $f18, $f23
+0x46 0x27 0xc4 0x3f # CHECK: c.ngt.d $fcc4, $f24, $f7
+0x46 0x0d 0x45 0x3f # CHECK: c.ngt.s $fcc5, $f8, $f13
+0x46 0x3f 0x82 0x36 # CHECK: c.ole.d $fcc2, $f16, $f31
+0x46 0x14 0x3b 0x36 # CHECK: c.ole.s $fcc3, $f7, $f20
+0x46 0x3c 0x9c 0x34 # CHECK: c.olt.d $fcc4, $f19, $f28
+0x46 0x07 0xa6 0x34 # CHECK: c.olt.s $fcc6, $f20, $f7
+0x46 0x27 0xfc 0x3a # CHECK: c.seq.d $fcc4, $f31, $f7
+0x46 0x19 0x0f 0x3a # CHECK: c.seq.s $fcc7, $f1, $f25
+0x46 0x39 0x6c 0x33 # CHECK: c.ueq.d $fcc4, $f13, $f25
+0x46 0x1e 0x1e 0x33 # CHECK: c.ueq.s $fcc6, $f3, $f30
+0x46 0x32 0xcf 0x37 # CHECK: c.ule.d $fcc7, $f25, $f18
+0x46 0x1e 0xaf 0x37 # CHECK: c.ule.s $fcc7, $f21, $f30
+0x46 0x31 0x36 0x35 # CHECK: c.ult.d $fcc6, $f6, $f17
+0x46 0x0a 0xc7 0x35 # CHECK: c.ult.s $fcc7, $f24, $f10
+0x46 0x38 0xbe 0x31 # CHECK: c.un.d $fcc6, $f23, $f24
+0x46 0x04 0xf1 0x31 # CHECK: c.un.s $fcc1, $f30, $f4
+0x4e 0x74 0xd4 0xa1 # CHECK: madd.d $f18, $f19, $f26, $f20
+0x4f 0xf9 0x98 0x60 # CHECK: madd.s $f1, $f31, $f19, $f25
+0x4c 0x32 0xfa 0xa9 # CHECK: msub.d $f10, $f1, $f31, $f18
+0x4e 0x70 0x53 0x28 # CHECK: msub.s $f12, $f19, $f10, $f16
+0x4d 0x33 0x74 0xb1 # CHECK: nmadd.d $f18, $f9, $f14, $f19
+0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12
+0x4d 0x1e 0x87 0xb9 # CHECK: nmsub.d $f30, $f8, $f16, $f30
+0x4f 0x04 0x98 0x78 # CHECK: nmsub.s $f1, $f24, $f19, $f4
+0x46 0x20 0x34 0xd5 # CHECK: recip.d $f19, $f6
+0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30
+0x46 0x20 0xe0 0xd6 # CHECK: rsqrt.d $f3, $f28
+0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8
diff --git a/test/MC/Disassembler/Mips/mips64/valid-mips64-el.txt b/test/MC/Disassembler/Mips/mips64/valid-mips64-el.txt new file mode 100644 index 0000000..698ebfb --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64/valid-mips64-el.txt @@ -0,0 +1,216 @@ +# RUN: llvm-mc --disassemble %s -triple=mips64el-unknown-linux | FileCheck %s +0x05 0x73 0x20 0x46 # CHECK: abs.d $f12, $f14 +0x85 0x39 0x00 0x46 # CHECK: abs.s $f6, $f7 +0x20 0x48 0xc7 0x00 # CHECK: add $9, $6, $7 +0x00 0x62 0x2e 0x46 # CHECK: add.d $f8, $f12, $f14 +0x40 0x32 0x07 0x46 # CHECK: add.s $f9, $f6, $f7 +0x67 0x45 0xc9 0x20 # CHECK: addi $9, $6, 17767 +0x67 0xc5 0xc9 0x24 # CHECK: addiu $9, $6, -15001 +0x21 0x48 0xc7 0x00 # CHECK: addu $9, $6, $7 +0x24 0x48 0xc7 0x00 # CHECK: and $9, $6, $7 +0x67 0x45 0xc9 0x30 # CHECK: andi $9, $6, 17767 +0x4c 0x01 0x00 0x10 # CHECK: b 1332 +0x4c 0x01 0x00 0x45 # CHECK: bc1f 1332 +0x4c 0x01 0x1c 0x45 # CHECK: bc1f $fcc7, 1332 +0x4c 0x01 0x01 0x45 # CHECK: bc1t 1332 +0x4c 0x01 0x1d 0x45 # CHECK: bc1t $fcc7, 1332 +0x4c 0x01 0x26 0x11 # CHECK: beq $9, $6, 1332 +0x4c 0x01 0xc1 0x04 # CHECK: bgez $6, 1332 +0x4c 0x01 0xd1 0x04 # CHECK: bgezal $6, 1332 +0x4c 0x01 0xc0 0x1c # CHECK: bgtz $6, 1332 +0x4c 0x01 0xc0 0x18 # CHECK: blez $6, 1332 +0x4c 0x01 0x26 0x15 # CHECK: bne $9, $6, 1332 +0x32 0x60 0x2e 0x46 # CHECK: c.eq.d $f12, $f14 +0x32 0x30 0x07 0x46 # CHECK: c.eq.s $f6, $f7 +0x30 0x60 0x2e 0x46 # CHECK: c.f.d $f12, $f14 +0x30 0x30 0x07 0x46 # CHECK: c.f.s $f6, $f7 +0x3e 0x60 0x2e 0x46 # CHECK: c.le.d $f12, $f14 +0x3e 0x30 0x07 0x46 # CHECK: c.le.s $f6, $f7 +0x3c 0x60 0x2e 0x46 # CHECK: c.lt.d $f12, $f14 +0x3c 0x30 0x07 0x46 # CHECK: c.lt.s $f6, $f7 +0x3d 0x60 0x2e 0x46 # CHECK: c.nge.d $f12, $f14 +0x3d 0x30 0x07 0x46 # CHECK: c.nge.s $f6, $f7 +0x3b 0x60 0x2e 0x46 # CHECK: c.ngl.d $f12, $f14 +0x3b 0x30 0x07 0x46 # CHECK: c.ngl.s $f6, $f7 +0x39 0x60 0x2e 0x46 # CHECK: c.ngle.d $f12, $f14 +0x39 0x30 0x07 0x46 # CHECK: c.ngle.s $f6, $f7 +0x3f 0x60 0x2e 0x46 # CHECK: c.ngt.d $f12, $f14 +0x3f 0x30 0x07 0x46 # CHECK: c.ngt.s $f6, $f7 +0x36 0x60 0x2e 0x46 # CHECK: c.ole.d $f12, $f14 +0x36 0x30 0x07 0x46 # CHECK: c.ole.s $f6, $f7 +0x34 0x60 0x2e 0x46 # CHECK: c.olt.d $f12, $f14 +0x34 0x30 0x07 0x46 # CHECK: c.olt.s $f6, $f7 +0x3a 0x60 0x2e 0x46 # CHECK: c.seq.d $f12, $f14 +0x3a 0x30 0x07 0x46 # CHECK: c.seq.s $f6, $f7 +0x38 0x60 0x2e 0x46 # CHECK: c.sf.d $f12, $f14 +0x38 0x30 0x07 0x46 # CHECK: c.sf.s $f6, $f7 +0x33 0x60 0x2e 0x46 # CHECK: c.ueq.d $f12, $f14 +0x33 0xe0 0x12 0x46 # CHECK: c.ueq.s $f28, $f18 +0x37 0x60 0x2e 0x46 # CHECK: c.ule.d $f12, $f14 +0x37 0x30 0x07 0x46 # CHECK: c.ule.s $f6, $f7 +0x35 0x60 0x2e 0x46 # CHECK: c.ult.d $f12, $f14 +0x35 0x30 0x07 0x46 # CHECK: c.ult.s $f6, $f7 +0x31 0x60 0x2e 0x46 # CHECK: c.un.d $f12, $f14 +0x31 0x30 0x07 0x46 # CHECK: c.un.s $f6, $f7 +0x0e 0x73 0x20 0x46 # CHECK: ceil.w.d $f12, $f14 +0x8e 0x39 0x00 0x46 # CHECK: ceil.w.s $f6, $f7 +0x4a 0x18 0x20 0x46 # CHECK: ceil.l.d $f1, $f3 +0x8a 0x6c 0x00 0x46 # CHECK: ceil.l.s $f18, $f13 +0x00 0x38 0x46 0x44 # CHECK: cfc1 $6, $7 +0x21 0x30 0xe6 0x70 # CHECK: clo $6, $7 +0x20 0x30 0xe6 0x70 # CHECK: clz $6, $7 +0x00 0x38 0xc6 0x44 # CHECK: ctc1 $6, $7 +0xa1 0x39 0x00 0x46 # CHECK: cvt.d.s $f6, $f7 +0x21 0x81 0xa0 0x46 # CHECK: cvt.d.l $f4, $f16 +0x21 0x73 0x80 0x46 # CHECK: cvt.d.w $f12, $f14 +0x20 0x73 0x20 0x46 # CHECK: cvt.s.d $f12, $f14 +0xe0 0xf3 0xa0 0x46 # CHECK: cvt.s.l $f15, $f30 +0xa0 0x39 0x80 0x46 # CHECK: cvt.s.w $f6, $f7 +0x24 0x73 0x20 0x46 # CHECK: cvt.w.d $f12, $f14 +0xa4 0x39 0x00 0x46 # CHECK: cvt.w.s $f6, $f7 +0x2c 0x98 0x3f 0x00 # CHECK: dadd $19, $1, $ra +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0x16 0xee 0xda 0x66 # CHECK: daddiu $26, $22, -4586 +0x2d 0x98 0x3f 0x00 # CHECK: daddu $19, $1, $ra +0x9f 0x46 0x58 0x64 # CHECK: daddiu $24, $2, 18079 +0x3f 0x69 0x73 0x66 # CHECK: daddiu $19, $19, 26943 +0x25 0x90 0xd2 0x70 # CHECK: dclo $18, $6 +0x24 0x80 0x30 0x73 # CHECK: dclz $16, $25 +0x1e 0x00 0x53 0x03 # CHECK: ddiv $zero, $26, $19 +0x1f 0x00 0x11 0x02 # CHECK: ddivu $zero, $16, $17 +0x00 0x68 0x2c 0x44 # CHECK: dmfc1 $12, $f13 +0x00 0x70 0xb0 0x44 # CHECK: dmtc1 $16, $f14 +0x1c 0x00 0xe9 0x02 # CHECK: dmult $23, $9 +0x1d 0x00 0xa6 0x00 # CHECK: dmultu $5, $6 +0xb8 0x04 0x00 0x00 # CHECK: dsll $zero, $zero, 18 +0xb8 0x04 0x14 0x00 # CHECK: dsll $zero, $20, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbb 0xe2 0x1c 0x00 # CHECK: dsra $gp, $gp, 10 +0xbb 0xe2 0x12 0x00 # CHECK: dsra $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xbf 0xe2 0x1c 0x00 # CHECK: dsra32 $gp, $gp, 10 +0xbf 0xe2 0x12 0x00 # CHECK: dsra32 $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xfa 0x9d 0x13 0x00 # CHECK: dsrl $19, $19, 23 +0xfa 0x9d 0x06 0x00 # CHECK: dsrl $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0xfe 0x9d 0x13 0x00 # CHECK: dsrl32 $19, $19, 23 +0xfe 0x9d 0x06 0x00 # CHECK: dsrl32 $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0x2e 0x38 0xc8 0x02 # CHECK: dsub $7, $22, $8 +0x39 0x6c 0x9d 0x62 # CHECK: daddi $sp, $20, 27705 +0x39 0x6c 0xbd 0x63 # CHECK: daddi $sp, $sp, 27705 +0x2f 0x28 0xba 0x00 # CHECK: dsubu $5, $5, $26 +0x5f 0xec 0x6f 0x65 # CHECK: daddiu $15, $11, -5025 +0xea 0x11 0xce 0x65 # CHECK: daddiu $14, $14, 4586 +0x8b 0x3e 0x20 0x46 # CHECK: floor.l.d $f26, $f7 +0x0b 0x2b 0x00 0x46 # CHECK: floor.l.s $f12, $f5 +0x0f 0x73 0x20 0x46 # CHECK: floor.w.d $f12, $f14 +0x8f 0x39 0x00 0x46 # CHECK: floor.w.s $f6, $f7 +0x4c 0x01 0x00 0x08 # CHECK: j 1328 +0x4c 0x01 0x00 0x0c # CHECK: jal 1328 +0x4c 0x01 0x00 0x74 # CHECK: jalx 1328 +0x09 0xf8 0xe0 0x00 # CHECK: jalr $7 +0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 +0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0x08 0x00 0xe0 0x00 # CHECK: jr $7 +0xc6 0x23 0xa4 0x80 # CHECK: lb $4, 9158($5) +0x06 0x00 0xa4 0x90 # CHECK: lbu $4, 6($5) +0xc6 0x23 0xe9 0xd4 # CHECK: ldc1 $f9, 9158($7) +0x1b 0x90 0x3d 0xde # CHECK: ld $sp, -28645($17) +0xb9 0xef 0x18 0x6b # CHECK: ldl $24, -4167($24) +0x6a 0x89 0x8e 0x6e # CHECK: ldr $14, -30358($20) +0x01 0x02 0xf7 0x4d # CHECK: ldxc1 $f8, $23($15) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0xc6 0x23 0xe9 0xc0 # CHECK: ll $9, 9158($7) +0x70 0xc6 0xe0 0xd3 # CHECK: lld $zero, -14736($ra) +0x67 0x45 0x06 0x3c # CHECK: lui $6, 17767 +0xc5 0x04 0xb6 0x4e # CHECK: luxc1 $f19, $22($21) +0xea 0xa1 0x73 0x9c # CHECK: lwu $19, -24086($3) +0x00 0x03 0xd1 0x4f # CHECK: lwxc1 $f12, $17($fp) +0x18 0x00 0xa4 0x8c # CHECK: lw $4, 24($5) +0xc6 0x23 0xe9 0xc4 # CHECK: lwc1 $f9, 9158($7) +0x03 0x00 0x82 0x88 # CHECK: lwl $2, 3($4) +0x10 0x00 0xa3 0x98 # CHECK: lwr $3, 16($5) +0x00 0x00 0xc7 0x70 # CHECK: madd $6, $7 +0x01 0x00 0xc7 0x70 # CHECK: maddu $6, $7 +0x00 0x38 0x06 0x44 # CHECK: mfc1 $6, $f7 +0x10 0x28 0x00 0x00 # CHECK: mfhi $5 +0x12 0x28 0x00 0x00 # CHECK: mflo $5 +0x86 0x41 0x20 0x46 # CHECK: mov.d $f6, $f8 +0x86 0x39 0x00 0x46 # CHECK: mov.s $f6, $f7 +0x04 0x00 0xc7 0x70 # CHECK: msub $6, $7 +0x05 0x00 0xc7 0x70 # CHECK: msubu $6, $7 +0x00 0x38 0x86 0x44 # CHECK: mtc1 $6, $f7 +0x11 0x00 0xe0 0x00 # CHECK: mthi $7 +0x13 0x00 0xe0 0x00 # CHECK: mtlo $7 +0x02 0x62 0x2e 0x46 # CHECK: mul.d $f8, $f12, $f14 +0x42 0x32 0x07 0x46 # CHECK: mul.s $f9, $f6, $f7 +0x02 0x48 0xc7 0x70 # CHECK: mul $9, $6, $7 +0x18 0x00 0x65 0x00 # CHECK: mult $3, $5 +0x19 0x00 0x65 0x00 # CHECK: multu $3, $5 +0x07 0x73 0x20 0x46 # CHECK: neg.d $f12, $f14 +0x87 0x39 0x00 0x46 # CHECK: neg.s $f6, $f7 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x48 0xc7 0x00 # CHECK: nor $9, $6, $7 +0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5 +0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767 +0x08 0x0b 0x20 0x46 # CHECK: round.l.d $f12, $f1 +0x48 0x2e 0x00 0x46 # CHECK: round.l.s $f25, $f5 +0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14 +0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7 +0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5) +0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5) +0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7) +0xcd 0xdf 0xaf 0xf3 # CHECK: scd $15, -8243($sp) +0xcb 0x16 0x4c 0xfd # CHECK: sd $12, 5835($10) +0xc6 0x23 0xe9 0xf4 # CHECK: sdc1 $f9, 9158($7) +0x1f 0xae 0xc7 0xb3 # CHECK: sdl $7, -20961($fp) +0x39 0xb0 0x8b 0xb5 # CHECK: sdr $11, -20423($12) +0x09 0x58 0xca 0x4d # CHECK: sdxc1 $f11, $10($14) +0xc6 0x23 0xa4 0xa4 # CHECK: sh $4, 9158($5) +0xc0 0x21 0x03 0x00 # CHECK: sll $4, $3, 7 +0x04 0x10 0xa3 0x00 # CHECK: sllv $2, $3, $5 +0x2a 0x18 0x65 0x00 # CHECK: slt $3, $3, $5 +0x67 0x00 0x63 0x28 # CHECK: slti $3, $3, 103 +0x67 0x00 0x63 0x2c # CHECK: sltiu $3, $3, 103 +0x2b 0x18 0x65 0x00 # CHECK: sltu $3, $3, $5 +0x04 0x73 0x20 0x46 # CHECK: sqrt.d $f12, $f14 +0x84 0x39 0x00 0x46 # CHECK: sqrt.s $f6, $f7 +0xc3 0x21 0x03 0x00 # CHECK: sra $4, $3, 7 +0x07 0x10 0xa3 0x00 # CHECK: srav $2, $3, $5 +0xc2 0x21 0x03 0x00 # CHECK: srl $4, $3, 7 +0x06 0x10 0xa3 0x00 # CHECK: srlv $2, $3, $5 +0x01 0x62 0x2e 0x46 # CHECK: sub.d $f8, $f12, $f14 +0x41 0x32 0x07 0x46 # CHECK: sub.s $f9, $f6, $f7 +0x22 0x48 0xc7 0x00 # CHECK: sub $9, $6, $7 +0x23 0x20 0x65 0x00 # CHECK: subu $4, $3, $5 +0x18 0x00 0xa4 0xac # CHECK: sw $4, 24($5) +0xc6 0x23 0xe9 0xe4 # CHECK: swc1 $f9, 9158($7) +0x0d 0x60 0xbb 0x4d # CHECK: suxc1 $f12, $27($13) +0x08 0x98 0x4c 0x4f # CHECK: swxc1 $f19, $12($26) +0x10 0x00 0xa4 0xa8 # CHECK: swl $4, 16($5) +0x10 0x00 0xe6 0xb8 # CHECK: swr $6, 16($7) +0xcf 0x01 0x00 0x00 # CHECK: sync 7 +0xc9 0xbd 0x20 0x46 # CHECK: trunc.l.d $f23, $f23 +0x09 0xff 0x00 0x46 # CHECK: trunc.l.s $f28, $f31 +0x0d 0x73 0x20 0x46 # CHECK: trunc.w.d $f12, $f14 +0x8d 0x39 0x00 0x46 # CHECK: trunc.w.s $f6, $f7 +0x26 0x18 0x65 0x00 # CHECK: xor $3, $3, $5 +0x67 0x45 0xc9 0x38 # CHECK: xori $9, $6, 17767 +0x3b 0xe8 0x05 0x7c # CHECK: .set push + # CHECK: .set mips32r2 + # CHECK: rdhwr $5, $29 + # CHECK: .set pop +0x02 0x00 0x61 0xbc # CHECK: cache 1, 2($3) +0x04 0x00 0x43 0xcc # CHECK: pref 3, 4($2) +0xc6 0x23 0xe9 0xe8 # CHECK: swc2 $9, 9158($7) +0xca 0x23 0xc8 0xc8 # CHECK: lwc2 $8, 9162($6) diff --git a/test/MC/Disassembler/Mips/mips64/valid-mips64-xfail.txt b/test/MC/Disassembler/Mips/mips64/valid-mips64-xfail.txt new file mode 100644 index 0000000..dd97bcd --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64/valid-mips64-xfail.txt @@ -0,0 +1,80 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble | FileCheck %s +# XFAIL: * +0x46 0x2f 0x79 0x32 # CHECK: c.eq.d $fcc1, $f15, $f15 +0x46 0x11 0xc5 0x32 # CHECK: c.eq.s $fcc5, $f24, $f17 +0x46 0x35 0x5c 0x30 # CHECK: c.f.d $fcc4, $f11, $f21 +0x46 0x07 0xf4 0x30 # CHECK: c.f.s $fcc4, $f30, $f7 +0x46 0x21 0x94 0x3e # CHECK: c.le.d $fcc4, $f18, $f1 +0x46 0x04 0xc6 0x3e # CHECK: c.le.s $fcc6, $f24, $f4 +0x46 0x23 0x4b 0x3c # CHECK: c.lt.d $fcc3, $f9, $f3 +0x46 0x0e 0x8a 0x3c # CHECK: c.lt.s $fcc2, $f17, $f14 +0x46 0x30 0xad 0x3d # CHECK: c.nge.d $fcc5, $f21, $f16 +0x46 0x08 0x5b 0x3d # CHECK: c.nge.s $fcc3, $f11, $f8 +0x46 0x17 0xfa 0x3b # CHECK: c.ngl.s $fcc2, $f31, $f23 +0x46 0x17 0x92 0x39 # CHECK: c.ngle.s $fcc2, $f18, $f23 +0x46 0x27 0xc4 0x3f # CHECK: c.ngt.d $fcc4, $f24, $f7 +0x46 0x0d 0x45 0x3f # CHECK: c.ngt.s $fcc5, $f8, $f13 +0x46 0x3f 0x82 0x36 # CHECK: c.ole.d $fcc2, $f16, $f31 +0x46 0x14 0x3b 0x36 # CHECK: c.ole.s $fcc3, $f7, $f20 +0x46 0x3c 0x9c 0x34 # CHECK: c.olt.d $fcc4, $f19, $f28 +0x46 0x07 0xa6 0x34 # CHECK: c.olt.s $fcc6, $f20, $f7 +0x46 0x27 0xfc 0x3a # CHECK: c.seq.d $fcc4, $f31, $f7 +0x46 0x19 0x0f 0x3a # CHECK: c.seq.s $fcc7, $f1, $f25 +0x46 0x39 0x6c 0x33 # CHECK: c.ueq.d $fcc4, $f13, $f25 +0x46 0x1e 0x1e 0x33 # CHECK: c.ueq.s $fcc6, $f3, $f30 +0x46 0x32 0xcf 0x37 # CHECK: c.ule.d $fcc7, $f25, $f18 +0x46 0x1e 0xaf 0x37 # CHECK: c.ule.s $fcc7, $f21, $f30 +0x46 0x31 0x36 0x35 # CHECK: c.ult.d $fcc6, $f6, $f17 +0x46 0x0a 0xc7 0x35 # CHECK: c.ult.s $fcc7, $f24, $f10 +0x46 0x38 0xbe 0x31 # CHECK: c.un.d $fcc6, $f23, $f24 +0x46 0x04 0xf1 0x31 # CHECK: c.un.s $fcc1, $f30, $f4 +0x46 0xc0 0x45 0x85 # CHECK: abs.ps $f22, $f8 +0x46 0xcd 0xde 0x40 # CHECK: add.ps $f25, $f27, $f13 +0x4d 0x9e 0x93 0x1e # CHECK: alnv.ps $f12, $f18, $f30, $8 +0x46 0xc9 0x05 0x32 # CHECK: c.eq.ps $fcc5, $f0, $f9 +0x46 0xcb 0x5e 0x30 # CHECK: c.f.ps $fcc6, $f11, $f11 +0x46 0xd4 0x39 0x3e # CHECK: c.le.ps $fcc1, $f7, $f20 +0x46 0xc5 0x98 0x3c # CHECK: c.lt.ps $f19, $f5 +0x46 0xda 0x08 0x3d # CHECK: c.nge.ps $f1, $f26 +0x46 0xde 0xa8 0x3b # CHECK: c.ngl.ps $f21, $f30 +0x46 0xd4 0x67 0x39 # CHECK: c.ngle.ps $fcc7, $f12, $f20 +0x46 0xc6 0xf5 0x3f # CHECK: c.ngt.ps $fcc5, $f30, $f6 +0x46 0xc8 0xaf 0x36 # CHECK: c.ole.ps $fcc7, $f21, $f8 +0x46 0xd0 0x3b 0x34 # CHECK: c.olt.ps $fcc3, $f7, $f16 +0x46 0xce 0xfe 0x3a # CHECK: c.seq.ps $fcc6, $f31, $f14 +0x46 0xc6 0x26 0x38 # CHECK: c.sf.ps $fcc6, $f4, $f6 +0x46 0xdd 0x29 0x33 # CHECK: c.ueq.ps $fcc1, $f5, $f29 +0x46 0xc3 0x8e 0x37 # CHECK: c.ule.ps $fcc6, $f17, $f3 +0x46 0xc0 0x77 0x35 # CHECK: c.ult.ps $fcc7, $f14, $f0 +0x46 0xda 0x14 0x31 # CHECK: c.un.ps $fcc4, $f2, $f26 +0x46 0x13 0x90 0xe6 # CHECK: cvt.ps.s $f3, $f18, $f19 +0x46 0xc0 0x0f 0xa8 # CHECK: cvt.s.pl $f30, $f1 +0x46 0xc0 0xcb 0xa0 # CHECK: cvt.s.pu $f14, $f25 +0x4e 0x74 0xd4 0xa1 # CHECK: madd.d $f18, $f19, $f26, $f20 +0x4c 0x63 0x75 0xa6 # CHECK: madd.ps $f22, $f3, $f14, $f3 +0x4f 0xf9 0x98 0x60 # CHECK: madd.s $f1, $f31, $f19, $f25 +0x46 0xc0 0x8d 0x86 # CHECK: mov.ps $f22, $f17 +0x46 0xd8 0xe2 0x91 # CHECK: movf.ps $f10, $f28, $fcc6 +0x46 0xd3 0xff 0xd3 # CHECK: movn.ps $f31, $f31, $19 +0x46 0xc9 0xcd 0x11 # CHECK: movt.ps $f20, $f25, $fcc2 +0x46 0xdf 0x8c 0x92 # CHECK: movz.ps $f18, $f17, ra +0x4c 0x32 0xfa 0xa9 # CHECK: msub.d $f10, $f1, $f31, $f18 +0x4d 0xd1 0xeb 0x2e # CHECK: msub.ps $f12, $f14, $f29, $f17 +0x4e 0x70 0x53 0x28 # CHECK: msub.s $f12, $f19, $f10, $f16 +0x46 0xd0 0x03 0x82 # CHECK: mul.ps $f14, $f0, $f16 +0x46 0xc0 0x6c 0xc7 # CHECK: neg.ps $f19, $f13 +0x4d 0x33 0x74 0xb1 # CHECK: nmadd.d $f18, $f9, $f14, $f19 +0x4c 0x99 0x4e 0xf6 # CHECK: nmadd.ps $f27, $f4, $f9, $f25 +0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x4d 0x1e 0x87 0xb9 # CHECK: nmsub.d $f30, $f8, $f16, $f30 +0x4d 0x91 0x71 0xbe # CHECK: nmsub.ps $f6, $f12, $f14, $f17 +0x4f 0x04 0x98 0x78 # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x46 0xde 0x4e 0x6c # CHECK: pll.ps $f25, $f9, $f30 +0x46 0xdd 0xd0 0x6d # CHECK: plu.ps $f1, $f26, $f29 +0x46 0xda 0xf2 0x6e # CHECK: pul.ps $f9, $f30, $f26 +0x46 0xc2 0x4e 0x2f # CHECK: puu.ps $f24, $f9, $f2 +0x46 0x20 0x34 0xd5 # CHECK: recip.d $f19, $f6 +0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30 +0x46 0x20 0xe0 0xd6 # CHECK: rsqrt.d $f3, $f28 +0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8 +0x46 0xda 0x71 0x41 # CHECK: sub.ps $f5, $f14, $f26 diff --git a/test/MC/Disassembler/Mips/mips64/valid-mips64.txt b/test/MC/Disassembler/Mips/mips64/valid-mips64.txt new file mode 100644 index 0000000..b0809d8 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64/valid-mips64.txt @@ -0,0 +1,216 @@ +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux | FileCheck %s +0x46 0x20 0x73 0x05 # CHECK: abs.d $f12, $f14 +0x46 0x00 0x39 0x85 # CHECK: abs.s $f6, $f7 +0x00 0xc7 0x48 0x20 # CHECK: add $9, $6, $7 +0x46 0x2e 0x62 0x00 # CHECK: add.d $f8, $f12, $f14 +0x46 0x07 0x32 0x40 # CHECK: add.s $f9, $f6, $f7 +0x20 0xc9 0x45 0x67 # CHECK: addi $9, $6, 17767 +0x24 0xc9 0xc5 0x67 # CHECK: addiu $9, $6, -15001 +0x00 0xc7 0x48 0x21 # CHECK: addu $9, $6, $7 +0x00 0xc7 0x48 0x24 # CHECK: and $9, $6, $7 +0x30 0xc9 0x45 0x67 # CHECK: andi $9, $6, 17767 +0x10 0x00 0x01 0x4c # CHECK: b 1332 +0x45 0x00 0x01 0x4c # CHECK: bc1f 1332 +0x45 0x1c 0x01 0x4c # CHECK: bc1f $fcc7, 1332 +0x45 0x01 0x01 0x4c # CHECK: bc1t 1332 +0x45 0x1d 0x01 0x4c # CHECK: bc1t $fcc7, 1332 +0x11 0x26 0x01 0x4c # CHECK: beq $9, $6, 1332 +0x04 0xc1 0x01 0x4c # CHECK: bgez $6, 1332 +0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 +0x1c 0xc0 0x01 0x4c # CHECK: bgtz $6, 1332 +0x18 0xc0 0x01 0x4c # CHECK: blez $6, 1332 +0x15 0x26 0x01 0x4c # CHECK: bne $9, $6, 1332 +0x46 0x2e 0x60 0x32 # CHECK: c.eq.d $f12, $f14 +0x46 0x07 0x30 0x32 # CHECK: c.eq.s $f6, $f7 +0x46 0x2e 0x60 0x30 # CHECK: c.f.d $f12, $f14 +0x46 0x07 0x30 0x30 # CHECK: c.f.s $f6, $f7 +0x46 0x2e 0x60 0x3e # CHECK: c.le.d $f12, $f14 +0x46 0x07 0x30 0x3e # CHECK: c.le.s $f6, $f7 +0x46 0x2e 0x60 0x3c # CHECK: c.lt.d $f12, $f14 +0x46 0x07 0x30 0x3c # CHECK: c.lt.s $f6, $f7 +0x46 0x2e 0x60 0x3d # CHECK: c.nge.d $f12, $f14 +0x46 0x07 0x30 0x3d # CHECK: c.nge.s $f6, $f7 +0x46 0x2e 0x60 0x3b # CHECK: c.ngl.d $f12, $f14 +0x46 0x07 0x30 0x3b # CHECK: c.ngl.s $f6, $f7 +0x46 0x2e 0x60 0x39 # CHECK: c.ngle.d $f12, $f14 +0x46 0x07 0x30 0x39 # CHECK: c.ngle.s $f6, $f7 +0x46 0x2e 0x60 0x3f # CHECK: c.ngt.d $f12, $f14 +0x46 0x07 0x30 0x3f # CHECK: c.ngt.s $f6, $f7 +0x46 0x2e 0x60 0x36 # CHECK: c.ole.d $f12, $f14 +0x46 0x07 0x30 0x36 # CHECK: c.ole.s $f6, $f7 +0x46 0x2e 0x60 0x34 # CHECK: c.olt.d $f12, $f14 +0x46 0x07 0x30 0x34 # CHECK: c.olt.s $f6, $f7 +0x46 0x2e 0x60 0x3a # CHECK: c.seq.d $f12, $f14 +0x46 0x07 0x30 0x3a # CHECK: c.seq.s $f6, $f7 +0x46 0x2e 0x60 0x38 # CHECK: c.sf.d $f12, $f14 +0x46 0x07 0x30 0x38 # CHECK: c.sf.s $f6, $f7 +0x46 0x2e 0x60 0x33 # CHECK: c.ueq.d $f12, $f14 +0x46 0x12 0xe0 0x33 # CHECK: c.ueq.s $f28, $f18 +0x46 0x2e 0x60 0x37 # CHECK: c.ule.d $f12, $f14 +0x46 0x07 0x30 0x37 # CHECK: c.ule.s $f6, $f7 +0x46 0x2e 0x60 0x35 # CHECK: c.ult.d $f12, $f14 +0x46 0x07 0x30 0x35 # CHECK: c.ult.s $f6, $f7 +0x46 0x2e 0x60 0x31 # CHECK: c.un.d $f12, $f14 +0x46 0x07 0x30 0x31 # CHECK: c.un.s $f6, $f7 +0x46 0x20 0x73 0x0e # CHECK: ceil.w.d $f12, $f14 +0x46 0x00 0x39 0x8e # CHECK: ceil.w.s $f6, $f7 +0x46 0x20 0x18 0x4a # CHECK: ceil.l.d $f1, $f3 +0x46 0x00 0x6c 0x8a # CHECK: ceil.l.s $f18, $f13 +0x44 0x46 0x38 0x00 # CHECK: cfc1 $6, $7 +0x70 0xe6 0x30 0x21 # CHECK: clo $6, $7 +0x70 0xe6 0x30 0x20 # CHECK: clz $6, $7 +0x44 0xc6 0x38 0x00 # CHECK: ctc1 $6, $7 +0x46 0x00 0x39 0xa1 # CHECK: cvt.d.s $f6, $f7 +0x46 0xa0 0x81 0x21 # CHECK: cvt.d.l $f4, $f16 +0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14 +0x46 0x20 0x73 0x20 # CHECK: cvt.s.d $f12, $f14 +0x46 0xa0 0xf3 0xe0 # CHECK: cvt.s.l $f15, $f30 +0x46 0x80 0x39 0xa0 # CHECK: cvt.s.w $f6, $f7 +0x46 0x20 0x73 0x24 # CHECK: cvt.w.d $f12, $f14 +0x46 0x00 0x39 0xa4 # CHECK: cvt.w.s $f6, $f7 +0x00 0x3f 0x98 0x2c # CHECK: dadd $19, $1, $ra +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x66 0xda 0xee 0x16 # CHECK: daddiu $26, $22, -4586 +0x00 0x3f 0x98 0x2d # CHECK: daddu $19, $1, $ra +0x64 0x58 0x46 0x9f # CHECK: daddiu $24, $2, 18079 +0x66 0x73 0x69 0x3f # CHECK: daddiu $19, $19, 26943 +0x70 0xd2 0x90 0x25 # CHECK: dclo $18, $6 +0x73 0x30 0x80 0x24 # CHECK: dclz $16, $25 +0x03 0x53 0x00 0x1e # CHECK: ddiv $zero, $26, $19 +0x02 0x11 0x00 0x1f # CHECK: ddivu $zero, $16, $17 +0x44 0x2c 0x68 0x00 # CHECK: dmfc1 $12, $f13 +0x44 0xb0 0x70 0x00 # CHECK: dmtc1 $16, $f14 +0x02 0xe9 0x00 0x1c # CHECK: dmult $23, $9 +0x00 0xa6 0x00 0x1d # CHECK: dmultu $5, $6 +0x00 0x00 0x04 0xb8 # CHECK: dsll $zero, $zero, 18 +0x00 0x14 0x04 0xb8 # CHECK: dsll $zero, $20, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x1c 0xe2 0xbb # CHECK: dsra $gp, $gp, 10 +0x00 0x12 0xe2 0xbb # CHECK: dsra $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x1c 0xe2 0xbf # CHECK: dsra32 $gp, $gp, 10 +0x00 0x12 0xe2 0xbf # CHECK: dsra32 $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x13 0x9d 0xfa # CHECK: dsrl $19, $19, 23 +0x00 0x06 0x9d 0xfa # CHECK: dsrl $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x00 0x13 0x9d 0xfe # CHECK: dsrl32 $19, $19, 23 +0x00 0x06 0x9d 0xfe # CHECK: dsrl32 $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x02 0xc8 0x38 0x2e # CHECK: dsub $7, $22, $8 +0x62 0x9d 0x6c 0x39 # CHECK: daddi $sp, $20, 27705 +0x63 0xbd 0x6c 0x39 # CHECK: daddi $sp, $sp, 27705 +0x00 0xba 0x28 0x2f # CHECK: dsubu $5, $5, $26 +0x65 0x6f 0xec 0x5f # CHECK: daddiu $15, $11, -5025 +0x65 0xce 0x11 0xea # CHECK: daddiu $14, $14, 4586 +0x46 0x20 0x3e 0x8b # CHECK: floor.l.d $f26, $f7 +0x46 0x00 0x2b 0x0b # CHECK: floor.l.s $f12, $f5 +0x46 0x20 0x73 0x0f # CHECK: floor.w.d $f12, $f14 +0x46 0x00 0x39 0x8f # CHECK: floor.w.s $f6, $f7 +0x08 0x00 0x01 0x4c # CHECK: j 1328 +0x0c 0x00 0x01 0x4c # CHECK: jal 1328 +0x74 0x00 0x01 0x4c # CHECK: jalx 1328 +0x00 0xe0 0xf8 0x09 # CHECK: jalr $7 +0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 +0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0x00 0xe0 0x00 0x08 # CHECK: jr $7 +0x80 0xa4 0x23 0xc6 # CHECK: lb $4, 9158($5) +0x90 0xa4 0x00 0x06 # CHECK: lbu $4, 6($5) +0xd4 0xe9 0x23 0xc6 # CHECK: ldc1 $f9, 9158($7) +0xde 0x3d 0x90 0x1b # CHECK: ld $sp, -28645($17) +0x6b 0x18 0xef 0xb9 # CHECK: ldl $24, -4167($24) +0x6e 0x8e 0x89 0x6a # CHECK: ldr $14, -30358($20) +0x4d 0xf7 0x02 0x01 # CHECK: ldxc1 $f8, $23($15) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0xc0 0xe9 0x23 0xc6 # CHECK: ll $9, 9158($7) +0xd3 0xe0 0xc6 0x70 # CHECK: lld $zero, -14736($ra) +0x3c 0x06 0x45 0x67 # CHECK: lui $6, 17767 +0x4e 0xb6 0x04 0xc5 # CHECK: luxc1 $f19, $22($21) +0x9c 0x73 0xa1 0xea # CHECK: lwu $19, -24086($3) +0x4f 0xd1 0x03 0x00 # CHECK: lwxc1 $f12, $17($fp) +0x8c 0xa4 0x00 0x18 # CHECK: lw $4, 24($5) +0xc4 0xe9 0x23 0xc6 # CHECK: lwc1 $f9, 9158($7) +0x88 0x82 0x00 0x03 # CHECK: lwl $2, 3($4) +0x98 0xa3 0x00 0x10 # CHECK: lwr $3, 16($5) +0x70 0xc7 0x00 0x00 # CHECK: madd $6, $7 +0x70 0xc7 0x00 0x01 # CHECK: maddu $6, $7 +0x44 0x06 0x38 0x00 # CHECK: mfc1 $6, $f7 +0x00 0x00 0x28 0x10 # CHECK: mfhi $5 +0x00 0x00 0x28 0x12 # CHECK: mflo $5 +0x46 0x20 0x41 0x86 # CHECK: mov.d $f6, $f8 +0x46 0x00 0x39 0x86 # CHECK: mov.s $f6, $f7 +0x70 0xc7 0x00 0x04 # CHECK: msub $6, $7 +0x70 0xc7 0x00 0x05 # CHECK: msubu $6, $7 +0x44 0x86 0x38 0x00 # CHECK: mtc1 $6, $f7 +0x00 0xe0 0x00 0x11 # CHECK: mthi $7 +0x00 0xe0 0x00 0x13 # CHECK: mtlo $7 +0x46 0x2e 0x62 0x02 # CHECK: mul.d $f8, $f12, $f14 +0x46 0x07 0x32 0x42 # CHECK: mul.s $f9, $f6, $f7 +0x70 0xc7 0x48 0x02 # CHECK: mul $9, $6, $7 +0x00 0x65 0x00 0x18 # CHECK: mult $3, $5 +0x00 0x65 0x00 0x19 # CHECK: multu $3, $5 +0x46 0x20 0x73 0x07 # CHECK: neg.d $f12, $f14 +0x46 0x00 0x39 0x87 # CHECK: neg.s $f6, $f7 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0xc7 0x48 0x27 # CHECK: nor $9, $6, $7 +0x00 0x65 0x18 0x25 # CHECK: or $3, $3, $5 +0x34 0xc9 0x45 0x67 # CHECK: ori $9, $6, 17767 +0x46 0x20 0x0b 0x08 # CHECK: round.l.d $f12, $f1 +0x46 0x00 0x2e 0x48 # CHECK: round.l.s $f25, $f5 +0x46 0x20 0x73 0x0c # CHECK: round.w.d $f12, $f14 +0x46 0x00 0x39 0x8c # CHECK: round.w.s $f6, $f7 +0xa0 0xa4 0x23 0xc6 # CHECK: sb $4, 9158($5) +0xa0 0xa4 0x00 0x06 # CHECK: sb $4, 6($5) +0xe0 0xe9 0x23 0xc6 # CHECK: sc $9, 9158($7) +0xf3 0xaf 0xdf 0xcd # CHECK: scd $15, -8243($sp) +0xfd 0x4c 0x16 0xcb # CHECK: sd $12, 5835($10) +0xf4 0xe9 0x23 0xc6 # CHECK: sdc1 $f9, 9158($7) +0xb3 0xc7 0xae 0x1f # CHECK: sdl $7, -20961($fp) +0xb5 0x8b 0xb0 0x39 # CHECK: sdr $11, -20423($12) +0x4d 0xca 0x58 0x09 # CHECK: sdxc1 $f11, $10($14) +0xa4 0xa4 0x23 0xc6 # CHECK: sh $4, 9158($5) +0x00 0x03 0x21 0xc0 # CHECK: sll $4, $3, 7 +0x00 0xa3 0x10 0x04 # CHECK: sllv $2, $3, $5 +0x00 0x65 0x18 0x2a # CHECK: slt $3, $3, $5 +0x28 0x63 0x00 0x67 # CHECK: slti $3, $3, 103 +0x2c 0x63 0x00 0x67 # CHECK: sltiu $3, $3, 103 +0x00 0x65 0x18 0x2b # CHECK: sltu $3, $3, $5 +0x46 0x20 0x73 0x04 # CHECK: sqrt.d $f12, $f14 +0x46 0x00 0x39 0x84 # CHECK: sqrt.s $f6, $f7 +0x00 0x03 0x21 0xc3 # CHECK: sra $4, $3, 7 +0x00 0xa3 0x10 0x07 # CHECK: srav $2, $3, $5 +0x00 0x03 0x21 0xc2 # CHECK: srl $4, $3, 7 +0x00 0xa3 0x10 0x06 # CHECK: srlv $2, $3, $5 +0x46 0x2e 0x62 0x01 # CHECK: sub.d $f8, $f12, $f14 +0x46 0x07 0x32 0x41 # CHECK: sub.s $f9, $f6, $f7 +0x00 0xc7 0x48 0x22 # CHECK: sub $9, $6, $7 +0x00 0x65 0x20 0x23 # CHECK: subu $4, $3, $5 +0xac 0xa4 0x00 0x18 # CHECK: sw $4, 24($5) +0xe4 0xe9 0x23 0xc6 # CHECK: swc1 $f9, 9158($7) +0x4d 0xbb 0x60 0x0d # CHECK: suxc1 $f12, $27($13) +0x4f 0x4c 0x98 0x08 # CHECK: swxc1 $f19, $12($26) +0xa8 0xa4 0x00 0x10 # CHECK: swl $4, 16($5) +0xb8 0xe6 0x00 0x10 # CHECK: swr $6, 16($7) +0x00 0x00 0x01 0xcf # CHECK: sync 7 +0x46 0x20 0xbd 0xc9 # CHECK: trunc.l.d $f23, $f23 +0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31 +0x46 0x20 0x73 0x0d # CHECK: trunc.w.d $f12, $f14 +0x46 0x00 0x39 0x8d # CHECK: trunc.w.s $f6, $f7 +0x00 0x65 0x18 0x26 # CHECK: xor $3, $3, $5 +0x38 0xc9 0x45 0x67 # CHECK: xori $9, $6, 17767 +0x7c 0x05 0xe8 0x3b # CHECK: .set push + # CHECK: .set mips32r2 + # CHECK: rdhwr $5, $29 + # CHECK: .set pop +0xbc 0x61 0x00 0x02 # CHECK: cache 1, 2($3) +0xcc 0x43 0x00 0x04 # CHECK: pref 3, 4($2) +0xe8 0xe9 0x23 0xc6 # CHECK: swc2 $9, 9158($7) +0xc8 0xc8 0x23 0xca # CHECK: lwc2 $8, 9162($6) diff --git a/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2-el.txt b/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2-el.txt new file mode 100644 index 0000000..6509456 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2-el.txt @@ -0,0 +1,237 @@ +# RUN: llvm-mc --disassemble %s -triple=mips64el-unknown-linux -mcpu=mips64r2 | FileCheck %s +# Try a mips* triple to confirm that mips* vs mips64* triples no longer have +# an effect on the disassembler behaviour. +# RUN: llvm-mc --disassemble %s -triple=mipsel-unknown-linux -mcpu=mips64r2 | FileCheck %s +# CHECK: .text +0x05 0x73 0x20 0x46 # CHECK: abs.d $f12, $f14 +0x85 0x39 0x00 0x46 # CHECK: abs.s $f6, $f7 +0x20 0x48 0xc7 0x00 # CHECK: add $9, $6, $7 +0x00 0x62 0x2e 0x46 # CHECK: add.d $f8, $f12, $f14 +0x40 0x32 0x07 0x46 # CHECK: add.s $f9, $f6, $f7 +0x67 0x45 0xc9 0x20 # CHECK: addi $9, $6, 17767 +0x67 0xc5 0xc9 0x24 # CHECK: addiu $9, $6, -15001 +0x21 0x48 0xc7 0x00 # CHECK: addu $9, $6, $7 +0x24 0x48 0xc7 0x00 # CHECK: and $9, $6, $7 +0x67 0x45 0xc9 0x30 # CHECK: andi $9, $6, 17767 +0x4c 0x01 0x00 0x10 # CHECK: b 1332 +0x4c 0x01 0x00 0x45 # CHECK: bc1f 1332 +0x4c 0x01 0x1c 0x45 # CHECK: bc1f $fcc7, 1332 +0x4c 0x01 0x01 0x45 # CHECK: bc1t 1332 +0x4c 0x01 0x1d 0x45 # CHECK: bc1t $fcc7, 1332 +0x4c 0x01 0x26 0x11 # CHECK: beq $9, $6, 1332 +0x4c 0x01 0xc1 0x04 # CHECK: bgez $6, 1332 +0x4c 0x01 0xd1 0x04 # CHECK: bgezal $6, 1332 +0x4c 0x01 0xc0 0x1c # CHECK: bgtz $6, 1332 +0x4c 0x01 0xc0 0x18 # CHECK: blez $6, 1332 +0x4c 0x01 0x26 0x15 # CHECK: bne $9, $6, 1332 +0x32 0x60 0x2e 0x46 # CHECK: c.eq.d $f12, $f14 +0x32 0x30 0x07 0x46 # CHECK: c.eq.s $f6, $f7 +0x30 0x60 0x2e 0x46 # CHECK: c.f.d $f12, $f14 +0x30 0x30 0x07 0x46 # CHECK: c.f.s $f6, $f7 +0x3e 0x60 0x2e 0x46 # CHECK: c.le.d $f12, $f14 +0x3e 0x30 0x07 0x46 # CHECK: c.le.s $f6, $f7 +0x3c 0x60 0x2e 0x46 # CHECK: c.lt.d $f12, $f14 +0x3c 0x30 0x07 0x46 # CHECK: c.lt.s $f6, $f7 +0x3d 0x60 0x2e 0x46 # CHECK: c.nge.d $f12, $f14 +0x3d 0x30 0x07 0x46 # CHECK: c.nge.s $f6, $f7 +0x3b 0x60 0x2e 0x46 # CHECK: c.ngl.d $f12, $f14 +0x3b 0x30 0x07 0x46 # CHECK: c.ngl.s $f6, $f7 +0x39 0x60 0x2e 0x46 # CHECK: c.ngle.d $f12, $f14 +0x39 0x30 0x07 0x46 # CHECK: c.ngle.s $f6, $f7 +0x3f 0x60 0x2e 0x46 # CHECK: c.ngt.d $f12, $f14 +0x3f 0x30 0x07 0x46 # CHECK: c.ngt.s $f6, $f7 +0x36 0x60 0x2e 0x46 # CHECK: c.ole.d $f12, $f14 +0x36 0x30 0x07 0x46 # CHECK: c.ole.s $f6, $f7 +0x34 0x60 0x2e 0x46 # CHECK: c.olt.d $f12, $f14 +0x34 0x30 0x07 0x46 # CHECK: c.olt.s $f6, $f7 +0x3a 0x60 0x2e 0x46 # CHECK: c.seq.d $f12, $f14 +0x3a 0x30 0x07 0x46 # CHECK: c.seq.s $f6, $f7 +0x38 0x60 0x2e 0x46 # CHECK: c.sf.d $f12, $f14 +0x38 0x30 0x07 0x46 # CHECK: c.sf.s $f6, $f7 +0x33 0x60 0x2e 0x46 # CHECK: c.ueq.d $f12, $f14 +0x33 0xe0 0x12 0x46 # CHECK: c.ueq.s $f28, $f18 +0x37 0x60 0x2e 0x46 # CHECK: c.ule.d $f12, $f14 +0x37 0x30 0x07 0x46 # CHECK: c.ule.s $f6, $f7 +0x35 0x60 0x2e 0x46 # CHECK: c.ult.d $f12, $f14 +0x35 0x30 0x07 0x46 # CHECK: c.ult.s $f6, $f7 +0x31 0x60 0x2e 0x46 # CHECK: c.un.d $f12, $f14 +0x31 0x30 0x07 0x46 # CHECK: c.un.s $f6, $f7 +0x4a 0x18 0x20 0x46 # CHECK: ceil.l.d $f1, $f3 +0x8a 0x6c 0x00 0x46 # CHECK: ceil.l.s $f18, $f13 +0x0e 0x73 0x20 0x46 # CHECK: ceil.w.d $f12, $f14 +0x8e 0x39 0x00 0x46 # CHECK: ceil.w.s $f6, $f7 +0x00 0x38 0x46 0x44 # CHECK: cfc1 $6, $7 +0x21 0x30 0xe6 0x70 # CHECK: clo $6, $7 +0x20 0x30 0xe6 0x70 # CHECK: clz $6, $7 +0x00 0x38 0xc6 0x44 # CHECK: ctc1 $6, $7 +0x21 0x81 0xa0 0x46 # CHECK: cvt.d.l $f4, $f16 +0xa1 0x39 0x00 0x46 # CHECK: cvt.d.s $f6, $f7 +0x21 0x73 0x80 0x46 # CHECK: cvt.d.w $f12, $f14 +0x25 0x73 0x20 0x46 # CHECK: cvt.l.d $f12, $f14 +0xa5 0x39 0x00 0x46 # CHECK: cvt.l.s $f6, $f7 +0xe0 0xf3 0xa0 0x46 # CHECK: cvt.s.l $f15, $f30 +0x20 0x73 0x20 0x46 # CHECK: cvt.s.d $f12, $f14 +0xa0 0x39 0x80 0x46 # CHECK: cvt.s.w $f6, $f7 +0x24 0x73 0x20 0x46 # CHECK: cvt.w.d $f12, $f14 +0xa4 0x39 0x00 0x46 # CHECK: cvt.w.s $f6, $f7 +0x2c 0x98 0x3f 0x00 # CHECK: dadd $19, $1, $ra +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0x16 0xee 0xda 0x66 # CHECK: daddiu $26, $22, -4586 +0x2d 0x98 0x3f 0x00 # CHECK: daddu $19, $1, $ra +0x9f 0x46 0x58 0x64 # CHECK: daddiu $24, $2, 18079 +0x3f 0x69 0x73 0x66 # CHECK: daddiu $19, $19, 26943 +0x25 0x90 0xd2 0x70 # CHECK: dclo $18, $6 +0x24 0x80 0x30 0x73 # CHECK: dclz $16, $25 +0x1e 0x00 0x53 0x03 # CHECK: ddiv $zero, $26, $19 +0x1f 0x00 0x11 0x02 # CHECK: ddivu $zero, $16, $17 +0x00 0x68 0x2c 0x44 # CHECK: dmfc1 $12, $f13 +0x00 0x70 0xb0 0x44 # CHECK: dmtc1 $16, $f14 +0x1c 0x00 0xe9 0x02 # CHECK: dmult $23, $9 +0x1d 0x00 0xa6 0x00 # CHECK: dmultu $5, $6 +0xb8 0x04 0x00 0x00 # CHECK: dsll $zero, $zero, 18 +0xb8 0x04 0x14 0x00 # CHECK: dsll $zero, $20, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbb 0xe2 0x1c 0x00 # CHECK: dsra $gp, $gp, 10 +0xbb 0xe2 0x12 0x00 # CHECK: dsra $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xbf 0xe2 0x1c 0x00 # CHECK: dsra32 $gp, $gp, 10 +0xbf 0xe2 0x12 0x00 # CHECK: dsra32 $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xfa 0x9d 0x13 0x00 # CHECK: dsrl $19, $19, 23 +0xfa 0x9d 0x06 0x00 # CHECK: dsrl $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0xfe 0x9d 0x13 0x00 # CHECK: dsrl32 $19, $19, 23 +0xfe 0x9d 0x06 0x00 # CHECK: dsrl32 $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0x2e 0x38 0xc8 0x02 # CHECK: dsub $7, $22, $8 +0xa4 0x18 0x0e 0x7c # CHECK: dsbh $3, $14 +0x64 0x11 0x1d 0x7c # CHECK: dshd $2, $sp +0x39 0x6c 0x9d 0x62 # CHECK: daddi $sp, $20, 27705 +0x39 0x6c 0xbd 0x63 # CHECK: daddi $sp, $sp, 27705 +0x2f 0x28 0xba 0x00 # CHECK: dsubu $5, $5, $26 +0x5f 0xec 0x6f 0x65 # CHECK: daddiu $15, $11, -5025 +0xea 0x11 0xce 0x65 # CHECK: daddiu $14, $14, 4586 +0x00 0x60 0x7e 0x41 # CHECK: di $fp +0x00 0x60 0x60 0x41 # CHECK: di +0xfa 0x0b 0x21 0x00 # CHECK: drotr $1, $1, 15 +0xfa 0x0b 0x2e 0x00 # CHECK: drotr $1, $14, 15 +0xfe 0x0b 0x21 0x00 # CHECK: drotr32 $1, $1, 15 +0xfe 0x0b 0x2e 0x00 # CHECK: drotr32 $1, $14, 15 +0x56 0x08 0xee 0x01 # CHECK: drotrv $1, $14, $15 +0x20 0x60 0x6e 0x41 # CHECK: ei $14 +0x20 0x60 0x60 0x41 # CHECK: ei +0x8b 0x3e 0x20 0x46 # CHECK: floor.l.d $f26, $f7 +0x0b 0x2b 0x00 0x46 # CHECK: floor.l.s $f12, $f5 +0x0f 0x73 0x20 0x46 # CHECK: floor.w.d $f12, $f14 +0x8f 0x39 0x00 0x46 # CHECK: floor.w.s $f6, $f7 +0x84 0x61 0x33 0x7d # CHECK: ins $19, $9, 6, 7 +0x4c 0x01 0x00 0x08 # CHECK: j 1328 +0x4c 0x01 0x00 0x0c # CHECK: jal 1328 +0x4c 0x01 0x00 0x74 # CHECK: jalx 1328 +0x09 0xf8 0xe0 0x00 # CHECK: jalr $7 +0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 +0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0x08 0x00 0xe0 0x00 # CHECK: jr $7 +0xc6 0x23 0xa4 0x80 # CHECK: lb $4, 9158($5) +0x06 0x00 0xa4 0x90 # CHECK: lbu $4, 6($5) +0x1b 0x90 0x3d 0xde # CHECK: ld $sp, -28645($17) +0xb9 0xef 0x18 0x6b # CHECK: ldl $24, -4167($24) +0x6a 0x89 0x8e 0x6e # CHECK: ldr $14, -30358($20) +0xc6 0x23 0xe9 0xd4 # CHECK: ldc1 $f9, 9158($7) +0x01 0x02 0xf7 0x4d # CHECK: ldxc1 $f8, $23($15) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0xc6 0x23 0xe9 0xc0 # CHECK: ll $9, 9158($7) +0x70 0xc6 0xe0 0xd3 # CHECK: lld $zero, -14736($ra) +0x67 0x45 0x06 0x3c # CHECK: lui $6, 17767 +0x05 0x00 0xa6 0x4c # CHECK: luxc1 $f0, $6($5) +0x18 0x00 0xa4 0x8c # CHECK: lw $4, 24($5) +0xc6 0x23 0xe9 0xc4 # CHECK: lwc1 $f9, 9158($7) +0x03 0x00 0x82 0x88 # CHECK: lwl $2, 3($4) +0x10 0x00 0xa3 0x98 # CHECK: lwr $3, 16($5) +0x00 0x05 0xcc 0x4d # CHECK: lwxc1 $f20, $12($14) +0xea 0xa1 0x73 0x9c # CHECK: lwu $19, -24086($3) +0x00 0x00 0xc7 0x70 # CHECK: madd $6, $7 +0x60 0x98 0xf9 0x4f # CHECK: madd.s $f1, $f31, $f19, $f25 +0x01 0x00 0xc7 0x70 # CHECK: maddu $6, $7 +0x00 0x38 0x06 0x44 # CHECK: mfc1 $6, $f7 +0x10 0x28 0x00 0x00 # CHECK: mfhi $5 +0x00 0xc0 0x7e 0x44 # CHECK: mfhc1 $fp, $f24 +0x12 0x28 0x00 0x00 # CHECK: mflo $5 +0x86 0x41 0x20 0x46 # CHECK: mov.d $f6, $f8 +0x86 0x39 0x00 0x46 # CHECK: mov.s $f6, $f7 +0x04 0x00 0xc7 0x70 # CHECK: msub $6, $7 +0x28 0x53 0x70 0x4e # CHECK: msub.s $f12, $f19, $f10, $f16 +0x05 0x00 0xc7 0x70 # CHECK: msubu $6, $7 +0x00 0x38 0x86 0x44 # CHECK: mtc1 $6, $f7 +0x11 0x00 0xe0 0x00 # CHECK: mthi $7 +0x00 0x80 0xe0 0x44 # CHECK: mthc1 $zero, $f16 +0x13 0x00 0xe0 0x00 # CHECK: mtlo $7 +0x02 0x62 0x2e 0x46 # CHECK: mul.d $f8, $f12, $f14 +0x42 0x32 0x07 0x46 # CHECK: mul.s $f9, $f6, $f7 +0x02 0x48 0xc7 0x70 # CHECK: mul $9, $6, $7 +0x18 0x00 0x65 0x00 # CHECK: mult $3, $5 +0x19 0x00 0x65 0x00 # CHECK: multu $3, $5 +0x07 0x73 0x20 0x46 # CHECK: neg.d $f12, $f14 +0x87 0x39 0x00 0x46 # CHECK: neg.s $f6, $f7 +0x30 0xc8 0xac 0x4c # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x48 0xc7 0x00 # CHECK: nor $9, $6, $7 +0x78 0x98 0x04 0x4f # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5 +0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767 +0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7 +0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7 +0x08 0x0b 0x20 0x46 # CHECK: round.l.d $f12, $f1 +0x48 0x2e 0x00 0x46 # CHECK: round.l.s $f25, $f5 +0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14 +0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7 +0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5) +0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5) +0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7) +0xcd 0xdf 0xaf 0xf3 # CHECK: scd $15, -8243($sp) +0xcb 0x16 0x4c 0xfd # CHECK: sd $12, 5835($10) +0xc6 0x23 0xe9 0xf4 # CHECK: sdc1 $f9, 9158($7) +0x1f 0xae 0xc7 0xb3 # CHECK: sdl $7, -20961($fp) +0x39 0xb0 0x8b 0xb5 # CHECK: sdr $11, -20423($12) +0x09 0x40 0x24 0x4f # CHECK: sdxc1 $f8, $4($25) +0x20 0x34 0x07 0x7c # CHECK: seb $6, $7 +0x20 0x36 0x07 0x7c # CHECK: seh $6, $7 +0xc6 0x23 0xa4 0xa4 # CHECK: sh $4, 9158($5) +0xc0 0x21 0x03 0x00 # CHECK: sll $4, $3, 7 +0x04 0x10 0xa3 0x00 # CHECK: sllv $2, $3, $5 +0x2a 0x18 0x65 0x00 # CHECK: slt $3, $3, $5 +0x67 0x00 0x63 0x28 # CHECK: slti $3, $3, 103 +0x67 0x00 0x63 0x2c # CHECK: sltiu $3, $3, 103 +0x2b 0x18 0x65 0x00 # CHECK: sltu $3, $3, $5 +0x04 0x73 0x20 0x46 # CHECK: sqrt.d $f12, $f14 +0x84 0x39 0x00 0x46 # CHECK: sqrt.s $f6, $f7 +0xc3 0x21 0x03 0x00 # CHECK: sra $4, $3, 7 +0x07 0x10 0xa3 0x00 # CHECK: srav $2, $3, $5 +0xc2 0x21 0x03 0x00 # CHECK: srl $4, $3, 7 +0x06 0x10 0xa3 0x00 # CHECK: srlv $2, $3, $5 +0x01 0x62 0x2e 0x46 # CHECK: sub.d $f8, $f12, $f14 +0x41 0x32 0x07 0x46 # CHECK: sub.s $f9, $f6, $f7 +0x22 0x48 0xc7 0x00 # CHECK: sub $9, $6, $7 +0x23 0x20 0x65 0x00 # CHECK: subu $4, $3, $5 +0x0d 0x20 0xb8 0x4c # CHECK: suxc1 $f4, $24($5) +0x18 0x00 0xa4 0xac # CHECK: sw $4, 24($5) +0xc6 0x23 0xe9 0xe4 # CHECK: swc1 $f9, 9158($7) +0x10 0x00 0xa4 0xa8 # CHECK: swl $4, 16($5) +0x10 0x00 0xe6 0xb8 # CHECK: swr $6, 16($7) +0x08 0xd0 0xd2 0x4e # CHECK: swxc1 $f26, $18($22) +0xcf 0x01 0x00 0x00 # CHECK: sync 7 +0xc9 0xbd 0x20 0x46 # CHECK: trunc.l.d $f23, $f23 +0x09 0xff 0x00 0x46 # CHECK: trunc.l.s $f28, $f31 +0x0d 0x73 0x20 0x46 # CHECK: trunc.w.d $f12, $f14 +0x8d 0x39 0x00 0x46 # CHECK: trunc.w.s $f6, $f7 +0xa0 0x30 0x07 0x7c # CHECK: wsbh $6, $7 +0x26 0x18 0x65 0x00 # CHECK: xor $3, $3, $5 +0x67 0x45 0xc9 0x38 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2.txt b/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2.txt new file mode 100644 index 0000000..9fc9f6e --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2.txt @@ -0,0 +1,237 @@ +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips64r2 | FileCheck %s +# Try a mips* triple to confirm that mips* vs mips64* triples no longer have +# an effect on the disassembler behaviour. +# RUN: llvm-mc --disassemble %s -triple=mips-unknown-linux -mcpu=mips64r2 | FileCheck %s +# CHECK: .text +0x46 0x20 0x73 0x05 # CHECK: abs.d $f12, $f14 +0x46 0x00 0x39 0x85 # CHECK: abs.s $f6, $f7 +0x00 0xc7 0x48 0x20 # CHECK: add $9, $6, $7 +0x46 0x2e 0x62 0x00 # CHECK: add.d $f8, $f12, $f14 +0x46 0x07 0x32 0x40 # CHECK: add.s $f9, $f6, $f7 +0x20 0xc9 0x45 0x67 # CHECK: addi $9, $6, 17767 +0x24 0xc9 0xc5 0x67 # CHECK: addiu $9, $6, -15001 +0x00 0xc7 0x48 0x21 # CHECK: addu $9, $6, $7 +0x00 0xc7 0x48 0x24 # CHECK: and $9, $6, $7 +0x30 0xc9 0x45 0x67 # CHECK: andi $9, $6, 17767 +0x10 0x00 0x01 0x4c # CHECK: b 1332 +0x45 0x00 0x01 0x4c # CHECK: bc1f 1332 +0x45 0x1c 0x01 0x4c # CHECK: bc1f $fcc7, 1332 +0x45 0x01 0x01 0x4c # CHECK: bc1t 1332 +0x45 0x1d 0x01 0x4c # CHECK: bc1t $fcc7, 1332 +0x11 0x26 0x01 0x4c # CHECK: beq $9, $6, 1332 +0x04 0xc1 0x01 0x4c # CHECK: bgez $6, 1332 +0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 +0x1c 0xc0 0x01 0x4c # CHECK: bgtz $6, 1332 +0x18 0xc0 0x01 0x4c # CHECK: blez $6, 1332 +0x15 0x26 0x01 0x4c # CHECK: bne $9, $6, 1332 +0x46 0x2e 0x60 0x32 # CHECK: c.eq.d $f12, $f14 +0x46 0x07 0x30 0x32 # CHECK: c.eq.s $f6, $f7 +0x46 0x2e 0x60 0x30 # CHECK: c.f.d $f12, $f14 +0x46 0x07 0x30 0x30 # CHECK: c.f.s $f6, $f7 +0x46 0x2e 0x60 0x3e # CHECK: c.le.d $f12, $f14 +0x46 0x07 0x30 0x3e # CHECK: c.le.s $f6, $f7 +0x46 0x2e 0x60 0x3c # CHECK: c.lt.d $f12, $f14 +0x46 0x07 0x30 0x3c # CHECK: c.lt.s $f6, $f7 +0x46 0x2e 0x60 0x3d # CHECK: c.nge.d $f12, $f14 +0x46 0x07 0x30 0x3d # CHECK: c.nge.s $f6, $f7 +0x46 0x2e 0x60 0x3b # CHECK: c.ngl.d $f12, $f14 +0x46 0x07 0x30 0x3b # CHECK: c.ngl.s $f6, $f7 +0x46 0x2e 0x60 0x39 # CHECK: c.ngle.d $f12, $f14 +0x46 0x07 0x30 0x39 # CHECK: c.ngle.s $f6, $f7 +0x46 0x2e 0x60 0x3f # CHECK: c.ngt.d $f12, $f14 +0x46 0x07 0x30 0x3f # CHECK: c.ngt.s $f6, $f7 +0x46 0x2e 0x60 0x36 # CHECK: c.ole.d $f12, $f14 +0x46 0x07 0x30 0x36 # CHECK: c.ole.s $f6, $f7 +0x46 0x2e 0x60 0x34 # CHECK: c.olt.d $f12, $f14 +0x46 0x07 0x30 0x34 # CHECK: c.olt.s $f6, $f7 +0x46 0x2e 0x60 0x3a # CHECK: c.seq.d $f12, $f14 +0x46 0x07 0x30 0x3a # CHECK: c.seq.s $f6, $f7 +0x46 0x2e 0x60 0x38 # CHECK: c.sf.d $f12, $f14 +0x46 0x07 0x30 0x38 # CHECK: c.sf.s $f6, $f7 +0x46 0x2e 0x60 0x33 # CHECK: c.ueq.d $f12, $f14 +0x46 0x12 0xe0 0x33 # CHECK: c.ueq.s $f28, $f18 +0x46 0x2e 0x60 0x37 # CHECK: c.ule.d $f12, $f14 +0x46 0x07 0x30 0x37 # CHECK: c.ule.s $f6, $f7 +0x46 0x2e 0x60 0x35 # CHECK: c.ult.d $f12, $f14 +0x46 0x07 0x30 0x35 # CHECK: c.ult.s $f6, $f7 +0x46 0x2e 0x60 0x31 # CHECK: c.un.d $f12, $f14 +0x46 0x07 0x30 0x31 # CHECK: c.un.s $f6, $f7 +0x46 0x20 0x18 0x4a # CHECK: ceil.l.d $f1, $f3 +0x46 0x00 0x6c 0x8a # CHECK: ceil.l.s $f18, $f13 +0x46 0x20 0x73 0x0e # CHECK: ceil.w.d $f12, $f14 +0x46 0x00 0x39 0x8e # CHECK: ceil.w.s $f6, $f7 +0x44 0x46 0x38 0x00 # CHECK: cfc1 $6, $7 +0x70 0xe6 0x30 0x21 # CHECK: clo $6, $7 +0x70 0xe6 0x30 0x20 # CHECK: clz $6, $7 +0x44 0xc6 0x38 0x00 # CHECK: ctc1 $6, $7 +0x46 0xa0 0x81 0x21 # CHECK: cvt.d.l $f4, $f16 +0x46 0x00 0x39 0xa1 # CHECK: cvt.d.s $f6, $f7 +0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14 +0x46 0x20 0x73 0x25 # CHECK: cvt.l.d $f12, $f14 +0x46 0x00 0x39 0xa5 # CHECK: cvt.l.s $f6, $f7 +0x46 0xa0 0xf3 0xe0 # CHECK: cvt.s.l $f15, $f30 +0x46 0x20 0x73 0x20 # CHECK: cvt.s.d $f12, $f14 +0x46 0x80 0x39 0xa0 # CHECK: cvt.s.w $f6, $f7 +0x46 0x20 0x73 0x24 # CHECK: cvt.w.d $f12, $f14 +0x46 0x00 0x39 0xa4 # CHECK: cvt.w.s $f6, $f7 +0x00 0x3f 0x98 0x2c # CHECK: dadd $19, $1, $ra +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x66 0xda 0xee 0x16 # CHECK: daddiu $26, $22, -4586 +0x00 0x3f 0x98 0x2d # CHECK: daddu $19, $1, $ra +0x64 0x58 0x46 0x9f # CHECK: daddiu $24, $2, 18079 +0x66 0x73 0x69 0x3f # CHECK: daddiu $19, $19, 26943 +0x70 0xd2 0x90 0x25 # CHECK: dclo $18, $6 +0x73 0x30 0x80 0x24 # CHECK: dclz $16, $25 +0x03 0x53 0x00 0x1e # CHECK: ddiv $zero, $26, $19 +0x02 0x11 0x00 0x1f # CHECK: ddivu $zero, $16, $17 +0x44 0x2c 0x68 0x00 # CHECK: dmfc1 $12, $f13 +0x44 0xb0 0x70 0x00 # CHECK: dmtc1 $16, $f14 +0x02 0xe9 0x00 0x1c # CHECK: dmult $23, $9 +0x00 0xa6 0x00 0x1d # CHECK: dmultu $5, $6 +0x00 0x00 0x04 0xb8 # CHECK: dsll $zero, $zero, 18 +0x00 0x14 0x04 0xb8 # CHECK: dsll $zero, $20, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x1c 0xe2 0xbb # CHECK: dsra $gp, $gp, 10 +0x00 0x12 0xe2 0xbb # CHECK: dsra $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x1c 0xe2 0xbf # CHECK: dsra32 $gp, $gp, 10 +0x00 0x12 0xe2 0xbf # CHECK: dsra32 $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x13 0x9d 0xfa # CHECK: dsrl $19, $19, 23 +0x00 0x06 0x9d 0xfa # CHECK: dsrl $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x00 0x13 0x9d 0xfe # CHECK: dsrl32 $19, $19, 23 +0x00 0x06 0x9d 0xfe # CHECK: dsrl32 $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x02 0xc8 0x38 0x2e # CHECK: dsub $7, $22, $8 +0x7c 0x0e 0x18 0xa4 # CHECK: dsbh $3, $14 +0x7c 0x1d 0x11 0x64 # CHECK: dshd $2, $sp +0x62 0x9d 0x6c 0x39 # CHECK: daddi $sp, $20, 27705 +0x63 0xbd 0x6c 0x39 # CHECK: daddi $sp, $sp, 27705 +0x00 0xba 0x28 0x2f # CHECK: dsubu $5, $5, $26 +0x65 0x6f 0xec 0x5f # CHECK: daddiu $15, $11, -5025 +0x65 0xce 0x11 0xea # CHECK: daddiu $14, $14, 4586 +0x41 0x7e 0x60 0x00 # CHECK: di $fp +0x41 0x60 0x60 0x00 # CHECK: di +0x00 0x21 0x0b 0xfa # CHECK: drotr $1, $1, 15 +0x00 0x2e 0x0b 0xfa # CHECK: drotr $1, $14, 15 +0x00 0x21 0x0b 0xfe # CHECK: drotr32 $1, $1, 15 +0x00 0x2e 0x0b 0xfe # CHECK: drotr32 $1, $14, 15 +0x01 0xee 0x08 0x56 # CHECK: drotrv $1, $14, $15 +0x41 0x6e 0x60 0x20 # CHECK: ei $14 +0x41 0x60 0x60 0x20 # CHECK: ei +0x46 0x20 0x3e 0x8b # CHECK: floor.l.d $f26, $f7 +0x46 0x00 0x2b 0x0b # CHECK: floor.l.s $f12, $f5 +0x46 0x20 0x73 0x0f # CHECK: floor.w.d $f12, $f14 +0x46 0x00 0x39 0x8f # CHECK: floor.w.s $f6, $f7 +0x7d 0x33 0x61 0x84 # CHECK: ins $19, $9, 6, 7 +0x08 0x00 0x01 0x4c # CHECK: j 1328 +0x0c 0x00 0x01 0x4c # CHECK: jal 1328 +0x74 0x00 0x01 0x4c # CHECK: jalx 1328 +0x00 0xe0 0xf8 0x09 # CHECK: jalr $7 +0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 +0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0x00 0xe0 0x00 0x08 # CHECK: jr $7 +0x80 0xa4 0x23 0xc6 # CHECK: lb $4, 9158($5) +0x90 0xa4 0x00 0x06 # CHECK: lbu $4, 6($5) +0xde 0x3d 0x90 0x1b # CHECK: ld $sp, -28645($17) +0x6b 0x18 0xef 0xb9 # CHECK: ldl $24, -4167($24) +0x6e 0x8e 0x89 0x6a # CHECK: ldr $14, -30358($20) +0xd4 0xe9 0x23 0xc6 # CHECK: ldc1 $f9, 9158($7) +0x4d 0xf7 0x02 0x01 # CHECK: ldxc1 $f8, $23($15) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0xc0 0xe9 0x23 0xc6 # CHECK: ll $9, 9158($7) +0xd3 0xe0 0xc6 0x70 # CHECK: lld $zero, -14736($ra) +0x3c 0x06 0x45 0x67 # CHECK: lui $6, 17767 +0x4c 0xa6 0x00 0x05 # CHECK: luxc1 $f0, $6($5) +0x8c 0xa4 0x00 0x18 # CHECK: lw $4, 24($5) +0xc4 0xe9 0x23 0xc6 # CHECK: lwc1 $f9, 9158($7) +0x88 0x82 0x00 0x03 # CHECK: lwl $2, 3($4) +0x98 0xa3 0x00 0x10 # CHECK: lwr $3, 16($5) +0x4d 0xcc 0x05 0x00 # CHECK: lwxc1 $f20, $12($14) +0x9c 0x73 0xa1 0xea # CHECK: lwu $19, -24086($3) +0x70 0xc7 0x00 0x00 # CHECK: madd $6, $7 +0x4f 0xf9 0x98 0x60 # CHECK: madd.s $f1, $f31, $f19, $f25 +0x70 0xc7 0x00 0x01 # CHECK: maddu $6, $7 +0x44 0x06 0x38 0x00 # CHECK: mfc1 $6, $f7 +0x00 0x00 0x28 0x10 # CHECK: mfhi $5 +0x44 0x7e 0xc0 0x00 # CHECK: mfhc1 $fp, $f24 +0x00 0x00 0x28 0x12 # CHECK: mflo $5 +0x46 0x20 0x41 0x86 # CHECK: mov.d $f6, $f8 +0x46 0x00 0x39 0x86 # CHECK: mov.s $f6, $f7 +0x70 0xc7 0x00 0x04 # CHECK: msub $6, $7 +0x4e 0x70 0x53 0x28 # CHECK: msub.s $f12, $f19, $f10, $f16 +0x70 0xc7 0x00 0x05 # CHECK: msubu $6, $7 +0x44 0x86 0x38 0x00 # CHECK: mtc1 $6, $f7 +0x00 0xe0 0x00 0x11 # CHECK: mthi $7 +0x44 0xe0 0x80 0x00 # CHECK: mthc1 $zero, $f16 +0x00 0xe0 0x00 0x13 # CHECK: mtlo $7 +0x46 0x2e 0x62 0x02 # CHECK: mul.d $f8, $f12, $f14 +0x46 0x07 0x32 0x42 # CHECK: mul.s $f9, $f6, $f7 +0x70 0xc7 0x48 0x02 # CHECK: mul $9, $6, $7 +0x00 0x65 0x00 0x18 # CHECK: mult $3, $5 +0x00 0x65 0x00 0x19 # CHECK: multu $3, $5 +0x46 0x20 0x73 0x07 # CHECK: neg.d $f12, $f14 +0x46 0x00 0x39 0x87 # CHECK: neg.s $f6, $f7 +0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0xc7 0x48 0x27 # CHECK: nor $9, $6, $7 +0x4f 0x04 0x98 0x78 # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x00 0x65 0x18 0x25 # CHECK: or $3, $3, $5 +0x34 0xc9 0x45 0x67 # CHECK: ori $9, $6, 17767 +0x00 0x26 0x49 0xc2 # CHECK: rotr $9, $6, 7 +0x00 0xe6 0x48 0x46 # CHECK: rotrv $9, $6, $7 +0x46 0x20 0x0b 0x08 # CHECK: round.l.d $f12, $f1 +0x46 0x00 0x2e 0x48 # CHECK: round.l.s $f25, $f5 +0x46 0x20 0x73 0x0c # CHECK: round.w.d $f12, $f14 +0x46 0x00 0x39 0x8c # CHECK: round.w.s $f6, $f7 +0xa0 0xa4 0x23 0xc6 # CHECK: sb $4, 9158($5) +0xa0 0xa4 0x00 0x06 # CHECK: sb $4, 6($5) +0xe0 0xe9 0x23 0xc6 # CHECK: sc $9, 9158($7) +0xf3 0xaf 0xdf 0xcd # CHECK: scd $15, -8243($sp) +0xfd 0x4c 0x16 0xcb # CHECK: sd $12, 5835($10) +0xf4 0xe9 0x23 0xc6 # CHECK: sdc1 $f9, 9158($7) +0xb3 0xc7 0xae 0x1f # CHECK: sdl $7, -20961($fp) +0xb5 0x8b 0xb0 0x39 # CHECK: sdr $11, -20423($12) +0x4f 0x24 0x40 0x09 # CHECK: sdxc1 $f8, $4($25) +0x7c 0x07 0x34 0x20 # CHECK: seb $6, $7 +0x7c 0x07 0x36 0x20 # CHECK: seh $6, $7 +0xa4 0xa4 0x23 0xc6 # CHECK: sh $4, 9158($5) +0x00 0x03 0x21 0xc0 # CHECK: sll $4, $3, 7 +0x00 0xa3 0x10 0x04 # CHECK: sllv $2, $3, $5 +0x00 0x65 0x18 0x2a # CHECK: slt $3, $3, $5 +0x28 0x63 0x00 0x67 # CHECK: slti $3, $3, 103 +0x2c 0x63 0x00 0x67 # CHECK: sltiu $3, $3, 103 +0x00 0x65 0x18 0x2b # CHECK: sltu $3, $3, $5 +0x46 0x20 0x73 0x04 # CHECK: sqrt.d $f12, $f14 +0x46 0x00 0x39 0x84 # CHECK: sqrt.s $f6, $f7 +0x00 0x03 0x21 0xc3 # CHECK: sra $4, $3, 7 +0x00 0xa3 0x10 0x07 # CHECK: srav $2, $3, $5 +0x00 0x03 0x21 0xc2 # CHECK: srl $4, $3, 7 +0x00 0xa3 0x10 0x06 # CHECK: srlv $2, $3, $5 +0x46 0x2e 0x62 0x01 # CHECK: sub.d $f8, $f12, $f14 +0x46 0x07 0x32 0x41 # CHECK: sub.s $f9, $f6, $f7 +0x00 0xc7 0x48 0x22 # CHECK: sub $9, $6, $7 +0x00 0x65 0x20 0x23 # CHECK: subu $4, $3, $5 +0x4c 0xb8 0x20 0x0d # CHECK: suxc1 $f4, $24($5) +0xac 0xa4 0x00 0x18 # CHECK: sw $4, 24($5) +0xe4 0xe9 0x23 0xc6 # CHECK: swc1 $f9, 9158($7) +0xa8 0xa4 0x00 0x10 # CHECK: swl $4, 16($5) +0xb8 0xe6 0x00 0x10 # CHECK: swr $6, 16($7) +0x4e 0xd2 0xd0 0x08 # CHECK: swxc1 $f26, $18($22) +0x00 0x00 0x01 0xcf # CHECK: sync 7 +0x46 0x20 0xbd 0xc9 # CHECK: trunc.l.d $f23, $f23 +0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31 +0x46 0x20 0x73 0x0d # CHECK: trunc.w.d $f12, $f14 +0x46 0x00 0x39 0x8d # CHECK: trunc.w.s $f6, $f7 +0x7c 0x07 0x30 0xa0 # CHECK: wsbh $6, $7 +0x00 0x65 0x18 0x26 # CHECK: xor $3, $3, $5 +0x38 0xc9 0x45 0x67 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips64r2/valid-xfail-mips64r2.txt b/test/MC/Disassembler/Mips/mips64r2/valid-xfail-mips64r2.txt new file mode 100644 index 0000000..cbc2eee --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r2/valid-xfail-mips64r2.txt @@ -0,0 +1,76 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble -mcpu=mips64r2 | FileCheck %s +# XFAIL: * +0x46 0x2f 0x79 0x32 # CHECK: c.eq.d $fcc1, $f15, $f15 +0x46 0x11 0xc5 0x32 # CHECK: c.eq.s $fcc5, $f24, $f17 +0x46 0x35 0x5c 0x30 # CHECK: c.f.d $fcc4, $f11, $f21 +0x46 0x07 0xf4 0x30 # CHECK: c.f.s $fcc4, $f30, $f7 +0x46 0x21 0x94 0x3e # CHECK: c.le.d $fcc4, $f18, $f1 +0x46 0x04 0xc6 0x3e # CHECK: c.le.s $fcc6, $f24, $f4 +0x46 0x23 0x4b 0x3c # CHECK: c.lt.d $fcc3, $f9, $f3 +0x46 0x0e 0x8a 0x3c # CHECK: c.lt.s $fcc2, $f17, $f14 +0x46 0x30 0xad 0x3d # CHECK: c.nge.d $fcc5, $f21, $f16 +0x46 0x08 0x5b 0x3d # CHECK: c.nge.s $fcc3, $f11, $f8 +0x46 0x17 0xfa 0x3b # CHECK: c.ngl.s $fcc2, $f31, $f23 +0x46 0x17 0x92 0x39 # CHECK: c.ngle.s $fcc2, $f18, $f23 +0x46 0x27 0xc4 0x3f # CHECK: c.ngt.d $fcc4, $f24, $f7 +0x46 0x0d 0x45 0x3f # CHECK: c.ngt.s $fcc5, $f8, $f13 +0x46 0x3f 0x82 0x36 # CHECK: c.ole.d $fcc2, $f16, $f31 +0x46 0x14 0x3b 0x36 # CHECK: c.ole.s $fcc3, $f7, $f20 +0x46 0x3c 0x9c 0x34 # CHECK: c.olt.d $fcc4, $f19, $f28 +0x46 0x07 0xa6 0x34 # CHECK: c.olt.s $fcc6, $f20, $f7 +0x46 0x27 0xfc 0x3a # CHECK: c.seq.d $fcc4, $f31, $f7 +0x46 0x19 0x0f 0x3a # CHECK: c.seq.s $fcc7, $f1, $f25 +0x46 0x39 0x6c 0x33 # CHECK: c.ueq.d $fcc4, $f13, $f25 +0x46 0x1e 0x1e 0x33 # CHECK: c.ueq.s $fcc6, $f3, $f30 +0x46 0x32 0xcf 0x37 # CHECK: c.ule.d $fcc7, $f25, $f18 +0x46 0x1e 0xaf 0x37 # CHECK: c.ule.s $fcc7, $f21, $f30 +0x46 0x31 0x36 0x35 # CHECK: c.ult.d $fcc6, $f6, $f17 +0x46 0x0a 0xc7 0x35 # CHECK: c.ult.s $fcc7, $f24, $f10 +0x46 0x38 0xbe 0x31 # CHECK: c.un.d $fcc6, $f23, $f24 +0x46 0x04 0xf1 0x31 # CHECK: c.un.s $fcc1, $f30, $f4 +0x46 0xc0 0x45 0x85 # CHECK: abs.ps $f22, $f8 +0x46 0xcc 0xc6 0x00 # CHECK: add.ps $f24, $f24, $f12 +0x46 0xca 0x04 0x32 # CHECK: c.eq.ps $fcc4, $f0, $f10 +0x46 0xcc 0x66 0x30 # CHECK: c.f.ps $fcc6, $f12, $f12 +0x46 0xd4 0x42 0x3e # CHECK: c.le.ps $fcc2, $f8, $f20 +0x46 0xc4 0x90 0x3c # CHECK: c.lt.ps $f18, $f4 +0x46 0xda 0x10 0x3d # CHECK: c.nge.ps $f2, $f26 +0x46 0xde 0xb0 0x3b # CHECK: c.ngl.ps $f22, $f30 +0x46 0xd4 0x66 0x39 # CHECK: c.ngle.ps $fcc6, $f12, $f20 +0x46 0xc6 0xf6 0x3f # CHECK: c.ngt.ps $fcc6, $f30, $f6 +0x46 0xc8 0xa6 0x36 # CHECK: c.ole.ps $fcc6, $f20, $f8 +0x46 0xd0 0x32 0x34 # CHECK: c.olt.ps $fcc2, $f6, $f16 +0x46 0xce 0xf6 0x3a # CHECK: c.seq.ps $fcc6, $f30, $f14 +0x46 0xc6 0x26 0x38 # CHECK: c.sf.ps $fcc6, $f4, $f6 +0x46 0xdc 0x20 0x33 # CHECK: c.ueq.ps $f4, $f28 +0x46 0xc2 0x86 0x37 # CHECK: c.ule.ps $fcc6, $f16, $f2 +0x46 0xc0 0x76 0x35 # CHECK: c.ult.ps $fcc6, $f14, $f0 +0x46 0xda 0x14 0x31 # CHECK: c.un.ps $fcc4, $f2, $f26 +0x46 0xc0 0x17 0xa8 # CHECK: cvt.s.pl $f30, $f2 +0x46 0xc0 0xd3 0xa0 # CHECK: cvt.s.pu $f14, $f26 +0x4e 0x94 0xd4 0xa1 # CHECK: madd.d $f18, $f20, $f26, $f20 +0x4c 0x42 0x75 0xa6 # CHECK: madd.ps $f22, $f2, $f14, $f2 +0x46 0xc0 0x85 0x86 # CHECK: mov.ps $f22, $f16 +0x46 0xd8 0xe2 0x91 # CHECK: movf.ps $f10, $f28, $fcc6 +0x46 0xd3 0xf7 0x93 # CHECK: movn.ps $f30, $f30, s3 +0x46 0xc9 0xc5 0x11 # CHECK: movt.ps $f20, $f24, $fcc2 +0x46 0xdf 0x84 0x92 # CHECK: movz.ps $f18, $f16, ra +0x4c 0x52 0xf2 0xa9 # CHECK: msub.d $f10, $f2, $f30, $f18 +0x4d 0xd0 0xe3 0x2e # CHECK: msub.ps $f12, $f14, $f28, $f16 +0x46 0xc0 0x64 0x87 # CHECK: neg.ps $f18, $f12 +0x4d 0x54 0x74 0xb1 # CHECK: nmadd.d $f18, $f10, $f14, $f20 +0x4c 0x98 0x46 0xb6 # CHECK: nmadd.ps $f26, $f4, $f8, $f24 +0x4d 0x1e 0x87 0xb9 # CHECK: nmsub.d $f30, $f8, $f16, $f30 +0x4d 0x90 0x71 0xbe # CHECK: nmsub.ps $f6, $f12, $f14, $f16 +0x46 0xde 0x46 0x2c # CHECK: pll.ps $f24, $f8, $f30 +0x46 0xdc 0xd0 0x2d # CHECK: plu.ps $f0, $f26, $f28 +0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26 +0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2 +0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1 +0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6 +0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30 +0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5 +0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28 +0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8 +0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26 +0x41 0xcd 0x00 0x00 # CHECK: wrpgpr zero, t5 diff --git a/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3-el.txt b/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3-el.txt new file mode 100644 index 0000000..52374af2 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3-el.txt @@ -0,0 +1,234 @@ +# RUN: llvm-mc --disassemble %s -triple=mips64el-unknown-linux -mcpu=mips64r3 | FileCheck %s +# CHECK: .text +0x05 0x73 0x20 0x46 # CHECK: abs.d $f12, $f14 +0x85 0x39 0x00 0x46 # CHECK: abs.s $f6, $f7 +0x20 0x48 0xc7 0x00 # CHECK: add $9, $6, $7 +0x00 0x62 0x2e 0x46 # CHECK: add.d $f8, $f12, $f14 +0x40 0x32 0x07 0x46 # CHECK: add.s $f9, $f6, $f7 +0x67 0x45 0xc9 0x20 # CHECK: addi $9, $6, 17767 +0x67 0xc5 0xc9 0x24 # CHECK: addiu $9, $6, -15001 +0x21 0x48 0xc7 0x00 # CHECK: addu $9, $6, $7 +0x24 0x48 0xc7 0x00 # CHECK: and $9, $6, $7 +0x67 0x45 0xc9 0x30 # CHECK: andi $9, $6, 17767 +0x4c 0x01 0x00 0x10 # CHECK: b 1332 +0x4c 0x01 0x00 0x45 # CHECK: bc1f 1332 +0x4c 0x01 0x1c 0x45 # CHECK: bc1f $fcc7, 1332 +0x4c 0x01 0x01 0x45 # CHECK: bc1t 1332 +0x4c 0x01 0x1d 0x45 # CHECK: bc1t $fcc7, 1332 +0x4c 0x01 0x26 0x11 # CHECK: beq $9, $6, 1332 +0x4c 0x01 0xc1 0x04 # CHECK: bgez $6, 1332 +0x4c 0x01 0xd1 0x04 # CHECK: bgezal $6, 1332 +0x4c 0x01 0xc0 0x1c # CHECK: bgtz $6, 1332 +0x4c 0x01 0xc0 0x18 # CHECK: blez $6, 1332 +0x4c 0x01 0x26 0x15 # CHECK: bne $9, $6, 1332 +0x32 0x60 0x2e 0x46 # CHECK: c.eq.d $f12, $f14 +0x32 0x30 0x07 0x46 # CHECK: c.eq.s $f6, $f7 +0x30 0x60 0x2e 0x46 # CHECK: c.f.d $f12, $f14 +0x30 0x30 0x07 0x46 # CHECK: c.f.s $f6, $f7 +0x3e 0x60 0x2e 0x46 # CHECK: c.le.d $f12, $f14 +0x3e 0x30 0x07 0x46 # CHECK: c.le.s $f6, $f7 +0x3c 0x60 0x2e 0x46 # CHECK: c.lt.d $f12, $f14 +0x3c 0x30 0x07 0x46 # CHECK: c.lt.s $f6, $f7 +0x3d 0x60 0x2e 0x46 # CHECK: c.nge.d $f12, $f14 +0x3d 0x30 0x07 0x46 # CHECK: c.nge.s $f6, $f7 +0x3b 0x60 0x2e 0x46 # CHECK: c.ngl.d $f12, $f14 +0x3b 0x30 0x07 0x46 # CHECK: c.ngl.s $f6, $f7 +0x39 0x60 0x2e 0x46 # CHECK: c.ngle.d $f12, $f14 +0x39 0x30 0x07 0x46 # CHECK: c.ngle.s $f6, $f7 +0x3f 0x60 0x2e 0x46 # CHECK: c.ngt.d $f12, $f14 +0x3f 0x30 0x07 0x46 # CHECK: c.ngt.s $f6, $f7 +0x36 0x60 0x2e 0x46 # CHECK: c.ole.d $f12, $f14 +0x36 0x30 0x07 0x46 # CHECK: c.ole.s $f6, $f7 +0x34 0x60 0x2e 0x46 # CHECK: c.olt.d $f12, $f14 +0x34 0x30 0x07 0x46 # CHECK: c.olt.s $f6, $f7 +0x3a 0x60 0x2e 0x46 # CHECK: c.seq.d $f12, $f14 +0x3a 0x30 0x07 0x46 # CHECK: c.seq.s $f6, $f7 +0x38 0x60 0x2e 0x46 # CHECK: c.sf.d $f12, $f14 +0x38 0x30 0x07 0x46 # CHECK: c.sf.s $f6, $f7 +0x33 0x60 0x2e 0x46 # CHECK: c.ueq.d $f12, $f14 +0x33 0xe0 0x12 0x46 # CHECK: c.ueq.s $f28, $f18 +0x37 0x60 0x2e 0x46 # CHECK: c.ule.d $f12, $f14 +0x37 0x30 0x07 0x46 # CHECK: c.ule.s $f6, $f7 +0x35 0x60 0x2e 0x46 # CHECK: c.ult.d $f12, $f14 +0x35 0x30 0x07 0x46 # CHECK: c.ult.s $f6, $f7 +0x31 0x60 0x2e 0x46 # CHECK: c.un.d $f12, $f14 +0x31 0x30 0x07 0x46 # CHECK: c.un.s $f6, $f7 +0x4a 0x18 0x20 0x46 # CHECK: ceil.l.d $f1, $f3 +0x8a 0x6c 0x00 0x46 # CHECK: ceil.l.s $f18, $f13 +0x0e 0x73 0x20 0x46 # CHECK: ceil.w.d $f12, $f14 +0x8e 0x39 0x00 0x46 # CHECK: ceil.w.s $f6, $f7 +0x00 0x38 0x46 0x44 # CHECK: cfc1 $6, $7 +0x21 0x30 0xe6 0x70 # CHECK: clo $6, $7 +0x20 0x30 0xe6 0x70 # CHECK: clz $6, $7 +0x00 0x38 0xc6 0x44 # CHECK: ctc1 $6, $7 +0x21 0x81 0xa0 0x46 # CHECK: cvt.d.l $f4, $f16 +0xa1 0x39 0x00 0x46 # CHECK: cvt.d.s $f6, $f7 +0x21 0x73 0x80 0x46 # CHECK: cvt.d.w $f12, $f14 +0x25 0x73 0x20 0x46 # CHECK: cvt.l.d $f12, $f14 +0xa5 0x39 0x00 0x46 # CHECK: cvt.l.s $f6, $f7 +0xe0 0xf3 0xa0 0x46 # CHECK: cvt.s.l $f15, $f30 +0x20 0x73 0x20 0x46 # CHECK: cvt.s.d $f12, $f14 +0xa0 0x39 0x80 0x46 # CHECK: cvt.s.w $f6, $f7 +0x24 0x73 0x20 0x46 # CHECK: cvt.w.d $f12, $f14 +0xa4 0x39 0x00 0x46 # CHECK: cvt.w.s $f6, $f7 +0x2c 0x98 0x3f 0x00 # CHECK: dadd $19, $1, $ra +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0x16 0xee 0xda 0x66 # CHECK: daddiu $26, $22, -4586 +0x2d 0x98 0x3f 0x00 # CHECK: daddu $19, $1, $ra +0x9f 0x46 0x58 0x64 # CHECK: daddiu $24, $2, 18079 +0x3f 0x69 0x73 0x66 # CHECK: daddiu $19, $19, 26943 +0x25 0x90 0xd2 0x70 # CHECK: dclo $18, $6 +0x24 0x80 0x30 0x73 # CHECK: dclz $16, $25 +0x1e 0x00 0x53 0x03 # CHECK: ddiv $zero, $26, $19 +0x1f 0x00 0x11 0x02 # CHECK: ddivu $zero, $16, $17 +0x00 0x68 0x2c 0x44 # CHECK: dmfc1 $12, $f13 +0x00 0x70 0xb0 0x44 # CHECK: dmtc1 $16, $f14 +0x1c 0x00 0xe9 0x02 # CHECK: dmult $23, $9 +0x1d 0x00 0xa6 0x00 # CHECK: dmultu $5, $6 +0xb8 0x04 0x00 0x00 # CHECK: dsll $zero, $zero, 18 +0xb8 0x04 0x14 0x00 # CHECK: dsll $zero, $20, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbb 0xe2 0x1c 0x00 # CHECK: dsra $gp, $gp, 10 +0xbb 0xe2 0x12 0x00 # CHECK: dsra $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xbf 0xe2 0x1c 0x00 # CHECK: dsra32 $gp, $gp, 10 +0xbf 0xe2 0x12 0x00 # CHECK: dsra32 $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xfa 0x9d 0x13 0x00 # CHECK: dsrl $19, $19, 23 +0xfa 0x9d 0x06 0x00 # CHECK: dsrl $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0xfe 0x9d 0x13 0x00 # CHECK: dsrl32 $19, $19, 23 +0xfe 0x9d 0x06 0x00 # CHECK: dsrl32 $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0x2e 0x38 0xc8 0x02 # CHECK: dsub $7, $22, $8 +0xa4 0x18 0x0e 0x7c # CHECK: dsbh $3, $14 +0x64 0x11 0x1d 0x7c # CHECK: dshd $2, $sp +0x39 0x6c 0x9d 0x62 # CHECK: daddi $sp, $20, 27705 +0x39 0x6c 0xbd 0x63 # CHECK: daddi $sp, $sp, 27705 +0x2f 0x28 0xba 0x00 # CHECK: dsubu $5, $5, $26 +0x5f 0xec 0x6f 0x65 # CHECK: daddiu $15, $11, -5025 +0xea 0x11 0xce 0x65 # CHECK: daddiu $14, $14, 4586 +0x00 0x60 0x7e 0x41 # CHECK: di $fp +0x00 0x60 0x60 0x41 # CHECK: di +0xfa 0x0b 0x21 0x00 # CHECK: drotr $1, $1, 15 +0xfa 0x0b 0x2e 0x00 # CHECK: drotr $1, $14, 15 +0xfe 0x0b 0x21 0x00 # CHECK: drotr32 $1, $1, 15 +0xfe 0x0b 0x2e 0x00 # CHECK: drotr32 $1, $14, 15 +0x56 0x08 0xee 0x01 # CHECK: drotrv $1, $14, $15 +0x20 0x60 0x6e 0x41 # CHECK: ei $14 +0x20 0x60 0x60 0x41 # CHECK: ei +0x8b 0x3e 0x20 0x46 # CHECK: floor.l.d $f26, $f7 +0x0b 0x2b 0x00 0x46 # CHECK: floor.l.s $f12, $f5 +0x0f 0x73 0x20 0x46 # CHECK: floor.w.d $f12, $f14 +0x8f 0x39 0x00 0x46 # CHECK: floor.w.s $f6, $f7 +0x84 0x61 0x33 0x7d # CHECK: ins $19, $9, 6, 7 +0x4c 0x01 0x00 0x08 # CHECK: j 1328 +0x4c 0x01 0x00 0x0c # CHECK: jal 1328 +0x4c 0x01 0x00 0x74 # CHECK: jalx 1328 +0x09 0xf8 0xe0 0x00 # CHECK: jalr $7 +0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 +0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0x08 0x00 0xe0 0x00 # CHECK: jr $7 +0xc6 0x23 0xa4 0x80 # CHECK: lb $4, 9158($5) +0x06 0x00 0xa4 0x90 # CHECK: lbu $4, 6($5) +0x1b 0x90 0x3d 0xde # CHECK: ld $sp, -28645($17) +0xb9 0xef 0x18 0x6b # CHECK: ldl $24, -4167($24) +0x6a 0x89 0x8e 0x6e # CHECK: ldr $14, -30358($20) +0xc6 0x23 0xe9 0xd4 # CHECK: ldc1 $f9, 9158($7) +0x01 0x02 0xf7 0x4d # CHECK: ldxc1 $f8, $23($15) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0xc6 0x23 0xe9 0xc0 # CHECK: ll $9, 9158($7) +0x70 0xc6 0xe0 0xd3 # CHECK: lld $zero, -14736($ra) +0x67 0x45 0x06 0x3c # CHECK: lui $6, 17767 +0x05 0x00 0xa6 0x4c # CHECK: luxc1 $f0, $6($5) +0x18 0x00 0xa4 0x8c # CHECK: lw $4, 24($5) +0xc6 0x23 0xe9 0xc4 # CHECK: lwc1 $f9, 9158($7) +0x03 0x00 0x82 0x88 # CHECK: lwl $2, 3($4) +0x10 0x00 0xa3 0x98 # CHECK: lwr $3, 16($5) +0x00 0x05 0xcc 0x4d # CHECK: lwxc1 $f20, $12($14) +0xea 0xa1 0x73 0x9c # CHECK: lwu $19, -24086($3) +0x00 0x00 0xc7 0x70 # CHECK: madd $6, $7 +0x60 0x98 0xf9 0x4f # CHECK: madd.s $f1, $f31, $f19, $f25 +0x01 0x00 0xc7 0x70 # CHECK: maddu $6, $7 +0x00 0x38 0x06 0x44 # CHECK: mfc1 $6, $f7 +0x10 0x28 0x00 0x00 # CHECK: mfhi $5 +0x00 0xc0 0x7e 0x44 # CHECK: mfhc1 $fp, $f24 +0x12 0x28 0x00 0x00 # CHECK: mflo $5 +0x86 0x41 0x20 0x46 # CHECK: mov.d $f6, $f8 +0x86 0x39 0x00 0x46 # CHECK: mov.s $f6, $f7 +0x04 0x00 0xc7 0x70 # CHECK: msub $6, $7 +0x28 0x53 0x70 0x4e # CHECK: msub.s $f12, $f19, $f10, $f16 +0x05 0x00 0xc7 0x70 # CHECK: msubu $6, $7 +0x00 0x38 0x86 0x44 # CHECK: mtc1 $6, $f7 +0x11 0x00 0xe0 0x00 # CHECK: mthi $7 +0x00 0x80 0xe0 0x44 # CHECK: mthc1 $zero, $f16 +0x13 0x00 0xe0 0x00 # CHECK: mtlo $7 +0x02 0x62 0x2e 0x46 # CHECK: mul.d $f8, $f12, $f14 +0x42 0x32 0x07 0x46 # CHECK: mul.s $f9, $f6, $f7 +0x02 0x48 0xc7 0x70 # CHECK: mul $9, $6, $7 +0x18 0x00 0x65 0x00 # CHECK: mult $3, $5 +0x19 0x00 0x65 0x00 # CHECK: multu $3, $5 +0x07 0x73 0x20 0x46 # CHECK: neg.d $f12, $f14 +0x87 0x39 0x00 0x46 # CHECK: neg.s $f6, $f7 +0x30 0xc8 0xac 0x4c # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x48 0xc7 0x00 # CHECK: nor $9, $6, $7 +0x78 0x98 0x04 0x4f # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5 +0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767 +0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7 +0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7 +0x08 0x0b 0x20 0x46 # CHECK: round.l.d $f12, $f1 +0x48 0x2e 0x00 0x46 # CHECK: round.l.s $f25, $f5 +0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14 +0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7 +0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5) +0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5) +0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7) +0xcd 0xdf 0xaf 0xf3 # CHECK: scd $15, -8243($sp) +0xcb 0x16 0x4c 0xfd # CHECK: sd $12, 5835($10) +0xc6 0x23 0xe9 0xf4 # CHECK: sdc1 $f9, 9158($7) +0x1f 0xae 0xc7 0xb3 # CHECK: sdl $7, -20961($fp) +0x39 0xb0 0x8b 0xb5 # CHECK: sdr $11, -20423($12) +0x09 0x40 0x24 0x4f # CHECK: sdxc1 $f8, $4($25) +0x20 0x34 0x07 0x7c # CHECK: seb $6, $7 +0x20 0x36 0x07 0x7c # CHECK: seh $6, $7 +0xc6 0x23 0xa4 0xa4 # CHECK: sh $4, 9158($5) +0xc0 0x21 0x03 0x00 # CHECK: sll $4, $3, 7 +0x04 0x10 0xa3 0x00 # CHECK: sllv $2, $3, $5 +0x2a 0x18 0x65 0x00 # CHECK: slt $3, $3, $5 +0x67 0x00 0x63 0x28 # CHECK: slti $3, $3, 103 +0x67 0x00 0x63 0x2c # CHECK: sltiu $3, $3, 103 +0x2b 0x18 0x65 0x00 # CHECK: sltu $3, $3, $5 +0x04 0x73 0x20 0x46 # CHECK: sqrt.d $f12, $f14 +0x84 0x39 0x00 0x46 # CHECK: sqrt.s $f6, $f7 +0xc3 0x21 0x03 0x00 # CHECK: sra $4, $3, 7 +0x07 0x10 0xa3 0x00 # CHECK: srav $2, $3, $5 +0xc2 0x21 0x03 0x00 # CHECK: srl $4, $3, 7 +0x06 0x10 0xa3 0x00 # CHECK: srlv $2, $3, $5 +0x01 0x62 0x2e 0x46 # CHECK: sub.d $f8, $f12, $f14 +0x41 0x32 0x07 0x46 # CHECK: sub.s $f9, $f6, $f7 +0x22 0x48 0xc7 0x00 # CHECK: sub $9, $6, $7 +0x23 0x20 0x65 0x00 # CHECK: subu $4, $3, $5 +0x0d 0x20 0xb8 0x4c # CHECK: suxc1 $f4, $24($5) +0x18 0x00 0xa4 0xac # CHECK: sw $4, 24($5) +0xc6 0x23 0xe9 0xe4 # CHECK: swc1 $f9, 9158($7) +0x10 0x00 0xa4 0xa8 # CHECK: swl $4, 16($5) +0x10 0x00 0xe6 0xb8 # CHECK: swr $6, 16($7) +0x08 0xd0 0xd2 0x4e # CHECK: swxc1 $f26, $18($22) +0xcf 0x01 0x00 0x00 # CHECK: sync 7 +0xc9 0xbd 0x20 0x46 # CHECK: trunc.l.d $f23, $f23 +0x09 0xff 0x00 0x46 # CHECK: trunc.l.s $f28, $f31 +0x0d 0x73 0x20 0x46 # CHECK: trunc.w.d $f12, $f14 +0x8d 0x39 0x00 0x46 # CHECK: trunc.w.s $f6, $f7 +0xa0 0x30 0x07 0x7c # CHECK: wsbh $6, $7 +0x26 0x18 0x65 0x00 # CHECK: xor $3, $3, $5 +0x67 0x45 0xc9 0x38 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3.txt b/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3.txt new file mode 100644 index 0000000..5a427df --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3.txt @@ -0,0 +1,234 @@ +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips64r3 | FileCheck %s +# CHECK: .text +0x46 0x20 0x73 0x05 # CHECK: abs.d $f12, $f14 +0x46 0x00 0x39 0x85 # CHECK: abs.s $f6, $f7 +0x00 0xc7 0x48 0x20 # CHECK: add $9, $6, $7 +0x46 0x2e 0x62 0x00 # CHECK: add.d $f8, $f12, $f14 +0x46 0x07 0x32 0x40 # CHECK: add.s $f9, $f6, $f7 +0x20 0xc9 0x45 0x67 # CHECK: addi $9, $6, 17767 +0x24 0xc9 0xc5 0x67 # CHECK: addiu $9, $6, -15001 +0x00 0xc7 0x48 0x21 # CHECK: addu $9, $6, $7 +0x00 0xc7 0x48 0x24 # CHECK: and $9, $6, $7 +0x30 0xc9 0x45 0x67 # CHECK: andi $9, $6, 17767 +0x10 0x00 0x01 0x4c # CHECK: b 1332 +0x45 0x00 0x01 0x4c # CHECK: bc1f 1332 +0x45 0x1c 0x01 0x4c # CHECK: bc1f $fcc7, 1332 +0x45 0x01 0x01 0x4c # CHECK: bc1t 1332 +0x45 0x1d 0x01 0x4c # CHECK: bc1t $fcc7, 1332 +0x11 0x26 0x01 0x4c # CHECK: beq $9, $6, 1332 +0x04 0xc1 0x01 0x4c # CHECK: bgez $6, 1332 +0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 +0x1c 0xc0 0x01 0x4c # CHECK: bgtz $6, 1332 +0x18 0xc0 0x01 0x4c # CHECK: blez $6, 1332 +0x15 0x26 0x01 0x4c # CHECK: bne $9, $6, 1332 +0x46 0x2e 0x60 0x32 # CHECK: c.eq.d $f12, $f14 +0x46 0x07 0x30 0x32 # CHECK: c.eq.s $f6, $f7 +0x46 0x2e 0x60 0x30 # CHECK: c.f.d $f12, $f14 +0x46 0x07 0x30 0x30 # CHECK: c.f.s $f6, $f7 +0x46 0x2e 0x60 0x3e # CHECK: c.le.d $f12, $f14 +0x46 0x07 0x30 0x3e # CHECK: c.le.s $f6, $f7 +0x46 0x2e 0x60 0x3c # CHECK: c.lt.d $f12, $f14 +0x46 0x07 0x30 0x3c # CHECK: c.lt.s $f6, $f7 +0x46 0x2e 0x60 0x3d # CHECK: c.nge.d $f12, $f14 +0x46 0x07 0x30 0x3d # CHECK: c.nge.s $f6, $f7 +0x46 0x2e 0x60 0x3b # CHECK: c.ngl.d $f12, $f14 +0x46 0x07 0x30 0x3b # CHECK: c.ngl.s $f6, $f7 +0x46 0x2e 0x60 0x39 # CHECK: c.ngle.d $f12, $f14 +0x46 0x07 0x30 0x39 # CHECK: c.ngle.s $f6, $f7 +0x46 0x2e 0x60 0x3f # CHECK: c.ngt.d $f12, $f14 +0x46 0x07 0x30 0x3f # CHECK: c.ngt.s $f6, $f7 +0x46 0x2e 0x60 0x36 # CHECK: c.ole.d $f12, $f14 +0x46 0x07 0x30 0x36 # CHECK: c.ole.s $f6, $f7 +0x46 0x2e 0x60 0x34 # CHECK: c.olt.d $f12, $f14 +0x46 0x07 0x30 0x34 # CHECK: c.olt.s $f6, $f7 +0x46 0x2e 0x60 0x3a # CHECK: c.seq.d $f12, $f14 +0x46 0x07 0x30 0x3a # CHECK: c.seq.s $f6, $f7 +0x46 0x2e 0x60 0x38 # CHECK: c.sf.d $f12, $f14 +0x46 0x07 0x30 0x38 # CHECK: c.sf.s $f6, $f7 +0x46 0x2e 0x60 0x33 # CHECK: c.ueq.d $f12, $f14 +0x46 0x12 0xe0 0x33 # CHECK: c.ueq.s $f28, $f18 +0x46 0x2e 0x60 0x37 # CHECK: c.ule.d $f12, $f14 +0x46 0x07 0x30 0x37 # CHECK: c.ule.s $f6, $f7 +0x46 0x2e 0x60 0x35 # CHECK: c.ult.d $f12, $f14 +0x46 0x07 0x30 0x35 # CHECK: c.ult.s $f6, $f7 +0x46 0x2e 0x60 0x31 # CHECK: c.un.d $f12, $f14 +0x46 0x07 0x30 0x31 # CHECK: c.un.s $f6, $f7 +0x46 0x20 0x18 0x4a # CHECK: ceil.l.d $f1, $f3 +0x46 0x00 0x6c 0x8a # CHECK: ceil.l.s $f18, $f13 +0x46 0x20 0x73 0x0e # CHECK: ceil.w.d $f12, $f14 +0x46 0x00 0x39 0x8e # CHECK: ceil.w.s $f6, $f7 +0x44 0x46 0x38 0x00 # CHECK: cfc1 $6, $7 +0x70 0xe6 0x30 0x21 # CHECK: clo $6, $7 +0x70 0xe6 0x30 0x20 # CHECK: clz $6, $7 +0x44 0xc6 0x38 0x00 # CHECK: ctc1 $6, $7 +0x46 0xa0 0x81 0x21 # CHECK: cvt.d.l $f4, $f16 +0x46 0x00 0x39 0xa1 # CHECK: cvt.d.s $f6, $f7 +0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14 +0x46 0x20 0x73 0x25 # CHECK: cvt.l.d $f12, $f14 +0x46 0x00 0x39 0xa5 # CHECK: cvt.l.s $f6, $f7 +0x46 0xa0 0xf3 0xe0 # CHECK: cvt.s.l $f15, $f30 +0x46 0x20 0x73 0x20 # CHECK: cvt.s.d $f12, $f14 +0x46 0x80 0x39 0xa0 # CHECK: cvt.s.w $f6, $f7 +0x46 0x20 0x73 0x24 # CHECK: cvt.w.d $f12, $f14 +0x46 0x00 0x39 0xa4 # CHECK: cvt.w.s $f6, $f7 +0x00 0x3f 0x98 0x2c # CHECK: dadd $19, $1, $ra +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x66 0xda 0xee 0x16 # CHECK: daddiu $26, $22, -4586 +0x00 0x3f 0x98 0x2d # CHECK: daddu $19, $1, $ra +0x64 0x58 0x46 0x9f # CHECK: daddiu $24, $2, 18079 +0x66 0x73 0x69 0x3f # CHECK: daddiu $19, $19, 26943 +0x70 0xd2 0x90 0x25 # CHECK: dclo $18, $6 +0x73 0x30 0x80 0x24 # CHECK: dclz $16, $25 +0x03 0x53 0x00 0x1e # CHECK: ddiv $zero, $26, $19 +0x02 0x11 0x00 0x1f # CHECK: ddivu $zero, $16, $17 +0x44 0x2c 0x68 0x00 # CHECK: dmfc1 $12, $f13 +0x44 0xb0 0x70 0x00 # CHECK: dmtc1 $16, $f14 +0x02 0xe9 0x00 0x1c # CHECK: dmult $23, $9 +0x00 0xa6 0x00 0x1d # CHECK: dmultu $5, $6 +0x00 0x00 0x04 0xb8 # CHECK: dsll $zero, $zero, 18 +0x00 0x14 0x04 0xb8 # CHECK: dsll $zero, $20, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x1c 0xe2 0xbb # CHECK: dsra $gp, $gp, 10 +0x00 0x12 0xe2 0xbb # CHECK: dsra $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x1c 0xe2 0xbf # CHECK: dsra32 $gp, $gp, 10 +0x00 0x12 0xe2 0xbf # CHECK: dsra32 $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x13 0x9d 0xfa # CHECK: dsrl $19, $19, 23 +0x00 0x06 0x9d 0xfa # CHECK: dsrl $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x00 0x13 0x9d 0xfe # CHECK: dsrl32 $19, $19, 23 +0x00 0x06 0x9d 0xfe # CHECK: dsrl32 $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x02 0xc8 0x38 0x2e # CHECK: dsub $7, $22, $8 +0x7c 0x0e 0x18 0xa4 # CHECK: dsbh $3, $14 +0x7c 0x1d 0x11 0x64 # CHECK: dshd $2, $sp +0x62 0x9d 0x6c 0x39 # CHECK: daddi $sp, $20, 27705 +0x63 0xbd 0x6c 0x39 # CHECK: daddi $sp, $sp, 27705 +0x00 0xba 0x28 0x2f # CHECK: dsubu $5, $5, $26 +0x65 0x6f 0xec 0x5f # CHECK: daddiu $15, $11, -5025 +0x65 0xce 0x11 0xea # CHECK: daddiu $14, $14, 4586 +0x41 0x7e 0x60 0x00 # CHECK: di $fp +0x41 0x60 0x60 0x00 # CHECK: di +0x00 0x21 0x0b 0xfa # CHECK: drotr $1, $1, 15 +0x00 0x2e 0x0b 0xfa # CHECK: drotr $1, $14, 15 +0x00 0x21 0x0b 0xfe # CHECK: drotr32 $1, $1, 15 +0x00 0x2e 0x0b 0xfe # CHECK: drotr32 $1, $14, 15 +0x01 0xee 0x08 0x56 # CHECK: drotrv $1, $14, $15 +0x41 0x6e 0x60 0x20 # CHECK: ei $14 +0x41 0x60 0x60 0x20 # CHECK: ei +0x46 0x20 0x3e 0x8b # CHECK: floor.l.d $f26, $f7 +0x46 0x00 0x2b 0x0b # CHECK: floor.l.s $f12, $f5 +0x46 0x20 0x73 0x0f # CHECK: floor.w.d $f12, $f14 +0x46 0x00 0x39 0x8f # CHECK: floor.w.s $f6, $f7 +0x7d 0x33 0x61 0x84 # CHECK: ins $19, $9, 6, 7 +0x08 0x00 0x01 0x4c # CHECK: j 1328 +0x0c 0x00 0x01 0x4c # CHECK: jal 1328 +0x74 0x00 0x01 0x4c # CHECK: jalx 1328 +0x00 0xe0 0xf8 0x09 # CHECK: jalr $7 +0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 +0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0x00 0xe0 0x00 0x08 # CHECK: jr $7 +0x80 0xa4 0x23 0xc6 # CHECK: lb $4, 9158($5) +0x90 0xa4 0x00 0x06 # CHECK: lbu $4, 6($5) +0xde 0x3d 0x90 0x1b # CHECK: ld $sp, -28645($17) +0x6b 0x18 0xef 0xb9 # CHECK: ldl $24, -4167($24) +0x6e 0x8e 0x89 0x6a # CHECK: ldr $14, -30358($20) +0xd4 0xe9 0x23 0xc6 # CHECK: ldc1 $f9, 9158($7) +0x4d 0xf7 0x02 0x01 # CHECK: ldxc1 $f8, $23($15) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0xc0 0xe9 0x23 0xc6 # CHECK: ll $9, 9158($7) +0xd3 0xe0 0xc6 0x70 # CHECK: lld $zero, -14736($ra) +0x3c 0x06 0x45 0x67 # CHECK: lui $6, 17767 +0x4c 0xa6 0x00 0x05 # CHECK: luxc1 $f0, $6($5) +0x8c 0xa4 0x00 0x18 # CHECK: lw $4, 24($5) +0xc4 0xe9 0x23 0xc6 # CHECK: lwc1 $f9, 9158($7) +0x88 0x82 0x00 0x03 # CHECK: lwl $2, 3($4) +0x98 0xa3 0x00 0x10 # CHECK: lwr $3, 16($5) +0x4d 0xcc 0x05 0x00 # CHECK: lwxc1 $f20, $12($14) +0x9c 0x73 0xa1 0xea # CHECK: lwu $19, -24086($3) +0x70 0xc7 0x00 0x00 # CHECK: madd $6, $7 +0x4f 0xf9 0x98 0x60 # CHECK: madd.s $f1, $f31, $f19, $f25 +0x70 0xc7 0x00 0x01 # CHECK: maddu $6, $7 +0x44 0x06 0x38 0x00 # CHECK: mfc1 $6, $f7 +0x00 0x00 0x28 0x10 # CHECK: mfhi $5 +0x44 0x7e 0xc0 0x00 # CHECK: mfhc1 $fp, $f24 +0x00 0x00 0x28 0x12 # CHECK: mflo $5 +0x46 0x20 0x41 0x86 # CHECK: mov.d $f6, $f8 +0x46 0x00 0x39 0x86 # CHECK: mov.s $f6, $f7 +0x70 0xc7 0x00 0x04 # CHECK: msub $6, $7 +0x4e 0x70 0x53 0x28 # CHECK: msub.s $f12, $f19, $f10, $f16 +0x70 0xc7 0x00 0x05 # CHECK: msubu $6, $7 +0x44 0x86 0x38 0x00 # CHECK: mtc1 $6, $f7 +0x00 0xe0 0x00 0x11 # CHECK: mthi $7 +0x44 0xe0 0x80 0x00 # CHECK: mthc1 $zero, $f16 +0x00 0xe0 0x00 0x13 # CHECK: mtlo $7 +0x46 0x2e 0x62 0x02 # CHECK: mul.d $f8, $f12, $f14 +0x46 0x07 0x32 0x42 # CHECK: mul.s $f9, $f6, $f7 +0x70 0xc7 0x48 0x02 # CHECK: mul $9, $6, $7 +0x00 0x65 0x00 0x18 # CHECK: mult $3, $5 +0x00 0x65 0x00 0x19 # CHECK: multu $3, $5 +0x46 0x20 0x73 0x07 # CHECK: neg.d $f12, $f14 +0x46 0x00 0x39 0x87 # CHECK: neg.s $f6, $f7 +0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0xc7 0x48 0x27 # CHECK: nor $9, $6, $7 +0x4f 0x04 0x98 0x78 # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x00 0x65 0x18 0x25 # CHECK: or $3, $3, $5 +0x34 0xc9 0x45 0x67 # CHECK: ori $9, $6, 17767 +0x00 0x26 0x49 0xc2 # CHECK: rotr $9, $6, 7 +0x00 0xe6 0x48 0x46 # CHECK: rotrv $9, $6, $7 +0x46 0x20 0x0b 0x08 # CHECK: round.l.d $f12, $f1 +0x46 0x00 0x2e 0x48 # CHECK: round.l.s $f25, $f5 +0x46 0x20 0x73 0x0c # CHECK: round.w.d $f12, $f14 +0x46 0x00 0x39 0x8c # CHECK: round.w.s $f6, $f7 +0xa0 0xa4 0x23 0xc6 # CHECK: sb $4, 9158($5) +0xa0 0xa4 0x00 0x06 # CHECK: sb $4, 6($5) +0xe0 0xe9 0x23 0xc6 # CHECK: sc $9, 9158($7) +0xf3 0xaf 0xdf 0xcd # CHECK: scd $15, -8243($sp) +0xfd 0x4c 0x16 0xcb # CHECK: sd $12, 5835($10) +0xf4 0xe9 0x23 0xc6 # CHECK: sdc1 $f9, 9158($7) +0xb3 0xc7 0xae 0x1f # CHECK: sdl $7, -20961($fp) +0xb5 0x8b 0xb0 0x39 # CHECK: sdr $11, -20423($12) +0x4f 0x24 0x40 0x09 # CHECK: sdxc1 $f8, $4($25) +0x7c 0x07 0x34 0x20 # CHECK: seb $6, $7 +0x7c 0x07 0x36 0x20 # CHECK: seh $6, $7 +0xa4 0xa4 0x23 0xc6 # CHECK: sh $4, 9158($5) +0x00 0x03 0x21 0xc0 # CHECK: sll $4, $3, 7 +0x00 0xa3 0x10 0x04 # CHECK: sllv $2, $3, $5 +0x00 0x65 0x18 0x2a # CHECK: slt $3, $3, $5 +0x28 0x63 0x00 0x67 # CHECK: slti $3, $3, 103 +0x2c 0x63 0x00 0x67 # CHECK: sltiu $3, $3, 103 +0x00 0x65 0x18 0x2b # CHECK: sltu $3, $3, $5 +0x46 0x20 0x73 0x04 # CHECK: sqrt.d $f12, $f14 +0x46 0x00 0x39 0x84 # CHECK: sqrt.s $f6, $f7 +0x00 0x03 0x21 0xc3 # CHECK: sra $4, $3, 7 +0x00 0xa3 0x10 0x07 # CHECK: srav $2, $3, $5 +0x00 0x03 0x21 0xc2 # CHECK: srl $4, $3, 7 +0x00 0xa3 0x10 0x06 # CHECK: srlv $2, $3, $5 +0x46 0x2e 0x62 0x01 # CHECK: sub.d $f8, $f12, $f14 +0x46 0x07 0x32 0x41 # CHECK: sub.s $f9, $f6, $f7 +0x00 0xc7 0x48 0x22 # CHECK: sub $9, $6, $7 +0x00 0x65 0x20 0x23 # CHECK: subu $4, $3, $5 +0x4c 0xb8 0x20 0x0d # CHECK: suxc1 $f4, $24($5) +0xac 0xa4 0x00 0x18 # CHECK: sw $4, 24($5) +0xe4 0xe9 0x23 0xc6 # CHECK: swc1 $f9, 9158($7) +0xa8 0xa4 0x00 0x10 # CHECK: swl $4, 16($5) +0xb8 0xe6 0x00 0x10 # CHECK: swr $6, 16($7) +0x4e 0xd2 0xd0 0x08 # CHECK: swxc1 $f26, $18($22) +0x00 0x00 0x01 0xcf # CHECK: sync 7 +0x46 0x20 0xbd 0xc9 # CHECK: trunc.l.d $f23, $f23 +0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31 +0x46 0x20 0x73 0x0d # CHECK: trunc.w.d $f12, $f14 +0x46 0x00 0x39 0x8d # CHECK: trunc.w.s $f6, $f7 +0x7c 0x07 0x30 0xa0 # CHECK: wsbh $6, $7 +0x00 0x65 0x18 0x26 # CHECK: xor $3, $3, $5 +0x38 0xc9 0x45 0x67 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips64r3/valid-xfail-mips64r3.txt b/test/MC/Disassembler/Mips/mips64r3/valid-xfail-mips64r3.txt new file mode 100644 index 0000000..8c58eb1 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r3/valid-xfail-mips64r3.txt @@ -0,0 +1,76 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble -mcpu=mips64r3 | FileCheck %s +# XFAIL: * +0x46 0x2f 0x79 0x32 # CHECK: c.eq.d $fcc1, $f15, $f15 +0x46 0x11 0xc5 0x32 # CHECK: c.eq.s $fcc5, $f24, $f17 +0x46 0x35 0x5c 0x30 # CHECK: c.f.d $fcc4, $f11, $f21 +0x46 0x07 0xf4 0x30 # CHECK: c.f.s $fcc4, $f30, $f7 +0x46 0x21 0x94 0x3e # CHECK: c.le.d $fcc4, $f18, $f1 +0x46 0x04 0xc6 0x3e # CHECK: c.le.s $fcc6, $f24, $f4 +0x46 0x23 0x4b 0x3c # CHECK: c.lt.d $fcc3, $f9, $f3 +0x46 0x0e 0x8a 0x3c # CHECK: c.lt.s $fcc2, $f17, $f14 +0x46 0x30 0xad 0x3d # CHECK: c.nge.d $fcc5, $f21, $f16 +0x46 0x08 0x5b 0x3d # CHECK: c.nge.s $fcc3, $f11, $f8 +0x46 0x17 0xfa 0x3b # CHECK: c.ngl.s $fcc2, $f31, $f23 +0x46 0x17 0x92 0x39 # CHECK: c.ngle.s $fcc2, $f18, $f23 +0x46 0x27 0xc4 0x3f # CHECK: c.ngt.d $fcc4, $f24, $f7 +0x46 0x0d 0x45 0x3f # CHECK: c.ngt.s $fcc5, $f8, $f13 +0x46 0x3f 0x82 0x36 # CHECK: c.ole.d $fcc2, $f16, $f31 +0x46 0x14 0x3b 0x36 # CHECK: c.ole.s $fcc3, $f7, $f20 +0x46 0x3c 0x9c 0x34 # CHECK: c.olt.d $fcc4, $f19, $f28 +0x46 0x07 0xa6 0x34 # CHECK: c.olt.s $fcc6, $f20, $f7 +0x46 0x27 0xfc 0x3a # CHECK: c.seq.d $fcc4, $f31, $f7 +0x46 0x19 0x0f 0x3a # CHECK: c.seq.s $fcc7, $f1, $f25 +0x46 0x39 0x6c 0x33 # CHECK: c.ueq.d $fcc4, $f13, $f25 +0x46 0x1e 0x1e 0x33 # CHECK: c.ueq.s $fcc6, $f3, $f30 +0x46 0x32 0xcf 0x37 # CHECK: c.ule.d $fcc7, $f25, $f18 +0x46 0x1e 0xaf 0x37 # CHECK: c.ule.s $fcc7, $f21, $f30 +0x46 0x31 0x36 0x35 # CHECK: c.ult.d $fcc6, $f6, $f17 +0x46 0x0a 0xc7 0x35 # CHECK: c.ult.s $fcc7, $f24, $f10 +0x46 0x38 0xbe 0x31 # CHECK: c.un.d $fcc6, $f23, $f24 +0x46 0x04 0xf1 0x31 # CHECK: c.un.s $fcc1, $f30, $f4 +0x46 0xc0 0x45 0x85 # CHECK: abs.ps $f22, $f8 +0x46 0xcc 0xc6 0x00 # CHECK: add.ps $f24, $f24, $f12 +0x46 0xca 0x04 0x32 # CHECK: c.eq.ps $fcc4, $f0, $f10 +0x46 0xcc 0x66 0x30 # CHECK: c.f.ps $fcc6, $f12, $f12 +0x46 0xd4 0x42 0x3e # CHECK: c.le.ps $fcc2, $f8, $f20 +0x46 0xc4 0x90 0x3c # CHECK: c.lt.ps $f18, $f4 +0x46 0xda 0x10 0x3d # CHECK: c.nge.ps $f2, $f26 +0x46 0xde 0xb0 0x3b # CHECK: c.ngl.ps $f22, $f30 +0x46 0xd4 0x66 0x39 # CHECK: c.ngle.ps $fcc6, $f12, $f20 +0x46 0xc6 0xf6 0x3f # CHECK: c.ngt.ps $fcc6, $f30, $f6 +0x46 0xc8 0xa6 0x36 # CHECK: c.ole.ps $fcc6, $f20, $f8 +0x46 0xd0 0x32 0x34 # CHECK: c.olt.ps $fcc2, $f6, $f16 +0x46 0xce 0xf6 0x3a # CHECK: c.seq.ps $fcc6, $f30, $f14 +0x46 0xc6 0x26 0x38 # CHECK: c.sf.ps $fcc6, $f4, $f6 +0x46 0xdc 0x20 0x33 # CHECK: c.ueq.ps $f4, $f28 +0x46 0xc2 0x86 0x37 # CHECK: c.ule.ps $fcc6, $f16, $f2 +0x46 0xc0 0x76 0x35 # CHECK: c.ult.ps $fcc6, $f14, $f0 +0x46 0xda 0x14 0x31 # CHECK: c.un.ps $fcc4, $f2, $f26 +0x46 0xc0 0x17 0xa8 # CHECK: cvt.s.pl $f30, $f2 +0x46 0xc0 0xd3 0xa0 # CHECK: cvt.s.pu $f14, $f26 +0x4e 0x94 0xd4 0xa1 # CHECK: madd.d $f18, $f20, $f26, $f20 +0x4c 0x42 0x75 0xa6 # CHECK: madd.ps $f22, $f2, $f14, $f2 +0x46 0xc0 0x85 0x86 # CHECK: mov.ps $f22, $f16 +0x46 0xd8 0xe2 0x91 # CHECK: movf.ps $f10, $f28, $fcc6 +0x46 0xd3 0xf7 0x93 # CHECK: movn.ps $f30, $f30, s3 +0x46 0xc9 0xc5 0x11 # CHECK: movt.ps $f20, $f24, $fcc2 +0x46 0xdf 0x84 0x92 # CHECK: movz.ps $f18, $f16, ra +0x4c 0x52 0xf2 0xa9 # CHECK: msub.d $f10, $f2, $f30, $f18 +0x4d 0xd0 0xe3 0x2e # CHECK: msub.ps $f12, $f14, $f28, $f16 +0x46 0xc0 0x64 0x87 # CHECK: neg.ps $f18, $f12 +0x4d 0x54 0x74 0xb1 # CHECK: nmadd.d $f18, $f10, $f14, $f20 +0x4c 0x98 0x46 0xb6 # CHECK: nmadd.ps $f26, $f4, $f8, $f24 +0x4d 0x1e 0x87 0xb9 # CHECK: nmsub.d $f30, $f8, $f16, $f30 +0x4d 0x90 0x71 0xbe # CHECK: nmsub.ps $f6, $f12, $f14, $f16 +0x46 0xde 0x46 0x2c # CHECK: pll.ps $f24, $f8, $f30 +0x46 0xdc 0xd0 0x2d # CHECK: plu.ps $f0, $f26, $f28 +0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26 +0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2 +0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1 +0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6 +0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30 +0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5 +0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28 +0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8 +0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26 +0x41 0xcd 0x00 0x00 # CHECK: wrpgpr zero, t5 diff --git a/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5-el.txt b/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5-el.txt new file mode 100644 index 0000000..3d97a2b --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5-el.txt @@ -0,0 +1,234 @@ +# RUN: llvm-mc --disassemble %s -triple=mips64el-unknown-linux -mcpu=mips64r5 | FileCheck %s +# CHECK: .text +0x05 0x73 0x20 0x46 # CHECK: abs.d $f12, $f14 +0x85 0x39 0x00 0x46 # CHECK: abs.s $f6, $f7 +0x20 0x48 0xc7 0x00 # CHECK: add $9, $6, $7 +0x00 0x62 0x2e 0x46 # CHECK: add.d $f8, $f12, $f14 +0x40 0x32 0x07 0x46 # CHECK: add.s $f9, $f6, $f7 +0x67 0x45 0xc9 0x20 # CHECK: addi $9, $6, 17767 +0x67 0xc5 0xc9 0x24 # CHECK: addiu $9, $6, -15001 +0x21 0x48 0xc7 0x00 # CHECK: addu $9, $6, $7 +0x24 0x48 0xc7 0x00 # CHECK: and $9, $6, $7 +0x67 0x45 0xc9 0x30 # CHECK: andi $9, $6, 17767 +0x4c 0x01 0x00 0x10 # CHECK: b 1332 +0x4c 0x01 0x00 0x45 # CHECK: bc1f 1332 +0x4c 0x01 0x1c 0x45 # CHECK: bc1f $fcc7, 1332 +0x4c 0x01 0x01 0x45 # CHECK: bc1t 1332 +0x4c 0x01 0x1d 0x45 # CHECK: bc1t $fcc7, 1332 +0x4c 0x01 0x26 0x11 # CHECK: beq $9, $6, 1332 +0x4c 0x01 0xc1 0x04 # CHECK: bgez $6, 1332 +0x4c 0x01 0xd1 0x04 # CHECK: bgezal $6, 1332 +0x4c 0x01 0xc0 0x1c # CHECK: bgtz $6, 1332 +0x4c 0x01 0xc0 0x18 # CHECK: blez $6, 1332 +0x4c 0x01 0x26 0x15 # CHECK: bne $9, $6, 1332 +0x32 0x60 0x2e 0x46 # CHECK: c.eq.d $f12, $f14 +0x32 0x30 0x07 0x46 # CHECK: c.eq.s $f6, $f7 +0x30 0x60 0x2e 0x46 # CHECK: c.f.d $f12, $f14 +0x30 0x30 0x07 0x46 # CHECK: c.f.s $f6, $f7 +0x3e 0x60 0x2e 0x46 # CHECK: c.le.d $f12, $f14 +0x3e 0x30 0x07 0x46 # CHECK: c.le.s $f6, $f7 +0x3c 0x60 0x2e 0x46 # CHECK: c.lt.d $f12, $f14 +0x3c 0x30 0x07 0x46 # CHECK: c.lt.s $f6, $f7 +0x3d 0x60 0x2e 0x46 # CHECK: c.nge.d $f12, $f14 +0x3d 0x30 0x07 0x46 # CHECK: c.nge.s $f6, $f7 +0x3b 0x60 0x2e 0x46 # CHECK: c.ngl.d $f12, $f14 +0x3b 0x30 0x07 0x46 # CHECK: c.ngl.s $f6, $f7 +0x39 0x60 0x2e 0x46 # CHECK: c.ngle.d $f12, $f14 +0x39 0x30 0x07 0x46 # CHECK: c.ngle.s $f6, $f7 +0x3f 0x60 0x2e 0x46 # CHECK: c.ngt.d $f12, $f14 +0x3f 0x30 0x07 0x46 # CHECK: c.ngt.s $f6, $f7 +0x36 0x60 0x2e 0x46 # CHECK: c.ole.d $f12, $f14 +0x36 0x30 0x07 0x46 # CHECK: c.ole.s $f6, $f7 +0x34 0x60 0x2e 0x46 # CHECK: c.olt.d $f12, $f14 +0x34 0x30 0x07 0x46 # CHECK: c.olt.s $f6, $f7 +0x3a 0x60 0x2e 0x46 # CHECK: c.seq.d $f12, $f14 +0x3a 0x30 0x07 0x46 # CHECK: c.seq.s $f6, $f7 +0x38 0x60 0x2e 0x46 # CHECK: c.sf.d $f12, $f14 +0x38 0x30 0x07 0x46 # CHECK: c.sf.s $f6, $f7 +0x33 0x60 0x2e 0x46 # CHECK: c.ueq.d $f12, $f14 +0x33 0xe0 0x12 0x46 # CHECK: c.ueq.s $f28, $f18 +0x37 0x60 0x2e 0x46 # CHECK: c.ule.d $f12, $f14 +0x37 0x30 0x07 0x46 # CHECK: c.ule.s $f6, $f7 +0x35 0x60 0x2e 0x46 # CHECK: c.ult.d $f12, $f14 +0x35 0x30 0x07 0x46 # CHECK: c.ult.s $f6, $f7 +0x31 0x60 0x2e 0x46 # CHECK: c.un.d $f12, $f14 +0x31 0x30 0x07 0x46 # CHECK: c.un.s $f6, $f7 +0x4a 0x18 0x20 0x46 # CHECK: ceil.l.d $f1, $f3 +0x8a 0x6c 0x00 0x46 # CHECK: ceil.l.s $f18, $f13 +0x0e 0x73 0x20 0x46 # CHECK: ceil.w.d $f12, $f14 +0x8e 0x39 0x00 0x46 # CHECK: ceil.w.s $f6, $f7 +0x00 0x38 0x46 0x44 # CHECK: cfc1 $6, $7 +0x21 0x30 0xe6 0x70 # CHECK: clo $6, $7 +0x20 0x30 0xe6 0x70 # CHECK: clz $6, $7 +0x00 0x38 0xc6 0x44 # CHECK: ctc1 $6, $7 +0x21 0x81 0xa0 0x46 # CHECK: cvt.d.l $f4, $f16 +0xa1 0x39 0x00 0x46 # CHECK: cvt.d.s $f6, $f7 +0x21 0x73 0x80 0x46 # CHECK: cvt.d.w $f12, $f14 +0x25 0x73 0x20 0x46 # CHECK: cvt.l.d $f12, $f14 +0xa5 0x39 0x00 0x46 # CHECK: cvt.l.s $f6, $f7 +0xe0 0xf3 0xa0 0x46 # CHECK: cvt.s.l $f15, $f30 +0x20 0x73 0x20 0x46 # CHECK: cvt.s.d $f12, $f14 +0xa0 0x39 0x80 0x46 # CHECK: cvt.s.w $f6, $f7 +0x24 0x73 0x20 0x46 # CHECK: cvt.w.d $f12, $f14 +0xa4 0x39 0x00 0x46 # CHECK: cvt.w.s $f6, $f7 +0x2c 0x98 0x3f 0x00 # CHECK: dadd $19, $1, $ra +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0x9d 0x62 # CHECK: daddi $sp, $20, -27705 +0xc7 0x93 0xbd 0x63 # CHECK: daddi $sp, $sp, -27705 +0x16 0xee 0xda 0x66 # CHECK: daddiu $26, $22, -4586 +0x2d 0x98 0x3f 0x00 # CHECK: daddu $19, $1, $ra +0x9f 0x46 0x58 0x64 # CHECK: daddiu $24, $2, 18079 +0x3f 0x69 0x73 0x66 # CHECK: daddiu $19, $19, 26943 +0x25 0x90 0xd2 0x70 # CHECK: dclo $18, $6 +0x24 0x80 0x30 0x73 # CHECK: dclz $16, $25 +0x1e 0x00 0x53 0x03 # CHECK: ddiv $zero, $26, $19 +0x1f 0x00 0x11 0x02 # CHECK: ddivu $zero, $16, $17 +0x00 0x68 0x2c 0x44 # CHECK: dmfc1 $12, $f13 +0x00 0x70 0xb0 0x44 # CHECK: dmtc1 $16, $f14 +0x1c 0x00 0xe9 0x02 # CHECK: dmult $23, $9 +0x1d 0x00 0xa6 0x00 # CHECK: dmultu $5, $6 +0xb8 0x04 0x00 0x00 # CHECK: dsll $zero, $zero, 18 +0xb8 0x04 0x14 0x00 # CHECK: dsll $zero, $20, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0xbc 0x04 0x00 0x00 # CHECK: dsll32 $zero, $zero, 18 +0x14 0x00 0x94 0x01 # CHECK: dsllv $zero, $20, $12 +0xbb 0xe2 0x1c 0x00 # CHECK: dsra $gp, $gp, 10 +0xbb 0xe2 0x12 0x00 # CHECK: dsra $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xbf 0xe2 0x1c 0x00 # CHECK: dsra32 $gp, $gp, 10 +0xbf 0xe2 0x12 0x00 # CHECK: dsra32 $gp, $18, 10 +0x17 0xe0 0x72 0x02 # CHECK: dsrav $gp, $18, $19 +0xfa 0x9d 0x13 0x00 # CHECK: dsrl $19, $19, 23 +0xfa 0x9d 0x06 0x00 # CHECK: dsrl $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0xfe 0x9d 0x13 0x00 # CHECK: dsrl32 $19, $19, 23 +0xfe 0x9d 0x06 0x00 # CHECK: dsrl32 $19, $6, 23 +0x16 0x98 0x86 0x02 # CHECK: dsrlv $19, $6, $20 +0x2e 0x38 0xc8 0x02 # CHECK: dsub $7, $22, $8 +0xa4 0x18 0x0e 0x7c # CHECK: dsbh $3, $14 +0x64 0x11 0x1d 0x7c # CHECK: dshd $2, $sp +0x39 0x6c 0x9d 0x62 # CHECK: daddi $sp, $20, 27705 +0x39 0x6c 0xbd 0x63 # CHECK: daddi $sp, $sp, 27705 +0x2f 0x28 0xba 0x00 # CHECK: dsubu $5, $5, $26 +0x5f 0xec 0x6f 0x65 # CHECK: daddiu $15, $11, -5025 +0xea 0x11 0xce 0x65 # CHECK: daddiu $14, $14, 4586 +0x00 0x60 0x7e 0x41 # CHECK: di $fp +0x00 0x60 0x60 0x41 # CHECK: di +0xfa 0x0b 0x21 0x00 # CHECK: drotr $1, $1, 15 +0xfa 0x0b 0x2e 0x00 # CHECK: drotr $1, $14, 15 +0xfe 0x0b 0x21 0x00 # CHECK: drotr32 $1, $1, 15 +0xfe 0x0b 0x2e 0x00 # CHECK: drotr32 $1, $14, 15 +0x56 0x08 0xee 0x01 # CHECK: drotrv $1, $14, $15 +0x20 0x60 0x6e 0x41 # CHECK: ei $14 +0x20 0x60 0x60 0x41 # CHECK: ei +0x8b 0x3e 0x20 0x46 # CHECK: floor.l.d $f26, $f7 +0x0b 0x2b 0x00 0x46 # CHECK: floor.l.s $f12, $f5 +0x0f 0x73 0x20 0x46 # CHECK: floor.w.d $f12, $f14 +0x8f 0x39 0x00 0x46 # CHECK: floor.w.s $f6, $f7 +0x84 0x61 0x33 0x7d # CHECK: ins $19, $9, 6, 7 +0x4c 0x01 0x00 0x08 # CHECK: j 1328 +0x4c 0x01 0x00 0x0c # CHECK: jal 1328 +0x4c 0x01 0x00 0x74 # CHECK: jalx 1328 +0x09 0xf8 0xe0 0x00 # CHECK: jalr $7 +0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 +0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0x08 0x00 0xe0 0x00 # CHECK: jr $7 +0xc6 0x23 0xa4 0x80 # CHECK: lb $4, 9158($5) +0x06 0x00 0xa4 0x90 # CHECK: lbu $4, 6($5) +0x1b 0x90 0x3d 0xde # CHECK: ld $sp, -28645($17) +0xb9 0xef 0x18 0x6b # CHECK: ldl $24, -4167($24) +0x6a 0x89 0x8e 0x6e # CHECK: ldr $14, -30358($20) +0xc6 0x23 0xe9 0xd4 # CHECK: ldc1 $f9, 9158($7) +0x01 0x02 0xf7 0x4d # CHECK: ldxc1 $f8, $23($15) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0x0c 0x00 0xa4 0x84 # CHECK: lh $4, 12($5) +0xc6 0x23 0xe9 0xc0 # CHECK: ll $9, 9158($7) +0x70 0xc6 0xe0 0xd3 # CHECK: lld $zero, -14736($ra) +0x67 0x45 0x06 0x3c # CHECK: lui $6, 17767 +0x05 0x00 0xa6 0x4c # CHECK: luxc1 $f0, $6($5) +0x18 0x00 0xa4 0x8c # CHECK: lw $4, 24($5) +0xc6 0x23 0xe9 0xc4 # CHECK: lwc1 $f9, 9158($7) +0x03 0x00 0x82 0x88 # CHECK: lwl $2, 3($4) +0x10 0x00 0xa3 0x98 # CHECK: lwr $3, 16($5) +0x00 0x05 0xcc 0x4d # CHECK: lwxc1 $f20, $12($14) +0xea 0xa1 0x73 0x9c # CHECK: lwu $19, -24086($3) +0x00 0x00 0xc7 0x70 # CHECK: madd $6, $7 +0x60 0x98 0xf9 0x4f # CHECK: madd.s $f1, $f31, $f19, $f25 +0x01 0x00 0xc7 0x70 # CHECK: maddu $6, $7 +0x00 0x38 0x06 0x44 # CHECK: mfc1 $6, $f7 +0x10 0x28 0x00 0x00 # CHECK: mfhi $5 +0x00 0xc0 0x7e 0x44 # CHECK: mfhc1 $fp, $f24 +0x12 0x28 0x00 0x00 # CHECK: mflo $5 +0x86 0x41 0x20 0x46 # CHECK: mov.d $f6, $f8 +0x86 0x39 0x00 0x46 # CHECK: mov.s $f6, $f7 +0x04 0x00 0xc7 0x70 # CHECK: msub $6, $7 +0x28 0x53 0x70 0x4e # CHECK: msub.s $f12, $f19, $f10, $f16 +0x05 0x00 0xc7 0x70 # CHECK: msubu $6, $7 +0x00 0x38 0x86 0x44 # CHECK: mtc1 $6, $f7 +0x11 0x00 0xe0 0x00 # CHECK: mthi $7 +0x00 0x80 0xe0 0x44 # CHECK: mthc1 $zero, $f16 +0x13 0x00 0xe0 0x00 # CHECK: mtlo $7 +0x02 0x62 0x2e 0x46 # CHECK: mul.d $f8, $f12, $f14 +0x42 0x32 0x07 0x46 # CHECK: mul.s $f9, $f6, $f7 +0x02 0x48 0xc7 0x70 # CHECK: mul $9, $6, $7 +0x18 0x00 0x65 0x00 # CHECK: mult $3, $5 +0x19 0x00 0x65 0x00 # CHECK: multu $3, $5 +0x07 0x73 0x20 0x46 # CHECK: neg.d $f12, $f14 +0x87 0x39 0x00 0x46 # CHECK: neg.s $f6, $f7 +0x30 0xc8 0xac 0x4c # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x27 0x48 0xc7 0x00 # CHECK: nor $9, $6, $7 +0x78 0x98 0x04 0x4f # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x25 0x18 0x65 0x00 # CHECK: or $3, $3, $5 +0x67 0x45 0xc9 0x34 # CHECK: ori $9, $6, 17767 +0xc2 0x49 0x26 0x00 # CHECK: rotr $9, $6, 7 +0x46 0x48 0xe6 0x00 # CHECK: rotrv $9, $6, $7 +0x08 0x0b 0x20 0x46 # CHECK: round.l.d $f12, $f1 +0x48 0x2e 0x00 0x46 # CHECK: round.l.s $f25, $f5 +0x0c 0x73 0x20 0x46 # CHECK: round.w.d $f12, $f14 +0x8c 0x39 0x00 0x46 # CHECK: round.w.s $f6, $f7 +0xc6 0x23 0xa4 0xa0 # CHECK: sb $4, 9158($5) +0x06 0x00 0xa4 0xa0 # CHECK: sb $4, 6($5) +0xc6 0x23 0xe9 0xe0 # CHECK: sc $9, 9158($7) +0xcd 0xdf 0xaf 0xf3 # CHECK: scd $15, -8243($sp) +0xcb 0x16 0x4c 0xfd # CHECK: sd $12, 5835($10) +0xc6 0x23 0xe9 0xf4 # CHECK: sdc1 $f9, 9158($7) +0x1f 0xae 0xc7 0xb3 # CHECK: sdl $7, -20961($fp) +0x39 0xb0 0x8b 0xb5 # CHECK: sdr $11, -20423($12) +0x09 0x40 0x24 0x4f # CHECK: sdxc1 $f8, $4($25) +0x20 0x34 0x07 0x7c # CHECK: seb $6, $7 +0x20 0x36 0x07 0x7c # CHECK: seh $6, $7 +0xc6 0x23 0xa4 0xa4 # CHECK: sh $4, 9158($5) +0xc0 0x21 0x03 0x00 # CHECK: sll $4, $3, 7 +0x04 0x10 0xa3 0x00 # CHECK: sllv $2, $3, $5 +0x2a 0x18 0x65 0x00 # CHECK: slt $3, $3, $5 +0x67 0x00 0x63 0x28 # CHECK: slti $3, $3, 103 +0x67 0x00 0x63 0x2c # CHECK: sltiu $3, $3, 103 +0x2b 0x18 0x65 0x00 # CHECK: sltu $3, $3, $5 +0x04 0x73 0x20 0x46 # CHECK: sqrt.d $f12, $f14 +0x84 0x39 0x00 0x46 # CHECK: sqrt.s $f6, $f7 +0xc3 0x21 0x03 0x00 # CHECK: sra $4, $3, 7 +0x07 0x10 0xa3 0x00 # CHECK: srav $2, $3, $5 +0xc2 0x21 0x03 0x00 # CHECK: srl $4, $3, 7 +0x06 0x10 0xa3 0x00 # CHECK: srlv $2, $3, $5 +0x01 0x62 0x2e 0x46 # CHECK: sub.d $f8, $f12, $f14 +0x41 0x32 0x07 0x46 # CHECK: sub.s $f9, $f6, $f7 +0x22 0x48 0xc7 0x00 # CHECK: sub $9, $6, $7 +0x23 0x20 0x65 0x00 # CHECK: subu $4, $3, $5 +0x0d 0x20 0xb8 0x4c # CHECK: suxc1 $f4, $24($5) +0x18 0x00 0xa4 0xac # CHECK: sw $4, 24($5) +0xc6 0x23 0xe9 0xe4 # CHECK: swc1 $f9, 9158($7) +0x10 0x00 0xa4 0xa8 # CHECK: swl $4, 16($5) +0x10 0x00 0xe6 0xb8 # CHECK: swr $6, 16($7) +0x08 0xd0 0xd2 0x4e # CHECK: swxc1 $f26, $18($22) +0xcf 0x01 0x00 0x00 # CHECK: sync 7 +0xc9 0xbd 0x20 0x46 # CHECK: trunc.l.d $f23, $f23 +0x09 0xff 0x00 0x46 # CHECK: trunc.l.s $f28, $f31 +0x0d 0x73 0x20 0x46 # CHECK: trunc.w.d $f12, $f14 +0x8d 0x39 0x00 0x46 # CHECK: trunc.w.s $f6, $f7 +0xa0 0x30 0x07 0x7c # CHECK: wsbh $6, $7 +0x26 0x18 0x65 0x00 # CHECK: xor $3, $3, $5 +0x67 0x45 0xc9 0x38 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5.txt b/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5.txt new file mode 100644 index 0000000..1f52bd1 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5.txt @@ -0,0 +1,234 @@ +# RUN: llvm-mc --disassemble %s -triple=mips64-unknown-linux -mcpu=mips64r5 | FileCheck %s +# CHECK: .text +0x46 0x20 0x73 0x05 # CHECK: abs.d $f12, $f14 +0x46 0x00 0x39 0x85 # CHECK: abs.s $f6, $f7 +0x00 0xc7 0x48 0x20 # CHECK: add $9, $6, $7 +0x46 0x2e 0x62 0x00 # CHECK: add.d $f8, $f12, $f14 +0x46 0x07 0x32 0x40 # CHECK: add.s $f9, $f6, $f7 +0x20 0xc9 0x45 0x67 # CHECK: addi $9, $6, 17767 +0x24 0xc9 0xc5 0x67 # CHECK: addiu $9, $6, -15001 +0x00 0xc7 0x48 0x21 # CHECK: addu $9, $6, $7 +0x00 0xc7 0x48 0x24 # CHECK: and $9, $6, $7 +0x30 0xc9 0x45 0x67 # CHECK: andi $9, $6, 17767 +0x10 0x00 0x01 0x4c # CHECK: b 1332 +0x45 0x00 0x01 0x4c # CHECK: bc1f 1332 +0x45 0x1c 0x01 0x4c # CHECK: bc1f $fcc7, 1332 +0x45 0x01 0x01 0x4c # CHECK: bc1t 1332 +0x45 0x1d 0x01 0x4c # CHECK: bc1t $fcc7, 1332 +0x11 0x26 0x01 0x4c # CHECK: beq $9, $6, 1332 +0x04 0xc1 0x01 0x4c # CHECK: bgez $6, 1332 +0x04 0xd1 0x01 0x4c # CHECK: bgezal $6, 1332 +0x1c 0xc0 0x01 0x4c # CHECK: bgtz $6, 1332 +0x18 0xc0 0x01 0x4c # CHECK: blez $6, 1332 +0x15 0x26 0x01 0x4c # CHECK: bne $9, $6, 1332 +0x46 0x2e 0x60 0x32 # CHECK: c.eq.d $f12, $f14 +0x46 0x07 0x30 0x32 # CHECK: c.eq.s $f6, $f7 +0x46 0x2e 0x60 0x30 # CHECK: c.f.d $f12, $f14 +0x46 0x07 0x30 0x30 # CHECK: c.f.s $f6, $f7 +0x46 0x2e 0x60 0x3e # CHECK: c.le.d $f12, $f14 +0x46 0x07 0x30 0x3e # CHECK: c.le.s $f6, $f7 +0x46 0x2e 0x60 0x3c # CHECK: c.lt.d $f12, $f14 +0x46 0x07 0x30 0x3c # CHECK: c.lt.s $f6, $f7 +0x46 0x2e 0x60 0x3d # CHECK: c.nge.d $f12, $f14 +0x46 0x07 0x30 0x3d # CHECK: c.nge.s $f6, $f7 +0x46 0x2e 0x60 0x3b # CHECK: c.ngl.d $f12, $f14 +0x46 0x07 0x30 0x3b # CHECK: c.ngl.s $f6, $f7 +0x46 0x2e 0x60 0x39 # CHECK: c.ngle.d $f12, $f14 +0x46 0x07 0x30 0x39 # CHECK: c.ngle.s $f6, $f7 +0x46 0x2e 0x60 0x3f # CHECK: c.ngt.d $f12, $f14 +0x46 0x07 0x30 0x3f # CHECK: c.ngt.s $f6, $f7 +0x46 0x2e 0x60 0x36 # CHECK: c.ole.d $f12, $f14 +0x46 0x07 0x30 0x36 # CHECK: c.ole.s $f6, $f7 +0x46 0x2e 0x60 0x34 # CHECK: c.olt.d $f12, $f14 +0x46 0x07 0x30 0x34 # CHECK: c.olt.s $f6, $f7 +0x46 0x2e 0x60 0x3a # CHECK: c.seq.d $f12, $f14 +0x46 0x07 0x30 0x3a # CHECK: c.seq.s $f6, $f7 +0x46 0x2e 0x60 0x38 # CHECK: c.sf.d $f12, $f14 +0x46 0x07 0x30 0x38 # CHECK: c.sf.s $f6, $f7 +0x46 0x2e 0x60 0x33 # CHECK: c.ueq.d $f12, $f14 +0x46 0x12 0xe0 0x33 # CHECK: c.ueq.s $f28, $f18 +0x46 0x2e 0x60 0x37 # CHECK: c.ule.d $f12, $f14 +0x46 0x07 0x30 0x37 # CHECK: c.ule.s $f6, $f7 +0x46 0x2e 0x60 0x35 # CHECK: c.ult.d $f12, $f14 +0x46 0x07 0x30 0x35 # CHECK: c.ult.s $f6, $f7 +0x46 0x2e 0x60 0x31 # CHECK: c.un.d $f12, $f14 +0x46 0x07 0x30 0x31 # CHECK: c.un.s $f6, $f7 +0x46 0x20 0x18 0x4a # CHECK: ceil.l.d $f1, $f3 +0x46 0x00 0x6c 0x8a # CHECK: ceil.l.s $f18, $f13 +0x46 0x20 0x73 0x0e # CHECK: ceil.w.d $f12, $f14 +0x46 0x00 0x39 0x8e # CHECK: ceil.w.s $f6, $f7 +0x44 0x46 0x38 0x00 # CHECK: cfc1 $6, $7 +0x70 0xe6 0x30 0x21 # CHECK: clo $6, $7 +0x70 0xe6 0x30 0x20 # CHECK: clz $6, $7 +0x44 0xc6 0x38 0x00 # CHECK: ctc1 $6, $7 +0x46 0xa0 0x81 0x21 # CHECK: cvt.d.l $f4, $f16 +0x46 0x00 0x39 0xa1 # CHECK: cvt.d.s $f6, $f7 +0x46 0x80 0x73 0x21 # CHECK: cvt.d.w $f12, $f14 +0x46 0x20 0x73 0x25 # CHECK: cvt.l.d $f12, $f14 +0x46 0x00 0x39 0xa5 # CHECK: cvt.l.s $f6, $f7 +0x46 0xa0 0xf3 0xe0 # CHECK: cvt.s.l $f15, $f30 +0x46 0x20 0x73 0x20 # CHECK: cvt.s.d $f12, $f14 +0x46 0x80 0x39 0xa0 # CHECK: cvt.s.w $f6, $f7 +0x46 0x20 0x73 0x24 # CHECK: cvt.w.d $f12, $f14 +0x46 0x00 0x39 0xa4 # CHECK: cvt.w.s $f6, $f7 +0x00 0x3f 0x98 0x2c # CHECK: dadd $19, $1, $ra +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x62 0x9d 0x93 0xc7 # CHECK: daddi $sp, $20, -27705 +0x63 0xbd 0x93 0xc7 # CHECK: daddi $sp, $sp, -27705 +0x66 0xda 0xee 0x16 # CHECK: daddiu $26, $22, -4586 +0x00 0x3f 0x98 0x2d # CHECK: daddu $19, $1, $ra +0x64 0x58 0x46 0x9f # CHECK: daddiu $24, $2, 18079 +0x66 0x73 0x69 0x3f # CHECK: daddiu $19, $19, 26943 +0x70 0xd2 0x90 0x25 # CHECK: dclo $18, $6 +0x73 0x30 0x80 0x24 # CHECK: dclz $16, $25 +0x03 0x53 0x00 0x1e # CHECK: ddiv $zero, $26, $19 +0x02 0x11 0x00 0x1f # CHECK: ddivu $zero, $16, $17 +0x44 0x2c 0x68 0x00 # CHECK: dmfc1 $12, $f13 +0x44 0xb0 0x70 0x00 # CHECK: dmtc1 $16, $f14 +0x02 0xe9 0x00 0x1c # CHECK: dmult $23, $9 +0x00 0xa6 0x00 0x1d # CHECK: dmultu $5, $6 +0x00 0x00 0x04 0xb8 # CHECK: dsll $zero, $zero, 18 +0x00 0x14 0x04 0xb8 # CHECK: dsll $zero, $20, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x00 0x00 0x04 0xbc # CHECK: dsll32 $zero, $zero, 18 +0x01 0x94 0x00 0x14 # CHECK: dsllv $zero, $20, $12 +0x00 0x1c 0xe2 0xbb # CHECK: dsra $gp, $gp, 10 +0x00 0x12 0xe2 0xbb # CHECK: dsra $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x1c 0xe2 0xbf # CHECK: dsra32 $gp, $gp, 10 +0x00 0x12 0xe2 0xbf # CHECK: dsra32 $gp, $18, 10 +0x02 0x72 0xe0 0x17 # CHECK: dsrav $gp, $18, $19 +0x00 0x13 0x9d 0xfa # CHECK: dsrl $19, $19, 23 +0x00 0x06 0x9d 0xfa # CHECK: dsrl $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x00 0x13 0x9d 0xfe # CHECK: dsrl32 $19, $19, 23 +0x00 0x06 0x9d 0xfe # CHECK: dsrl32 $19, $6, 23 +0x02 0x86 0x98 0x16 # CHECK: dsrlv $19, $6, $20 +0x02 0xc8 0x38 0x2e # CHECK: dsub $7, $22, $8 +0x7c 0x0e 0x18 0xa4 # CHECK: dsbh $3, $14 +0x7c 0x1d 0x11 0x64 # CHECK: dshd $2, $sp +0x62 0x9d 0x6c 0x39 # CHECK: daddi $sp, $20, 27705 +0x63 0xbd 0x6c 0x39 # CHECK: daddi $sp, $sp, 27705 +0x00 0xba 0x28 0x2f # CHECK: dsubu $5, $5, $26 +0x65 0x6f 0xec 0x5f # CHECK: daddiu $15, $11, -5025 +0x65 0xce 0x11 0xea # CHECK: daddiu $14, $14, 4586 +0x41 0x7e 0x60 0x00 # CHECK: di $fp +0x41 0x60 0x60 0x00 # CHECK: di +0x00 0x21 0x0b 0xfa # CHECK: drotr $1, $1, 15 +0x00 0x2e 0x0b 0xfa # CHECK: drotr $1, $14, 15 +0x00 0x21 0x0b 0xfe # CHECK: drotr32 $1, $1, 15 +0x00 0x2e 0x0b 0xfe # CHECK: drotr32 $1, $14, 15 +0x01 0xee 0x08 0x56 # CHECK: drotrv $1, $14, $15 +0x41 0x6e 0x60 0x20 # CHECK: ei $14 +0x41 0x60 0x60 0x20 # CHECK: ei +0x46 0x20 0x3e 0x8b # CHECK: floor.l.d $f26, $f7 +0x46 0x00 0x2b 0x0b # CHECK: floor.l.s $f12, $f5 +0x46 0x20 0x73 0x0f # CHECK: floor.w.d $f12, $f14 +0x46 0x00 0x39 0x8f # CHECK: floor.w.s $f6, $f7 +0x7d 0x33 0x61 0x84 # CHECK: ins $19, $9, 6, 7 +0x08 0x00 0x01 0x4c # CHECK: j 1328 +0x0c 0x00 0x01 0x4c # CHECK: jal 1328 +0x74 0x00 0x01 0x4c # CHECK: jalx 1328 +0x00 0xe0 0xf8 0x09 # CHECK: jalr $7 +0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 +0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0x00 0xe0 0x00 0x08 # CHECK: jr $7 +0x80 0xa4 0x23 0xc6 # CHECK: lb $4, 9158($5) +0x90 0xa4 0x00 0x06 # CHECK: lbu $4, 6($5) +0xde 0x3d 0x90 0x1b # CHECK: ld $sp, -28645($17) +0x6b 0x18 0xef 0xb9 # CHECK: ldl $24, -4167($24) +0x6e 0x8e 0x89 0x6a # CHECK: ldr $14, -30358($20) +0xd4 0xe9 0x23 0xc6 # CHECK: ldc1 $f9, 9158($7) +0x4d 0xf7 0x02 0x01 # CHECK: ldxc1 $f8, $23($15) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0x84 0xa4 0x00 0x0c # CHECK: lh $4, 12($5) +0xc0 0xe9 0x23 0xc6 # CHECK: ll $9, 9158($7) +0xd3 0xe0 0xc6 0x70 # CHECK: lld $zero, -14736($ra) +0x3c 0x06 0x45 0x67 # CHECK: lui $6, 17767 +0x4c 0xa6 0x00 0x05 # CHECK: luxc1 $f0, $6($5) +0x8c 0xa4 0x00 0x18 # CHECK: lw $4, 24($5) +0xc4 0xe9 0x23 0xc6 # CHECK: lwc1 $f9, 9158($7) +0x88 0x82 0x00 0x03 # CHECK: lwl $2, 3($4) +0x98 0xa3 0x00 0x10 # CHECK: lwr $3, 16($5) +0x4d 0xcc 0x05 0x00 # CHECK: lwxc1 $f20, $12($14) +0x9c 0x73 0xa1 0xea # CHECK: lwu $19, -24086($3) +0x70 0xc7 0x00 0x00 # CHECK: madd $6, $7 +0x4f 0xf9 0x98 0x60 # CHECK: madd.s $f1, $f31, $f19, $f25 +0x70 0xc7 0x00 0x01 # CHECK: maddu $6, $7 +0x44 0x06 0x38 0x00 # CHECK: mfc1 $6, $f7 +0x00 0x00 0x28 0x10 # CHECK: mfhi $5 +0x44 0x7e 0xc0 0x00 # CHECK: mfhc1 $fp, $f24 +0x00 0x00 0x28 0x12 # CHECK: mflo $5 +0x46 0x20 0x41 0x86 # CHECK: mov.d $f6, $f8 +0x46 0x00 0x39 0x86 # CHECK: mov.s $f6, $f7 +0x70 0xc7 0x00 0x04 # CHECK: msub $6, $7 +0x4e 0x70 0x53 0x28 # CHECK: msub.s $f12, $f19, $f10, $f16 +0x70 0xc7 0x00 0x05 # CHECK: msubu $6, $7 +0x44 0x86 0x38 0x00 # CHECK: mtc1 $6, $f7 +0x00 0xe0 0x00 0x11 # CHECK: mthi $7 +0x44 0xe0 0x80 0x00 # CHECK: mthc1 $zero, $f16 +0x00 0xe0 0x00 0x13 # CHECK: mtlo $7 +0x46 0x2e 0x62 0x02 # CHECK: mul.d $f8, $f12, $f14 +0x46 0x07 0x32 0x42 # CHECK: mul.s $f9, $f6, $f7 +0x70 0xc7 0x48 0x02 # CHECK: mul $9, $6, $7 +0x00 0x65 0x00 0x18 # CHECK: mult $3, $5 +0x00 0x65 0x00 0x19 # CHECK: multu $3, $5 +0x46 0x20 0x73 0x07 # CHECK: neg.d $f12, $f14 +0x46 0x00 0x39 0x87 # CHECK: neg.s $f6, $f7 +0x4c 0xac 0xc8 0x30 # CHECK: nmadd.s $f0, $f5, $f25, $f12 +0x00 0x00 0x00 0x00 # CHECK: nop +0x00 0xc7 0x48 0x27 # CHECK: nor $9, $6, $7 +0x4f 0x04 0x98 0x78 # CHECK: nmsub.s $f1, $f24, $f19, $f4 +0x00 0x65 0x18 0x25 # CHECK: or $3, $3, $5 +0x34 0xc9 0x45 0x67 # CHECK: ori $9, $6, 17767 +0x00 0x26 0x49 0xc2 # CHECK: rotr $9, $6, 7 +0x00 0xe6 0x48 0x46 # CHECK: rotrv $9, $6, $7 +0x46 0x20 0x0b 0x08 # CHECK: round.l.d $f12, $f1 +0x46 0x00 0x2e 0x48 # CHECK: round.l.s $f25, $f5 +0x46 0x20 0x73 0x0c # CHECK: round.w.d $f12, $f14 +0x46 0x00 0x39 0x8c # CHECK: round.w.s $f6, $f7 +0xa0 0xa4 0x23 0xc6 # CHECK: sb $4, 9158($5) +0xa0 0xa4 0x00 0x06 # CHECK: sb $4, 6($5) +0xe0 0xe9 0x23 0xc6 # CHECK: sc $9, 9158($7) +0xf3 0xaf 0xdf 0xcd # CHECK: scd $15, -8243($sp) +0xfd 0x4c 0x16 0xcb # CHECK: sd $12, 5835($10) +0xf4 0xe9 0x23 0xc6 # CHECK: sdc1 $f9, 9158($7) +0xb3 0xc7 0xae 0x1f # CHECK: sdl $7, -20961($fp) +0xb5 0x8b 0xb0 0x39 # CHECK: sdr $11, -20423($12) +0x4f 0x24 0x40 0x09 # CHECK: sdxc1 $f8, $4($25) +0x7c 0x07 0x34 0x20 # CHECK: seb $6, $7 +0x7c 0x07 0x36 0x20 # CHECK: seh $6, $7 +0xa4 0xa4 0x23 0xc6 # CHECK: sh $4, 9158($5) +0x00 0x03 0x21 0xc0 # CHECK: sll $4, $3, 7 +0x00 0xa3 0x10 0x04 # CHECK: sllv $2, $3, $5 +0x00 0x65 0x18 0x2a # CHECK: slt $3, $3, $5 +0x28 0x63 0x00 0x67 # CHECK: slti $3, $3, 103 +0x2c 0x63 0x00 0x67 # CHECK: sltiu $3, $3, 103 +0x00 0x65 0x18 0x2b # CHECK: sltu $3, $3, $5 +0x46 0x20 0x73 0x04 # CHECK: sqrt.d $f12, $f14 +0x46 0x00 0x39 0x84 # CHECK: sqrt.s $f6, $f7 +0x00 0x03 0x21 0xc3 # CHECK: sra $4, $3, 7 +0x00 0xa3 0x10 0x07 # CHECK: srav $2, $3, $5 +0x00 0x03 0x21 0xc2 # CHECK: srl $4, $3, 7 +0x00 0xa3 0x10 0x06 # CHECK: srlv $2, $3, $5 +0x46 0x2e 0x62 0x01 # CHECK: sub.d $f8, $f12, $f14 +0x46 0x07 0x32 0x41 # CHECK: sub.s $f9, $f6, $f7 +0x00 0xc7 0x48 0x22 # CHECK: sub $9, $6, $7 +0x00 0x65 0x20 0x23 # CHECK: subu $4, $3, $5 +0x4c 0xb8 0x20 0x0d # CHECK: suxc1 $f4, $24($5) +0xac 0xa4 0x00 0x18 # CHECK: sw $4, 24($5) +0xe4 0xe9 0x23 0xc6 # CHECK: swc1 $f9, 9158($7) +0xa8 0xa4 0x00 0x10 # CHECK: swl $4, 16($5) +0xb8 0xe6 0x00 0x10 # CHECK: swr $6, 16($7) +0x4e 0xd2 0xd0 0x08 # CHECK: swxc1 $f26, $18($22) +0x00 0x00 0x01 0xcf # CHECK: sync 7 +0x46 0x20 0xbd 0xc9 # CHECK: trunc.l.d $f23, $f23 +0x46 0x00 0xff 0x09 # CHECK: trunc.l.s $f28, $f31 +0x46 0x20 0x73 0x0d # CHECK: trunc.w.d $f12, $f14 +0x46 0x00 0x39 0x8d # CHECK: trunc.w.s $f6, $f7 +0x7c 0x07 0x30 0xa0 # CHECK: wsbh $6, $7 +0x00 0x65 0x18 0x26 # CHECK: xor $3, $3, $5 +0x38 0xc9 0x45 0x67 # CHECK: xori $9, $6, 17767 diff --git a/test/MC/Disassembler/Mips/mips64r5/valid-xfail-mips64r5.txt b/test/MC/Disassembler/Mips/mips64r5/valid-xfail-mips64r5.txt new file mode 100644 index 0000000..b8a98bd --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r5/valid-xfail-mips64r5.txt @@ -0,0 +1,76 @@ +# RUN: llvm-mc %s -triple=mips-unknown-linux -disassemble -mcpu=mips64r5 | FileCheck %s +# XFAIL: * +0x46 0x2f 0x79 0x32 # CHECK: c.eq.d $fcc1, $f15, $f15 +0x46 0x11 0xc5 0x32 # CHECK: c.eq.s $fcc5, $f24, $f17 +0x46 0x35 0x5c 0x30 # CHECK: c.f.d $fcc4, $f11, $f21 +0x46 0x07 0xf4 0x30 # CHECK: c.f.s $fcc4, $f30, $f7 +0x46 0x21 0x94 0x3e # CHECK: c.le.d $fcc4, $f18, $f1 +0x46 0x04 0xc6 0x3e # CHECK: c.le.s $fcc6, $f24, $f4 +0x46 0x23 0x4b 0x3c # CHECK: c.lt.d $fcc3, $f9, $f3 +0x46 0x0e 0x8a 0x3c # CHECK: c.lt.s $fcc2, $f17, $f14 +0x46 0x30 0xad 0x3d # CHECK: c.nge.d $fcc5, $f21, $f16 +0x46 0x08 0x5b 0x3d # CHECK: c.nge.s $fcc3, $f11, $f8 +0x46 0x17 0xfa 0x3b # CHECK: c.ngl.s $fcc2, $f31, $f23 +0x46 0x17 0x92 0x39 # CHECK: c.ngle.s $fcc2, $f18, $f23 +0x46 0x27 0xc4 0x3f # CHECK: c.ngt.d $fcc4, $f24, $f7 +0x46 0x0d 0x45 0x3f # CHECK: c.ngt.s $fcc5, $f8, $f13 +0x46 0x3f 0x82 0x36 # CHECK: c.ole.d $fcc2, $f16, $f31 +0x46 0x14 0x3b 0x36 # CHECK: c.ole.s $fcc3, $f7, $f20 +0x46 0x3c 0x9c 0x34 # CHECK: c.olt.d $fcc4, $f19, $f28 +0x46 0x07 0xa6 0x34 # CHECK: c.olt.s $fcc6, $f20, $f7 +0x46 0x27 0xfc 0x3a # CHECK: c.seq.d $fcc4, $f31, $f7 +0x46 0x19 0x0f 0x3a # CHECK: c.seq.s $fcc7, $f1, $f25 +0x46 0x39 0x6c 0x33 # CHECK: c.ueq.d $fcc4, $f13, $f25 +0x46 0x1e 0x1e 0x33 # CHECK: c.ueq.s $fcc6, $f3, $f30 +0x46 0x32 0xcf 0x37 # CHECK: c.ule.d $fcc7, $f25, $f18 +0x46 0x1e 0xaf 0x37 # CHECK: c.ule.s $fcc7, $f21, $f30 +0x46 0x31 0x36 0x35 # CHECK: c.ult.d $fcc6, $f6, $f17 +0x46 0x0a 0xc7 0x35 # CHECK: c.ult.s $fcc7, $f24, $f10 +0x46 0x38 0xbe 0x31 # CHECK: c.un.d $fcc6, $f23, $f24 +0x46 0x04 0xf1 0x31 # CHECK: c.un.s $fcc1, $f30, $f4 +0x46 0xc0 0x45 0x85 # CHECK: abs.ps $f22, $f8 +0x46 0xcc 0xc6 0x00 # CHECK: add.ps $f24, $f24, $f12 +0x46 0xca 0x04 0x32 # CHECK: c.eq.ps $fcc4, $f0, $f10 +0x46 0xcc 0x66 0x30 # CHECK: c.f.ps $fcc6, $f12, $f12 +0x46 0xd4 0x42 0x3e # CHECK: c.le.ps $fcc2, $f8, $f20 +0x46 0xc4 0x90 0x3c # CHECK: c.lt.ps $f18, $f4 +0x46 0xda 0x10 0x3d # CHECK: c.nge.ps $f2, $f26 +0x46 0xde 0xb0 0x3b # CHECK: c.ngl.ps $f22, $f30 +0x46 0xd4 0x66 0x39 # CHECK: c.ngle.ps $fcc6, $f12, $f20 +0x46 0xc6 0xf6 0x3f # CHECK: c.ngt.ps $fcc6, $f30, $f6 +0x46 0xc8 0xa6 0x36 # CHECK: c.ole.ps $fcc6, $f20, $f8 +0x46 0xd0 0x32 0x34 # CHECK: c.olt.ps $fcc2, $f6, $f16 +0x46 0xce 0xf6 0x3a # CHECK: c.seq.ps $fcc6, $f30, $f14 +0x46 0xc6 0x26 0x38 # CHECK: c.sf.ps $fcc6, $f4, $f6 +0x46 0xdc 0x20 0x33 # CHECK: c.ueq.ps $f4, $f28 +0x46 0xc2 0x86 0x37 # CHECK: c.ule.ps $fcc6, $f16, $f2 +0x46 0xc0 0x76 0x35 # CHECK: c.ult.ps $fcc6, $f14, $f0 +0x46 0xda 0x14 0x31 # CHECK: c.un.ps $fcc4, $f2, $f26 +0x46 0xc0 0x17 0xa8 # CHECK: cvt.s.pl $f30, $f2 +0x46 0xc0 0xd3 0xa0 # CHECK: cvt.s.pu $f14, $f26 +0x4e 0x94 0xd4 0xa1 # CHECK: madd.d $f18, $f20, $f26, $f20 +0x4c 0x42 0x75 0xa6 # CHECK: madd.ps $f22, $f2, $f14, $f2 +0x46 0xc0 0x85 0x86 # CHECK: mov.ps $f22, $f16 +0x46 0xd8 0xe2 0x91 # CHECK: movf.ps $f10, $f28, $fcc6 +0x46 0xd3 0xf7 0x93 # CHECK: movn.ps $f30, $f30, s3 +0x46 0xc9 0xc5 0x11 # CHECK: movt.ps $f20, $f24, $fcc2 +0x46 0xdf 0x84 0x92 # CHECK: movz.ps $f18, $f16, ra +0x4c 0x52 0xf2 0xa9 # CHECK: msub.d $f10, $f2, $f30, $f18 +0x4d 0xd0 0xe3 0x2e # CHECK: msub.ps $f12, $f14, $f28, $f16 +0x46 0xc0 0x64 0x87 # CHECK: neg.ps $f18, $f12 +0x4d 0x54 0x74 0xb1 # CHECK: nmadd.d $f18, $f10, $f14, $f20 +0x4c 0x98 0x46 0xb6 # CHECK: nmadd.ps $f26, $f4, $f8, $f24 +0x4d 0x1e 0x87 0xb9 # CHECK: nmsub.d $f30, $f8, $f16, $f30 +0x4d 0x90 0x71 0xbe # CHECK: nmsub.ps $f6, $f12, $f14, $f16 +0x46 0xde 0x46 0x2c # CHECK: pll.ps $f24, $f8, $f30 +0x46 0xdc 0xd0 0x2d # CHECK: plu.ps $f0, $f26, $f28 +0x46 0xda 0xf2 0x2e # CHECK: pul.ps $f8, $f30, $f26 +0x46 0xc2 0x46 0x2f # CHECK: puu.ps $f24, $f8, $f2 +0x41 0x49 0x98 0x00 # CHECK: rdpgpr s3, t1 +0x46 0x20 0x34 0x95 # CHECK: recip.d $f18, $f6 +0x46 0x00 0xf0 0xd5 # CHECK: recip.s $f3, $f30 +0x02 0xa7 0x68 0x46 # CHECK: rorv t5, a3, s5 +0x46 0x20 0xe0 0x96 # CHECK: rsqrt.d $f2, $f28 +0x46 0x00 0x41 0x16 # CHECK: rsqrt.s $f4, $f8 +0x46 0xda 0x71 0x01 # CHECK: sub.ps $f4, $f14, $f26 +0x41 0xcd 0x00 0x00 # CHECK: wrpgpr zero, t5 diff --git a/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6-el.txt b/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6-el.txt new file mode 100644 index 0000000..b92c793 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6-el.txt @@ -0,0 +1,166 @@ +# RUN: llvm-mc %s -disassemble -triple=mipsel-unknown-linux -mcpu=mips64r6 | FileCheck %s +0x04 0x00 0x42 0x30 # CHECK: andi $2, $2, 4 +0x19 0x00 0x80 0xec # CHECK: addiupc $4, 100 +0x0a 0x00 0x29 0x25 # CHECK: addiu $9, $9, 10 +0xa0 0x22 0x43 0x7c # CHECK: align $4, $2, $3, 2 +0x38 0x00 0x7f 0xec # CHECK: aluipc $3, 56 +0xe9 0xff 0x62 0x3c # CHECK: aui $3, $2, -23 +0xff 0xff 0x7e 0xec # CHECK: auipc $3, -1 +0x9b 0x14 0x11 0x04 # CHECK: bal 21104 +0xb8 0x96 0x37 0xe8 # CHECK: balc 14572256 +0xb8 0x96 0x37 0xc8 # CHECK: bc 14572256 +0x01 0x00 0x20 0x45 # CHECK: bc1eqz $f0, 8 +0x01 0x00 0x3f 0x45 # CHECK: bc1eqz $f31, 8 +0x01 0x00 0xa0 0x45 # CHECK: bc1nez $f0, 8 +0x01 0x00 0xbf 0x45 # CHECK: bc1nez $f31, 8 +0x02 0x00 0x20 0x49 # CHECK: bc2eqz $0, 12 +0x02 0x00 0x3f 0x49 # CHECK: bc2eqz $31, 12 +0x02 0x00 0xa0 0x49 # CHECK: bc2nez $0, 12 +0x02 0x00 0xbf 0x49 # CHECK: bc2nez $31, 12 +0x40 0x00 0xa6 0x20 # CHECK: beqc $5, $6, 256 +0x4d 0x01 0x02 0x20 # CHECK: beqzalc $2, 1332 +0x40 0x00 0xa6 0x60 # CHECK: bnec $5, $6, 256 +0x4d 0x01 0x02 0x60 # CHECK: bnezalc $2, 1332 +0x90 0x46 0xa0 0xd8 # CHECK: beqzc $5, 72256 +0x40 0x00 0x43 0x58 # CHECK: bgec $2, $3, 256 +0x40 0x00 0x43 0x18 # CHECK: bgeuc $2, $3, 256 +0x4d 0x01 0x42 0x18 # CHECK: bgezalc $2, 1332 +0x90 0x46 0xa0 0xf8 # CHECK: bnezc $5, 72256 +0x40 0x00 0xa5 0x5c # CHECK: bltzc $5, 256 +0x40 0x00 0xa5 0x58 # CHECK: bgezc $5, 256 +0x4d 0x01 0x02 0x1c # CHECK: bgtzalc $2, 1332 +0x40 0x00 0x05 0x58 # CHECK: blezc $5, 256 +0x4d 0x01 0x42 0x1c # CHECK: bltzalc $2, 1332 +0x40 0x00 0x05 0x5c # CHECK: bgtzc $5, 256 +0x20 0x20 0x02 0x7c # CHECK: bitswap $4, $2 +0x4d 0x01 0x02 0x18 # CHECK: blezalc $2, 1332 +0x40 0x00 0xa6 0x5c # CHECK: bltc $5, $6, 256 +0x40 0x00 0xa6 0x1c # CHECK: bltuc $5, $6, 256 +0x01 0x00 0x00 0x60 # CHECK: bnvc $zero, $zero, 4 +0x01 0x00 0x40 0x60 # CHECK: bnvc $2, $zero, 4 +0x01 0x00 0x82 0x60 # CHECK: bnvc $4, $2, 4 +0x01 0x00 0x00 0x20 # CHECK: bovc $zero, $zero, 4 +0x01 0x00 0x40 0x20 # CHECK: bovc $2, $zero, 4 +0x01 0x00 0x82 0x20 # CHECK: bovc $4, $2, 4 +0x80 0x18 0x84 0x46 # CHECK: cmp.af.s $f2, $f3, $f4 +0x80 0x18 0xa4 0x46 # CHECK: cmp.af.d $f2, $f3, $f4 +0x81 0x18 0x84 0x46 # CHECK: cmp.un.s $f2, $f3, $f4 +0x81 0x18 0xa4 0x46 # CHECK: cmp.un.d $f2, $f3, $f4 +0x82 0x18 0x84 0x46 # CHECK: cmp.eq.s $f2, $f3, $f4 +0x82 0x18 0xa4 0x46 # CHECK: cmp.eq.d $f2, $f3, $f4 +0x83 0x18 0x84 0x46 # CHECK: cmp.ueq.s $f2, $f3, $f4 +0x83 0x18 0xa4 0x46 # CHECK: cmp.ueq.d $f2, $f3, $f4 +0x84 0x18 0x84 0x46 # CHECK: cmp.lt.s $f2, $f3, $f4 +0x84 0x18 0xa4 0x46 # CHECK: cmp.lt.d $f2, $f3, $f4 +0x85 0x18 0x84 0x46 # CHECK: cmp.ult.s $f2, $f3, $f4 +0x85 0x18 0xa4 0x46 # CHECK: cmp.ult.d $f2, $f3, $f4 +0x86 0x18 0x84 0x46 # CHECK: cmp.le.s $f2, $f3, $f4 +0x86 0x18 0xa4 0x46 # CHECK: cmp.le.d $f2, $f3, $f4 +0x87 0x18 0x84 0x46 # CHECK: cmp.ule.s $f2, $f3, $f4 +0x87 0x18 0xa4 0x46 # CHECK: cmp.ule.d $f2, $f3, $f4 +0x88 0x18 0x84 0x46 # CHECK: cmp.saf.s $f2, $f3, $f4 +0x88 0x18 0xa4 0x46 # CHECK: cmp.saf.d $f2, $f3, $f4 +0x89 0x18 0x84 0x46 # CHECK: cmp.sun.s $f2, $f3, $f4 +0x89 0x18 0xa4 0x46 # CHECK: cmp.sun.d $f2, $f3, $f4 +0x8a 0x18 0x84 0x46 # CHECK: cmp.seq.s $f2, $f3, $f4 +0x8a 0x18 0xa4 0x46 # CHECK: cmp.seq.d $f2, $f3, $f4 +0x8b 0x18 0x84 0x46 # CHECK: cmp.sueq.s $f2, $f3, $f4 +0x8b 0x18 0xa4 0x46 # CHECK: cmp.sueq.d $f2, $f3, $f4 +0x8c 0x18 0x84 0x46 # CHECK: cmp.slt.s $f2, $f3, $f4 +0x8c 0x18 0xa4 0x46 # CHECK: cmp.slt.d $f2, $f3, $f4 +0x8d 0x18 0x84 0x46 # CHECK: cmp.sult.s $f2, $f3, $f4 +0x8d 0x18 0xa4 0x46 # CHECK: cmp.sult.d $f2, $f3, $f4 +0x8e 0x18 0x84 0x46 # CHECK: cmp.sle.s $f2, $f3, $f4 +0x8e 0x18 0xa4 0x46 # CHECK: cmp.sle.d $f2, $f3, $f4 +0x8f 0x18 0x84 0x46 # CHECK: cmp.sule.s $f2, $f3, $f4 +0x8f 0x18 0xa4 0x46 # CHECK: cmp.sule.d $f2, $f3, $f4 +0x64 0x23 0x43 0x7c # CHECK: dalign $4, $2, $3, 5 +0x34 0x12 0x62 0x74 # CHECK: daui $3, $2, 4660 +0x78 0x56 0x66 0x04 # CHECK: dahi $3, 22136 +0x24 0x20 0x02 0x7c # CHECK: dbitswap $4, $2 +0x00 0x60 0x7e 0x41 # CHECK: di $fp +0x00 0x60 0x60 0x41 # CHECK: di +0x9a 0x10 0x64 0x00 # CHECK: div $2, $3, $4 +0x9b 0x10 0x64 0x00 # CHECK: divu $2, $3, $4 +0x20 0x60 0x6e 0x41 # CHECK: ei $14 +0x20 0x60 0x60 0x41 # CHECK: ei +0xda 0x10 0x64 0x00 # CHECK: mod $2, $3, $4 +0xdb 0x10 0x64 0x00 # CHECK: modu $2, $3, $4 +0x9e 0x10 0x64 0x00 # CHECK: ddiv $2, $3, $4 +0x9f 0x10 0x64 0x00 # CHECK: ddivu $2, $3, $4 +0xde 0x10 0x64 0x00 # CHECK: dmod $2, $3, $4 +0xdf 0x10 0x64 0x00 # CHECK: dmodu $2, $3, $4 +0xc5 0x10 0x64 0x00 # CHECK: lsa $2, $3, $4, 3 +0xd5 0x10 0x64 0x00 # CHECK: dlsa $2, $3, $4, 3 +0x48 0x3c 0x58 0xec # CHECK: ldpc $2, 123456 +0x43 0x00 0x48 0xec # CHECK: lwpc $2, 268 +0x43 0x00 0x50 0xec # CHECK: lwupc $2, 268 +0x98 0x10 0x64 0x00 # CHECK: mul $2, $3, $4 +0xd8 0x10 0x64 0x00 # CHECK: muh $2, $3, $4 +0x99 0x10 0x64 0x00 # CHECK: mulu $2, $3, $4 +0xd9 0x10 0x64 0x00 # CHECK: muhu $2, $3, $4 +0x9c 0x10 0x64 0x00 # CHECK: dmul $2, $3, $4 +0xdc 0x10 0x64 0x00 # CHECK: dmuh $2, $3, $4 +0x9d 0x10 0x64 0x00 # CHECK: dmulu $2, $3, $4 +0xdd 0x10 0x64 0x00 # CHECK: dmuhu $2, $3, $4 +0x98 0x18 0x04 0x46 # CHECK: maddf.s $f2, $f3, $f4 +0x98 0x18 0x24 0x46 # CHECK: maddf.d $f2, $f3, $f4 +0x99 0x18 0x04 0x46 # CHECK: msubf.s $f2, $f3, $f4 +0x99 0x18 0x24 0x46 # CHECK: msubf.d $f2, $f3, $f4 +0x10 0x08 0x22 0x46 # CHECK: sel.d $f0, $f1, $f2 +0x10 0x08 0x02 0x46 # CHECK: sel.s $f0, $f1, $f2 +0x35 0x10 0x64 0x00 # CHECK: seleqz $2, $3, $4 +0x37 0x10 0x64 0x00 # CHECK: selnez $2, $3, $4 +0x1d 0x10 0x04 0x46 # CHECK: max.s $f0, $f2, $f4 +0x1d 0x10 0x24 0x46 # CHECK: max.d $f0, $f2, $f4 +0x1c 0x10 0x04 0x46 # CHECK: min.s $f0, $f2, $f4 +0x1c 0x10 0x24 0x46 # CHECK: min.d $f0, $f2, $f4 +0x1f 0x10 0x04 0x46 # CHECK: maxa.s $f0, $f2, $f4 +0x1f 0x10 0x24 0x46 # CHECK: maxa.d $f0, $f2, $f4 +0x1e 0x10 0x04 0x46 # CHECK: mina.s $f0, $f2, $f4 +0x1e 0x10 0x24 0x46 # CHECK: mina.d $f0, $f2, $f4 +0x04 0x00 0x42 0x34 # CHECK: ori $2, $2, 4 +0x14 0x10 0x04 0x46 # CHECK: seleqz.s $f0, $f2, $f4 +0x14 0x10 0x24 0x46 # CHECK: seleqz.d $f0, $f2, $f4 +0x17 0x10 0x04 0x46 # CHECK: selnez.s $f0, $f2, $f4 +0x17 0x10 0x24 0x46 # CHECK: selnez.d $f0, $f2, $f4 +0x9a 0x20 0x00 0x46 # CHECK: rint.s $f2, $f4 +0x9a 0x20 0x20 0x46 # CHECK: rint.d $f2, $f4 +0x9b 0x20 0x00 0x46 # CHECK: class.s $f2, $f4 +0x9b 0x20 0x20 0x46 # CHECK: class.d $f2, $f4 +0x09 0x04 0x80 0x00 # CHECK: jr.hb $4 +0x09 0xfc 0x80 0x00 # CHECK: jalr.hb $4 +0x09 0x24 0xa0 0x00 # CHECK: jalr.hb $4, $5 +0xb6 0xb3 0x42 0x7e # CHECK: ll $2, -153($18) +0x37 0x38 0xe0 0x7f # CHECK: lld $zero, 112($ra) +0x26 0xec 0x6f 0x7e # CHECK: sc $15, -40($19) +0xa7 0xe6 0xaf 0x7f # CHECK: scd $15, -51($sp) +0x51 0x58 0xa0 0x00 # CHECK: clo $11, $5 +0x50 0xe8 0x80 0x03 # CHECK: clz $sp, $gp +0x53 0x90 0xc0 0x00 # CHECK: dclo $18, $6 +0x52 0x80 0x20 0x03 # CHECK: dclz $16, $25 +0x40 0x00 0x00 0x00 # CHECK: ssnop +0x0e 0x00 0x00 0x00 # CHECK: sdbbp +0x8e 0x08 0x00 0x00 # CHECK: sdbbp 34 +0x0f 0x00 0x00 0x00 # CHECK: sync +0x4f 0x00 0x00 0x00 # CHECK: sync 1 +0x34 0x00 0x03 0x00 # CHECK: teq $zero, $3 +0x34 0x9b 0xa7 0x00 # CHECK: teq $5, $7, 620 +0x30 0x00 0xea 0x00 # CHECK: tge $7, $10 +0x30 0x55 0xb3 0x00 # CHECK: tge $5, $19, 340 +0x31 0x00 0xdc 0x02 # CHECK: tgeu $22, $gp +0xf1 0x5e 0x8e 0x02 # CHECK: tgeu $20, $14, 379 +0x32 0x00 0xed 0x01 # CHECK: tlt $15, $13 +0x72 0x21 0x53 0x00 # CHECK: tlt $2, $19, 133 +0x33 0x00 0x70 0x01 # CHECK: tltu $11, $16 +0x33 0xfe 0x1d 0x02 # CHECK: tltu $16, $sp, 1016 +0x36 0x00 0xd1 0x00 # CHECK: tne $6, $17 +0x76 0xdd 0xe8 0x00 # CHECK: tne $7, $8, 885 +0x43 0x0d 0xc8 0x49 # CHECK: ldc2 $8, -701($1) +0xb7 0x34 0x52 0x49 # CHECK: lwc2 $18, -841($6) +0x75 0x92 0xf4 0x49 # CHECK: sdc2 $20, 629($18) +0x30 0x81 0x79 0x49 # CHECK: swc2 $25, 304($16) +0x00 0x01 0x05 0xf8 # CHECK: jialc $5, 256 +0x00 0x01 0x05 0xd8 # CHECK: jic $5, 256 +0x25 0x04 0xa1 0x7c # CHECK: cache 1, 8($5) +0x35 0x04 0xa1 0x7c # CHECK: pref 1, 8($5) diff --git a/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6.txt b/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6.txt new file mode 100644 index 0000000..debbe50 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6.txt @@ -0,0 +1,166 @@ +# RUN: llvm-mc %s -disassemble -triple=mips-unknown-linux -mcpu=mips64r6 | FileCheck %s +0x30 0x42 0x00 0x04 # CHECK: andi $2, $2, 4 +0xec 0x80 0x00 0x19 # CHECK: addiupc $4, 100 +0x25 0x29 0x00 0x0a # CHECK: addiu $9, $9, 10 +0x7c 0x43 0x22 0xa0 # CHECK: align $4, $2, $3, 2 +0xec 0x7f 0x00 0x38 # CHECK: aluipc $3, 56 +0x3c 0x62 0xff 0xe9 # CHECK: aui $3, $2, -23 +0xec 0x7e 0xff 0xff # CHECK: auipc $3, -1 +0x04 0x11 0x14 0x9b # CHECK: bal 21104 +0xe8 0x37 0x96 0xb8 # CHECK: balc 14572256 +0xc8 0x37 0x96 0xb8 # CHECK: bc 14572256 +0x45 0x20 0x00 0x01 # CHECK: bc1eqz $f0, 8 +0x45 0x3f 0x00 0x01 # CHECK: bc1eqz $f31, 8 +0x45 0xa0 0x00 0x01 # CHECK: bc1nez $f0, 8 +0x45 0xbf 0x00 0x01 # CHECK: bc1nez $f31, 8 +0x49 0x20 0x00 0x02 # CHECK: bc2eqz $0, 12 +0x49 0x3f 0x00 0x02 # CHECK: bc2eqz $31, 12 +0x49 0xa0 0x00 0x02 # CHECK: bc2nez $0, 12 +0x49 0xbf 0x00 0x02 # CHECK: bc2nez $31, 12 +0x20 0xa6 0x00 0x40 # CHECK: beqc $5, $6, 256 +0x20 0x02 0x01 0x4d # CHECK: beqzalc $2, 1332 +0x60 0xa6 0x00 0x40 # CHECK: bnec $5, $6, 256 +0x60 0x02 0x01 0x4d # CHECK: bnezalc $2, 1332 +0xd8 0xa0 0x46 0x90 # CHECK: beqzc $5, 72256 +0x58 0x43 0x00 0x40 # CHECK: bgec $2, $3, 256 +0x18 0x43 0x00 0x40 # CHECK: bgeuc $2, $3, 256 +0x18 0x42 0x01 0x4d # CHECK: bgezalc $2, 1332 +0xf8 0xa0 0x46 0x90 # CHECK: bnezc $5, 72256 +0x5c 0xa5 0x00 0x40 # CHECK: bltzc $5, 256 +0x58 0xa5 0x00 0x40 # CHECK: bgezc $5, 256 +0x1c 0x02 0x01 0x4d # CHECK: bgtzalc $2, 1332 +0x58 0x05 0x00 0x40 # CHECK: blezc $5, 256 +0x1c 0x42 0x01 0x4d # CHECK: bltzalc $2, 1332 +0x5c 0x05 0x00 0x40 # CHECK: bgtzc $5, 256 +0x7c 0x02 0x20 0x20 # CHECK: bitswap $4, $2 +0x18 0x02 0x01 0x4d # CHECK: blezalc $2, 1332 +0x5c 0xa6 0x00 0x40 # CHECK: bltc $5, $6, 256 +0x1c 0xa6 0x00 0x40 # CHECK: bltuc $5, $6, 256 +0x60 0x00 0x00 0x01 # CHECK: bnvc $zero, $zero, 4 +0x60 0x40 0x00 0x01 # CHECK: bnvc $2, $zero, 4 +0x60 0x82 0x00 0x01 # CHECK: bnvc $4, $2, 4 +0x20 0x00 0x00 0x01 # CHECK: bovc $zero, $zero, 4 +0x20 0x40 0x00 0x01 # CHECK: bovc $2, $zero, 4 +0x20 0x82 0x00 0x01 # CHECK: bovc $4, $2, 4 +0x46 0x84 0x18 0x80 # CHECK: cmp.af.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x80 # CHECK: cmp.af.d $f2, $f3, $f4 +0x46 0x84 0x18 0x81 # CHECK: cmp.un.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x81 # CHECK: cmp.un.d $f2, $f3, $f4 +0x46 0x84 0x18 0x82 # CHECK: cmp.eq.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x82 # CHECK: cmp.eq.d $f2, $f3, $f4 +0x46 0x84 0x18 0x83 # CHECK: cmp.ueq.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x83 # CHECK: cmp.ueq.d $f2, $f3, $f4 +0x46 0x84 0x18 0x84 # CHECK: cmp.lt.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x84 # CHECK: cmp.lt.d $f2, $f3, $f4 +0x46 0x84 0x18 0x85 # CHECK: cmp.ult.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x85 # CHECK: cmp.ult.d $f2, $f3, $f4 +0x46 0x84 0x18 0x86 # CHECK: cmp.le.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x86 # CHECK: cmp.le.d $f2, $f3, $f4 +0x46 0x84 0x18 0x87 # CHECK: cmp.ule.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x87 # CHECK: cmp.ule.d $f2, $f3, $f4 +0x46 0x84 0x18 0x88 # CHECK: cmp.saf.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x88 # CHECK: cmp.saf.d $f2, $f3, $f4 +0x46 0x84 0x18 0x89 # CHECK: cmp.sun.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x89 # CHECK: cmp.sun.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8a # CHECK: cmp.seq.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8a # CHECK: cmp.seq.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8b # CHECK: cmp.sueq.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8b # CHECK: cmp.sueq.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8c # CHECK: cmp.slt.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8c # CHECK: cmp.slt.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8d # CHECK: cmp.sult.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8d # CHECK: cmp.sult.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8e # CHECK: cmp.sle.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8e # CHECK: cmp.sle.d $f2, $f3, $f4 +0x46 0x84 0x18 0x8f # CHECK: cmp.sule.s $f2, $f3, $f4 +0x46 0xa4 0x18 0x8f # CHECK: cmp.sule.d $f2, $f3, $f4 +0x7c 0x43 0x23 0x64 # CHECK: dalign $4, $2, $3, 5 +0x74 0x62 0x12 0x34 # CHECK: daui $3, $2, 4660 +0x04 0x66 0x56 0x78 # CHECK: dahi $3, 22136 +0x7c 0x02 0x20 0x24 # CHECK: dbitswap $4, $2 +0x41 0x7e 0x60 0x00 # CHECK: di $fp +0x41 0x60 0x60 0x00 # CHECK: di +0x00 0x64 0x10 0x9a # CHECK: div $2, $3, $4 +0x00 0x64 0x10 0x9b # CHECK: divu $2, $3, $4 +0x41 0x6e 0x60 0x20 # CHECK: ei $14 +0x41 0x60 0x60 0x20 # CHECK: ei +0x00 0x64 0x10 0xda # CHECK: mod $2, $3, $4 +0x00 0x64 0x10 0xdb # CHECK: modu $2, $3, $4 +0x00 0x64 0x10 0x9e # CHECK: ddiv $2, $3, $4 +0x00 0x64 0x10 0x9f # CHECK: ddivu $2, $3, $4 +0x00 0x64 0x10 0xde # CHECK: dmod $2, $3, $4 +0x00 0x64 0x10 0xdf # CHECK: dmodu $2, $3, $4 +0x00 0x64 0x10 0xc5 # CHECK: lsa $2, $3, $4, 3 +0x00 0x64 0x10 0xd5 # CHECK: dlsa $2, $3, $4, 3 +0xec 0x58 0x3c 0x48 # CHECK: ldpc $2, 123456 +0xec 0x48 0x00 0x43 # CHECK: lwpc $2, 268 +0xec 0x50 0x00 0x43 # CHECK: lwupc $2, 268 +0x00 0x64 0x10 0x98 # CHECK: mul $2, $3, $4 +0x00 0x64 0x10 0xd8 # CHECK: muh $2, $3, $4 +0x00 0x64 0x10 0x99 # CHECK: mulu $2, $3, $4 +0x00 0x64 0x10 0xd9 # CHECK: muhu $2, $3, $4 +0x00 0x64 0x10 0x9c # CHECK: dmul $2, $3, $4 +0x00 0x64 0x10 0xdc # CHECK: dmuh $2, $3, $4 +0x00 0x64 0x10 0x9d # CHECK: dmulu $2, $3, $4 +0x00 0x64 0x10 0xdd # CHECK: dmuhu $2, $3, $4 +0x46 0x04 0x18 0x98 # CHECK: maddf.s $f2, $f3, $f4 +0x46 0x24 0x18 0x98 # CHECK: maddf.d $f2, $f3, $f4 +0x46 0x04 0x18 0x99 # CHECK: msubf.s $f2, $f3, $f4 +0x46 0x24 0x18 0x99 # CHECK: msubf.d $f2, $f3, $f4 +0x46 0x22 0x08 0x10 # CHECK: sel.d $f0, $f1, $f2 +0x46 0x02 0x08 0x10 # CHECK: sel.s $f0, $f1, $f2 +0x00 0x64 0x10 0x35 # CHECK: seleqz $2, $3, $4 +0x00 0x64 0x10 0x37 # CHECK: selnez $2, $3, $4 +0x46 0x04 0x10 0x1d # CHECK: max.s $f0, $f2, $f4 +0x46 0x24 0x10 0x1d # CHECK: max.d $f0, $f2, $f4 +0x46 0x04 0x10 0x1c # CHECK: min.s $f0, $f2, $f4 +0x46 0x24 0x10 0x1c # CHECK: min.d $f0, $f2, $f4 +0x46 0x04 0x10 0x1f # CHECK: maxa.s $f0, $f2, $f4 +0x46 0x24 0x10 0x1f # CHECK: maxa.d $f0, $f2, $f4 +0x46 0x04 0x10 0x1e # CHECK: mina.s $f0, $f2, $f4 +0x46 0x24 0x10 0x1e # CHECK: mina.d $f0, $f2, $f4 +0x34 0x42 0x00 0x04 # CHECK: ori $2, $2, 4 +0x46 0x04 0x10 0x14 # CHECK: seleqz.s $f0, $f2, $f4 +0x46 0x24 0x10 0x14 # CHECK: seleqz.d $f0, $f2, $f4 +0x46 0x04 0x10 0x17 # CHECK: selnez.s $f0, $f2, $f4 +0x46 0x24 0x10 0x17 # CHECK: selnez.d $f0, $f2, $f4 +0x46 0x00 0x20 0x9a # CHECK: rint.s $f2, $f4 +0x46 0x20 0x20 0x9a # CHECK: rint.d $f2, $f4 +0x46 0x00 0x20 0x9b # CHECK: class.s $f2, $f4 +0x46 0x20 0x20 0x9b # CHECK: class.d $f2, $f4 +0x00 0x80 0x04 0x09 # CHECK: jr.hb $4 +0x00 0x80 0xfc 0x09 # CHECK: jalr.hb $4 +0x00 0xa0 0x24 0x09 # CHECK: jalr.hb $4, $5 +0x7e 0x42 0xb3 0xb6 # CHECK: ll $2, -153($18) +0x7f 0xe0 0x38 0x37 # CHECK: lld $zero, 112($ra) +0x7e 0x6f 0xec 0x26 # CHECK: sc $15, -40($19) +0x7f 0xaf 0xe6 0xa7 # CHECK: scd $15, -51($sp) +0x00 0xa0 0x58 0x51 # CHECK: clo $11, $5 +0x03 0x80 0xe8 0x50 # CHECK: clz $sp, $gp +0x00 0xc0 0x90 0x53 # CHECK: dclo $18, $6 +0x03 0x20 0x80 0x52 # CHECK: dclz $16, $25 +0x00 0x00 0x00 0x40 # CHECK: ssnop +0x00 0x00 0x00 0x0e # CHECK: sdbbp +0x00 0x00 0x08 0x8e # CHECK: sdbbp 34 +0x00 0x00 0x00 0x0f # CHECK: sync +0x00 0x00 0x00 0x4f # CHECK: sync 1 +0x00 0x03 0x00 0x34 # CHECK: teq $zero, $3 +0x00 0xa7 0x9b 0x34 # CHECK: teq $5, $7, 620 +0x00 0xea 0x00 0x30 # CHECK: tge $7, $10 +0x00 0xb3 0x55 0x30 # CHECK: tge $5, $19, 340 +0x02 0xdc 0x00 0x31 # CHECK: tgeu $22, $gp +0x02 0x8e 0x5e 0xf1 # CHECK: tgeu $20, $14, 379 +0x01 0xed 0x00 0x32 # CHECK: tlt $15, $13 +0x00 0x53 0x21 0x72 # CHECK: tlt $2, $19, 133 +0x01 0x70 0x00 0x33 # CHECK: tltu $11, $16 +0x02 0x1d 0xfe 0x33 # CHECK: tltu $16, $sp, 1016 +0x00 0xd1 0x00 0x36 # CHECK: tne $6, $17 +0x00 0xe8 0xdd 0x76 # CHECK: tne $7, $8, 885 +0x49 0xc8 0x0d 0x43 # CHECK: ldc2 $8, -701($1) +0x49 0x52 0x34 0xb7 # CHECK: lwc2 $18, -841($6) +0x49 0xf4 0x92 0x75 # CHECK: sdc2 $20, 629($18) +0x49 0x79 0x81 0x30 # CHECK: swc2 $25, 304($16) +0xf8 0x05 0x01 0x00 # CHECK: jialc $5, 256 +0xd8 0x05 0x01 0x00 # CHECK: jic $5, 256 +0x7c 0xa1 0x04 0x25 # CHECK: cache 1, 8($5) +0x7c 0xa1 0x04 0x35 # CHECK: pref 1, 8($5) diff --git a/test/MC/Disassembler/Mips/mips64r6/valid-xfail-mips64r6.txt b/test/MC/Disassembler/Mips/mips64r6/valid-xfail-mips64r6.txt new file mode 100644 index 0000000..8ca8b81 --- /dev/null +++ b/test/MC/Disassembler/Mips/mips64r6/valid-xfail-mips64r6.txt @@ -0,0 +1,20 @@ +# Instructions that should be valid but currently fail for known reasons (e.g. +# they aren't implemented yet). +# +# RUN: llvm-mc %s -disassemble -triple=mips-unknown-linux -mcpu=mips64r6 | FileCheck %s +# XFAIL: * +0x20 0x40 0x00 0x01 # CHECK: bovc $0, $2, 4 +0x20 0x82 0x00 0x01 # CHECK: bovc $2, $4, 4 +0x60 0x40 0x00 0x01 # CHECK: bnvc $0, $2, 4 +0x60 0x82 0x00 0x01 # CHECK: bnvc $2, $4, 4 +0x20 0xc0 0x00 0x40 # CHECK: beqc $6, $zero, 256 +0x20 0xa0 0x00 0x40 # CHECK: beqc $5, $zero, 256 +0x20 0xa6 0x00 0x40 # CHECK: beqc $5, $6, 256 +0x60 0xc0 0x00 0x40 # CHECK: bnec $6, $zero, 256 +0x60 0xa0 0x00 0x40 # CHECK: bnec $5, $zero, 256 +0x60 0xa6 0x00 0x40 # CHECK: bnec $5, $6, 256 +0x64 0x58 0x46 0x9f # CHECK: daddiu $24, $2, 18079 +0x66 0x73 0x69 0x3f # CHECK: daddiu $19, $19, 26943 +0x65 0x6f 0xec 0x5f # CHECK: daddiu $15, $11, -5025 +0x65 0xce 0x11 0xea # CHECK: daddiu $14, $14, 4586 +0x04 0x7e 0xab 0xcd # CHECK: dati $3, 43981 diff --git a/test/MC/Disassembler/PowerPC/ppc64-encoding-ext.txt b/test/MC/Disassembler/PowerPC/ppc64-encoding-ext.txt index 3c2f935..4f10c74 100644 --- a/test/MC/Disassembler/PowerPC/ppc64-encoding-ext.txt +++ b/test/MC/Disassembler/PowerPC/ppc64-encoding-ext.txt @@ -2274,3 +2274,24 @@ # CHECK: rfid 0x4c 0x00 0x00 0x24 + +# CHECK: lbzcix 21, 5, 7 +0x7e 0xa5 0x3e 0xaa +# CHECK: lhzcix 21, 5, 7 +0x7e 0xa5 0x3e 0x6a +# CHECK: lwzcix 21, 5, 7 +0x7e 0xa5 0x3e 0x2a +# CHECK: ldcix 21, 5, 7 +0x7e 0xa5 0x3e 0xea +# CHECK: stbcix 21, 5, 7 +0x7e 0xa5 0x3f 0xaa +# CHECK: sthcix 21, 5, 7 +0x7e 0xa5 0x3f 0x6a +# CHECK: stwcix 21, 5, 7 +0x7e 0xa5 0x3f 0x2a +# CHECK: stdcix 21, 5, 7 +0x7e 0xa5 0x3f 0xea + +# CHECK: attn +0x00 0x00 0x02 0x00 + diff --git a/test/MC/Disassembler/PowerPC/ppc64-encoding-fp.txt b/test/MC/Disassembler/PowerPC/ppc64-encoding-fp.txt index 1c01c9d..0487e3f 100644 --- a/test/MC/Disassembler/PowerPC/ppc64-encoding-fp.txt +++ b/test/MC/Disassembler/PowerPC/ppc64-encoding-fp.txt @@ -321,6 +321,24 @@ # CHECK: mffs 2 0xfc 0x40 0x04 0x8e +# CHECK: mffs. 7 +0xfc 0xe0 0x04 0x8f + +# CHECK: mcrfs 4, 5 +0xfe 0x14 0x00 0x80 + +# CHECK: mtfsfi 5, 2, 1 +0xfe 0x81 0x21 0x0c + +# CHECK: mtfsfi. 5, 2, 1 +0xfe 0x81 0x21 0x0d + +# CHECK: mtfsf 127, 8, 1, 1 +0xfe 0xff 0x45 0x8e + +# CHECK: mtfsf. 125, 8, 1, 1 +0xfe 0xfb 0x45 0x8f + # CHECK: mtfsb0 31 0xff 0xe0 0x00 0x8c diff --git a/test/MC/Disassembler/PowerPC/ppc64-encoding-vmx.txt b/test/MC/Disassembler/PowerPC/ppc64-encoding-vmx.txt index 3896bf7..fe62fdf 100644 --- a/test/MC/Disassembler/PowerPC/ppc64-encoding-vmx.txt +++ b/test/MC/Disassembler/PowerPC/ppc64-encoding-vmx.txt @@ -378,6 +378,15 @@ # CHECK: vandc 2, 3, 4 0x10 0x43 0x24 0x44 +# CHECK: veqv 2, 3, 4 +0x10 0x43 0x26 0x84 + +# CHECK: vnand 2, 3, 4 +0x10 0x43 0x25 0x84 + +# CHECK: vorc 2, 3, 4 +0x10 0x43 0x25 0x44 + # CHECK: vnor 2, 3, 4 0x10 0x43 0x25 0x04 @@ -501,6 +510,30 @@ # CHECK: vrsqrtefp 2, 3 0x10 0x40 0x19 0x4a +# CHECK: vclzb 2, 3 +0x10 0x40 0x1f 0x02 + +# CHECK: vclzh 2, 3 +0x10 0x40 0x1f 0x42 + +# CHECK: vclzw 2, 3 +0x10 0x40 0x1f 0x82 + +# CHECK: vclzd 2, 3 +0x10 0x40 0x1f 0xc2 + +# CHECK: vpopcntb 2, 3 +0x10 0x40 0x1f 0x03 + +# CHECK: vpopcnth 2, 3 +0x10 0x40 0x1f 0x43 + +# CHECK: vpopcntw 2, 3 +0x10 0x40 0x1f 0x83 + +# CHECK: vpopcntd 2, 3 +0x10 0x40 0x1f 0xc3 + # CHECK: mtvscr 2 0x10 0x00 0x16 0x44 diff --git a/test/MC/Disassembler/PowerPC/ppc64-encoding.txt b/test/MC/Disassembler/PowerPC/ppc64-encoding.txt index 2e2e7c1..e99d49b 100644 --- a/test/MC/Disassembler/PowerPC/ppc64-encoding.txt +++ b/test/MC/Disassembler/PowerPC/ppc64-encoding.txt @@ -499,6 +499,9 @@ # CHECK: popcntd 2, 3 0x7c 0x62 0x03 0xf4 +# CHECK: cmpb 7, 21, 4 +0x7e 0xa7 0x23 0xf8 + # CHECK: rlwinm 2, 3, 4, 5, 6 0x54 0x62 0x21 0x4c diff --git a/test/MC/Disassembler/PowerPC/qpx.txt b/test/MC/Disassembler/PowerPC/qpx.txt new file mode 100644 index 0000000..b53bb4c --- /dev/null +++ b/test/MC/Disassembler/PowerPC/qpx.txt @@ -0,0 +1,383 @@ +# RUN: llvm-mc --disassemble %s -triple powerpc64-bgq-linux -mcpu=a2q | FileCheck %s + +# CHECK: qvfabs 3, 5 +0x10 0x60 0x2a 0x10 + +# CHECK: qvfadd 3, 4, 5 +0x10 0x64 0x28 0x2a + +# CHECK: qvfadds 3, 4, 5 +0x00 0x64 0x28 0x2a + +# FIXME: decode as qvfandc 3, 4, 5 +# CHECK: qvflogical 3, 4, 5, 4 +0x10 0x64 0x2a 0x08 + +# FIXME: decode as qvfand 3, 4, 5 +# CHECK: qvflogical 3, 4, 5, 1 +0x10 0x64 0x28 0x88 + +# CHECK: qvfcfid 3, 5 +0x10 0x60 0x2e 0x9c + +# CHECK: qvfcfids 3, 5 +0x00 0x60 0x2e 0x9c + +# CHECK: qvfcfidu 3, 5 +0x10 0x60 0x2f 0x9c + +# CHECK: qvfcfidus 3, 5 +0x00 0x60 0x2f 0x9c + +# FIXME: decode as qvfclr 3 +# CHECK: qvflogical 3, 3, 3, 0 +0x10 0x63 0x18 0x08 + +# CHECK: qvfcpsgn 3, 4, 5 +0x10 0x64 0x28 0x10 + +# FIXME: decode as qvfctfb 3, 4 +# CHECK: qvflogical 3, 4, 4, 5 +0x10 0x64 0x22 0x88 + +# CHECK: qvfctid 3, 5 +0x10 0x60 0x2e 0x5c + +# CHECK: qvfctidu 3, 5 +0x10 0x60 0x2f 0x5c + +# CHECK: qvfctiduz 3, 5 +0x10 0x60 0x2f 0x5e + +# CHECK: qvfctidz 3, 5 +0x10 0x60 0x2e 0x5e + +# CHECK: qvfctiw 3, 5 +0x10 0x60 0x28 0x1c + +# CHECK: qvfctiwu 3, 5 +0x10 0x60 0x29 0x1c + +# CHECK: qvfctiwuz 3, 5 +0x10 0x60 0x29 0x1e + +# CHECK: qvfctiwz 3, 5 +0x10 0x60 0x28 0x1e + +# FIXME: decode as qvfequ 3, 4, 5 +# CHECK: qvflogical 3, 4, 5, 9 +0x10 0x64 0x2c 0x88 + +# CHECK: qvflogical 3, 4, 5, 12 +0x10 0x64 0x2e 0x08 + +# CHECK: qvfmadd 3, 4, 6, 5 +0x10 0x64 0x29 0xba + +# CHECK: qvfmadds 3, 4, 6, 5 +0x00 0x64 0x29 0xba + +# CHECK: qvfmr 3, 5 +0x10 0x60 0x28 0x90 + +# CHECK: qvfmsub 3, 4, 6, 5 +0x10 0x64 0x29 0xb8 + +# CHECK: qvfmsubs 3, 4, 6, 5 +0x00 0x64 0x29 0xb8 + +# CHECK: qvfmul 3, 4, 6 +0x10 0x64 0x01 0xb2 + +# CHECK: qvfmuls 3, 4, 6 +0x00 0x64 0x01 0xb2 + +# CHECK: qvfnabs 3, 5 +0x10 0x60 0x29 0x10 + +# FIXME: decode as qvfnand 3, 4, 5 +# CHECK: qvflogical 3, 4, 5, 14 +0x10 0x64 0x2f 0x08 + +# CHECK: qvfneg 3, 5 +0x10 0x60 0x28 0x50 + +# CHECK: qvfnmadd 3, 4, 6, 5 +0x10 0x64 0x29 0xbe + +# CHECK: qvfnmadds 3, 4, 6, 5 +0x00 0x64 0x29 0xbe + +# CHECK: qvfnmsub 3, 4, 6, 5 +0x10 0x64 0x29 0xbc + +# CHECK: qvfnmsubs 3, 4, 6, 5 +0x00 0x64 0x29 0xbc + +# FIXME: decode as qvfnor 3, 4, 5 +# CHECK: qvflogical 3, 4, 5, 8 +0x10 0x64 0x2c 0x08 + +# FIXME: decode as qvfnot 3, 4 +# CHECK: qvflogical 3, 4, 4, 10 +0x10 0x64 0x25 0x08 + +# FIXME: decode as qvforc 3, 4, 5 +# CHECK: qvflogical 3, 4, 5, 13 +0x10 0x64 0x2e 0x88 + +# FIXME: decode as qvfor 3, 4, 5 +# CHECK: qvflogical 3, 4, 5, 7 +0x10 0x64 0x2b 0x88 + +# CHECK: qvfperm 3, 4, 5, 6 +0x10 0x64 0x29 0x8c + +# CHECK: qvfre 3, 5 +0x10 0x60 0x28 0x30 + +# CHECK: qvfres 3, 5 +0x00 0x60 0x28 0x30 + +# CHECK: qvfrim 3, 5 +0x10 0x60 0x2b 0xd0 + +# CHECK: qvfrin 3, 5 +0x10 0x60 0x2b 0x10 + +# CHECK: qvfrip 3, 5 +0x10 0x60 0x2b 0x90 + +# CHECK: qvfriz 3, 5 +0x10 0x60 0x2b 0x50 + +# CHECK: qvfrsp 3, 5 +0x10 0x60 0x28 0x18 + +# CHECK: qvfrsqrte 3, 5 +0x10 0x60 0x28 0x34 + +# CHECK: qvfrsqrtes 3, 5 +0x00 0x60 0x28 0x34 + +# CHECK: qvfsel 3, 4, 6, 5 +0x10 0x64 0x29 0xae + +# FIXME: decode as qvfset 3 +# CHECK: qvflogical 3, 3, 3, 15 +0x10 0x63 0x1f 0x88 + +# CHECK: qvfsub 3, 4, 5 +0x10 0x64 0x28 0x28 + +# CHECK: qvfsubs 3, 4, 5 +0x00 0x64 0x28 0x28 + +# CHECK: qvfxmadd 3, 4, 6, 5 +0x10 0x64 0x29 0x92 + +# CHECK: qvfxmadds 3, 4, 6, 5 +0x00 0x64 0x29 0x92 + +# CHECK: qvfxmul 3, 4, 6 +0x10 0x64 0x01 0xa2 + +# CHECK: qvfxmuls 3, 4, 6 +0x00 0x64 0x01 0xa2 + +# FIXME: decode as qvfxor 3, 4, 5 +# CHECK: qvflogical 3, 4, 5, 6 +0x10 0x64 0x2b 0x08 + +# CHECK: qvfxxcpnmadd 3, 4, 6, 5 +0x10 0x64 0x29 0x86 + +# CHECK: qvfxxcpnmadds 3, 4, 6, 5 +0x00 0x64 0x29 0x86 + +# CHECK: qvfxxmadd 3, 4, 6, 5 +0x10 0x64 0x29 0x82 + +# CHECK: qvfxxmadds 3, 4, 6, 5 +0x00 0x64 0x29 0x82 + +# CHECK: qvfxxnpmadd 3, 4, 6, 5 +0x10 0x64 0x29 0x96 + +# CHECK: qvfxxnpmadds 3, 4, 6, 5 +0x00 0x64 0x29 0x96 + +# CHECK: qvlfcduxa 3, 9, 11 +0x7c 0x69 0x58 0xcf + +# CHECK: qvlfcdux 3, 9, 11 +0x7c 0x69 0x58 0xce + +# CHECK: qvlfcdxa 3, 10, 11 +0x7c 0x6a 0x58 0x8f + +# CHECK: qvlfcdx 3, 10, 11 +0x7c 0x6a 0x58 0x8e + +# CHECK: qvlfcsuxa 3, 9, 11 +0x7c 0x69 0x58 0x4f + +# CHECK: qvlfcsux 3, 9, 11 +0x7c 0x69 0x58 0x4e + +# CHECK: qvlfcsxa 3, 10, 11 +0x7c 0x6a 0x58 0x0f + +# CHECK: qvlfcsx 3, 10, 11 +0x7c 0x6a 0x58 0x0e + +# CHECK: qvlfduxa 3, 9, 11 +0x7c 0x69 0x5c 0xcf + +# CHECK: qvlfdux 3, 9, 11 +0x7c 0x69 0x5c 0xce + +# CHECK: qvlfdxa 3, 10, 11 +0x7c 0x6a 0x5c 0x8f + +# CHECK: qvlfdx 3, 10, 11 +0x7c 0x6a 0x5c 0x8e + +# CHECK: qvlfiwaxa 3, 10, 11 +0x7c 0x6a 0x5e 0xcf + +# CHECK: qvlfiwax 3, 10, 11 +0x7c 0x6a 0x5e 0xce + +# CHECK: qvlfiwzxa 3, 10, 11 +0x7c 0x6a 0x5e 0x8f + +# CHECK: qvlfiwzx 3, 10, 11 +0x7c 0x6a 0x5e 0x8e + +# CHECK: qvlfsuxa 3, 9, 11 +0x7c 0x69 0x5c 0x4f + +# CHECK: qvlfsux 3, 9, 11 +0x7c 0x69 0x5c 0x4e + +# CHECK: qvlfsxa 3, 10, 11 +0x7c 0x6a 0x5c 0x0f + +# CHECK: qvlfsx 3, 10, 11 +0x7c 0x6a 0x5c 0x0e + +# CHECK: qvlpcldx 3, 10, 11 +0x7c 0x6a 0x5c 0x8c + +# CHECK: qvlpclsx 3, 10, 11 +0x7c 0x6a 0x5c 0x0c + +# CHECK: qvlpcrdx 3, 10, 11 +0x7c 0x6a 0x58 0x8c + +# CHECK: qvlpcrsx 3, 10, 11 +0x7c 0x6a 0x58 0x0c + +# CHECK: qvstfcduxa 2, 9, 11 +0x7c 0x49 0x59 0xcf + +# CHECK: qvstfcduxia 2, 9, 11 +0x7c 0x49 0x59 0xcb + +# CHECK: qvstfcduxi 2, 9, 11 +0x7c 0x49 0x59 0xca + +# CHECK: qvstfcdux 2, 9, 11 +0x7c 0x49 0x59 0xce + +# CHECK: qvstfcdxa 2, 10, 11 +0x7c 0x4a 0x59 0x8f + +# CHECK: qvstfcdxia 2, 10, 11 +0x7c 0x4a 0x59 0x8b + +# CHECK: qvstfcdxi 2, 10, 11 +0x7c 0x4a 0x59 0x8a + +# CHECK: qvstfcdx 2, 10, 11 +0x7c 0x4a 0x59 0x8e + +# CHECK: qvstfcsuxa 2, 9, 11 +0x7c 0x49 0x59 0x4f + +# CHECK: qvstfcsuxia 2, 9, 11 +0x7c 0x49 0x59 0x4b + +# CHECK: qvstfcsuxi 2, 9, 11 +0x7c 0x49 0x59 0x4a + +# CHECK: qvstfcsux 2, 9, 11 +0x7c 0x49 0x59 0x4e + +# CHECK: qvstfcsxa 2, 10, 11 +0x7c 0x4a 0x59 0x0f + +# CHECK: qvstfcsxia 2, 10, 11 +0x7c 0x4a 0x59 0x0b + +# CHECK: qvstfcsxi 2, 10, 11 +0x7c 0x4a 0x59 0x0a + +# CHECK: qvstfcsx 2, 10, 11 +0x7c 0x4a 0x59 0x0e + +# CHECK: qvstfduxa 2, 9, 11 +0x7c 0x49 0x5d 0xcf + +# CHECK: qvstfduxia 2, 9, 11 +0x7c 0x49 0x5d 0xcb + +# CHECK: qvstfduxi 2, 9, 11 +0x7c 0x49 0x5d 0xca + +# CHECK: qvstfdux 2, 9, 11 +0x7c 0x49 0x5d 0xce + +# CHECK: qvstfdxa 2, 10, 11 +0x7c 0x4a 0x5d 0x8f + +# CHECK: qvstfdxia 2, 10, 11 +0x7c 0x4a 0x5d 0x8b + +# CHECK: qvstfdxi 2, 10, 11 +0x7c 0x4a 0x5d 0x8a + +# CHECK: qvstfdx 2, 10, 11 +0x7c 0x4a 0x5d 0x8e + +# CHECK: qvstfiwxa 2, 10, 11 +0x7c 0x4a 0x5f 0x8f + +# CHECK: qvstfiwx 2, 10, 11 +0x7c 0x4a 0x5f 0x8e + +# CHECK: qvstfsuxa 2, 9, 11 +0x7c 0x49 0x5d 0x4f + +# CHECK: qvstfsuxia 2, 9, 11 +0x7c 0x49 0x5d 0x4b + +# CHECK: qvstfsuxi 2, 9, 11 +0x7c 0x49 0x5d 0x4a + +# CHECK: qvstfsux 2, 9, 11 +0x7c 0x49 0x5d 0x4e + +# CHECK: qvstfsxa 2, 10, 11 +0x7c 0x4a 0x5d 0x0f + +# CHECK: qvstfsxia 2, 10, 11 +0x7c 0x4a 0x5d 0x0b + +# CHECK: qvstfsxi 2, 10, 11 +0x7c 0x4a 0x5d 0x0a + +# CHECK: qvstfsx 2, 10, 11 +0x7c 0x4a 0x5d 0x0e + diff --git a/test/MC/Disassembler/PowerPC/vsx.txt b/test/MC/Disassembler/PowerPC/vsx.txt index b5e2751..5e65482 100644 --- a/test/MC/Disassembler/PowerPC/vsx.txt +++ b/test/MC/Disassembler/PowerPC/vsx.txt @@ -404,6 +404,15 @@ # CHECK: xxland 7, 63, 27 0xf0 0xff 0xdc 0x14 +# CHECK: xxleqv 7, 63, 27 +0xf0 0xff 0xdd 0xd4 + +# CHECK: xxlnand 7, 63, 27 +0xf0 0xff 0xdd 0x94 + +# CHECK: xxlorc 7, 63, 27 +0xf0 0xff 0xdd 0x54 + # CHECK: xxlandc 7, 63, 27 0xf0 0xff 0xdc 0x54 diff --git a/test/MC/Disassembler/X86/avx-512.txt b/test/MC/Disassembler/X86/avx-512.txt index 62fc35b..d24a68d 100644 --- a/test/MC/Disassembler/X86/avx-512.txt +++ b/test/MC/Disassembler/X86/avx-512.txt @@ -109,3 +109,30 @@ # CHECK: vaddss 1024(%rdx), %xmm0, %xmm16 0x62 0xe1 0x7e 0x08 0x58 0x82 0x00 0x04 0x00 0x00 + +# CHECK: vpcmpeqd %zmm10, %zmm25, %k5 +0x62 0xd3 0x35 0x40 0x1f 0xea 0x0 + +# CHECK: vpcmpltd %zmm10, %zmm25, %k5 +0x62 0xd3 0x35 0x40 0x1f 0xea 0x1 + +# CHECK: vpcmpled %zmm10, %zmm25, %k5 +0x62 0xd3 0x35 0x40 0x1f 0xea 0x2 + +# CHECK: vpcmpd $3, %zmm10, %zmm25, %k5 +0x62 0xd3 0x35 0x40 0x1f 0xea 0x3 + +# CHECK: vpcmpneqd %zmm10, %zmm25, %k5 +0x62 0xd3 0x35 0x40 0x1f 0xea 0x4 + +# CHECK: vpcmpnltd %zmm10, %zmm25, %k5 +0x62 0xd3 0x35 0x40 0x1f 0xea 0x5 + +# CHECK: vpcmpnled %zmm10, %zmm25, %k5 +0x62 0xd3 0x35 0x40 0x1f 0xea 0x6 + +# CHECK: vpcmpd $7, %zmm10, %zmm25, %k5 +0x62 0xd3 0x35 0x40 0x1f 0xea 0x7 + +# CHECK: vpcmpd $8, %zmm10, %zmm25, %k5 +0x62 0xd3 0x35 0x40 0x1f 0xea 0x8 diff --git a/test/MC/Disassembler/X86/intel-syntax-32.txt b/test/MC/Disassembler/X86/intel-syntax-32.txt index 2298823..66c87b8 100644 --- a/test/MC/Disassembler/X86/intel-syntax-32.txt +++ b/test/MC/Disassembler/X86/intel-syntax-32.txt @@ -29,3 +29,15 @@ # CHECK: mov dword ptr [878082192], eax 0xa3 0x90 0x78 0x56 0x34 + +# CHECK: lea cx, [si + 4] +0x67 0x66 0x8d 0x4c 0x04 + +# CHECK: lea ecx, [si + 4] +0x67 0x8d 0x4c 0x04 + +# CHECK: lea cx, [esp + 4] +0x66 0x8d 0x4c 0x24 0x04 + +# CHECK: lea ecx, [esp + 4] +0x8d 0x4c 0x24 0x04 diff --git a/test/MC/Disassembler/X86/intel-syntax.txt b/test/MC/Disassembler/X86/intel-syntax.txt index 3689525..0a628af 100644 --- a/test/MC/Disassembler/X86/intel-syntax.txt +++ b/test/MC/Disassembler/X86/intel-syntax.txt @@ -152,3 +152,23 @@ # CHECK: movabs qword ptr [-6066930261531658096], rax 0x48 0xa3 0x90 0x78 0x56 0x34 0x12 0xef 0xcd 0xab + +# CHECK: lea cx, [esp + 4] +0x67 0x66 0x8d 0x4c 0x24 0x04 + +# CHECK: lea ecx, [esp + 4] +0x67 0x8d 0x4c 0x24 0x04 + +# CHECK: lea rcx, [esp + 4] +0x67 0x48 0x8d 0x4c 0x24 0x04 + +# CHECK: lea cx, [rsp + 4] +0x66 0x8d 0x4c 0x24 0x04 + +# CHECK: lea ecx, [rsp + 4] +0x8d 0x4c 0x24 0x04 + +# CHECK: lea rcx, [rsp + 4] +0x48 0x8d 0x4c 0x24 0x04 + + diff --git a/test/MC/Disassembler/X86/invalid-cmp-imm.txt b/test/MC/Disassembler/X86/invalid-cmp-imm.txt deleted file mode 100644 index 7b2ea2a..0000000 --- a/test/MC/Disassembler/X86/invalid-cmp-imm.txt +++ /dev/null @@ -1,10 +0,0 @@ -# RUN: llvm-mc --disassemble %s -triple=x86_64-apple-darwin9 2>&1 | grep "invalid instruction encoding" - -# This instruction would decode as cmpordps if the immediate byte was less than 8. -0x0f 0xc2 0xc7 0x08 -# This instruction would decode as cmpordpd if the immediate byte was less than 8. -0x66 0x0f 0xc2 0xc7 0x08 -# This instruction would decode as cmpordss if the immediate byte was less than 8. -0xf3 0x0f 0xc2 0xc7 0x08 -# This instruction would decode as cmpordsd if the immediate byte was less than 8. -0xf2 0x0f 0xc2 0xc7 0x08 diff --git a/test/MC/Disassembler/X86/moffs.txt b/test/MC/Disassembler/X86/moffs.txt index dd2664c..ac18859 100644 --- a/test/MC/Disassembler/X86/moffs.txt +++ b/test/MC/Disassembler/X86/moffs.txt @@ -1,86 +1,86 @@ -# RUN: llvm-mc --disassemble --print-imm-hex %s -triple=i686-linux-gnu-code16 | FileCheck --check-prefix=16 %s -# RUN: llvm-mc --disassemble --print-imm-hex %s -triple=i686-linux-gnu | FileCheck --check-prefix=32 %s -# RUN: llvm-mc --disassemble --print-imm-hex %s -triple=x86_64-linux-gnu | FileCheck --check-prefix=64 %s +# RUN: llvm-mc --disassemble --show-encoding --print-imm-hex %s -triple=i686-linux-gnu-code16 | FileCheck --check-prefix=16 %s +# RUN: llvm-mc --disassemble --show-encoding --print-imm-hex %s -triple=i686-linux-gnu | FileCheck --check-prefix=32 %s +# RUN: llvm-mc --disassemble --show-encoding --print-imm-hex %s -triple=x86_64-linux-gnu | FileCheck --check-prefix=64 %s -# 16: movb 0x5a5a, %al -# 32: movb 0x5a5a5a5a, %al -# 64: movabsb 0x5a5a5a5a5a5a5a5a, %al +# 16: movb 0x5a5a, %al # encoding: [0xa0,0x5a,0x5a] +# 32: movb 0x5a5a5a5a, %al # encoding: [0xa0,0x5a,0x5a,0x5a,0x5a] +# 64: movabsb 0x5a5a5a5a5a5a5a5a, %al # encoding: [0xa0,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] 0xa0 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movb 0x5a5a5a5a, %al -# 32: movb 0x5a5a, %al -# 64: movabsb 0x5a5a5a5a, %al +# 16: movb 0x5a5a5a5a, %al # encoding: [0x67,0xa0,0x5a,0x5a,0x5a,0x5a] +# 32: movb 0x5a5a, %al # encoding: [0x67,0xa0,0x5a,0x5a] +# 64: movb 0x5a5a5a5a, %al # encoding: [0x67,0xa0,0x5a,0x5a,0x5a,0x5a] 0x67 0xa0 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movw 0x5a5a, %ax -# 32: movl 0x5a5a5a5a, %eax -# 64: movabsl 0x5a5a5a5a5a5a5a5a, %eax +# 16: movw 0x5a5a, %ax # encoding: [0xa1,0x5a,0x5a] +# 32: movl 0x5a5a5a5a, %eax # encoding: [0xa1,0x5a,0x5a,0x5a,0x5a] +# 64: movabsl 0x5a5a5a5a5a5a5a5a, %eax # encoding: [0xa1,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movw 0x5a5a5a5a, %ax -# 32: movl 0x5a5a, %eax -# 64: movabsl 0x5a5a5a5a, %eax +# 16: movw 0x5a5a5a5a, %ax # encoding: [0x67,0xa1,0x5a,0x5a,0x5a,0x5a] +# 32: movl 0x5a5a, %eax # encoding: [0x67,0xa1,0x5a,0x5a] +# 64: movl 0x5a5a5a5a, %eax # encoding: [0x67,0xa1,0x5a,0x5a,0x5a,0x5a] 0x67 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl 0x5a5a, %eax -# 32: movw 0x5a5a5a5a, %ax -# 64: movabsw 0x5a5a5a5a5a5a5a5a, %ax +# 16: movl 0x5a5a, %eax # encoding: [0x66,0xa1,0x5a,0x5a] +# 32: movw 0x5a5a5a5a, %ax # encoding: [0x66,0xa1,0x5a,0x5a,0x5a,0x5a] +# 64: movabsw 0x5a5a5a5a5a5a5a5a, %ax # encoding: [0x66,0xa1,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] 0x66 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl 0x5a5a5a5a, %eax -# 32: movw 0x5a5a, %ax -# 64: movabsw 0x5a5a5a5a, %ax +# 16: movl 0x5a5a5a5a, %eax # encoding: [0x67,0x66,0xa1,0x5a,0x5a,0x5a,0x5a] +# 32: movw 0x5a5a, %ax # encoding: [0x67,0x66,0xa1,0x5a,0x5a] +# 64: movw 0x5a5a5a5a, %ax # encoding: [0x67,0x66,0xa1,0x5a,0x5a,0x5a,0x5a] 0x66 0x67 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl 0x5a5a5a5a, %eax -# 32: movw 0x5a5a, %ax -# 64: movabsw 0x5a5a5a5a, %ax +# 16: movl 0x5a5a5a5a, %eax # encoding: [0x67,0x66,0xa1,0x5a,0x5a,0x5a,0x5a] +# 32: movw 0x5a5a, %ax # encoding: [0x67,0x66,0xa1,0x5a,0x5a] +# 64: movw 0x5a5a5a5a, %ax # encoding: [0x67,0x66,0xa1,0x5a,0x5a,0x5a,0x5a] 0x67 0x66 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl %es:0x5a5a5a5a, %eax -# 32: movw %es:0x5a5a, %ax -# 64: movabsw %es:0x5a5a5a5a, %ax -0x67 0x26 0x66 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a +# 16: movl %es:0x5a5a5a5a, %eax # encoding: [0x67,0x66,0x26,0xa1,0x5a,0x5a,0x5a,0x5a] +# 32: movw %es:0x5a5a, %ax # encoding: [0x67,0x66,0x26,0xa1,0x5a,0x5a] +# 64: movw %es:0x5a5a5a5a, %ax # encoding: [0x67,0x66,0x26,0xa1,0x5a,0x5a,0x5a,0x5a] +0x67 0x26 0x66 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a # encoding: [0xa0,0x5a,0x5a] -# 16: movb %al, 0x5a5a -# 32: movb %al, 0x5a5a5a5a -# 64: movabsb %al, 0x5a5a5a5a5a5a5a5a -0xa2 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a +# 16: movb %al, 0x5a5a # encoding: [0xa2,0x5a,0x5a] +# 32: movb %al, 0x5a5a5a5a # encoding: [0xa2,0x5a,0x5a,0x5a,0x5a] +# 64: movabsb %al, 0x5a5a5a5a5a5a5a5a # encoding: [0xa2,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] +0xa2 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a # encoding: [0xa0,0x5a,0x5a] -# 16: movb %al, 0x5a5a5a5a -# 32: movb %al, 0x5a5a -# 64: movabsb %al, 0x5a5a5a5a +# 16: movb %al, 0x5a5a5a5a # encoding: [0x67,0xa2,0x5a,0x5a,0x5a,0x5a] +# 32: movb %al, 0x5a5a # encoding: [0x67,0xa2,0x5a,0x5a] +# 64: movb %al, 0x5a5a5a5a # encoding: [0x67,0xa2,0x5a,0x5a,0x5a,0x5a] 0x67 0xa2 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movw %ax, 0x5a5a -# 32: movl %eax, 0x5a5a5a5a -# 64: movabsl %eax, 0x5a5a5a5a5a5a5a5a +# 16: movw %ax, 0x5a5a # encoding: [0xa3,0x5a,0x5a] +# 32: movl %eax, 0x5a5a5a5a # encoding: [0xa3,0x5a,0x5a,0x5a,0x5a] +# 64: movabsl %eax, 0x5a5a5a5a5a5a5a5a # encoding: [0xa3,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movw %ax, %gs:0x5a5a5a5a -# 32: movl %eax, %gs:0x5a5a -# 64: movabsl %eax, %gs:0x5a5a5a5a +# 16: movw %ax, %gs:0x5a5a5a5a # encoding: [0x67,0x65,0xa3,0x5a,0x5a,0x5a,0x5a] +# 32: movl %eax, %gs:0x5a5a # encoding: [0x67,0x65,0xa3,0x5a,0x5a] +# 64: movl %eax, %gs:0x5a5a5a5a # encoding: [0x67,0x65,0xa3,0x5a,0x5a,0x5a,0x5a] 0x65 0x67 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl %eax, 0x5a5a -# 32: movw %ax, 0x5a5a5a5a -# 64: movabsw %ax, 0x5a5a5a5a5a5a5a5a +# 16: movl %eax, 0x5a5a # encoding: [0x66,0xa3,0x5a,0x5a] +# 32: movw %ax, 0x5a5a5a5a # encoding: [0x66,0xa3,0x5a,0x5a,0x5a,0x5a] +# 64: movabsw %ax, 0x5a5a5a5a5a5a5a5a # encoding: [0x66,0xa3,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a] 0x66 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl %eax, 0x5a5a5a5a -# 32: movw %ax, 0x5a5a -# 64: movabsw %ax, 0x5a5a5a5a +# 16: movl %eax, 0x5a5a5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a,0x5a,0x5a] +# 32: movw %ax, 0x5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a] +# 64: movw %ax, 0x5a5a5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a,0x5a,0x5a] 0x66 0x67 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl %eax, 0x5a5a5a5a -# 32: movw %ax, 0x5a5a -# 64: movabsw %ax, 0x5a5a5a5a +# 16: movl %eax, 0x5a5a5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a,0x5a,0x5a] +# 32: movw %ax, 0x5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a] +# 64: movw %ax, 0x5a5a5a5a # encoding: [0x67,0x66,0xa3,0x5a,0x5a,0x5a,0x5a] 0x67 0x66 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a -# 16: movl %eax, %es:0x5a5a5a5a -# 32: movw %ax, %es:0x5a5a -# 64: movabsw %ax, %es:0x5a5a5a5a +# 16: movl %eax, %es:0x5a5a5a5a # encoding: [0x67,0x66,0x26,0xa3,0x5a,0x5a,0x5a,0x5a] +# 32: movw %ax, %es:0x5a5a # encoding: [0x67,0x66,0x26,0xa3,0x5a,0x5a] +# 64: movw %ax, %es:0x5a5a5a5a # encoding: [0x67,0x66,0x26,0xa3,0x5a,0x5a,0x5a,0x5a] 0x67 0x26 0x66 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a diff --git a/test/MC/Disassembler/X86/prefixes.txt b/test/MC/Disassembler/X86/prefixes.txt index b8830dc..9e002fa 100644 --- a/test/MC/Disassembler/X86/prefixes.txt +++ b/test/MC/Disassembler/X86/prefixes.txt @@ -8,11 +8,11 @@ 0x64 0x48 0x8b 0x3c 0x25 0x00 0x03 0x00 0x00 # CHECK: rep -# CHECK-NEXT: stosq +# CHECK-NEXT: stosq %rax, %es:(%rdi) 0xf3 0x48 0xab # CHECK: rep -# CHECK-NEXT: stosl +# CHECK-NEXT: stosq %rax, %es:(%edi) 0xf3 0x67 0x48 0xab # CHECK: movl 32(%rbp), %eax @@ -54,6 +54,17 @@ # CHECK-NEXT: stosq 0xf3 0xf3 0x48 0xab + +# Test that we can disassembler control registers above CR8 +# CHECK: movq %cr15, %rax +0x44 0x0f 0x20 0xf8 +# CHECK: movq %dr15, %rax +0x44 0x0f 0x21 0xf8 + +# Test that MMX ignore REX.R and REX.B. +# CHECK: movq %mm0, %mm1 +0x46 0x0f 0x7f 0xc1 + # Test that a prefix on it's own works. It's debatable as to if this is # something that is considered valid, but however as LLVM's own disassembler # has decided to disassemble prefixes as being separate opcodes, it therefore diff --git a/test/MC/Disassembler/X86/simple-tests.txt b/test/MC/Disassembler/X86/simple-tests.txt index e6e9c7b..875c5b7 100644 --- a/test/MC/Disassembler/X86/simple-tests.txt +++ b/test/MC/Disassembler/X86/simple-tests.txt @@ -90,9 +90,24 @@ # CHECK: movq %cr0, %rcx 0x0f 0x20 0xc1 +# CHECK: leaw 4(%esp), %cx +0x67 0x66 0x8d 0x4c 0x24 0x04 + +# CHECK: leal 4(%esp), %ecx +0x67 0x8d 0x4c 0x24 0x04 + +# CHECK: leaq 4(%esp), %rcx +0x67 0x48 0x8d 0x4c 0x24 0x04 + +# CHECK: leaw 4(%rsp), %cx +0x66 0x8d 0x4c 0x24 0x04 + # CHECK: leal 4(%rsp), %ecx 0x8d 0x4c 0x24 0x04 +# CHECK: leaq 4(%rsp), %rcx +0x48 0x8d 0x4c 0x24 0x04 + # CHECK: enter $1, $2 0xc8 0x01 0x00 0x02 @@ -896,6 +911,12 @@ # CHECK: vpcmov %ymm1, (%rax), %ymm3, %ymm4 0x8f 0xe8 0x64 0xa2 0x20 0x10 +# CHECK: vpcomeqb %xmm6, %xmm4, %xmm2 +0x8f 0xe8 0x58 0xcc 0xd6 0x04 + +# CHECK: vpcomneqb 8(%rax), %xmm3, %xmm2 +0x8f 0xe8 0x60 0xcc 0x50 0x08 0x05 + # CHECK: vpcomb $55, %xmm6, %xmm4, %xmm2 0x8f 0xe8 0x58 0xcc 0xd6 0x37 diff --git a/test/MC/Disassembler/X86/x86-32.txt b/test/MC/Disassembler/X86/x86-32.txt index 79577c6..830b830 100644 --- a/test/MC/Disassembler/X86/x86-32.txt +++ b/test/MC/Disassembler/X86/x86-32.txt @@ -490,6 +490,27 @@ # CHECK: xsaveopt (%eax) 0x0f 0xae 0x30 +# CHECK: xsaves (%eax) +0x0f 0xc7 0x28 + +# CHECK: xrstors (%eax) +0x0f 0xc7 0x18 + +# CHECK: xsavec (%eax) +0x0f 0xc7 0x20 + +# CHECK: clflush (%eax) +0x0f 0xae 0x38 + +# CHECK: clflushopt (%eax) +0x66 0x0f 0xae 0x38 + +# CHECK: clwb (%eax) +0x66 0x0f 0xae 0x30 + +# CHECK: pcommit +0x66 0x0f 0xae 0xf8 + # CHECK: vcvtph2ps %xmm0, %xmm0 0xc4 0xe2 0x79 0x13 0xc0 @@ -712,5 +733,34 @@ # CHECK: movq %mm0, %mm1 0x0f 0x7f 0xc1 -# CHECK: vpermq $-18, %ymm2, %ymm2 +# CHECK: vpermq $238, %ymm2, %ymm2 0xc4 0xe3 0xfd 0x00 0xd2 0xee + +# CHECK: cmpps $8, %xmm7, %xmm0 +0x0f 0xc2 0xc7 0x08 +# CHECK: cmppd $8, %xmm7, %xmm0 +0x66 0x0f 0xc2 0xc7 0x08 +# CHECK: cmpss $8, %xmm7, %xmm0 +0xf3 0x0f 0xc2 0xc7 0x08 +# CHECK: cmpsd $8, %xmm7, %xmm0 +0xf2 0x0f 0xc2 0xc7 0x08 + +# CHECK: addb $38, 5277496 +0x82 0x05 0x38 0x87 0x50 0x00 0x26 +# CHECK: orb $38, 5277496 +0x82 0x0d 0x38 0x87 0x50 0x00 0x26 +# CHECK: adcb $38, 5277496 +0x82 0x15 0x38 0x87 0x50 0x00 0x26 +# CHECK: sbbb $38, 5277496 +0x82 0x1d 0x38 0x87 0x50 0x00 0x26 +# CHECK: andb $38, 5277496 +0x82 0x25 0x38 0x87 0x50 0x00 0x26 +# CHECK: subb $38, 5277496 +0x82 0x2D 0x38 0x87 0x50 0x00 0x26 +# CHECK: xorb $38, 5277496 +0x82 0x35 0x38 0x87 0x50 0x00 0x26 +# CHECK: cmpb $38, 5277496 +0x82 0x3d 0x38 0x87 0x50 0x00 0x26 + +#CHECK: getsec +0x0f 0x37 diff --git a/test/MC/Disassembler/X86/x86-64.txt b/test/MC/Disassembler/X86/x86-64.txt index 6f072df..f000d15 100644 --- a/test/MC/Disassembler/X86/x86-64.txt +++ b/test/MC/Disassembler/X86/x86-64.txt @@ -107,19 +107,22 @@ # CHECK: xbegin 53 0xc7 0xf8 0x35 0x00 0x00 0x00 +# CHECK: xbegin 53 +0x66 0xc7 0xf8 0x35 0x00 + # CHECK: xend 0x0f 0x01 0xd5 # CHECK: xabort $13 0xc6 0xf8 0x0d -# CHECK: xsaveq (%rax) +# CHECK: xsave64 (%rax) 0x48 0x0f 0xae 0x20 -# CHECK: xrstorq (%rax) +# CHECK: xrstor64 (%rax) 0x48 0x0f 0xae 0x28 -# CHECK: xsaveoptq (%rax) +# CHECK: xsaveopt64 (%rax) 0x48 0x0f 0xae 0x30 # CHECK: clac @@ -233,6 +236,27 @@ # CHECK: vmovq %xmm0, %rax 0xc4 0xe1 0xf9 0x7e 0xc0 +# CHECK: movd (%rax), %mm0 +0x48 0x0f 0x6e 0x00 + +# CHECK: movd %rax, %mm0 +0x48 0x0f 0x6e 0xc0 + +# CHECK: movd %mm0, (%rax) +0x48 0x0f 0x7e 0x00 + +# CHECK: movd %mm0, %rax +0x48 0x0f 0x7e 0xc0 + +# CHECK: movd (%rax), %xmm0 +0x66 0x48 0x0f 0x6e 0x00 + +# CHECK: movd %rax, %xmm0 +0x66 0x48 0x0f 0x6e 0xc0 + +# CHECK: movd %xmm0, (%rax) +0x66 0x48 0x0f 0x7e 0x00 + # CHECK: movd %xmm0, %rax 0x66 0x48 0x0f 0x7e 0xc0 @@ -265,3 +289,15 @@ # CHECK: $0, 305419896(%rbp) 0x80 0x84 0x25 0x78 0x56 0x34 0x12 0x00 + +# CHECK: movabsq 6510615555426900570, %rax +0x48 0xa1 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a + +# CHECK: movq 1515870810, %rax +0x67, 0x48 0xa1 0x5a 0x5a 0x5a 0x5a + +# CHECK: movabsq %rax, 6510615555426900570 +0x48 0xa3 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a 0x5a + +# CHECK: movq %rax, 1515870810 +0x67, 0x48 0xa3 0x5a 0x5a 0x5a 0x5a |