brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 27e80c7 Raw
54 lines · c
1//===- PPCMachineScheduler.h - Custom PowerPC MI scheduler --*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// Custom PowerPC MI scheduler.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_POWERPC_POWERPCMACHINESCHEDULER_H14#define LLVM_LIB_TARGET_POWERPC_POWERPCMACHINESCHEDULER_H15 16#include "llvm/CodeGen/MachineScheduler.h"17 18namespace llvm {19 20/// A MachineSchedStrategy implementation for PowerPC pre RA scheduling.21class PPCPreRASchedStrategy : public GenericScheduler {22public:23  PPCPreRASchedStrategy(const MachineSchedContext *C) :24    GenericScheduler(C) {}25protected:26  bool tryCandidate(SchedCandidate &Cand, SchedCandidate &TryCand,27                    SchedBoundary *Zone) const override;28 29private:30  bool biasAddiLoadCandidate(SchedCandidate &Cand,31                             SchedCandidate &TryCand,32                             SchedBoundary &Zone) const;33};34 35/// A MachineSchedStrategy implementation for PowerPC post RA scheduling.36class PPCPostRASchedStrategy : public PostGenericScheduler {37public:38  PPCPostRASchedStrategy(const MachineSchedContext *C) :39    PostGenericScheduler(C) {}40 41protected:42  void initialize(ScheduleDAGMI *Dag) override;43  SUnit *pickNode(bool &IsTopNode) override;44  void enterMBB(MachineBasicBlock *MBB) override;45  void leaveMBB() override;46 47  bool tryCandidate(SchedCandidate &Cand, SchedCandidate &TryCand) override;48  bool biasAddiCandidate(SchedCandidate &Cand, SchedCandidate &TryCand) const;49};50 51} // end namespace llvm52 53#endif // LLVM_LIB_TARGET_POWERPC_POWERPCMACHINESCHEDULER_H54