LLVM 20.0.0git
MultiHazardRecognizer.h
Go to the documentation of this file.
1//=- llvm/CodeGen/MultiHazardRecognizer.h - Scheduling Support ----*- 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-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file implements the MultiHazardRecognizer class, which is a wrapper
10// for a set of ScheduleHazardRecognizer instances
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_CODEGEN_MULTIHAZARDRECOGNIZER_H
15#define LLVM_CODEGEN_MULTIHAZARDRECOGNIZER_H
16
19
20namespace llvm {
21
22class MachineInstr;
23class SUnit;
24
27
28public:
30 void AddHazardRecognizer(std::unique_ptr<ScheduleHazardRecognizer> &&);
31
32 bool atIssueLimit() const override;
33 HazardType getHazardType(SUnit *, int Stalls = 0) override;
34 void Reset() override;
35 void EmitInstruction(SUnit *) override;
36 void EmitInstruction(MachineInstr *) override;
37 unsigned PreEmitNoops(SUnit *) override;
38 unsigned PreEmitNoops(MachineInstr *) override;
39 bool ShouldPreferAnother(SUnit *) override;
40 void AdvanceCycle() override;
41 void RecedeCycle() override;
42 void EmitNoop() override;
43};
44
45} // end namespace llvm
46
47#endif // LLVM_CODEGEN_MULTIHAZARDRECOGNIZER_H
This file defines the SmallVector class.
Representation of each machine instruction.
Definition: MachineInstr.h:69
unsigned PreEmitNoops(SUnit *) override
PreEmitNoops - This callback is invoked prior to emitting an instruction.
void EmitNoop() override
EmitNoop - This callback is invoked when a noop was added to the instruction stream.
bool atIssueLimit() const override
atIssueLimit - Return true if no more instructions may be issued in this cycle.
void AddHazardRecognizer(std::unique_ptr< ScheduleHazardRecognizer > &&)
void Reset() override
Reset - This callback is invoked when a new block of instructions is about to be schedule.
void EmitInstruction(SUnit *) override
EmitInstruction - This callback is invoked when an instruction is emitted, to advance the hazard stat...
HazardType getHazardType(SUnit *, int Stalls=0) override
getHazardType - Return the hazard type of emitting this node.
void RecedeCycle() override
RecedeCycle - This callback is invoked whenever the next bottom-up instruction to be scheduled cannot...
void AdvanceCycle() override
AdvanceCycle - This callback is invoked whenever the next top-down instruction to be scheduled cannot...
bool ShouldPreferAnother(SUnit *) override
ShouldPreferAnother - This callback may be invoked if getHazardType returns NoHazard.
Scheduling unit. This is a node in the scheduling DAG.
Definition: ScheduleDAG.h:242
HazardRecognizer - This determines whether or not an instruction can be issued this cycle,...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Definition: SmallVector.h:1196
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18