diff options
author | Tim Northover <tnorthover@apple.com> | 2017-03-06 23:50:28 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2017-03-06 23:50:28 +0000 |
commit | c2c545b8f7693a77fdc37e8c19ec6229c1da5ef8 (patch) | |
tree | 71cfe4b8857020beefd04394f75bec09bd9f2e10 /llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp | |
parent | ef23e9574ed4121e491061e22521f5f8597c3687 (diff) | |
download | bcm5719-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.cpp | 6 |
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; |