summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2010-03-16 21:25:05 +0000
committerJohnny Chen <johnny.chen@apple.com>2010-03-16 21:25:05 +0000
commit71ab18bdd5c63dae5732e06df51e09e4fee9d786 (patch)
treee017e92b9192838a179173ba8475bac9711b5ef1
parentade4303e2b3e169be39c955de218fdbebeba2948 (diff)
downloadbcm5719-llvm-71ab18bdd5c63dae5732e06df51e09e4fee9d786.tar.gz
bcm5719-llvm-71ab18bdd5c63dae5732e06df51e09e4fee9d786.zip
Disambiguate the *_UPD and * variants by specifying the writeback flag as 1.
This is for the disassembly work. There are cases where this is not possible, for example, A8.6.53 LDM Encoding T1. In such case, we'll use an adhoc approach to deduce the Opcode programmatically. llvm-svn: 98679
-rw-r--r--llvm/lib/Target/ARM/ARMInstrInfo.td8
-rw-r--r--llvm/lib/Target/ARM/ARMInstrVFP.td4
2 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td
index 0547844bb9e..53abf340ad0 100644
--- a/llvm/lib/Target/ARM/ARMInstrInfo.td
+++ b/llvm/lib/Target/ARM/ARMInstrInfo.td
@@ -1355,7 +1355,9 @@ def LDM_UPD : AXI4ld<(outs GPR:$wb), (ins addrmode4:$addr, pred:$p,
reglist:$dsts, variable_ops),
IndexModeUpd, LdStMulFrm, IIC_iLoadm,
"ldm${addr:submode}${p}\t$addr!, $dsts",
- "$addr.addr = $wb", []>;
+ "$addr.addr = $wb", []> {
+ let Inst{21} = 1; // wback
+}
} // mayLoad, hasExtraDefRegAllocReq
let mayStore = 1, hasExtraSrcRegAllocReq = 1 in {
@@ -1368,7 +1370,9 @@ def STM_UPD : AXI4st<(outs GPR:$wb), (ins addrmode4:$addr, pred:$p,
reglist:$srcs, variable_ops),
IndexModeUpd, LdStMulFrm, IIC_iStorem,
"stm${addr:submode}${p}\t$addr!, $srcs",
- "$addr.addr = $wb", []>;
+ "$addr.addr = $wb", []> {
+ let Inst{21} = 1; // wback
+}
} // mayStore, hasExtraSrcRegAllocReq
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/ARM/ARMInstrVFP.td b/llvm/lib/Target/ARM/ARMInstrVFP.td
index 1d5acc1d4d5..68dff86ef68 100644
--- a/llvm/lib/Target/ARM/ARMInstrVFP.td
+++ b/llvm/lib/Target/ARM/ARMInstrVFP.td
@@ -96,6 +96,7 @@ def VLDMD_UPD : AXDI5<(outs GPR:$wb), (ins addrmode5:$addr, pred:$p,
IndexModeUpd, IIC_fpLoadm,
"vldm${addr:submode}${p}\t${addr:base}!, $dsts",
"$addr.base = $wb", []> {
+ let Inst{21} = 1; // wback
let Inst{20} = 1;
}
@@ -104,6 +105,7 @@ def VLDMS_UPD : AXSI5<(outs GPR:$wb), (ins addrmode5:$addr, pred:$p,
IndexModeUpd, IIC_fpLoadm,
"vldm${addr:submode}${p}\t${addr:base}!, $dsts",
"$addr.base = $wb", []> {
+ let Inst{21} = 1; // wback
let Inst{20} = 1;
}
} // mayLoad, hasExtraDefRegAllocReq
@@ -126,6 +128,7 @@ def VSTMD_UPD : AXDI5<(outs GPR:$wb), (ins addrmode5:$addr, pred:$p,
IndexModeUpd, IIC_fpStorem,
"vstm${addr:submode}${p}\t${addr:base}!, $srcs",
"$addr.base = $wb", []> {
+ let Inst{21} = 1; // wback
let Inst{20} = 0;
}
@@ -134,6 +137,7 @@ def VSTMS_UPD : AXSI5<(outs GPR:$wb), (ins addrmode5:$addr, pred:$p,
IndexModeUpd, IIC_fpStorem,
"vstm${addr:submode}${p}\t${addr:base}!, $srcs",
"$addr.base = $wb", []> {
+ let Inst{21} = 1; // wback
let Inst{20} = 0;
}
} // mayStore, hasExtraSrcRegAllocReq
OpenPOWER on IntegriCloud