X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=lib%2FTarget%2FARM%2FARMInstrInfo.cpp;h=6f48d967f919d72e910a861cb23df110ce32c6c1;hb=09aa3f0ef35d9241c92439d74b8d5e9a81d814c2;hp=ff4474f9080a7cdf2ee1b954c2b3f0404c302ff6;hpb=5ff58b5c3ab6df332600678798ea5c69c5e943d3;p=oota-llvm.git diff --git a/lib/Target/ARM/ARMInstrInfo.cpp b/lib/Target/ARM/ARMInstrInfo.cpp index ff4474f9080..6f48d967f91 100644 --- a/lib/Target/ARM/ARMInstrInfo.cpp +++ b/lib/Target/ARM/ARMInstrInfo.cpp @@ -21,27 +21,25 @@ #include "llvm/CodeGen/MachineFrameInfo.h" #include "llvm/CodeGen/MachineInstrBuilder.h" #include "llvm/CodeGen/MachineJumpTableInfo.h" -#include "llvm/Target/TargetAsmInfo.h" -#include "llvm/Support/CommandLine.h" +#include "llvm/MC/MCAsmInfo.h" using namespace llvm; ARMInstrInfo::ARMInstrInfo(const ARMSubtarget &STI) : ARMBaseInstrInfo(STI), RI(*this, STI) { } -unsigned ARMInstrInfo:: -getUnindexedOpcode(unsigned Opc) const { +unsigned ARMInstrInfo::getUnindexedOpcode(unsigned Opc) const { switch (Opc) { default: break; case ARM::LDR_PRE: case ARM::LDR_POST: - return ARM::LDR; + return ARM::LDRi12; case ARM::LDRH_PRE: case ARM::LDRH_POST: return ARM::LDRH; case ARM::LDRB_PRE: case ARM::LDRB_POST: - return ARM::LDRB; + return ARM::LDRBi12; case ARM::LDRSH_PRE: case ARM::LDRSH_POST: return ARM::LDRSH; @@ -50,88 +48,14 @@ getUnindexedOpcode(unsigned Opc) const { return ARM::LDRSB; case ARM::STR_PRE: case ARM::STR_POST: - return ARM::STR; + return ARM::STRi12; case ARM::STRH_PRE: case ARM::STRH_POST: return ARM::STRH; case ARM::STRB_PRE: case ARM::STRB_POST: - return ARM::STRB; + return ARM::STRBi12; } return 0; } - -unsigned ARMInstrInfo:: -getOpcode(ARMII::Op Op) const { - switch (Op) { - case ARMII::ADDri: return ARM::ADDri; - case ARMII::ADDrs: return ARM::ADDrs; - case ARMII::ADDrr: return ARM::ADDrr; - case ARMII::B: return ARM::B; - case ARMII::Bcc: return ARM::Bcc; - case ARMII::BR_JTr: return ARM::BR_JTr; - case ARMII::BR_JTm: return ARM::BR_JTm; - case ARMII::BR_JTadd: return ARM::BR_JTadd; - case ARMII::BX_RET: return ARM::BX_RET; - case ARMII::FCPYS: return ARM::FCPYS; - case ARMII::FCPYD: return ARM::FCPYD; - case ARMII::FLDD: return ARM::FLDD; - case ARMII::FLDS: return ARM::FLDS; - case ARMII::FSTD: return ARM::FSTD; - case ARMII::FSTS: return ARM::FSTS; - case ARMII::LDRrr: return ARM::LDR; - case ARMII::LDRri: return 0; - case ARMII::MOVr: return ARM::MOVr; - case ARMII::STRrr: return ARM::STR; - case ARMII::STRri: return 0; - case ARMII::SUBri: return ARM::SUBri; - case ARMII::SUBrs: return ARM::SUBrs; - case ARMII::SUBrr: return ARM::SUBrr; - case ARMII::VMOVD: return ARM::VMOVD; - case ARMII::VMOVQ: return ARM::VMOVQ; - default: - break; - } - - return 0; -} - -bool ARMInstrInfo:: -BlockHasNoFallThrough(const MachineBasicBlock &MBB) const { - if (MBB.empty()) return false; - - switch (MBB.back().getOpcode()) { - case ARM::BX_RET: // Return. - case ARM::LDM_RET: - case ARM::B: - case ARM::BR_JTr: // Jumptable branch. - case ARM::BR_JTm: // Jumptable branch through mem. - case ARM::BR_JTadd: // Jumptable branch add to pc. - return true; - default: - break; - } - - return false; -} - -void ARMInstrInfo:: -reMaterialize(MachineBasicBlock &MBB, - MachineBasicBlock::iterator I, - unsigned DestReg, unsigned SubIdx, - const MachineInstr *Orig) const { - DebugLoc dl = Orig->getDebugLoc(); - if (Orig->getOpcode() == ARM::MOVi2pieces) { - RI.emitLoadConstPool(MBB, I, dl, - DestReg, SubIdx, - Orig->getOperand(1).getImm(), - (ARMCC::CondCodes)Orig->getOperand(2).getImm(), - Orig->getOperand(3).getReg()); - return; - } - - MachineInstr *MI = MBB.getParent()->CloneMachineInstr(Orig); - MI->getOperand(0).setReg(DestReg); - MBB.insert(I, MI); -}