diff options
Diffstat (limited to 'contrib/llvm-project/llvm/include/llvm/CodeGen/MultiHazardRecognizer.h')
-rw-r--r-- | contrib/llvm-project/llvm/include/llvm/CodeGen/MultiHazardRecognizer.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/contrib/llvm-project/llvm/include/llvm/CodeGen/MultiHazardRecognizer.h b/contrib/llvm-project/llvm/include/llvm/CodeGen/MultiHazardRecognizer.h new file mode 100644 index 000000000000..9846045ff014 --- /dev/null +++ b/contrib/llvm-project/llvm/include/llvm/CodeGen/MultiHazardRecognizer.h @@ -0,0 +1,47 @@ +//=- llvm/CodeGen/MultiHazardRecognizer.h - Scheduling Support ----*- 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 implements the MultiHazardRecognizer class, which is a wrapper +// for a set of ScheduleHazardRecognizer instances +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CODEGEN_MULTIHAZARDRECOGNIZER_H +#define LLVM_CODEGEN_MULTIHAZARDRECOGNIZER_H + +#include "llvm/ADT/SmallVector.h" +#include "llvm/CodeGen/ScheduleHazardRecognizer.h" + +namespace llvm { + +class MachineInstr; +class SUnit; + +class MultiHazardRecognizer : public ScheduleHazardRecognizer { + SmallVector<std::unique_ptr<ScheduleHazardRecognizer>, 4> Recognizers; + +public: + MultiHazardRecognizer() = default; + void AddHazardRecognizer(std::unique_ptr<ScheduleHazardRecognizer> &&); + + bool atIssueLimit() const override; + HazardType getHazardType(SUnit *, int Stalls = 0) override; + void Reset() override; + void EmitInstruction(SUnit *) override; + void EmitInstruction(MachineInstr *) override; + unsigned PreEmitNoops(SUnit *) override; + unsigned PreEmitNoops(MachineInstr *) override; + bool ShouldPreferAnother(SUnit *) override; + void AdvanceCycle() override; + void RecedeCycle() override; + void EmitNoop() override; +}; + +} // end namespace llvm + +#endif // LLVM_CODEGEN_MULTIHAZARDRECOGNIZER_H |