This patch lays the groundwork for extending the generic machine scheduler by providing a PPC-specific implementation. There are no functional changes as this is an incremental patch that simply provides the necessary overrides which just encapsulate the behavior of the generic scheduler. Subsequent patches will add specific behavior. Differential Revision: https://reviews.llvm.org/D59284 llvm-svn: 357047
43 lines
1.4 KiB
C++
43 lines
1.4 KiB
C++
//===- PPCMachineScheduler.h - Custom PowerPC MI scheduler --*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Custom PowerPC MI scheduler.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_TARGET_POWERPC_POWERPCMACHINESCHEDULER_H
|
|
#define LLVM_LIB_TARGET_POWERPC_POWERPCMACHINESCHEDULER_H
|
|
|
|
#include "llvm/CodeGen/MachineScheduler.h"
|
|
|
|
namespace llvm {
|
|
|
|
/// A MachineSchedStrategy implementation for PowerPC pre RA scheduling.
|
|
class PPCPreRASchedStrategy : public GenericScheduler {
|
|
public:
|
|
PPCPreRASchedStrategy(const MachineSchedContext *C) :
|
|
GenericScheduler(C) {}
|
|
};
|
|
|
|
/// A MachineSchedStrategy implementation for PowerPC post RA scheduling.
|
|
class PPCPostRASchedStrategy : public PostGenericScheduler {
|
|
public:
|
|
PPCPostRASchedStrategy(const MachineSchedContext *C) :
|
|
PostGenericScheduler(C) {}
|
|
|
|
protected:
|
|
void initialize(ScheduleDAGMI *Dag) override;
|
|
SUnit *pickNode(bool &IsTopNode) override;
|
|
void enterMBB(MachineBasicBlock *MBB) override;
|
|
void leaveMBB() override;
|
|
};
|
|
|
|
} // end namespace llvm
|
|
|
|
#endif // LLVM_LIB_TARGET_POWERPC_POWERPCMACHINESCHEDULER_H
|