LLVM  10.0.0svn
RetireStage.h
Go to the documentation of this file.
1 //===---------------------- RetireStage.h -----------------------*- 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 /// \file
9 ///
10 /// This file defines the retire stage of a default instruction pipeline.
11 /// The RetireStage represents the process logic that interacts with the
12 /// simulated RetireControlUnit hardware.
13 //
14 //===----------------------------------------------------------------------===//
15 
16 #ifndef LLVM_MCA_RETIRE_STAGE_H
17 #define LLVM_MCA_RETIRE_STAGE_H
18 
21 #include "llvm/MCA/Stages/Stage.h"
22 
23 namespace llvm {
24 namespace mca {
25 
26 class RetireStage final : public Stage {
27  // Owner will go away when we move listeners/eventing to the stages.
28  RetireControlUnit &RCU;
29  RegisterFile &PRF;
30 
31  RetireStage(const RetireStage &Other) = delete;
32  RetireStage &operator=(const RetireStage &Other) = delete;
33 
34 public:
36  : Stage(), RCU(R), PRF(F) {}
37 
38  bool hasWorkToComplete() const override { return !RCU.isEmpty(); }
39  Error cycleStart() override;
40  Error execute(InstRef &IR) override;
41  void notifyInstructionRetired(const InstRef &IR) const;
42 };
43 
44 } // namespace mca
45 } // namespace llvm
46 
47 #endif // LLVM_MCA_RETIRE_STAGE_H
This class represents lattice values for constants.
Definition: AllocatorList.h:23
This file simulates the hardware responsible for retiring instructions.
Optional< std::vector< StOtherPiece > > Other
Definition: ELFYAML.cpp:953
void notifyInstructionRetired(const InstRef &IR) const
Definition: RetireStage.cpp:50
F(f)
An InstRef contains both a SourceMgr index and Instruction pair.
Definition: Instruction.h:562
This class tracks which instructions are in-flight (i.e., dispatched but not retired) in the OoO back...
bool hasWorkToComplete() const override
Returns true if some instructions are still executing this stage.
Definition: RetireStage.h:38
This file defines a register mapping file class.
This file defines a stage.
Manages hardware register files, and tracks register definitions for register renaming purposes...
Definition: RegisterFile.h:36
RetireStage(RetireControlUnit &R, RegisterFile &F)
Definition: RetireStage.h:35
Error cycleStart() override
Called once at the start of each cycle.
Definition: RetireStage.cpp:25
Error execute(InstRef &IR) override
The primary action that this stage performs on instruction IR.
Definition: RetireStage.cpp:45
Lightweight error class with error context and mandatory checking.
Definition: Error.h:157
Statically lint checks LLVM IR
Definition: Lint.cpp:192