diff options
author | Akshat Oke <Akshat.Oke@amd.com> | 2025-02-05 17:54:57 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-05 17:54:57 +0530 |
commit | f77f777f35c4d60573c75701eda8ddbaee070c21 (patch) | |
tree | 072a59df474af6ef95ab5aacd29f1559a4abc97d /llvm/lib/CodeGen | |
parent | 7945a33a103bbb756ae284237bb7dc577cfa1be4 (diff) | |
download | llvm-f77f777f35c4d60573c75701eda8ddbaee070c21.zip llvm-f77f777f35c4d60573c75701eda8ddbaee070c21.tar.gz llvm-f77f777f35c4d60573c75701eda8ddbaee070c21.tar.bz2 |
[CodeGen][NewPM] Port RenameIndependentSubregs to NPM (#125192)
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/CodeGen.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/CodeGen/RenameIndependentSubregs.cpp | 69 |
2 files changed, 47 insertions, 24 deletions
diff --git a/llvm/lib/CodeGen/CodeGen.cpp b/llvm/lib/CodeGen/CodeGen.cpp index 37972de..5955d0fc 100644 --- a/llvm/lib/CodeGen/CodeGen.cpp +++ b/llvm/lib/CodeGen/CodeGen.cpp @@ -119,7 +119,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) { initializeRegisterCoalescerLegacyPass(Registry); initializeRemoveLoadsIntoFakeUsesPass(Registry); initializeRemoveRedundantDebugValuesPass(Registry); - initializeRenameIndependentSubregsPass(Registry); + initializeRenameIndependentSubregsLegacyPass(Registry); initializeSafeStackLegacyPassPass(Registry); initializeSelectOptimizePass(Registry); initializeShadowStackGCLoweringPass(Registry); diff --git a/llvm/lib/CodeGen/RenameIndependentSubregs.cpp b/llvm/lib/CodeGen/RenameIndependentSubregs.cpp index 0128f87..58f212e 100644 --- a/llvm/lib/CodeGen/RenameIndependentSubregs.cpp +++ b/llvm/lib/CodeGen/RenameIndependentSubregs.cpp @@ -26,6 +26,7 @@ // //===----------------------------------------------------------------------===// +#include "llvm/CodeGen/RenameIndependentSubregs.h" #include "LiveRangeUtils.h" #include "PHIEliminationUtils.h" #include "llvm/CodeGen/LiveInterval.h" @@ -43,25 +44,11 @@ using namespace llvm; namespace { -class RenameIndependentSubregs : public MachineFunctionPass { +class RenameIndependentSubregs { public: - static char ID; - RenameIndependentSubregs() : MachineFunctionPass(ID) {} - - StringRef getPassName() const override { - return "Rename Disconnected Subregister Components"; - } - - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.setPreservesCFG(); - AU.addRequired<LiveIntervalsWrapperPass>(); - AU.addPreserved<LiveIntervalsWrapperPass>(); - AU.addRequired<SlotIndexesWrapperPass>(); - AU.addPreserved<SlotIndexesWrapperPass>(); - MachineFunctionPass::getAnalysisUsage(AU); - } + RenameIndependentSubregs(LiveIntervals *LIS) : LIS(LIS) {} - bool runOnMachineFunction(MachineFunction &MF) override; + bool run(MachineFunction &MF); private: struct SubRangeInfo { @@ -106,17 +93,36 @@ private: const TargetInstrInfo *TII = nullptr; }; +class RenameIndependentSubregsLegacy : public MachineFunctionPass { +public: + static char ID; + RenameIndependentSubregsLegacy() : MachineFunctionPass(ID) {} + bool runOnMachineFunction(MachineFunction &MF) override; + StringRef getPassName() const override { + return "Rename Disconnected Subregister Components"; + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.setPreservesCFG(); + AU.addRequired<LiveIntervalsWrapperPass>(); + AU.addPreserved<LiveIntervalsWrapperPass>(); + AU.addRequired<SlotIndexesWrapperPass>(); + AU.addPreserved<SlotIndexesWrapperPass>(); + MachineFunctionPass::getAnalysisUsage(AU); + } +}; + } // end anonymous namespace -char RenameIndependentSubregs::ID; +char RenameIndependentSubregsLegacy::ID; -char &llvm::RenameIndependentSubregsID = RenameIndependentSubregs::ID; +char &llvm::RenameIndependentSubregsID = RenameIndependentSubregsLegacy::ID; -INITIALIZE_PASS_BEGIN(RenameIndependentSubregs, DEBUG_TYPE, +INITIALIZE_PASS_BEGIN(RenameIndependentSubregsLegacy, DEBUG_TYPE, "Rename Independent Subregisters", false, false) INITIALIZE_PASS_DEPENDENCY(SlotIndexesWrapperPass) INITIALIZE_PASS_DEPENDENCY(LiveIntervalsWrapperPass) -INITIALIZE_PASS_END(RenameIndependentSubregs, DEBUG_TYPE, +INITIALIZE_PASS_END(RenameIndependentSubregsLegacy, DEBUG_TYPE, "Rename Independent Subregisters", false, false) bool RenameIndependentSubregs::renameComponents(LiveInterval &LI) const { @@ -381,7 +387,25 @@ void RenameIndependentSubregs::computeMainRangesFixFlags( } } -bool RenameIndependentSubregs::runOnMachineFunction(MachineFunction &MF) { +PreservedAnalyses +RenameIndependentSubregsPass::run(MachineFunction &MF, + MachineFunctionAnalysisManager &MFAM) { + auto &LIS = MFAM.getResult<LiveIntervalsAnalysis>(MF); + if (!RenameIndependentSubregs(&LIS).run(MF)) + return PreservedAnalyses::all(); + auto PA = getMachineFunctionPassPreservedAnalyses(); + PA.preserveSet<CFGAnalyses>(); + PA.preserve<LiveIntervalsAnalysis>(); + PA.preserve<SlotIndexesAnalysis>(); + return PA; +} + +bool RenameIndependentSubregsLegacy::runOnMachineFunction(MachineFunction &MF) { + auto &LIS = getAnalysis<LiveIntervalsWrapperPass>().getLIS(); + return RenameIndependentSubregs(&LIS).run(MF); +} + +bool RenameIndependentSubregs::run(MachineFunction &MF) { // Skip renaming if liveness of subregister is not tracked. MRI = &MF.getRegInfo(); if (!MRI->subRegLivenessEnabled()) @@ -390,7 +414,6 @@ bool RenameIndependentSubregs::runOnMachineFunction(MachineFunction &MF) { LLVM_DEBUG(dbgs() << "Renaming independent subregister live ranges in " << MF.getName() << '\n'); - LIS = &getAnalysis<LiveIntervalsWrapperPass>().getLIS(); TII = MF.getSubtarget().getInstrInfo(); // Iterate over all vregs. Note that we query getNumVirtRegs() the newly |