LLVM  10.0.0svn
EntryStage.h
Go to the documentation of this file.
1 //===---------------------- EntryStage.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 Entry stage of an instruction pipeline. Its sole
11 /// purpose in life is to pick instructions in sequence and move them to the
12 /// next pipeline stage.
13 ///
14 //===----------------------------------------------------------------------===//
15 
16 #ifndef LLVM_MCA_ENTRY_STAGE_H
17 #define LLVM_MCA_ENTRY_STAGE_H
18 
19 #include "llvm/ADT/SmallVector.h"
20 #include "llvm/MCA/SourceMgr.h"
21 #include "llvm/MCA/Stages/Stage.h"
22 
23 namespace llvm {
24 namespace mca {
25 
26 class EntryStage final : public Stage {
27  InstRef CurrentInstruction;
29  SourceMgr &SM;
30  unsigned NumRetired;
31 
32  // Updates the program counter, and sets 'CurrentInstruction'.
33  void getNextInstruction();
34 
35  EntryStage(const EntryStage &Other) = delete;
36  EntryStage &operator=(const EntryStage &Other) = delete;
37 
38 public:
39  EntryStage(SourceMgr &SM) : CurrentInstruction(), SM(SM), NumRetired(0) { }
40 
41  bool isAvailable(const InstRef &IR) const override;
42  bool hasWorkToComplete() const override;
43  Error execute(InstRef &IR) override;
44  Error cycleStart() override;
45  Error cycleEnd() override;
46 };
47 
48 } // namespace mca
49 } // namespace llvm
50 
51 #endif // LLVM_MCA_FETCH_STAGE_H
EntryStage(SourceMgr &SM)
Definition: EntryStage.h:39
This class represents lattice values for constants.
Definition: AllocatorList.h:23
bool isAvailable(const InstRef &IR) const override
Returns true if it can execute IR during this cycle.
Definition: EntryStage.cpp:25
Optional< std::vector< StOtherPiece > > Other
Definition: ELFYAML.cpp:953
bool hasWorkToComplete() const override
Returns true if some instructions are still executing this stage.
Definition: EntryStage.cpp:21
An InstRef contains both a SourceMgr index and Instruction pair.
Definition: Instruction.h:562
This file defines a stage.
This is a &#39;vector&#39; (really, a variable-sized array), optimized for the case when the array is small...
Definition: SmallVector.h:837
Error cycleEnd() override
Called once at the end of each cycle.
Definition: EntryStage.cpp:59
This file implements class SourceMgr.
Lightweight error class with error context and mandatory checking.
Definition: Error.h:157
Error execute(InstRef &IR) override
The primary action that this stage performs on instruction IR.
Definition: EntryStage.cpp:42
Statically lint checks LLVM IR
Definition: Lint.cpp:192
Error cycleStart() override
Called once at the start of each cycle.
Definition: EntryStage.cpp:53