summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2017-03-06 23:50:28 +0000
committerTim Northover <tnorthover@apple.com>2017-03-06 23:50:28 +0000
commitc2c545b8f7693a77fdc37e8c19ec6229c1da5ef8 (patch)
tree71cfe4b8857020beefd04394f75bec09bd9f2e10 /llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
parentef23e9574ed4121e491061e22521f5f8597c3687 (diff)
downloadbcm5719-llvm-c2c545b8f7693a77fdc37e8c19ec6229c1da5ef8.tar.gz
bcm5719-llvm-c2c545b8f7693a77fdc37e8c19ec6229c1da5ef8.zip
GlobalISel: restrict G_EXTRACT instruction to just one operand.
A bit more painful than G_INSERT because it was more widely used, but this should simplify the handling of extract operations in most locations. llvm-svn: 297100
Diffstat (limited to 'llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp b/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
index 18ce7d454b8..8eb13235de1 100644
--- a/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
@@ -263,12 +263,10 @@ ARMRegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
// We only support G_EXTRACT for splitting a double precision floating point
// value into two GPRs.
LLT Ty1 = MRI.getType(MI.getOperand(1).getReg());
- LLT Ty2 = MRI.getType(MI.getOperand(2).getReg());
- if (Ty.getSizeInBits() != 32 || Ty1.getSizeInBits() != 32 ||
- Ty2.getSizeInBits() != 64)
+ if (Ty.getSizeInBits() != 32 || Ty1.getSizeInBits() != 64 ||
+ MI.getOperand(2).getImm() % 32 != 0)
return InstructionMapping{};
OperandsMapping = getOperandsMapping({&ARM::ValueMappings[ARM::GPR3OpsIdx],
- &ARM::ValueMappings[ARM::GPR3OpsIdx],
&ARM::ValueMappings[ARM::DPR3OpsIdx],
nullptr, nullptr});
break;
OpenPOWER on IntegriCloud