aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/AMDGPU/GCNIterativeScheduler.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/AMDGPU/GCNIterativeScheduler.h')
-rw-r--r--lib/Target/AMDGPU/GCNIterativeScheduler.h31
1 files changed, 19 insertions, 12 deletions
diff --git a/lib/Target/AMDGPU/GCNIterativeScheduler.h b/lib/Target/AMDGPU/GCNIterativeScheduler.h
index df3afce21ebc..14ef5147f32a 100644
--- a/lib/Target/AMDGPU/GCNIterativeScheduler.h
+++ b/lib/Target/AMDGPU/GCNIterativeScheduler.h
@@ -1,4 +1,4 @@
-//===--------- GCNIterativeScheduler.h - GCN Scheduler -*- C++ -*----------===//
+//===- GCNIterativeScheduler.h - GCN Scheduler ------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -6,27 +6,34 @@
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
-//
-/// \file
-//
-//===----------------------------------------------------------------------===//
#ifndef LLVM_LIB_TARGET_AMDGPU_GCNITERATIVESCHEDULER_H
#define LLVM_LIB_TARGET_AMDGPU_GCNITERATIVESCHEDULER_H
#include "GCNRegPressure.h"
-
+#include "llvm/ADT/ArrayRef.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineScheduler.h"
+#include "llvm/Support/Allocator.h"
+#include <limits>
+#include <memory>
+#include <vector>
namespace llvm {
+class MachineInstr;
+class SUnit;
+class raw_ostream;
+
class GCNIterativeScheduler : public ScheduleDAGMILive {
- typedef ScheduleDAGMILive BaseClass;
+ using BaseClass = ScheduleDAGMILive;
+
public:
enum StrategyKind {
SCHEDULE_MINREGONLY,
SCHEDULE_MINREGFORCED,
- SCHEDULE_LEGACYMAXOCCUPANCY
+ SCHEDULE_LEGACYMAXOCCUPANCY,
+ SCHEDULE_ILP
};
GCNIterativeScheduler(MachineSchedContext *C,
@@ -42,11 +49,10 @@ public:
void finalizeSchedule() override;
protected:
-
- typedef ArrayRef<const SUnit*> ScheduleRef;
+ using ScheduleRef = ArrayRef<const SUnit *>;
struct TentativeSchedule {
- std::vector<MachineInstr*> Schedule;
+ std::vector<MachineInstr *> Schedule;
GCNRegPressure MaxPressure;
};
@@ -103,6 +109,7 @@ protected:
void scheduleLegacyMaxOccupancy(bool TryMaximizeOccupancy = true);
void scheduleMinReg(bool force = false);
+ void scheduleILP(bool TryMaximizeOccupancy = true);
void printRegions(raw_ostream &OS) const;
void printSchedResult(raw_ostream &OS,
@@ -113,6 +120,6 @@ protected:
const GCNRegPressure &After) const;
};
-} // End namespace llvm
+} // end namespace llvm
#endif // LLVM_LIB_TARGET_AMDGPU_GCNITERATIVESCHEDULER_H