diff --git a/llvm/tools/pattern-gen/LLVMOverride.cpp b/llvm/tools/pattern-gen/LLVMOverride.cpp index 66c01caa55207..6f231c0af3ee0 100644 --- a/llvm/tools/pattern-gen/LLVMOverride.cpp +++ b/llvm/tools/pattern-gen/LLVMOverride.cpp @@ -6,7 +6,7 @@ The alternative to using a file like this is modifying LLVM source more aggressively directly. */ #include "../lib/Target/RISCV/RISCVISelDAGToDAG.h" -#include "../lib/Target/RISCV/RISCVMacroFusion.h" +// #include "../lib/Target/RISCV/RISCVMacroFusion.h" #include "../lib/Target/RISCV/RISCVTargetMachine.h" #include "PatternGen.hpp" #include "llvm/Analysis/CGSCCPassManager.h" @@ -113,20 +113,34 @@ class RISCVPatternPassConfig : public TargetPassConfig { ScheduleDAGInstrs * createMachineScheduler(MachineSchedContext *C) const override { const RISCVSubtarget &ST = C->MF->getSubtarget(); - if (ST.hasMacroFusion()) { - ScheduleDAGMILive *DAG = createGenericSchedLive(C); - DAG->addMutation(createRISCVMacroFusionDAGMutation()); - return DAG; + // if (ST.hasMacroFusion()) { + // ScheduleDAGMILive *DAG = createGenericSchedLive(C); + // DAG->addMutation(createRISCVMacroFusionDAGMutation()); + // return DAG; + // } + // return nullptr; + ScheduleDAGMILive *DAG = nullptr; + const auto &MacroFusions = ST.getMacroFusions(); + if (!MacroFusions.empty()) { + DAG = DAG ? DAG : createGenericSchedLive(C); + DAG->addMutation(createMacroFusionDAGMutation(MacroFusions)); } - return nullptr; + return DAG; } ScheduleDAGInstrs * createPostMachineScheduler(MachineSchedContext *C) const override { const RISCVSubtarget &ST = C->MF->getSubtarget(); - if (ST.hasMacroFusion()) { + // if (ST.hasMacroFusion()) { + // ScheduleDAGMI *DAG = createGenericSchedPostRA(C); + // DAG->addMutation(createRISCVMacroFusionDAGMutation()); + // return DAG; + // } + // return nullptr; + const auto &MacroFusions = ST.getMacroFusions(); + if (!MacroFusions.empty()) { ScheduleDAGMI *DAG = createGenericSchedPostRA(C); - DAG->addMutation(createRISCVMacroFusionDAGMutation()); + DAG->addMutation(createMacroFusionDAGMutation(MacroFusions)); return DAG; } return nullptr;