003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/include/llvm/MCA
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
include
/
llvm
/
MCA
/
📁
..
📄
CodeEmitter.h
(2.14 KB)
📄
Context.h
(2.73 KB)
📄
HWEventListener.h
(6.35 KB)
📁
HardwareUnits
📄
InstrBuilder.h
(2.67 KB)
📄
Instruction.h
(22.84 KB)
📄
Pipeline.h
(2.52 KB)
📄
SourceMgr.h
(1.96 KB)
📁
Stages
📄
Support.h
(4.35 KB)
Editing: Context.h
//===---------------------------- Context.h ---------------------*- 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 // //===----------------------------------------------------------------------===// /// \file /// /// This file defines a class for holding ownership of various simulated /// hardware units. A Context also provides a utility routine for constructing /// a default out-of-order pipeline with fetch, dispatch, execute, and retire /// stages. /// //===----------------------------------------------------------------------===// #ifndef LLVM_MCA_CONTEXT_H #define LLVM_MCA_CONTEXT_H #include "llvm/MC/MCRegisterInfo.h" #include "llvm/MC/MCSubtargetInfo.h" #include "llvm/MCA/HardwareUnits/HardwareUnit.h" #include "llvm/MCA/Pipeline.h" #include "llvm/MCA/SourceMgr.h" #include <memory> namespace llvm { namespace mca { /// This is a convenience struct to hold the parameters necessary for creating /// the pre-built "default" out-of-order pipeline. struct PipelineOptions { PipelineOptions(unsigned UOPQSize, unsigned DecThr, unsigned DW, unsigned RFS, unsigned LQS, unsigned SQS, bool NoAlias, bool ShouldEnableBottleneckAnalysis = false) : MicroOpQueueSize(UOPQSize), DecodersThroughput(DecThr), DispatchWidth(DW), RegisterFileSize(RFS), LoadQueueSize(LQS), StoreQueueSize(SQS), AssumeNoAlias(NoAlias), EnableBottleneckAnalysis(ShouldEnableBottleneckAnalysis) {} unsigned MicroOpQueueSize; unsigned DecodersThroughput; // Instructions per cycle. unsigned DispatchWidth; unsigned RegisterFileSize; unsigned LoadQueueSize; unsigned StoreQueueSize; bool AssumeNoAlias; bool EnableBottleneckAnalysis; }; class Context { SmallVector<std::unique_ptr<HardwareUnit>, 4> Hardware; const MCRegisterInfo &MRI; const MCSubtargetInfo &STI; public: Context(const MCRegisterInfo &R, const MCSubtargetInfo &S) : MRI(R), STI(S) {} Context(const Context &C) = delete; Context &operator=(const Context &C) = delete; const MCRegisterInfo &getMCRegisterInfo() const { return MRI; } const MCSubtargetInfo &getMCSubtargetInfo() const { return STI; } void addHardwareUnit(std::unique_ptr<HardwareUnit> H) { Hardware.push_back(std::move(H)); } /// Construct a basic pipeline for simulating an out-of-order pipeline. /// This pipeline consists of Fetch, Dispatch, Execute, and Retire stages. std::unique_ptr<Pipeline> createDefaultPipeline(const PipelineOptions &Opts, SourceMgr &SrcMgr); }; } // namespace mca } // namespace llvm #endif // LLVM_MCA_CONTEXT_H
Upload File
Create Folder