summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2009-11-03 18:46:11 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2009-11-03 18:46:11 +0000
commit76a4774a0dedaf0c71e260c7a61895501ca2cb99 (patch)
tree383daab3d7b402abd20b3ef55054d8d36df192db /llvm/lib
parent8d43a6ac3d368281072b9b7273d98660a2c0efcd (diff)
downloadbcm5719-llvm-76a4774a0dedaf0c71e260c7a61895501ca2cb99.tar.gz
bcm5719-llvm-76a4774a0dedaf0c71e260c7a61895501ca2cb99.zip
Move subtarget check upper for NEON reg-reg fixup pass.
llvm-svn: 85914
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/ARMTargetMachine.cpp3
-rw-r--r--llvm/lib/Target/ARM/NEONMoveFix.cpp7
2 files changed, 4 insertions, 6 deletions
diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
index 29579db2e73..b4ce1d7760c 100644
--- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp
+++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
@@ -115,7 +115,8 @@ bool ARMBaseTargetMachine::addPreEmitPass(PassManagerBase &PM,
if (OptLevel != CodeGenOpt::None) {
if (!Subtarget.isThumb1Only())
PM.add(createIfConverterPass());
- PM.add(createNEONMoveFixPass());
+ if (Subtarget.hasNEON())
+ PM.add(createNEONMoveFixPass());
}
if (Subtarget.isThumb2()) {
diff --git a/llvm/lib/Target/ARM/NEONMoveFix.cpp b/llvm/lib/Target/ARM/NEONMoveFix.cpp
index 3c3b9520ca1..f307e3b3108 100644
--- a/llvm/lib/Target/ARM/NEONMoveFix.cpp
+++ b/llvm/lib/Target/ARM/NEONMoveFix.cpp
@@ -35,7 +35,6 @@ namespace {
private:
const TargetRegisterInfo *TRI;
const ARMBaseInstrInfo *TII;
- const ARMSubtarget *Subtarget;
typedef DenseMap<unsigned, const MachineInstr*> RegMap;
@@ -71,7 +70,7 @@ bool NEONMoveFixPass::InsertMoves(MachineBasicBlock &MBB) {
Domain = ARMII::DomainNEON;
}
- if ((Domain & ARMII::DomainNEON) && Subtarget->hasNEON()) {
+ if (Domain & ARMII::DomainNEON) {
// Convert FCPYD to VMOVD.
unsigned DestReg = MI->getOperand(0).getReg();
@@ -93,8 +92,7 @@ bool NEONMoveFixPass::InsertMoves(MachineBasicBlock &MBB) {
Modified = true;
++NumVMovs;
} else {
- assert((Domain & ARMII::DomainVFP ||
- !Subtarget->hasNEON()) && "Invalid domain!");
+ assert((Domain & ARMII::DomainVFP) && "Invalid domain!");
// Do nothing.
}
}
@@ -124,7 +122,6 @@ bool NEONMoveFixPass::runOnMachineFunction(MachineFunction &Fn) {
return false;
TRI = TM.getRegisterInfo();
- Subtarget = &TM.getSubtarget<ARMSubtarget>();
TII = static_cast<const ARMBaseInstrInfo*>(TM.getInstrInfo());
bool Modified = false;
OpenPOWER on IntegriCloud