diff options
| author | Eric Christopher <echristo@apple.com> | 2010-11-12 09:48:30 +0000 |
|---|---|---|
| committer | Eric Christopher <echristo@apple.com> | 2010-11-12 09:48:30 +0000 |
| commit | 22d0492f3479b4888e4a3f02c018c2520b4de272 (patch) | |
| tree | 2c317cc1318f199265d1ad86022e86699eb96b03 /llvm/lib | |
| parent | 31f82720d03f34f8af1c59441fc89fbbf3efae14 (diff) | |
| download | bcm5719-llvm-22d0492f3479b4888e4a3f02c018c2520b4de272.tar.gz bcm5719-llvm-22d0492f3479b4888e4a3f02c018c2520b4de272.zip | |
Fix up a few more spots of addrmode2 (or not) changes that were
missed. Update some comments accordingly.
Fixes rdar://8652289
llvm-svn: 118888
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMFastISel.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/llvm/lib/Target/ARM/ARMFastISel.cpp b/llvm/lib/Target/ARM/ARMFastISel.cpp index a4d98ebf007..58f72f6c159 100644 --- a/llvm/lib/Target/ARM/ARMFastISel.cpp +++ b/llvm/lib/Target/ARM/ARMFastISel.cpp @@ -460,7 +460,7 @@ unsigned ARMFastISel::ARMMaterializeInt(const Constant *C, EVT VT) { TII.get(ARM::t2LDRpci), DestReg) .addConstantPoolIndex(Idx)); else - // The extra reg and immediate are for addrmode2. + // The extra immediate is for addrmode2. AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(ARM::LDRcp), DestReg) .addConstantPoolIndex(Idx) @@ -505,11 +505,11 @@ unsigned ARMFastISel::ARMMaterializeGV(const GlobalValue *GV, EVT VT) { if (RelocM == Reloc::PIC_) MIB.addImm(Id); } else { - // The extra reg and immediate are for addrmode2. + // The extra immediate is for addrmode2. MIB = BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(ARM::LDRcp), DestReg) .addConstantPoolIndex(Idx) - .addReg(0).addImm(0); + .addImm(0); } AddOptionalDefs(MIB); return DestReg; @@ -790,9 +790,15 @@ bool ARMFastISel::ARMEmitLoad(EVT VT, unsigned &ResultReg, if (isFloat) Offset /= 4; - AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, - TII.get(Opc), ResultReg) - .addReg(Base).addImm(Offset)); + // LDRH needs an additional operand. + if (!isThumb && VT.getSimpleVT().SimpleTy == MVT::i16) + AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, + TII.get(Opc), ResultReg) + .addReg(Base).addReg(0).addImm(Offset)); + else + AddOptionalDefs(BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, + TII.get(Opc), ResultReg) + .addReg(Base).addImm(Offset)); return true; } |

