From: Krzysztof Parzyszek Date: Mon, 28 Aug 2017 15:52:54 +0000 (+0000) Subject: [Hexagon] Move pre-RA DAG mutations to scheduler constructor X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=891663db2154c5d1bf669b50220f01ba0e667a13;p=llvm [Hexagon] Move pre-RA DAG mutations to scheduler constructor git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311894 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Hexagon/HexagonMachineScheduler.cpp b/lib/Target/Hexagon/HexagonMachineScheduler.cpp index 1a26805d190..375a64de7f5 100644 --- a/lib/Target/Hexagon/HexagonMachineScheduler.cpp +++ b/lib/Target/Hexagon/HexagonMachineScheduler.cpp @@ -12,6 +12,7 @@ // //===----------------------------------------------------------------------===// +#include "HexagonInstrInfo.h" #include "HexagonMachineScheduler.h" #include "HexagonSubtarget.h" #include "llvm/CodeGen/MachineLoopInfo.h" @@ -51,16 +52,6 @@ using namespace llvm; #define DEBUG_TYPE "machine-scheduler" -namespace { -class HexagonCallMutation : public ScheduleDAGMutation { -public: - void apply(ScheduleDAGInstrs *DAG) override; -private: - bool shouldTFRICallBind(const HexagonInstrInfo &HII, - const SUnit &Inst1, const SUnit &Inst2) const; -}; -} // end anonymous namespace - // Check if a call and subsequent A2_tfrpi instructions should maintain // scheduling affinity. We are looking for the TFRI to be consumed in // the next instruction. This should help reduce the instances of @@ -336,9 +327,6 @@ void ConvergingVLIWScheduler::initialize(ScheduleDAGMI *dag) { assert((!llvm::ForceTopDown || !llvm::ForceBottomUp) && "-misched-topdown incompatible with -misched-bottomup"); - - DAG->addMutation(make_unique()); - DAG->addMutation(make_unique()); } void ConvergingVLIWScheduler::releaseTopNode(SUnit *SU) { diff --git a/lib/Target/Hexagon/HexagonMachineScheduler.h b/lib/Target/Hexagon/HexagonMachineScheduler.h index 810abf38863..0af29c22765 100644 --- a/lib/Target/Hexagon/HexagonMachineScheduler.h +++ b/lib/Target/Hexagon/HexagonMachineScheduler.h @@ -249,7 +249,14 @@ protected: #endif }; -} // namespace +class HexagonCallMutation : public ScheduleDAGMutation { +public: + void apply(ScheduleDAGInstrs *DAG) override; +private: + bool shouldTFRICallBind(const HexagonInstrInfo &HII, + const SUnit &Inst1, const SUnit &Inst2) const; +}; +} // namespace #endif diff --git a/lib/Target/Hexagon/HexagonTargetMachine.cpp b/lib/Target/Hexagon/HexagonTargetMachine.cpp index 01634756d0a..405f44123ef 100644 --- a/lib/Target/Hexagon/HexagonTargetMachine.cpp +++ b/lib/Target/Hexagon/HexagonTargetMachine.cpp @@ -100,7 +100,12 @@ extern "C" int HexagonTargetMachineModule; int HexagonTargetMachineModule = 0; static ScheduleDAGInstrs *createVLIWMachineSched(MachineSchedContext *C) { - return new VLIWMachineScheduler(C, make_unique()); + ScheduleDAGMILive *DAG = + new VLIWMachineScheduler(C, make_unique()); + DAG->addMutation(make_unique()); + DAG->addMutation(make_unique()); + DAG->addMutation(createCopyConstrainDAGMutation(DAG->TII, DAG->TRI)); + return DAG; } static MachineSchedRegistry