Skip to content

Commit e2bdff1

Browse files
committed
[Sched] Auto add MacroFusion mutation if enabled
We can get the information by `enableMacroFusion`.
1 parent 31d8a99 commit e2bdff1

File tree

2 files changed

+13
-24
lines changed

2 files changed

+13
-24
lines changed

llvm/lib/CodeGen/MachineScheduler.cpp

+13-2
Original file line numberDiff line numberDiff line change
@@ -3791,6 +3791,11 @@ ScheduleDAGMILive *llvm::createGenericSchedLive(MachineSchedContext *C) {
37913791
// data and pass it to later mutations. Have a single mutation that gathers
37923792
// the interesting nodes in one pass.
37933793
DAG->addMutation(createCopyConstrainDAGMutation(DAG->TII, DAG->TRI));
3794+
3795+
const TargetSubtargetInfo &STI = C->MF->getSubtarget();
3796+
// Add MacroFusionDAGMutation if enabled.
3797+
if (STI.enableMacroFusion())
3798+
DAG->addMutation(createMacroFusionDAGMutation(STI.getMacroFusions()));
37943799
return DAG;
37953800
}
37963801

@@ -3940,8 +3945,14 @@ void PostGenericScheduler::schedNode(SUnit *SU, bool IsTopNode) {
39403945
}
39413946

39423947
ScheduleDAGMI *llvm::createGenericSchedPostRA(MachineSchedContext *C) {
3943-
return new ScheduleDAGMI(C, std::make_unique<PostGenericScheduler>(C),
3944-
/*RemoveKillFlags=*/true);
3948+
ScheduleDAGMI *DAG =
3949+
new ScheduleDAGMI(C, std::make_unique<PostGenericScheduler>(C),
3950+
/*RemoveKillFlags=*/true);
3951+
const TargetSubtargetInfo &STI = C->MF->getSubtarget();
3952+
// Add MacroFusionDAGMutation if enabled.
3953+
if (STI.enableMacroFusion())
3954+
DAG->addMutation(createMacroFusionDAGMutation(STI.getMacroFusions()));
3955+
return DAG;
39453956
}
39463957

39473958
//===----------------------------------------------------------------------===//

llvm/lib/Target/RISCV/RISCVTargetMachine.cpp

-22
Original file line numberDiff line numberDiff line change
@@ -343,28 +343,6 @@ class RISCVPassConfig : public TargetPassConfig {
343343
return getTM<RISCVTargetMachine>();
344344
}
345345

346-
ScheduleDAGInstrs *
347-
createMachineScheduler(MachineSchedContext *C) const override {
348-
const RISCVSubtarget &ST = C->MF->getSubtarget<RISCVSubtarget>();
349-
if (ST.enableMacroFusion()) {
350-
ScheduleDAGMILive *DAG = createGenericSchedLive(C);
351-
DAG->addMutation(createMacroFusionDAGMutation(ST.getMacroFusions()));
352-
return DAG;
353-
}
354-
return nullptr;
355-
}
356-
357-
ScheduleDAGInstrs *
358-
createPostMachineScheduler(MachineSchedContext *C) const override {
359-
const RISCVSubtarget &ST = C->MF->getSubtarget<RISCVSubtarget>();
360-
if (ST.enableMacroFusion()) {
361-
ScheduleDAGMI *DAG = createGenericSchedPostRA(C);
362-
DAG->addMutation(createMacroFusionDAGMutation(ST.getMacroFusions()));
363-
return DAG;
364-
}
365-
return nullptr;
366-
}
367-
368346
void addIRPasses() override;
369347
bool addPreISel() override;
370348
bool addInstSelector() override;

0 commit comments

Comments
 (0)