diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2009-07-08 21:03:57 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2009-07-08 21:03:57 +0000 |
| commit | e3a53c448b31f7dcdcd624a769d30440bbed2052 (patch) | |
| tree | e99be1335c1b248ed18f39125dde84935b6758e2 /llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | |
| parent | 0c9f367d62e202f91bcce766867ac71b2e22ff12 (diff) | |
| download | bcm5719-llvm-e3a53c448b31f7dcdcd624a769d30440bbed2052.tar.gz bcm5719-llvm-e3a53c448b31f7dcdcd624a769d30440bbed2052.zip | |
Change how so_imm and t2_so_imm are handled. At instruction selection time, the immediates are no longer encoded in the imm8 + rot format, that are left as it is. The encoding is now done in ams printing and code emission time instead.
llvm-svn: 75048
Diffstat (limited to 'llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp index a1ea692d3bf..f659cb50a05 100644 --- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp +++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp @@ -91,15 +91,14 @@ ARMBaseInstrInfo::convertToThreeAddress(MachineFunction::iterator &MFI, bool isSub = ARM_AM::getAM2Op(OffImm) == ARM_AM::sub; unsigned Amt = ARM_AM::getAM2Offset(OffImm); if (OffReg == 0) { - int SOImmVal = ARM_AM::getSOImmVal(Amt); - if (SOImmVal == -1) + if (ARM_AM::getSOImmVal(Amt) == -1) // Can't encode it in a so_imm operand. This transformation will // add more than 1 instruction. Abandon! return NULL; UpdateMI = BuildMI(MF, MI->getDebugLoc(), get(isSub ? getOpcode(ARMII::SUBri) : getOpcode(ARMII::ADDri)), WBReg) - .addReg(BaseReg).addImm(SOImmVal) + .addReg(BaseReg).addImm(Amt) .addImm(Pred).addReg(0).addReg(0); } else if (Amt != 0) { ARM_AM::ShiftOpc ShOpc = ARM_AM::getAM2ShiftOpc(OffImm); |

