diff options
Diffstat (limited to 'contrib/llvm/lib/Target/AMDGPU/R600InstrInfo.cpp')
-rw-r--r-- | contrib/llvm/lib/Target/AMDGPU/R600InstrInfo.cpp | 66 |
1 files changed, 29 insertions, 37 deletions
diff --git a/contrib/llvm/lib/Target/AMDGPU/R600InstrInfo.cpp b/contrib/llvm/lib/Target/AMDGPU/R600InstrInfo.cpp index 1c5f7ec..e88bd07 100644 --- a/contrib/llvm/lib/Target/AMDGPU/R600InstrInfo.cpp +++ b/contrib/llvm/lib/Target/AMDGPU/R600InstrInfo.cpp @@ -320,12 +320,12 @@ R600InstrInfo::ExtractSrcs(MachineInstr &MI, const DenseMap<unsigned, unsigned> &PV, unsigned &ConstCount) const { ConstCount = 0; - ArrayRef<std::pair<MachineOperand *, int64_t>> Srcs = getSrcs(MI); const std::pair<int, unsigned> DummyPair(-1, 0); std::vector<std::pair<int, unsigned> > Result; unsigned i = 0; - for (unsigned n = Srcs.size(); i < n; ++i) { - unsigned Reg = Srcs[i].first->getReg(); + for (const auto &Src : getSrcs(MI)) { + ++i; + unsigned Reg = Src.first->getReg(); int Index = RI.getEncodingValue(Reg) & 0xff; if (Reg == AMDGPU::OQAP) { Result.push_back(std::make_pair(Index, 0U)); @@ -592,9 +592,7 @@ R600InstrInfo::fitsConstReadLimitations(const std::vector<MachineInstr *> &MIs) if (!isALUInstr(MI.getOpcode())) continue; - ArrayRef<std::pair<MachineOperand *, int64_t>> Srcs = getSrcs(MI); - - for (const auto &Src:Srcs) { + for (const auto &Src : getSrcs(MI)) { if (Src.first->getReg() == AMDGPU::ALU_LITERAL_X) Literals.insert(Src.second); if (Literals.size() > 4) @@ -667,7 +665,7 @@ bool R600InstrInfo::analyzeBranch(MachineBasicBlock &MBB, // handled if (isBranch(I->getOpcode())) return true; - if (!isJump(static_cast<MachineInstr *>(I)->getOpcode())) { + if (!isJump(I->getOpcode())) { return false; } @@ -682,8 +680,7 @@ bool R600InstrInfo::analyzeBranch(MachineBasicBlock &MBB, // If there is only one terminator instruction, process it. unsigned LastOpc = LastInst.getOpcode(); - if (I == MBB.begin() || - !isJump(static_cast<MachineInstr *>(--I)->getOpcode())) { + if (I == MBB.begin() || !isJump((--I)->getOpcode())) { if (LastOpc == AMDGPU::JUMP) { TBB = LastInst.getOperand(0).getMBB(); return false; @@ -729,17 +726,19 @@ MachineBasicBlock::iterator FindLastAluClause(MachineBasicBlock &MBB) { It != E; ++It) { if (It->getOpcode() == AMDGPU::CF_ALU || It->getOpcode() == AMDGPU::CF_ALU_PUSH_BEFORE) - return std::prev(It.base()); + return It.getReverse(); } return MBB.end(); } -unsigned R600InstrInfo::InsertBranch(MachineBasicBlock &MBB, +unsigned R600InstrInfo::insertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, ArrayRef<MachineOperand> Cond, - const DebugLoc &DL) const { - assert(TBB && "InsertBranch must not be told to insert a fallthrough"); + const DebugLoc &DL, + int *BytesAdded) const { + assert(TBB && "insertBranch must not be told to insert a fallthrough"); + assert(!BytesAdded && "code size not handled"); if (!FBB) { if (Cond.empty()) { @@ -779,8 +778,9 @@ unsigned R600InstrInfo::InsertBranch(MachineBasicBlock &MBB, } } -unsigned -R600InstrInfo::RemoveBranch(MachineBasicBlock &MBB) const { +unsigned R600InstrInfo::removeBranch(MachineBasicBlock &MBB, + int *BytesRemoved) const { + assert(!BytesRemoved && "code size not handled"); // Note : we leave PRED* instructions there. // They may be needed when predicating instructions. @@ -910,20 +910,20 @@ R600InstrInfo::isProfitableToUnpredicate(MachineBasicBlock &TMBB, bool -R600InstrInfo::ReverseBranchCondition(SmallVectorImpl<MachineOperand> &Cond) const { +R600InstrInfo::reverseBranchCondition(SmallVectorImpl<MachineOperand> &Cond) const { MachineOperand &MO = Cond[1]; switch (MO.getImm()) { - case OPCODE_IS_ZERO_INT: - MO.setImm(OPCODE_IS_NOT_ZERO_INT); + case AMDGPU::PRED_SETE_INT: + MO.setImm(AMDGPU::PRED_SETNE_INT); break; - case OPCODE_IS_NOT_ZERO_INT: - MO.setImm(OPCODE_IS_ZERO_INT); + case AMDGPU::PRED_SETNE_INT: + MO.setImm(AMDGPU::PRED_SETE_INT); break; - case OPCODE_IS_ZERO: - MO.setImm(OPCODE_IS_NOT_ZERO); + case AMDGPU::PRED_SETE: + MO.setImm(AMDGPU::PRED_SETNE); break; - case OPCODE_IS_NOT_ZERO: - MO.setImm(OPCODE_IS_ZERO); + case AMDGPU::PRED_SETNE: + MO.setImm(AMDGPU::PRED_SETE); break; default: return true; @@ -1160,10 +1160,10 @@ MachineInstrBuilder R600InstrInfo::buildIndirectRead(MachineBasicBlock *MBB, int R600InstrInfo::getIndirectIndexBegin(const MachineFunction &MF) const { const MachineRegisterInfo &MRI = MF.getRegInfo(); - const MachineFrameInfo *MFI = MF.getFrameInfo(); + const MachineFrameInfo &MFI = MF.getFrameInfo(); int Offset = -1; - if (MFI->getNumObjects() == 0) { + if (MFI.getNumObjects() == 0) { return -1; } @@ -1195,14 +1195,14 @@ int R600InstrInfo::getIndirectIndexBegin(const MachineFunction &MF) const { int R600InstrInfo::getIndirectIndexEnd(const MachineFunction &MF) const { int Offset = 0; - const MachineFrameInfo *MFI = MF.getFrameInfo(); + const MachineFrameInfo &MFI = MF.getFrameInfo(); // Variable sized objects are not supported - if (MFI->hasVarSizedObjects()) { + if (MFI.hasVarSizedObjects()) { return -1; } - if (MFI->getNumObjects() == 0) { + if (MFI.getNumObjects() == 0) { return -1; } @@ -1481,11 +1481,3 @@ void R600InstrInfo::clearFlag(MachineInstr &MI, unsigned Operand, FlagOp.setImm(InstFlags); } } - -bool R600InstrInfo::isRegisterStore(const MachineInstr &MI) const { - return get(MI.getOpcode()).TSFlags & AMDGPU_FLAG_REGISTER_STORE; -} - -bool R600InstrInfo::isRegisterLoad(const MachineInstr &MI) const { - return get(MI.getOpcode()).TSFlags & AMDGPU_FLAG_REGISTER_LOAD; -} |