Skip to content

Commit 35a3a80

Browse files
committed
CodeGen][NewPM] Port MachineScheduler to NPM.
1 parent 5e5b854 commit 35a3a80

File tree

56 files changed

+366
-95
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+366
-95
lines changed

llvm/include/llvm/CodeGen/MachineScheduler.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1385,6 +1385,24 @@ std::unique_ptr<ScheduleDAGMutation>
13851385
createCopyConstrainDAGMutation(const TargetInstrInfo *TII,
13861386
const TargetRegisterInfo *TRI);
13871387

1388+
class MachineSchedulerPass : public PassInfoMixin<MachineSchedulerPass> {
1389+
const TargetMachine *TM;
1390+
1391+
public:
1392+
MachineSchedulerPass(const TargetMachine *TM) : TM(TM) {}
1393+
PreservedAnalyses run(MachineFunction &MF,
1394+
MachineFunctionAnalysisManager &MFAM);
1395+
};
1396+
1397+
class PostMachineSchedulerPass
1398+
: public PassInfoMixin<PostMachineSchedulerPass> {
1399+
const TargetMachine *TM;
1400+
1401+
public:
1402+
PostMachineSchedulerPass(const TargetMachine *TM) : TM(TM) {}
1403+
PreservedAnalyses run(MachineFunction &MF,
1404+
MachineFunctionAnalysisManager &MFAM);
1405+
};
13881406
} // end namespace llvm
13891407

13901408
#endif // LLVM_CODEGEN_MACHINESCHEDULER_H

llvm/include/llvm/InitializePasses.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ void initializeMachinePipelinerPass(PassRegistry &);
209209
void initializeMachinePostDominatorTreeWrapperPassPass(PassRegistry &);
210210
void initializeMachineRegionInfoPassPass(PassRegistry &);
211211
void initializeMachineSanitizerBinaryMetadataPass(PassRegistry &);
212-
void initializeMachineSchedulerPass(PassRegistry &);
212+
void initializeMachineSchedulerLegacyPass(PassRegistry &);
213213
void initializeMachineSinkingPass(PassRegistry &);
214214
void initializeMachineTraceMetricsWrapperPassPass(PassRegistry &);
215215
void initializeMachineUniformityInfoPrinterPassPass(PassRegistry &);
@@ -238,7 +238,7 @@ void initializePostDomPrinterWrapperPassPass(PassRegistry &);
238238
void initializePostDomViewerWrapperPassPass(PassRegistry &);
239239
void initializePostDominatorTreeWrapperPassPass(PassRegistry &);
240240
void initializePostInlineEntryExitInstrumenterPass(PassRegistry &);
241-
void initializePostMachineSchedulerPass(PassRegistry &);
241+
void initializePostMachineSchedulerLegacyPass(PassRegistry &);
242242
void initializePostRAHazardRecognizerPass(PassRegistry &);
243243
void initializePostRAMachineSinkingPass(PassRegistry &);
244244
void initializePostRASchedulerPass(PassRegistry &);

llvm/include/llvm/Passes/CodeGenPassBuilder.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
#include "llvm/CodeGen/MachineLICM.h"
5151
#include "llvm/CodeGen/MachineModuleInfo.h"
5252
#include "llvm/CodeGen/MachinePassManager.h"
53+
#include "llvm/CodeGen/MachineScheduler.h"
5354
#include "llvm/CodeGen/MachineVerifier.h"
5455
#include "llvm/CodeGen/OptimizePHIs.h"
5556
#include "llvm/CodeGen/PHIElimination.h"
@@ -957,7 +958,7 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::addMachinePasses(
957958
if (getOptLevel() != CodeGenOptLevel::None &&
958959
!TM.targetSchedulesPostRAScheduling()) {
959960
if (Opt.MISchedPostRA)
960-
addPass(PostMachineSchedulerPass());
961+
addPass(PostMachineSchedulerPass(&TM));
961962
else
962963
addPass(PostRASchedulerPass());
963964
}
@@ -1141,7 +1142,7 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addOptimizedRegAlloc(
11411142
addPass(RenameIndependentSubregsPass());
11421143

11431144
// PreRA instruction scheduling.
1144-
addPass(MachineSchedulerPass());
1145+
addPass(MachineSchedulerPass(&TM));
11451146

11461147
if (derived().addRegAssignmentOptimized(addPass)) {
11471148
// Allow targets to expand pseudo instructions depending on the choice of

llvm/include/llvm/Passes/MachinePassRegistry.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,13 @@ MACHINE_FUNCTION_PASS("finalize-isel", FinalizeISelPass())
142142
MACHINE_FUNCTION_PASS("localstackalloc", LocalStackSlotAllocationPass())
143143
MACHINE_FUNCTION_PASS("machine-cp", MachineCopyPropagationPass())
144144
MACHINE_FUNCTION_PASS("machine-cse", MachineCSEPass())
145+
MACHINE_FUNCTION_PASS("machine-scheduler", MachineSchedulerPass(TM))
145146
MACHINE_FUNCTION_PASS("machinelicm", MachineLICMPass())
146147
MACHINE_FUNCTION_PASS("no-op-machine-function", NoOpMachineFunctionPass())
147148
MACHINE_FUNCTION_PASS("opt-phis", OptimizePHIsPass())
148149
MACHINE_FUNCTION_PASS("peephole-opt", PeepholeOptimizerPass())
149150
MACHINE_FUNCTION_PASS("phi-node-elimination", PHIEliminationPass())
151+
MACHINE_FUNCTION_PASS("postmisched", PostMachineSchedulerPass(TM))
150152
MACHINE_FUNCTION_PASS("print", PrintMIRPass())
151153
MACHINE_FUNCTION_PASS("print<livedebugvars>", LiveDebugVariablesPrinterPass(errs()))
152154
MACHINE_FUNCTION_PASS("print<live-intervals>", LiveIntervalsPrinterPass(errs()))
@@ -240,14 +242,12 @@ DUMMY_MACHINE_FUNCTION_PASS("static-data-splitter", StaticDataSplitter)
240242
DUMMY_MACHINE_FUNCTION_PASS("machine-function-splitter", MachineFunctionSplitterPass)
241243
DUMMY_MACHINE_FUNCTION_PASS("machine-latecleanup", MachineLateInstrsCleanupPass)
242244
DUMMY_MACHINE_FUNCTION_PASS("machine-sanmd", MachineSanitizerBinaryMetadata)
243-
DUMMY_MACHINE_FUNCTION_PASS("machine-scheduler", MachineSchedulerPass)
244245
DUMMY_MACHINE_FUNCTION_PASS("machine-sink", MachineSinkingPass)
245246
DUMMY_MACHINE_FUNCTION_PASS("machine-uniformity", MachineUniformityInfoWrapperPass)
246247
DUMMY_MACHINE_FUNCTION_PASS("machineinstr-printer", MachineFunctionPrinterPass)
247248
DUMMY_MACHINE_FUNCTION_PASS("mirfs-discriminators", MIRAddFSDiscriminatorsPass)
248249
DUMMY_MACHINE_FUNCTION_PASS("patchable-function", PatchableFunctionPass)
249250
DUMMY_MACHINE_FUNCTION_PASS("post-RA-sched", PostRASchedulerPass)
250-
DUMMY_MACHINE_FUNCTION_PASS("postmisched", PostMachineSchedulerPass)
251251
DUMMY_MACHINE_FUNCTION_PASS("postra-machine-sink", PostRAMachineSinkingPass)
252252
DUMMY_MACHINE_FUNCTION_PASS("postrapseudos", ExpandPostRAPseudosPass)
253253
DUMMY_MACHINE_FUNCTION_PASS("print-machine-cycles", MachineCycleInfoPrinterPass)

llvm/lib/CodeGen/CodeGen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
9494
initializeModuloScheduleTestPass(Registry);
9595
initializeMachinePostDominatorTreeWrapperPassPass(Registry);
9696
initializeMachineRegionInfoPassPass(Registry);
97-
initializeMachineSchedulerPass(Registry);
97+
initializeMachineSchedulerLegacyPass(Registry);
9898
initializeMachineSinkingPass(Registry);
9999
initializeMachineUniformityAnalysisPassPass(Registry);
100100
initializeMachineUniformityInfoPrinterPassPass(Registry);
@@ -105,7 +105,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
105105
initializePHIEliminationPass(Registry);
106106
initializePatchableFunctionPass(Registry);
107107
initializePeepholeOptimizerLegacyPass(Registry);
108-
initializePostMachineSchedulerPass(Registry);
108+
initializePostMachineSchedulerLegacyPass(Registry);
109109
initializePostRAHazardRecognizerPass(Registry);
110110
initializePostRAMachineSinkingPass(Registry);
111111
initializePostRASchedulerPass(Registry);

0 commit comments

Comments
 (0)