diff options
Diffstat (limited to 'llvm/lib/Target/ARM/ARMHazardRecognizer.h')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMHazardRecognizer.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMHazardRecognizer.h b/llvm/lib/Target/ARM/ARMHazardRecognizer.h new file mode 100644 index 000000000000..b5ac694e01f7 --- /dev/null +++ b/llvm/lib/Target/ARM/ARMHazardRecognizer.h @@ -0,0 +1,48 @@ +//===-- ARMHazardRecognizer.h - ARM Hazard Recognizers ----------*- 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 +// +//===----------------------------------------------------------------------===// +// +// This file defines hazard recognizers for scheduling ARM functions. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIB_TARGET_ARM_ARMHAZARDRECOGNIZER_H +#define LLVM_LIB_TARGET_ARM_ARMHAZARDRECOGNIZER_H + +#include "llvm/CodeGen/ScoreboardHazardRecognizer.h" + +namespace llvm { + +class ARMBaseInstrInfo; +class ARMBaseRegisterInfo; +class ARMSubtarget; +class MachineInstr; + +/// ARMHazardRecognizer handles special constraints that are not expressed in +/// the scheduling itinerary. This is only used during postRA scheduling. The +/// ARM preRA scheduler uses an unspecialized instance of the +/// ScoreboardHazardRecognizer. +class ARMHazardRecognizer : public ScoreboardHazardRecognizer { + MachineInstr *LastMI; + unsigned FpMLxStalls; + +public: + ARMHazardRecognizer(const InstrItineraryData *ItinData, + const ScheduleDAG *DAG) + : ScoreboardHazardRecognizer(ItinData, DAG, "post-RA-sched"), + LastMI(nullptr) {} + + HazardType getHazardType(SUnit *SU, int Stalls) override; + void Reset() override; + void EmitInstruction(SUnit *SU) override; + void AdvanceCycle() override; + void RecedeCycle() override; +}; + +} // end namespace llvm + +#endif |
