Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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_STAGES_ENTRYSTAGE_H
  17. #define LLVM_MCA_STAGES_ENTRYSTAGE_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;
  28.   SmallVector<std::unique_ptr<Instruction>, 16> Instructions;
  29.   SourceMgr &SM;
  30.   unsigned NumRetired;
  31.  
  32.   // Updates the program counter, and sets 'CurrentInstruction'.
  33.   Error getNextInstruction();
  34.  
  35.   EntryStage(const EntryStage &Other) = delete;
  36.   EntryStage &operator=(const EntryStage &Other) = delete;
  37.  
  38. public:
  39.   EntryStage(SourceMgr &SM) : 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 cycleResume() override;
  46.   Error cycleEnd() override;
  47. };
  48.  
  49. } // namespace mca
  50. } // namespace llvm
  51.  
  52. #endif // LLVM_MCA_STAGES_ENTRYSTAGE_H
  53.