diff options
author | Silviu Baranga <silviu.baranga@arm.com> | 2012-03-22 13:14:39 +0000 |
---|---|---|
committer | Silviu Baranga <silviu.baranga@arm.com> | 2012-03-22 13:14:39 +0000 |
commit | a6ea32afdd06329a68c15da757825e88bfef9b22 (patch) | |
tree | 5c5da256008ce17b8ea18858a7a8bc4a9d2bf07a /llvm | |
parent | 83a689887e0dc4b4200ede109ac704c5aa3f3428 (diff) | |
download | bcm5719-llvm-a6ea32afdd06329a68c15da757825e88bfef9b22.tar.gz bcm5719-llvm-a6ea32afdd06329a68c15da757825e88bfef9b22.zip |
Added soft fail cases for the disassembler when decoding MUL instructions on ARM.
llvm-svn: 153250
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Target/ARM/ARMInstrInfo.td | 11 | ||||
-rw-r--r-- | llvm/test/MC/Disassembler/ARM/unpredictable-MUL-arm.txt | 17 |
2 files changed, 23 insertions, 5 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td index 81965826059..14807cc2514 100644 --- a/llvm/lib/Target/ARM/ARMInstrInfo.td +++ b/llvm/lib/Target/ARM/ARMInstrInfo.td @@ -3533,19 +3533,20 @@ class AsMul1I64<bits<7> opcod, dag oops, dag iops, InstrItinClass itin, // property. Remove them when it's possible to add those properties // on an individual MachineInstr, not just an instuction description. let isCommutable = 1 in { -def MUL : AsMul1I32<0b0000000, (outs GPR:$Rd), (ins GPR:$Rn, GPR:$Rm), +def MUL : AsMul1I32<0b0000000, (outs GPRnopc:$Rd), (ins GPRnopc:$Rn, GPRnopc:$Rm), IIC_iMUL32, "mul", "\t$Rd, $Rn, $Rm", - [(set GPR:$Rd, (mul GPR:$Rn, GPR:$Rm))]>, + [(set GPRnopc:$Rd, (mul GPRnopc:$Rn, GPRnopc:$Rm))]>, Requires<[IsARM, HasV6]> { let Inst{15-12} = 0b0000; + let Unpredictable{15-12} = 0b1111; } let Constraints = "@earlyclobber $Rd" in -def MULv5: ARMPseudoExpand<(outs GPR:$Rd), (ins GPR:$Rn, GPR:$Rm, +def MULv5: ARMPseudoExpand<(outs GPRnopc:$Rd), (ins GPRnopc:$Rn, GPRnopc:$Rm, pred:$p, cc_out:$s), 4, IIC_iMUL32, - [(set GPR:$Rd, (mul GPR:$Rn, GPR:$Rm))], - (MUL GPR:$Rd, GPR:$Rn, GPR:$Rm, pred:$p, cc_out:$s)>, + [(set GPRnopc:$Rd, (mul GPRnopc:$Rn, GPRnopc:$Rm))], + (MUL GPRnopc:$Rd, GPRnopc:$Rn, GPRnopc:$Rm, pred:$p, cc_out:$s)>, Requires<[IsARM, NoV6]>; } diff --git a/llvm/test/MC/Disassembler/ARM/unpredictable-MUL-arm.txt b/llvm/test/MC/Disassembler/ARM/unpredictable-MUL-arm.txt new file mode 100644 index 00000000000..3db86cc44fb --- /dev/null +++ b/llvm/test/MC/Disassembler/ARM/unpredictable-MUL-arm.txt @@ -0,0 +1,17 @@ +# RUN: llvm-mc --disassemble %s -triple=armv7-linux-gnueabi |& FileCheck %s + +# CHECK: potentially undefined +# CHECK: 0x93 0x12 0x01 0x00 +0x93 0x12 0x01 0x00 + +# CHECK: potentially undefined +# CHECK: 0x92 0x0f 0x01 0x00 +0x92 0x0f 0x01 0x00 + +# CHECK: potentially undefined +# CHECK: 0x9f 0x02 0x01 0x00 +0x9f 0x02 0x01 0x00 + +# CHECK: potentially undefined +# CHECK: 0x92 0x01 0x0f 0x00 +0x92 0x01 0x0f 0x00 |