diff options
author | David Goodwin <david_goodwin@apple.com> | 2009-07-24 00:16:18 +0000 |
---|---|---|
committer | David Goodwin <david_goodwin@apple.com> | 2009-07-24 00:16:18 +0000 |
commit | 5ff58b5c3ab6df332600678798ea5c69c5e943d3 (patch) | |
tree | 587c9b878c6b0b74b4c23ae18c86c6a0cc7e9595 /lib/Target/ARM/Thumb2InstrInfo.cpp | |
parent | 74e52108090f29a92ebb78d33451104bc445ac55 (diff) | |
download | llvm-5ff58b5c3ab6df332600678798ea5c69c5e943d3.tar.gz llvm-5ff58b5c3ab6df332600678798ea5c69c5e943d3.tar.bz2 llvm-5ff58b5c3ab6df332600678798ea5c69c5e943d3.tar.xz |
Correctly handle the Thumb-2 imm8 addrmode. Specialize frame index elimination more exactly for Thumb-2 to get better code gen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76919 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/Thumb2InstrInfo.cpp')
-rw-r--r-- | lib/Target/ARM/Thumb2InstrInfo.cpp | 29 |
1 files changed, 4 insertions, 25 deletions
diff --git a/lib/Target/ARM/Thumb2InstrInfo.cpp b/lib/Target/ARM/Thumb2InstrInfo.cpp index d92856cf0c..91a1dcbf43 100644 --- a/lib/Target/ARM/Thumb2InstrInfo.cpp +++ b/lib/Target/ARM/Thumb2InstrInfo.cpp @@ -48,9 +48,11 @@ unsigned Thumb2InstrInfo::getOpcode(ARMII::Op Op) const { case ARMII::FLDS: return ARM::FLDS; case ARMII::FSTD: return ARM::FSTD; case ARMII::FSTS: return ARM::FSTS; - case ARMII::LDR: return ARM::LDR; // FIXME + case ARMII::LDRrr: return ARM::t2LDRs; + case ARMII::LDRri: return ARM::t2LDRi12; case ARMII::MOVr: return ARM::t2MOVr; - case ARMII::STR: return ARM::STR; // FIXME + case ARMII::STRrr: return ARM::t2STRs; + case ARMII::STRri: return ARM::t2STRi12; case ARMII::SUBri: return ARM::t2SUBri; case ARMII::SUBrs: return ARM::t2SUBrs; case ARMII::SUBrr: return ARM::t2SUBrr; @@ -88,29 +90,6 @@ Thumb2InstrInfo::BlockHasNoFallThrough(const MachineBasicBlock &MBB) const { return false; } -unsigned -Thumb2InstrInfo::unsignedOffsetOpcodeToSigned(unsigned opcode, - unsigned *NumBits) const -{ - if (NumBits != NULL) - *NumBits = 8; - - switch (opcode) { - case ARM::t2LDRi12: return ARM::t2LDRi8; - case ARM::t2LDRHi12: return ARM::t2LDRHi8; - case ARM::t2LDRBi12: return ARM::t2LDRBi8; - case ARM::t2LDRSHi12: return ARM::t2LDRSHi8; - case ARM::t2LDRSBi12: return ARM::t2LDRSBi8; - case ARM::t2STRi12: return ARM::t2STRi8; - case ARM::t2STRBi12: return ARM::t2STRBi8; - case ARM::t2STRHi12: return ARM::t2STRHi8; - default: - break; - } - - return 0; -} - bool Thumb2InstrInfo::copyRegToReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, |