Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AMDGPU] Remove unused amdgpu-disable-structurizer flag #105800

Merged
merged 1 commit into from
Aug 23, 2024

Conversation

jmmartinez
Copy link
Contributor

No description provided.

@llvmbot
Copy link
Member

llvmbot commented Aug 23, 2024

@llvm/pr-subscribers-backend-amdgpu

Author: Juan Manuel Martinez Caamaño (jmmartinez)

Changes

Patch is 120.05 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/105800.diff

13 Files Affected:

  • (modified) llvm/lib/Target/AMDGPU/AMDGPU.h (-4)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPU.td (-3)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp (+1-3)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.h (-2)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp (-1)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h (-1)
  • (removed) llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp (-2837)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp (+21-52)
  • (modified) llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h (-2)
  • (modified) llvm/lib/Target/AMDGPU/CMakeLists.txt (-1)
  • (modified) llvm/lib/Target/AMDGPU/SIInstrInfo.cpp (+7-94)
  • (modified) llvm/lib/Target/AMDGPU/SIInstrInfo.h (-8)
  • (modified) llvm/lib/Target/AMDGPU/SIInstructions.td (-9)
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.h b/llvm/lib/Target/AMDGPU/AMDGPU.h
index f5044f52f1648d..afb8f2d93f0f15 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPU.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPU.h
@@ -57,7 +57,6 @@ FunctionPass *createAMDGPUImageIntrinsicOptimizerPass(const TargetMachine *);
 ModulePass *createAMDGPURemoveIncompatibleFunctionsPass(const TargetMachine *);
 FunctionPass *createAMDGPUCodeGenPreparePass();
 FunctionPass *createAMDGPULateCodeGenPrepareLegacyPass();
-FunctionPass *createAMDGPUMachineCFGStructurizerPass();
 FunctionPass *createAMDGPURewriteOutArgumentsPass();
 ModulePass *
 createAMDGPULowerModuleLDSLegacyPass(const AMDGPUTargetMachine *TM = nullptr);
@@ -92,9 +91,6 @@ class SILowerI1CopiesPass : public PassInfoMixin<SILowerI1CopiesPass> {
 
 void initializeAMDGPUDAGToDAGISelLegacyPass(PassRegistry &);
 
-void initializeAMDGPUMachineCFGStructurizerPass(PassRegistry&);
-extern char &AMDGPUMachineCFGStructurizerID;
-
 void initializeAMDGPUAlwaysInlinePass(PassRegistry&);
 
 Pass *createAMDGPUAnnotateKernelFeaturesPass();
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td
index 9efdbd751d96e3..5757ac0d4454d0 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPU.td
+++ b/llvm/lib/Target/AMDGPU/AMDGPU.td
@@ -2253,9 +2253,6 @@ def HasDefaultComponentBroadcast
 def HasDsSrc2Insts : Predicate<"!Subtarget->hasDsSrc2Insts()">,
   AssemblerPredicate<(all_of FeatureDsSrc2Insts)>;
 
-def EnableLateCFGStructurize : Predicate<
-  "EnableLateStructurizeCFG">;
-
 def EnableFlatScratch : Predicate<"Subtarget->enableFlatScratch()">;
 
 def DisableFlatScratch : Predicate<"!Subtarget->enableFlatScratch()">;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
index 6a0134e07567a1..0daaf6b6576030 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
@@ -121,9 +121,7 @@ FunctionPass *llvm::createAMDGPUISelDag(TargetMachine &TM,
 
 AMDGPUDAGToDAGISel::AMDGPUDAGToDAGISel(TargetMachine &TM,
                                        CodeGenOptLevel OptLevel)
-    : SelectionDAGISel(TM, OptLevel) {
-  EnableLateStructurizeCFG = AMDGPUTargetMachine::EnableLateStructurizeCFG;
-}
+    : SelectionDAGISel(TM, OptLevel) {}
 
 bool AMDGPUDAGToDAGISel::runOnMachineFunction(MachineFunction &MF) {
   Subtarget = &MF.getSubtarget<GCNSubtarget>();
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.h b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.h
index 45a951352c1eb1..11c4cdd560c2f3 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.h
@@ -68,8 +68,6 @@ class AMDGPUDAGToDAGISel : public SelectionDAGISel {
   // Default FP mode for the current function.
   SIModeRegisterDefaults Mode;
 
-  bool EnableLateStructurizeCFG;
-
   // Instructions that will be lowered with a final instruction that zeros the
   // high result bits.
   bool fp16SrcZerosHighBits(unsigned Opc) const;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp b/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
index 05ed1b322c0d1b..17071970ca4bfe 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
@@ -45,7 +45,6 @@ AMDGPUInstructionSelector::AMDGPUInstructionSelector(
     const AMDGPUTargetMachine &TM)
     : TII(*STI.getInstrInfo()), TRI(*STI.getRegisterInfo()), RBI(RBI), TM(TM),
       STI(STI),
-      EnableLateStructurizeCFG(AMDGPUTargetMachine::EnableLateStructurizeCFG),
 #define GET_GLOBALISEL_PREDICATES_INIT
 #include "AMDGPUGenGlobalISel.inc"
 #undef GET_GLOBALISEL_PREDICATES_INIT
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h b/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h
index 69806b240cf2bc..207cd67f0eda0e 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.h
@@ -371,7 +371,6 @@ class AMDGPUInstructionSelector final : public InstructionSelector {
   const AMDGPURegisterBankInfo &RBI;
   const AMDGPUTargetMachine &TM;
   const GCNSubtarget &STI;
-  bool EnableLateStructurizeCFG;
 #define GET_GLOBALISEL_PREDICATES_DECL
 #define AMDGPUSubtarget GCNSubtarget
 #include "AMDGPUGenGlobalISel.inc"
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp b/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp
deleted file mode 100644
index 07b2ecc2fed0e9..00000000000000
--- a/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp
+++ /dev/null
@@ -1,2837 +0,0 @@
-//===- AMDGPUMachineCFGStructurizer.cpp - Machine code if conversion pass. ===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements the machine instruction level CFG structurizer pass.
-//
-//===----------------------------------------------------------------------===//
-
-#include "AMDGPU.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/CodeGen/MachineBasicBlock.h"
-#include "llvm/CodeGen/MachineInstrBuilder.h"
-#include "llvm/CodeGen/MachineRegionInfo.h"
-#include "llvm/CodeGen/MachineRegisterInfo.h"
-#include "llvm/CodeGen/TargetRegisterInfo.h"
-#include "llvm/InitializePasses.h"
-
-using namespace llvm;
-
-#define DEBUG_TYPE "amdgpucfgstructurizer"
-
-namespace {
-
-class PHILinearizeDestIterator;
-
-class PHILinearize {
-  friend class PHILinearizeDestIterator;
-
-public:
-  using PHISourceT = std::pair<unsigned, MachineBasicBlock *>;
-
-private:
-  using PHISourcesT = DenseSet<PHISourceT>;
-  using PHIInfoElementT = struct {
-    unsigned DestReg;
-    DebugLoc DL;
-    PHISourcesT Sources;
-  };
-  using PHIInfoT = SmallPtrSet<PHIInfoElementT *, 2>;
-  PHIInfoT PHIInfo;
-
-  static unsigned phiInfoElementGetDest(PHIInfoElementT *Info);
-  static void phiInfoElementSetDef(PHIInfoElementT *Info, unsigned NewDef);
-  static PHISourcesT &phiInfoElementGetSources(PHIInfoElementT *Info);
-  static void phiInfoElementAddSource(PHIInfoElementT *Info, unsigned SourceReg,
-                                      MachineBasicBlock *SourceMBB);
-  static void phiInfoElementRemoveSource(PHIInfoElementT *Info,
-                                         unsigned SourceReg,
-                                         MachineBasicBlock *SourceMBB);
-  PHIInfoElementT *findPHIInfoElement(unsigned DestReg);
-  PHIInfoElementT *findPHIInfoElementFromSource(unsigned SourceReg,
-                                                MachineBasicBlock *SourceMBB);
-
-public:
-  bool findSourcesFromMBB(MachineBasicBlock *SourceMBB,
-                          SmallVector<unsigned, 4> &Sources);
-  void addDest(unsigned DestReg, const DebugLoc &DL);
-  void replaceDef(unsigned OldDestReg, unsigned NewDestReg);
-  void deleteDef(unsigned DestReg);
-  void addSource(unsigned DestReg, unsigned SourceReg,
-                 MachineBasicBlock *SourceMBB);
-  void removeSource(unsigned DestReg, unsigned SourceReg,
-                    MachineBasicBlock *SourceMBB = nullptr);
-  bool findDest(unsigned SourceReg, MachineBasicBlock *SourceMBB,
-                unsigned &DestReg);
-  bool isSource(unsigned Reg, MachineBasicBlock *SourceMBB = nullptr);
-  unsigned getNumSources(unsigned DestReg);
-  void dump(MachineRegisterInfo *MRI);
-  void clear();
-
-  using source_iterator = PHISourcesT::iterator;
-  using dest_iterator = PHILinearizeDestIterator;
-
-  dest_iterator dests_begin();
-  dest_iterator dests_end();
-
-  source_iterator sources_begin(unsigned Reg);
-  source_iterator sources_end(unsigned Reg);
-};
-
-class PHILinearizeDestIterator {
-private:
-  PHILinearize::PHIInfoT::iterator Iter;
-
-public:
-  PHILinearizeDestIterator(PHILinearize::PHIInfoT::iterator I) : Iter(I) {}
-
-  unsigned operator*() { return PHILinearize::phiInfoElementGetDest(*Iter); }
-  PHILinearizeDestIterator &operator++() {
-    ++Iter;
-    return *this;
-  }
-  bool operator==(const PHILinearizeDestIterator &I) const {
-    return I.Iter == Iter;
-  }
-  bool operator!=(const PHILinearizeDestIterator &I) const {
-    return I.Iter != Iter;
-  }
-};
-
-} // end anonymous namespace
-
-unsigned PHILinearize::phiInfoElementGetDest(PHIInfoElementT *Info) {
-  return Info->DestReg;
-}
-
-void PHILinearize::phiInfoElementSetDef(PHIInfoElementT *Info,
-                                        unsigned NewDef) {
-  Info->DestReg = NewDef;
-}
-
-PHILinearize::PHISourcesT &
-PHILinearize::phiInfoElementGetSources(PHIInfoElementT *Info) {
-  return Info->Sources;
-}
-
-void PHILinearize::phiInfoElementAddSource(PHIInfoElementT *Info,
-                                           unsigned SourceReg,
-                                           MachineBasicBlock *SourceMBB) {
-  // Assertion ensures we don't use the same SourceMBB for the
-  // sources, because we cannot have different registers with
-  // identical predecessors, but we can have the same register for
-  // multiple predecessors.
-#if !defined(NDEBUG)
-  for (auto SI : phiInfoElementGetSources(Info)) {
-    assert((SI.second != SourceMBB || SourceReg == SI.first));
-  }
-#endif
-
-  phiInfoElementGetSources(Info).insert(PHISourceT(SourceReg, SourceMBB));
-}
-
-void PHILinearize::phiInfoElementRemoveSource(PHIInfoElementT *Info,
-                                              unsigned SourceReg,
-                                              MachineBasicBlock *SourceMBB) {
-  auto &Sources = phiInfoElementGetSources(Info);
-  SmallVector<PHISourceT, 4> ElimiatedSources;
-  for (auto SI : Sources) {
-    if (SI.first == SourceReg &&
-        (SI.second == nullptr || SI.second == SourceMBB)) {
-      ElimiatedSources.push_back(PHISourceT(SI.first, SI.second));
-    }
-  }
-
-  for (auto &Source : ElimiatedSources) {
-    Sources.erase(Source);
-  }
-}
-
-PHILinearize::PHIInfoElementT *
-PHILinearize::findPHIInfoElement(unsigned DestReg) {
-  for (auto *I : PHIInfo) {
-    if (phiInfoElementGetDest(I) == DestReg) {
-      return I;
-    }
-  }
-  return nullptr;
-}
-
-PHILinearize::PHIInfoElementT *
-PHILinearize::findPHIInfoElementFromSource(unsigned SourceReg,
-                                           MachineBasicBlock *SourceMBB) {
-  for (auto *I : PHIInfo) {
-    for (auto SI : phiInfoElementGetSources(I)) {
-      if (SI.first == SourceReg &&
-          (SI.second == nullptr || SI.second == SourceMBB)) {
-        return I;
-      }
-    }
-  }
-  return nullptr;
-}
-
-bool PHILinearize::findSourcesFromMBB(MachineBasicBlock *SourceMBB,
-                                      SmallVector<unsigned, 4> &Sources) {
-  bool FoundSource = false;
-  for (auto *I : PHIInfo) {
-    for (auto SI : phiInfoElementGetSources(I)) {
-      if (SI.second == SourceMBB) {
-        FoundSource = true;
-        Sources.push_back(SI.first);
-      }
-    }
-  }
-  return FoundSource;
-}
-
-void PHILinearize::addDest(unsigned DestReg, const DebugLoc &DL) {
-  assert(findPHIInfoElement(DestReg) == nullptr && "Dest already exists");
-  PHISourcesT EmptySet;
-  PHIInfoElementT *NewElement = new PHIInfoElementT();
-  NewElement->DestReg = DestReg;
-  NewElement->DL = DL;
-  NewElement->Sources = EmptySet;
-  PHIInfo.insert(NewElement);
-}
-
-void PHILinearize::replaceDef(unsigned OldDestReg, unsigned NewDestReg) {
-  phiInfoElementSetDef(findPHIInfoElement(OldDestReg), NewDestReg);
-}
-
-void PHILinearize::deleteDef(unsigned DestReg) {
-  PHIInfoElementT *InfoElement = findPHIInfoElement(DestReg);
-  PHIInfo.erase(InfoElement);
-  delete InfoElement;
-}
-
-void PHILinearize::addSource(unsigned DestReg, unsigned SourceReg,
-                             MachineBasicBlock *SourceMBB) {
-  phiInfoElementAddSource(findPHIInfoElement(DestReg), SourceReg, SourceMBB);
-}
-
-void PHILinearize::removeSource(unsigned DestReg, unsigned SourceReg,
-                                MachineBasicBlock *SourceMBB) {
-  phiInfoElementRemoveSource(findPHIInfoElement(DestReg), SourceReg, SourceMBB);
-}
-
-bool PHILinearize::findDest(unsigned SourceReg, MachineBasicBlock *SourceMBB,
-                            unsigned &DestReg) {
-  PHIInfoElementT *InfoElement =
-      findPHIInfoElementFromSource(SourceReg, SourceMBB);
-  if (InfoElement != nullptr) {
-    DestReg = phiInfoElementGetDest(InfoElement);
-    return true;
-  }
-  return false;
-}
-
-bool PHILinearize::isSource(unsigned Reg, MachineBasicBlock *SourceMBB) {
-  unsigned DestReg;
-  return findDest(Reg, SourceMBB, DestReg);
-}
-
-unsigned PHILinearize::getNumSources(unsigned DestReg) {
-  return phiInfoElementGetSources(findPHIInfoElement(DestReg)).size();
-}
-
-#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
-LLVM_DUMP_METHOD void PHILinearize::dump(MachineRegisterInfo *MRI) {
-  const TargetRegisterInfo *TRI = MRI->getTargetRegisterInfo();
-  dbgs() << "=PHIInfo Start=\n";
-  for (auto *PII : this->PHIInfo) {
-    PHIInfoElementT &Element = *PII;
-    dbgs() << "Dest: " << printReg(Element.DestReg, TRI)
-           << " Sources: {";
-    for (auto &SI : Element.Sources) {
-      dbgs() << printReg(SI.first, TRI) << '(' << printMBBReference(*SI.second)
-             << "),";
-    }
-    dbgs() << "}\n";
-  }
-  dbgs() << "=PHIInfo End=\n";
-}
-#endif
-
-void PHILinearize::clear() { PHIInfo = PHIInfoT(); }
-
-PHILinearize::dest_iterator PHILinearize::dests_begin() {
-  return PHILinearizeDestIterator(PHIInfo.begin());
-}
-
-PHILinearize::dest_iterator PHILinearize::dests_end() {
-  return PHILinearizeDestIterator(PHIInfo.end());
-}
-
-PHILinearize::source_iterator PHILinearize::sources_begin(unsigned Reg) {
-  auto InfoElement = findPHIInfoElement(Reg);
-  return phiInfoElementGetSources(InfoElement).begin();
-}
-
-PHILinearize::source_iterator PHILinearize::sources_end(unsigned Reg) {
-  auto InfoElement = findPHIInfoElement(Reg);
-  return phiInfoElementGetSources(InfoElement).end();
-}
-
-static unsigned getPHINumInputs(MachineInstr &PHI) {
-  assert(PHI.isPHI());
-  return (PHI.getNumOperands() - 1) / 2;
-}
-
-static MachineBasicBlock *getPHIPred(MachineInstr &PHI, unsigned Index) {
-  assert(PHI.isPHI());
-  return PHI.getOperand(Index * 2 + 2).getMBB();
-}
-
-static void setPhiPred(MachineInstr &PHI, unsigned Index,
-                       MachineBasicBlock *NewPred) {
-  PHI.getOperand(Index * 2 + 2).setMBB(NewPred);
-}
-
-static unsigned getPHISourceReg(MachineInstr &PHI, unsigned Index) {
-  assert(PHI.isPHI());
-  return PHI.getOperand(Index * 2 + 1).getReg();
-}
-
-static unsigned getPHIDestReg(MachineInstr &PHI) {
-  assert(PHI.isPHI());
-  return PHI.getOperand(0).getReg();
-}
-
-namespace {
-
-class RegionMRT;
-class MBBMRT;
-
-class LinearizedRegion {
-protected:
-  MachineBasicBlock *Entry;
-  // The exit block is part of the region, and is the last
-  // merge block before exiting the region.
-  MachineBasicBlock *Exit;
-  DenseSet<unsigned> LiveOuts;
-  SmallPtrSet<MachineBasicBlock *, 1> MBBs;
-  bool HasLoop;
-  LinearizedRegion *Parent;
-  RegionMRT *RMRT;
-
-  void storeLiveOutReg(MachineBasicBlock *MBB, Register Reg,
-                       MachineInstr *DefInstr, const MachineRegisterInfo *MRI,
-                       const TargetRegisterInfo *TRI, PHILinearize &PHIInfo);
-
-  void storeLiveOutRegRegion(RegionMRT *Region, Register Reg,
-                             MachineInstr *DefInstr,
-                             const MachineRegisterInfo *MRI,
-                             const TargetRegisterInfo *TRI,
-                             PHILinearize &PHIInfo);
-
-  void storeMBBLiveOuts(MachineBasicBlock *MBB, const MachineRegisterInfo *MRI,
-                        const TargetRegisterInfo *TRI, PHILinearize &PHIInfo,
-                        RegionMRT *TopRegion);
-
-  void storeLiveOuts(MachineBasicBlock *MBB, const MachineRegisterInfo *MRI,
-                     const TargetRegisterInfo *TRI, PHILinearize &PHIInfo);
-
-  void storeLiveOuts(RegionMRT *Region, const MachineRegisterInfo *MRI,
-                     const TargetRegisterInfo *TRI, PHILinearize &PHIInfo,
-                     RegionMRT *TopRegion = nullptr);
-
-public:
-  LinearizedRegion();
-  LinearizedRegion(MachineBasicBlock *MBB, const MachineRegisterInfo *MRI,
-                   const TargetRegisterInfo *TRI, PHILinearize &PHIInfo);
-  ~LinearizedRegion() = default;
-
-  void setRegionMRT(RegionMRT *Region) { RMRT = Region; }
-
-  RegionMRT *getRegionMRT() { return RMRT; }
-
-  void setParent(LinearizedRegion *P) { Parent = P; }
-
-  LinearizedRegion *getParent() { return Parent; }
-
-  void print(raw_ostream &OS, const TargetRegisterInfo *TRI = nullptr);
-
-  void setBBSelectRegIn(unsigned Reg);
-
-  unsigned getBBSelectRegIn();
-
-  void setBBSelectRegOut(unsigned Reg, bool IsLiveOut);
-
-  unsigned getBBSelectRegOut();
-
-  void setHasLoop(bool Value);
-
-  bool getHasLoop();
-
-  void addLiveOut(unsigned VReg);
-
-  void removeLiveOut(unsigned Reg);
-
-  void replaceLiveOut(unsigned OldReg, unsigned NewReg);
-
-  void replaceRegister(unsigned Register, class Register NewRegister,
-                       MachineRegisterInfo *MRI, bool ReplaceInside,
-                       bool ReplaceOutside, bool IncludeLoopPHIs);
-
-  void replaceRegisterInsideRegion(unsigned Register, unsigned NewRegister,
-                                   bool IncludeLoopPHIs,
-                                   MachineRegisterInfo *MRI);
-
-  void replaceRegisterOutsideRegion(unsigned Register, unsigned NewRegister,
-                                    bool IncludeLoopPHIs,
-                                    MachineRegisterInfo *MRI);
-
-  DenseSet<unsigned> *getLiveOuts();
-
-  void setEntry(MachineBasicBlock *NewEntry);
-
-  MachineBasicBlock *getEntry();
-
-  void setExit(MachineBasicBlock *NewExit);
-
-  MachineBasicBlock *getExit();
-
-  void addMBB(MachineBasicBlock *MBB);
-
-  void addMBBs(LinearizedRegion *InnerRegion);
-
-  bool contains(MachineBasicBlock *MBB);
-
-  bool isLiveOut(unsigned Reg);
-
-  bool hasNoDef(unsigned Reg, MachineRegisterInfo *MRI);
-
-  void removeFalseRegisterKills(MachineRegisterInfo *MRI);
-
-  void initLiveOut(RegionMRT *Region, const MachineRegisterInfo *MRI,
-                   const TargetRegisterInfo *TRI, PHILinearize &PHIInfo);
-};
-
-class MRT {
-protected:
-  RegionMRT *Parent;
-  unsigned BBSelectRegIn;
-  unsigned BBSelectRegOut;
-
-public:
-  virtual ~MRT() = default;
-
-  unsigned getBBSelectRegIn() { return BBSelectRegIn; }
-
-  unsigned getBBSelectRegOut() { return BBSelectRegOut; }
-
-  void setBBSelectRegIn(unsigned Reg) { BBSelectRegIn = Reg; }
-
-  void setBBSelectRegOut(unsigned Reg) { BBSelectRegOut = Reg; }
-
-  virtual RegionMRT *getRegionMRT() { return nullptr; }
-
-  virtual MBBMRT *getMBBMRT() { return nullptr; }
-
-  bool isRegion() { return getRegionMRT() != nullptr; }
-
-  bool isMBB() { return getMBBMRT() != nullptr; }
-
-  bool isRoot() { return Parent == nullptr; }
-
-  void setParent(RegionMRT *Region) { Parent = Region; }
-
-  RegionMRT *getParent() { return Parent; }
-
-  static MachineBasicBlock *
-  initializeMRT(MachineFunction &MF, const MachineRegionInfo *RegionInfo,
-                DenseMap<MachineRegion *, RegionMRT *> &RegionMap);
-
-  static RegionMRT *buildMRT(MachineFunction &MF,
-                             const MachineRegionInfo *RegionInfo,
-                             const SIInstrInfo *TII,
-                             MachineRegisterInfo *MRI);
-
-  virtual void dump(const TargetRegisterInfo *TRI, int depth = 0) = 0;
-
-  void dumpDepth(int depth) {
-    for (int i = depth; i > 0; --i) {
-      dbgs() << "  ";
-    }
-  }
-};
-
-class MBBMRT : public MRT {
-  MachineBasicBlock *MBB;
-
-public:
-  MBBMRT(MachineBasicBlock *BB) : MBB(BB) {
-    setParent(nullptr);
-    setBBSelectRegOut(0);
-    setBBSelectRegIn(0);
-  }
-
-  MBBMRT *getMBBMRT() override { return this; }
-
-  MachineBasicBlock *getMBB() { return MBB; }
-
-  void dump(const TargetRegisterInfo *TRI, int depth = 0) override {
-    dumpDepth(depth);
-    dbgs() << "MBB: " << getMBB()->getNumber();
-    dbgs() << " In: " << printReg(getBBSelectRegIn(), TRI);
-    dbgs() << ", Out: " << printReg(getBBSelectRegOut(), TRI) << "\n";
-  }
-};
-
-class RegionMRT ...
[truncated]

@jayfoad jayfoad requested a review from ssahasra August 23, 2024 08:53
Copy link
Contributor

@jayfoad jayfoad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. We could probably remove amdgpu-enable-structurizer-workarounds too.

@jmmartinez jmmartinez force-pushed the clean/disable_structurizer branch from 2cc8452 to 9d92edb Compare August 23, 2024 12:08
Copy link
Collaborator

@ssahasra ssahasra left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! That option was my mess and I forgot to clean it up!

@ssahasra
Copy link
Collaborator

LGTM. We could probably remove amdgpu-enable-structurizer-workarounds too.

Yes please! I don't think there is any pipeline in graphics or compute that works without the workarounds anymore.

@jmmartinez jmmartinez merged commit 2b4b909 into llvm:main Aug 23, 2024
5 of 8 checks passed
@jmmartinez
Copy link
Contributor Author

Last PR: #105819

cjdb pushed a commit to cjdb/llvm-project that referenced this pull request Aug 23, 2024
dmpolukhin pushed a commit to dmpolukhin/llvm-project that referenced this pull request Sep 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants