@@ -480,6 +480,33 @@ AArch64TargetMachine::getSubtargetImpl(const Function &F) const {
480480 return I.get ();
481481}
482482
483+ ScheduleDAGInstrs *
484+ AArch64TargetMachine::createMachineScheduler (MachineSchedContext *C) const {
485+ const AArch64Subtarget &ST = C->MF ->getSubtarget <AArch64Subtarget>();
486+ ScheduleDAGMILive *DAG = createGenericSchedLive (C);
487+ DAG->addMutation (createLoadClusterDAGMutation (DAG->TII , DAG->TRI ));
488+ DAG->addMutation (createStoreClusterDAGMutation (DAG->TII , DAG->TRI ));
489+ if (ST.hasFusion ())
490+ DAG->addMutation (createAArch64MacroFusionDAGMutation ());
491+ return DAG;
492+ }
493+
494+ ScheduleDAGInstrs *
495+ AArch64TargetMachine::createPostMachineScheduler (MachineSchedContext *C) const {
496+ const AArch64Subtarget &ST = C->MF ->getSubtarget <AArch64Subtarget>();
497+ ScheduleDAGMI *DAG =
498+ new ScheduleDAGMI (C, std::make_unique<AArch64PostRASchedStrategy>(C),
499+ /* RemoveKillFlags=*/ true );
500+ if (ST.hasFusion ()) {
501+ // Run the Macro Fusion after RA again since literals are expanded from
502+ // pseudos then (v. addPreSched2()).
503+ DAG->addMutation (createAArch64MacroFusionDAGMutation ());
504+ return DAG;
505+ }
506+
507+ return DAG;
508+ }
509+
483510void AArch64leTargetMachine::anchor () { }
484511
485512AArch64leTargetMachine::AArch64leTargetMachine (
@@ -512,33 +539,6 @@ class AArch64PassConfig : public TargetPassConfig {
512539 return getTM<AArch64TargetMachine>();
513540 }
514541
515- ScheduleDAGInstrs *
516- createMachineScheduler (MachineSchedContext *C) const override {
517- const AArch64Subtarget &ST = C->MF ->getSubtarget <AArch64Subtarget>();
518- ScheduleDAGMILive *DAG = createGenericSchedLive (C);
519- DAG->addMutation (createLoadClusterDAGMutation (DAG->TII , DAG->TRI ));
520- DAG->addMutation (createStoreClusterDAGMutation (DAG->TII , DAG->TRI ));
521- if (ST.hasFusion ())
522- DAG->addMutation (createAArch64MacroFusionDAGMutation ());
523- return DAG;
524- }
525-
526- ScheduleDAGInstrs *
527- createPostMachineScheduler (MachineSchedContext *C) const override {
528- const AArch64Subtarget &ST = C->MF ->getSubtarget <AArch64Subtarget>();
529- ScheduleDAGMI *DAG =
530- new ScheduleDAGMI (C, std::make_unique<AArch64PostRASchedStrategy>(C),
531- /* RemoveKillFlags=*/ true );
532- if (ST.hasFusion ()) {
533- // Run the Macro Fusion after RA again since literals are expanded from
534- // pseudos then (v. addPreSched2()).
535- DAG->addMutation (createAArch64MacroFusionDAGMutation ());
536- return DAG;
537- }
538-
539- return DAG;
540- }
541-
542542 void addIRPasses () override ;
543543 bool addPreISel () override ;
544544 void addCodeGenPrepare () override ;
0 commit comments