static ScheduleDAGInstrs *createPPCMachineScheduler(MachineSchedContext *C) {
+ const PPCSubtarget &ST = C->MF->getSubtarget<PPCSubtarget>();
ScheduleDAGMILive *DAG =
- new ScheduleDAGMILive(C, llvm::make_unique<PPCPreRASchedStrategy>(C));
+ new ScheduleDAGMILive(C, ST.usePPCPreRASchedStrategy() ?
+ llvm::make_unique<PPCPreRASchedStrategy>(C) :
+ llvm::make_unique<GenericScheduler>(C));
// add DAG Mutations here.
DAG->addMutation(createCopyConstrainDAGMutation(DAG->TII, DAG->TRI));
return DAG;
static ScheduleDAGInstrs *createPPCPostMachineScheduler(
MachineSchedContext *C) {
+ const PPCSubtarget &ST = C->MF->getSubtarget<PPCSubtarget>();
ScheduleDAGMI *DAG =
- new ScheduleDAGMI(C, llvm::make_unique<PPCPostRASchedStrategy>(C), true);
+ new ScheduleDAGMI(C, ST.usePPCPostRASchedStrategy() ?
+ llvm::make_unique<PPCPostRASchedStrategy>(C) :
+ llvm::make_unique<PostGenericScheduler>(C), true);
// add DAG Mutations here.
return DAG;
}
void addPreEmitPass() override;
ScheduleDAGInstrs *
createMachineScheduler(MachineSchedContext *C) const override {
- const PPCSubtarget &ST = C->MF->getSubtarget<PPCSubtarget>();
- if (ST.usePPCPreRASchedStrategy())
- return createPPCMachineScheduler(C);
- return nullptr;
+ return createPPCMachineScheduler(C);
}
ScheduleDAGInstrs *
createPostMachineScheduler(MachineSchedContext *C) const override {
- const PPCSubtarget &ST = C->MF->getSubtarget<PPCSubtarget>();
- if (ST.usePPCPostRASchedStrategy())
- return createPPCPostMachineScheduler(C);
- return nullptr;
+ return createPPCPostMachineScheduler(C);
}
};