summaryrefslogtreecommitdiff
path: root/contrib/llvm/lib/Target/AMDGPU/R600MachineScheduler.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/lib/Target/AMDGPU/R600MachineScheduler.h')
-rw-r--r--contrib/llvm/lib/Target/AMDGPU/R600MachineScheduler.h99
1 files changed, 0 insertions, 99 deletions
diff --git a/contrib/llvm/lib/Target/AMDGPU/R600MachineScheduler.h b/contrib/llvm/lib/Target/AMDGPU/R600MachineScheduler.h
deleted file mode 100644
index bc66f2ef5907..000000000000
--- a/contrib/llvm/lib/Target/AMDGPU/R600MachineScheduler.h
+++ /dev/null
@@ -1,99 +0,0 @@
-//===-- R600MachineScheduler.h - R600 Scheduler Interface -*- 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
-//
-//===----------------------------------------------------------------------===//
-//
-/// \file
-/// R600 Machine Scheduler interface
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LIB_TARGET_AMDGPU_R600MACHINESCHEDULER_H
-#define LLVM_LIB_TARGET_AMDGPU_R600MACHINESCHEDULER_H
-
-#include "llvm/CodeGen/MachineScheduler.h"
-#include <vector>
-
-using namespace llvm;
-
-namespace llvm {
-
-class R600InstrInfo;
-struct R600RegisterInfo;
-
-class R600SchedStrategy final : public MachineSchedStrategy {
- const ScheduleDAGMILive *DAG = nullptr;
- const R600InstrInfo *TII = nullptr;
- const R600RegisterInfo *TRI = nullptr;
- MachineRegisterInfo *MRI = nullptr;
-
- enum InstKind {
- IDAlu,
- IDFetch,
- IDOther,
- IDLast
- };
-
- enum AluKind {
- AluAny,
- AluT_X,
- AluT_Y,
- AluT_Z,
- AluT_W,
- AluT_XYZW,
- AluPredX,
- AluTrans,
- AluDiscarded, // LLVM Instructions that are going to be eliminated
- AluLast
- };
-
- std::vector<SUnit *> Available[IDLast], Pending[IDLast];
- std::vector<SUnit *> AvailableAlus[AluLast];
- std::vector<SUnit *> PhysicalRegCopy;
-
- InstKind CurInstKind;
- int CurEmitted;
- InstKind NextInstKind;
-
- unsigned AluInstCount;
- unsigned FetchInstCount;
-
- int InstKindLimit[IDLast];
-
- int OccupedSlotsMask;
-
-public:
- R600SchedStrategy() = default;
- ~R600SchedStrategy() override = default;
-
- void initialize(ScheduleDAGMI *dag) override;
- SUnit *pickNode(bool &IsTopNode) override;
- void schedNode(SUnit *SU, bool IsTopNode) override;
- void releaseTopNode(SUnit *SU) override;
- void releaseBottomNode(SUnit *SU) override;
-
-private:
- std::vector<MachineInstr *> InstructionsGroupCandidate;
- bool VLIW5;
-
- int getInstKind(SUnit *SU);
- bool regBelongsToClass(unsigned Reg, const TargetRegisterClass *RC) const;
- AluKind getAluKind(SUnit *SU) const;
- void LoadAlu();
- unsigned AvailablesAluCount() const;
- SUnit *AttemptFillSlot (unsigned Slot, bool AnyAlu);
- void PrepareNextSlot();
- SUnit *PopInst(std::vector<SUnit*> &Q, bool AnyALU);
-
- void AssignSlot(MachineInstr *MI, unsigned Slot);
- SUnit* pickAlu();
- SUnit* pickOther(int QID);
- void MoveUnits(std::vector<SUnit *> &QSrc, std::vector<SUnit *> &QDst);
-};
-
-} // end namespace llvm
-
-#endif // LLVM_LIB_TARGET_AMDGPU_R600MACHINESCHEDULER_H