summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2009-11-17 17:17:50 +0000
committerJohnny Chen <johnny.chen@apple.com>2009-11-17 17:17:50 +0000
commit14b25eb87be213e0562274e1e3dcefa34d5af6d1 (patch)
tree0af2bfbc456d8f61b3f1d175879ae075cab16bbb /llvm/lib
parentbc02a10ef335c5a7bddc441f7573016bd39ea499 (diff)
downloadbcm5719-llvm-14b25eb87be213e0562274e1e3dcefa34d5af6d1.tar.gz
bcm5719-llvm-14b25eb87be213e0562274e1e3dcefa34d5af6d1.zip
Set Inst{15-12} (Rd/Rt) to 0b1111 (PC) for BR_JTadd, BR_JTr, and BR_JTm to
distinguish between them and the more generic instructions (add, mov, and ldr). llvm-svn: 89108
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/ARMInstrInfo.td3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td
index 5235a2e2ee0..3fe634e41ab 100644
--- a/llvm/lib/Target/ARM/ARMInstrInfo.td
+++ b/llvm/lib/Target/ARM/ARMInstrInfo.td
@@ -759,6 +759,7 @@ let isBranch = 1, isTerminator = 1 in {
def BR_JTr : JTI<(outs), (ins GPR:$target, jtblock_operand:$jt, i32imm:$id),
IIC_Br, "mov\tpc, $target \n$jt",
[(ARMbrjt GPR:$target, tjumptable:$jt, imm:$id)]> {
+ let Inst{15-12} = 0b1111;
let Inst{20} = 0; // S Bit
let Inst{24-21} = 0b1101;
let Inst{27-25} = 0b000;
@@ -768,6 +769,7 @@ let isBranch = 1, isTerminator = 1 in {
IIC_Br, "ldr\tpc, $target \n$jt",
[(ARMbrjt (i32 (load addrmode2:$target)), tjumptable:$jt,
imm:$id)]> {
+ let Inst{15-12} = 0b1111;
let Inst{20} = 1; // L bit
let Inst{21} = 0; // W bit
let Inst{22} = 0; // B bit
@@ -779,6 +781,7 @@ let isBranch = 1, isTerminator = 1 in {
IIC_Br, "add\tpc, $target, $idx \n$jt",
[(ARMbrjt (add GPR:$target, GPR:$idx), tjumptable:$jt,
imm:$id)]> {
+ let Inst{15-12} = 0b1111;
let Inst{20} = 0; // S bit
let Inst{24-21} = 0b0100;
let Inst{27-25} = 0b000;
OpenPOWER on IntegriCloud