Skip to content

Commit e7e38bc

Browse files
committed
[CodeGen][NewPM] Port MachineCycleInfo to NPM
1 parent dbedca0 commit e7e38bc

File tree

7 files changed

+50
-12
lines changed

7 files changed

+50
-12
lines changed

llvm/include/llvm/CodeGen/MachineCycleAnalysis.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include "llvm/ADT/GenericCycleInfo.h"
1818
#include "llvm/CodeGen/MachineFunctionPass.h"
19+
#include "llvm/CodeGen/MachinePassManager.h"
1920
#include "llvm/CodeGen/MachineSSAContext.h"
2021

2122
namespace llvm {
@@ -46,6 +47,23 @@ class MachineCycleInfoWrapperPass : public MachineFunctionPass {
4647
// version.
4748
bool isCycleInvariant(const MachineCycle *Cycle, MachineInstr &I);
4849

50+
class MachineCycleAnalysis : public AnalysisInfoMixin<MachineCycleAnalysis> {
51+
friend AnalysisInfoMixin<MachineCycleAnalysis>;
52+
static AnalysisKey Key;
53+
54+
public:
55+
using Result = MachineCycleInfo;
56+
57+
Result run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM);
58+
};
59+
60+
class MachineCycleInfoPrinterPass : public PassInfoMixin<MachineCycleInfoPrinterPass> {
61+
raw_ostream &OS;
62+
public:
63+
explicit MachineCycleInfoPrinterPass(raw_ostream &OS) : OS(OS) {}
64+
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM);
65+
};
66+
4967
} // end namespace llvm
5068

5169
#endif // LLVM_CODEGEN_MACHINECYCLEANALYSIS_H

llvm/include/llvm/InitializePasses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ void initializeMachineCFGPrinterPass(PassRegistry &);
191191
void initializeMachineCSELegacyPass(PassRegistry &);
192192
void initializeMachineCombinerPass(PassRegistry &);
193193
void initializeMachineCopyPropagationPass(PassRegistry &);
194-
void initializeMachineCycleInfoPrinterPassPass(PassRegistry &);
194+
void initializeMachineCycleInfoPrinterLegacyPass(PassRegistry &);
195195
void initializeMachineCycleInfoWrapperPassPass(PassRegistry &);
196196
void initializeMachineDominanceFrontierPass(PassRegistry &);
197197
void initializeMachineDominatorTreeWrapperPassPass(PassRegistry &);

llvm/include/llvm/Passes/MachinePassRegistry.def

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ MACHINE_FUNCTION_ANALYSIS("live-vars", LiveVariablesAnalysis())
101101
MACHINE_FUNCTION_ANALYSIS("machine-block-freq", MachineBlockFrequencyAnalysis())
102102
MACHINE_FUNCTION_ANALYSIS("machine-branch-prob",
103103
MachineBranchProbabilityAnalysis())
104+
MACHINE_FUNCTION_ANALYSIS("machine-cycles", MachineCycleAnalysis())
104105
MACHINE_FUNCTION_ANALYSIS("machine-dom-tree", MachineDominatorTreeAnalysis())
105106
MACHINE_FUNCTION_ANALYSIS("machine-loops", MachineLoopAnalysis())
106107
MACHINE_FUNCTION_ANALYSIS("machine-opt-remark-emitter",
@@ -151,6 +152,7 @@ MACHINE_FUNCTION_PASS("print<machine-branch-prob>",
151152
MACHINE_FUNCTION_PASS("print<machine-dom-tree>",
152153
MachineDominatorTreePrinterPass(dbgs()))
153154
MACHINE_FUNCTION_PASS("print<machine-loops>", MachineLoopPrinterPass(dbgs()))
155+
MACHINE_FUNCTION_PASS("print<machine-cycles>", MachineCycleInfoPrinterPass(dbgs()))
154156
MACHINE_FUNCTION_PASS("print<machine-post-dom-tree>",
155157
MachinePostDominatorTreePrinterPass(dbgs()))
156158
MACHINE_FUNCTION_PASS("print<slot-indexes>", SlotIndexesPrinterPass(dbgs()))
@@ -241,7 +243,6 @@ DUMMY_MACHINE_FUNCTION_PASS("post-RA-sched", PostRASchedulerPass)
241243
DUMMY_MACHINE_FUNCTION_PASS("postmisched", PostMachineSchedulerPass)
242244
DUMMY_MACHINE_FUNCTION_PASS("postra-machine-sink", PostRAMachineSinkingPass)
243245
DUMMY_MACHINE_FUNCTION_PASS("postrapseudos", ExpandPostRAPseudosPass)
244-
DUMMY_MACHINE_FUNCTION_PASS("print-machine-cycles", MachineCycleInfoPrinterPass)
245246
DUMMY_MACHINE_FUNCTION_PASS("print-machine-uniformity", MachineUniformityInfoPrinterPass)
246247
DUMMY_MACHINE_FUNCTION_PASS("processimpdefs", ProcessImplicitDefsPass)
247248
DUMMY_MACHINE_FUNCTION_PASS("prologepilog", PrologEpilogInserterPass)

llvm/lib/CodeGen/CodeGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
7878
initializeMachineCSELegacyPass(Registry);
7979
initializeMachineCombinerPass(Registry);
8080
initializeMachineCopyPropagationPass(Registry);
81-
initializeMachineCycleInfoPrinterPassPass(Registry);
81+
initializeMachineCycleInfoPrinterLegacyPass(Registry);
8282
initializeMachineCycleInfoWrapperPassPass(Registry);
8383
initializeMachineDominatorTreeWrapperPassPass(Registry);
8484
initializeMachineFunctionPrinterPassPass(Registry);

llvm/lib/CodeGen/MachineCycleAnalysis.cpp

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,43 +54,59 @@ void MachineCycleInfoWrapperPass::releaseMemory() {
5454
F = nullptr;
5555
}
5656

57+
AnalysisKey MachineCycleAnalysis::Key;
58+
59+
MachineCycleInfo MachineCycleAnalysis::run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM) {
60+
MachineCycleInfo MCI;
61+
MCI.compute(MF);
62+
return MCI;
63+
}
64+
5765
namespace {
58-
class MachineCycleInfoPrinterPass : public MachineFunctionPass {
66+
class MachineCycleInfoPrinterLegacy : public MachineFunctionPass {
5967
public:
6068
static char ID;
6169

62-
MachineCycleInfoPrinterPass();
70+
MachineCycleInfoPrinterLegacy();
6371

6472
bool runOnMachineFunction(MachineFunction &F) override;
6573
void getAnalysisUsage(AnalysisUsage &AU) const override;
6674
};
6775
} // namespace
6876

69-
char MachineCycleInfoPrinterPass::ID = 0;
77+
char MachineCycleInfoPrinterLegacy::ID = 0;
7078

71-
MachineCycleInfoPrinterPass::MachineCycleInfoPrinterPass()
79+
MachineCycleInfoPrinterLegacy::MachineCycleInfoPrinterLegacy()
7280
: MachineFunctionPass(ID) {
73-
initializeMachineCycleInfoPrinterPassPass(*PassRegistry::getPassRegistry());
81+
initializeMachineCycleInfoPrinterLegacyPass(*PassRegistry::getPassRegistry());
7482
}
7583

76-
INITIALIZE_PASS_BEGIN(MachineCycleInfoPrinterPass, "print-machine-cycles",
84+
INITIALIZE_PASS_BEGIN(MachineCycleInfoPrinterLegacy, "print-machine-cycles",
7785
"Print Machine Cycle Info Analysis", true, true)
7886
INITIALIZE_PASS_DEPENDENCY(MachineCycleInfoWrapperPass)
79-
INITIALIZE_PASS_END(MachineCycleInfoPrinterPass, "print-machine-cycles",
87+
INITIALIZE_PASS_END(MachineCycleInfoPrinterLegacy, "print-machine-cycles",
8088
"Print Machine Cycle Info Analysis", true, true)
8189

82-
void MachineCycleInfoPrinterPass::getAnalysisUsage(AnalysisUsage &AU) const {
90+
void MachineCycleInfoPrinterLegacy::getAnalysisUsage(AnalysisUsage &AU) const {
8391
AU.setPreservesAll();
8492
AU.addRequired<MachineCycleInfoWrapperPass>();
8593
MachineFunctionPass::getAnalysisUsage(AU);
8694
}
8795

88-
bool MachineCycleInfoPrinterPass::runOnMachineFunction(MachineFunction &F) {
96+
bool MachineCycleInfoPrinterLegacy::runOnMachineFunction(MachineFunction &F) {
8997
auto &CI = getAnalysis<MachineCycleInfoWrapperPass>();
9098
CI.print(errs());
9199
return false;
92100
}
93101

102+
PreservedAnalyses MachineCycleInfoPrinterPass::run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM) {
103+
OS << "MachineCycleInfo for function: " << MF.getName() << "\n";
104+
105+
auto &MCI = MFAM.getResult<MachineCycleAnalysis>(MF);
106+
MCI.print(OS);
107+
return PreservedAnalyses::all();
108+
}
109+
94110
bool llvm::isCycleInvariant(const MachineCycle *Cycle, MachineInstr &I) {
95111
MachineFunction *MF = I.getParent()->getParent();
96112
MachineRegisterInfo *MRI = &MF->getRegInfo();

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@
104104
#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
105105
#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
106106
#include "llvm/CodeGen/MachineCSE.h"
107+
#include "llvm/CodeGen/MachineCycleAnalysis.h"
107108
#include "llvm/CodeGen/MachineDominators.h"
108109
#include "llvm/CodeGen/MachineFunctionAnalysis.h"
109110
#include "llvm/CodeGen/MachineLICM.h"

llvm/test/CodeGen/X86/cycle-info.mir

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# RUN: llc -mtriple=x86_64-unknown-linux-gnu -run-pass=print-machine-cycles -o - %s 2>&1 | FileCheck %s
22

3+
# RUN: llc -mtriple=x86_64-unknown-linux-gnu -passes="print<machine-cycles>" -o - %s 2>&1 | FileCheck %s
4+
35
...
46
---
57
# CHECK-LABEL: MachineCycleInfo for function: empty

0 commit comments

Comments
 (0)