diff options
author | Colin LeMahieu <colinl@codeaurora.org> | 2015-02-09 21:56:37 +0000 |
---|---|---|
committer | Colin LeMahieu <colinl@codeaurora.org> | 2015-02-09 21:56:37 +0000 |
commit | 4fd203d3e1bd51e3ed8176a4560123d17c8d1e3a (patch) | |
tree | 07ea32ae6ad700ad2587279f4ccf988f052f0b80 /llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp | |
parent | 541c202be860af8564766bcd787f105002e3dde4 (diff) | |
download | bcm5719-llvm-4fd203d3e1bd51e3ed8176a4560123d17c8d1e3a.tar.gz bcm5719-llvm-4fd203d3e1bd51e3ed8176a4560123d17c8d1e3a.zip |
[Hexagon] Removing more V4 predicates since V4 is the required minimum.
llvm-svn: 228614
Diffstat (limited to 'llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp')
-rw-r--r-- | llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp | 55 |
1 files changed, 5 insertions, 50 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp b/llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp index 2c574c59fd4..3df98d67171 100644 --- a/llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp +++ b/llvm/lib/Target/Hexagon/HexagonRegisterInfo.cpp @@ -45,9 +45,6 @@ HexagonRegisterInfo::HexagonRegisterInfo(HexagonSubtarget &st) const MCPhysReg * HexagonRegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const { - static const MCPhysReg CalleeSavedRegsV2[] = { - Hexagon::R24, Hexagon::R25, Hexagon::R26, Hexagon::R27, 0 - }; static const MCPhysReg CalleeSavedRegsV3[] = { Hexagon::R16, Hexagon::R17, Hexagon::R18, Hexagon::R19, Hexagon::R20, Hexagon::R21, Hexagon::R22, Hexagon::R23, @@ -55,11 +52,6 @@ HexagonRegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const { }; switch(Subtarget.getHexagonArchVersion()) { - case HexagonSubtarget::V1: - break; - case HexagonSubtarget::V2: - return CalleeSavedRegsV2; - case HexagonSubtarget::V3: case HexagonSubtarget::V4: case HexagonSubtarget::V5: return CalleeSavedRegsV3; @@ -88,10 +80,6 @@ BitVector HexagonRegisterInfo::getReservedRegs(const MachineFunction &MF) const TargetRegisterClass* const* HexagonRegisterInfo::getCalleeSavedRegClasses(const MachineFunction *MF) const { - static const TargetRegisterClass * const CalleeSavedRegClassesV2[] = { - &Hexagon::IntRegsRegClass, &Hexagon::IntRegsRegClass, - &Hexagon::IntRegsRegClass, &Hexagon::IntRegsRegClass, - }; static const TargetRegisterClass * const CalleeSavedRegClassesV3[] = { &Hexagon::IntRegsRegClass, &Hexagon::IntRegsRegClass, &Hexagon::IntRegsRegClass, &Hexagon::IntRegsRegClass, @@ -102,11 +90,6 @@ HexagonRegisterInfo::getCalleeSavedRegClasses(const MachineFunction *MF) const { }; switch(Subtarget.getHexagonArchVersion()) { - case HexagonSubtarget::V1: - break; - case HexagonSubtarget::V2: - return CalleeSavedRegClassesV2; - case HexagonSubtarget::V3: case HexagonSubtarget::V4: case HexagonSubtarget::V5: return CalleeSavedRegClassesV3; @@ -211,40 +194,12 @@ void HexagonRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, MI.getOperand(FIOperandNum+1).ChangeToImmediate(0); } else if (TII.isMemOp(&MI)) { // use the constant extender if the instruction provides it - // and we are V4TOps. - if (Subtarget.hasV4TOps()) { - if (TII.isConstExtended(&MI)) { - MI.getOperand(FIOperandNum).ChangeToRegister(FrameReg, false); - MI.getOperand(FIOperandNum+1).ChangeToImmediate(Offset); - TII.immediateExtend(&MI); - } else { - llvm_unreachable("Need to implement for memops"); - } + if (TII.isConstExtended(&MI)) { + MI.getOperand(FIOperandNum).ChangeToRegister(FrameReg, false); + MI.getOperand(FIOperandNum+1).ChangeToImmediate(Offset); + TII.immediateExtend(&MI); } else { - // Only V3 and older instructions here. - unsigned ResReg = HEXAGON_RESERVED_REG_1; - if (!MFI.hasVarSizedObjects() && - TII.isValidOffset(MI.getOpcode(), (FrameSize+Offset))) { - MI.getOperand(FIOperandNum).ChangeToRegister(getStackRegister(), - false, false, false); - MI.getOperand(FIOperandNum+1).ChangeToImmediate(FrameSize+Offset); - } else if (!TII.isValidOffset(Hexagon::A2_addi, Offset)) { - BuildMI(*MI.getParent(), II, MI.getDebugLoc(), - TII.get(Hexagon::CONST32_Int_Real), ResReg).addImm(Offset); - BuildMI(*MI.getParent(), II, MI.getDebugLoc(), - TII.get(Hexagon::A2_add), ResReg).addReg(FrameReg). - addReg(ResReg); - MI.getOperand(FIOperandNum).ChangeToRegister(ResReg, false, false, - true); - MI.getOperand(FIOperandNum+1).ChangeToImmediate(0); - } else { - BuildMI(*MI.getParent(), II, MI.getDebugLoc(), - TII.get(Hexagon::A2_addi), ResReg).addReg(FrameReg). - addImm(Offset); - MI.getOperand(FIOperandNum).ChangeToRegister(ResReg, false, false, - true); - MI.getOperand(FIOperandNum+1).ChangeToImmediate(0); - } + llvm_unreachable("Need to implement for memops"); } } else { unsigned dstReg = MI.getOperand(0).getReg(); |