diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp | 62 |
1 files changed, 22 insertions, 40 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp b/contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp index f61af5a27943..b6a69b2819ee 100644 --- a/contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp +++ b/contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp @@ -11,36 +11,17 @@ //===----------------------------------------------------------------------===// #include "AMDGPU.h" -#include "AMDGPUSubtarget.h" -#include "SIInstrInfo.h" -#include "llvm/ADT/ArrayRef.h" -#include "llvm/ADT/DenseMap.h" +#include "GCNSubtarget.h" #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/PostOrderIterator.h" #include "llvm/ADT/SetVector.h" #include "llvm/ADT/SmallPtrSet.h" -#include "llvm/ADT/SmallVector.h" #include "llvm/CodeGen/MachineBasicBlock.h" -#include "llvm/CodeGen/MachineFunction.h" -#include "llvm/CodeGen/MachineFunctionPass.h" -#include "llvm/CodeGen/MachineInstr.h" #include "llvm/CodeGen/MachineInstrBuilder.h" -#include "llvm/CodeGen/MachineOperand.h" #include "llvm/CodeGen/MachineRegionInfo.h" #include "llvm/CodeGen/MachineRegisterInfo.h" -#include "llvm/CodeGen/TargetOpcodes.h" #include "llvm/CodeGen/TargetRegisterInfo.h" -#include "llvm/Config/llvm-config.h" -#include "llvm/IR/DebugLoc.h" #include "llvm/InitializePasses.h" -#include "llvm/Pass.h" -#include "llvm/Support/Compiler.h" -#include "llvm/Support/Debug.h" -#include "llvm/Support/ErrorHandling.h" -#include "llvm/Support/raw_ostream.h" -#include <cassert> -#include <tuple> -#include <utility> using namespace llvm; @@ -342,11 +323,11 @@ protected: LinearizedRegion *Parent; RegionMRT *RMRT; - void storeLiveOutReg(MachineBasicBlock *MBB, unsigned Reg, + void storeLiveOutReg(MachineBasicBlock *MBB, Register Reg, MachineInstr *DefInstr, const MachineRegisterInfo *MRI, const TargetRegisterInfo *TRI, PHILinearize &PHIInfo); - void storeLiveOutRegRegion(RegionMRT *Region, unsigned Reg, + void storeLiveOutRegRegion(RegionMRT *Region, Register Reg, MachineInstr *DefInstr, const MachineRegisterInfo *MRI, const TargetRegisterInfo *TRI, @@ -397,7 +378,7 @@ public: void replaceLiveOut(unsigned OldReg, unsigned NewReg); - void replaceRegister(unsigned Register, unsigned NewRegister, + void replaceRegister(unsigned Register, class Register NewRegister, MachineRegisterInfo *MRI, bool ReplaceInside, bool ReplaceOutside, bool IncludeLoopPHIs); @@ -690,12 +671,12 @@ RegionMRT *MRT::buildMRT(MachineFunction &MF, return Result; } -void LinearizedRegion::storeLiveOutReg(MachineBasicBlock *MBB, unsigned Reg, +void LinearizedRegion::storeLiveOutReg(MachineBasicBlock *MBB, Register Reg, MachineInstr *DefInstr, const MachineRegisterInfo *MRI, const TargetRegisterInfo *TRI, PHILinearize &PHIInfo) { - if (Register::isVirtualRegister(Reg)) { + if (Reg.isVirtual()) { LLVM_DEBUG(dbgs() << "Considering Register: " << printReg(Reg, TRI) << "\n"); // If this is a source register to a PHI we are chaining, it @@ -730,12 +711,12 @@ void LinearizedRegion::storeLiveOutReg(MachineBasicBlock *MBB, unsigned Reg, } } -void LinearizedRegion::storeLiveOutRegRegion(RegionMRT *Region, unsigned Reg, +void LinearizedRegion::storeLiveOutRegRegion(RegionMRT *Region, Register Reg, MachineInstr *DefInstr, const MachineRegisterInfo *MRI, const TargetRegisterInfo *TRI, PHILinearize &PHIInfo) { - if (Register::isVirtualRegister(Reg)) { + if (Reg.isVirtual()) { LLVM_DEBUG(dbgs() << "Considering Register: " << printReg(Reg, TRI) << "\n"); for (auto &UI : MRI->use_operands(Reg)) { @@ -907,7 +888,8 @@ void LinearizedRegion::replaceLiveOut(unsigned OldReg, unsigned NewReg) { } } -void LinearizedRegion::replaceRegister(unsigned Register, unsigned NewRegister, +void LinearizedRegion::replaceRegister(unsigned Register, + class Register NewRegister, MachineRegisterInfo *MRI, bool ReplaceInside, bool ReplaceOutside, bool IncludeLoopPHI) { @@ -950,7 +932,7 @@ void LinearizedRegion::replaceRegister(unsigned Register, unsigned NewRegister, (IncludeLoopPHI && IsLoopPHI); if (ShouldReplace) { - if (Register::isPhysicalRegister(NewRegister)) { + if (NewRegister.isPhysical()) { LLVM_DEBUG(dbgs() << "Trying to substitute physical register: " << printReg(NewRegister, MRI->getTargetRegisterInfo()) << "\n"); @@ -1002,11 +984,11 @@ void LinearizedRegion::addMBBs(LinearizedRegion *InnerRegion) { } bool LinearizedRegion::contains(MachineBasicBlock *MBB) { - return MBBs.count(MBB) == 1; + return MBBs.contains(MBB); } bool LinearizedRegion::isLiveOut(unsigned Reg) { - return LiveOuts.count(Reg) == 1; + return LiveOuts.contains(Reg); } bool LinearizedRegion::hasNoDef(unsigned Reg, MachineRegisterInfo *MRI) { @@ -1025,7 +1007,7 @@ void LinearizedRegion::removeFalseRegisterKills(MachineRegisterInfo *MRI) { for (auto &RI : II.uses()) { if (RI.isReg()) { Register Reg = RI.getReg(); - if (Register::isVirtualRegister(Reg)) { + if (Reg.isVirtual()) { if (hasNoDef(Reg, MRI)) continue; if (!MRI->hasOneDef(Reg)) { @@ -1168,7 +1150,7 @@ private: void createEntryPHIs(LinearizedRegion *CurrentRegion); void resolvePHIInfos(MachineBasicBlock *FunctionEntry); - void replaceRegisterWith(unsigned Register, unsigned NewRegister); + void replaceRegisterWith(unsigned Register, class Register NewRegister); MachineBasicBlock *createIfRegion(MachineBasicBlock *MergeBB, MachineBasicBlock *CodeBB, @@ -1872,7 +1854,7 @@ MachineBasicBlock *AMDGPUMachineCFGStructurizer::createIfBlock( ? SinglePred->findDebugLoc(SinglePred->getFirstTerminator()) : DebugLoc(); - unsigned Reg = + Register Reg = TII->insertEQ(IfBB, IfBB->begin(), DL, IfReg, SelectBB->getNumber() /* CodeBBStart->getNumber() */); if (&(*(IfBB->getParent()->begin())) == IfBB) { @@ -2224,8 +2206,8 @@ void AMDGPUMachineCFGStructurizer::createEntryPHIs(LinearizedRegion *CurrentRegi PHIInfo.clear(); } -void AMDGPUMachineCFGStructurizer::replaceRegisterWith(unsigned Register, - unsigned NewRegister) { +void AMDGPUMachineCFGStructurizer::replaceRegisterWith( + unsigned Register, class Register NewRegister) { assert(Register != NewRegister && "Cannot replace a reg with itself"); for (MachineRegisterInfo::reg_iterator I = MRI->reg_begin(Register), @@ -2233,7 +2215,7 @@ void AMDGPUMachineCFGStructurizer::replaceRegisterWith(unsigned Register, I != E;) { MachineOperand &O = *I; ++I; - if (Register::isPhysicalRegister(NewRegister)) { + if (NewRegister.isPhysical()) { LLVM_DEBUG(dbgs() << "Trying to substitute physical register: " << printReg(NewRegister, MRI->getTargetRegisterInfo()) << "\n"); @@ -2334,7 +2316,7 @@ MachineBasicBlock *AMDGPUMachineCFGStructurizer::createIfRegion( TII->removeBranch(*RegionExit); // We need to create a backedge if there is a loop - unsigned Reg = TII->insertNE( + Register Reg = TII->insertNE( RegionExit, RegionExit->instr_end(), DL, CurrentRegion->getRegionMRT()->getInnerOutputRegister(), CurrentRegion->getRegionMRT()->getEntry()->getNumber()); @@ -2393,7 +2375,7 @@ MachineBasicBlock *AMDGPUMachineCFGStructurizer::createIfRegion( TII->removeBranch(*RegionExit); // We need to create a backedge if there is a loop - unsigned Reg = + Register Reg = TII->insertNE(RegionExit, RegionExit->instr_end(), DL, CurrentRegion->getRegionMRT()->getInnerOutputRegister(), CurrentRegion->getRegionMRT()->getEntry()->getNumber()); @@ -2592,7 +2574,7 @@ static void removeOldExitPreds(RegionMRT *Region) { static bool mbbHasBackEdge(MachineBasicBlock *MBB, SmallPtrSet<MachineBasicBlock *, 8> &MBBs) { for (auto SI = MBB->succ_begin(), SE = MBB->succ_end(); SI != SE; ++SI) { - if (MBBs.count(*SI) != 0) { + if (MBBs.contains(*SI)) { return true; } } |