diff options
Diffstat (limited to 'contrib/llvm/lib/MCA/Context.cpp')
-rw-r--r-- | contrib/llvm/lib/MCA/Context.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/contrib/llvm/lib/MCA/Context.cpp b/contrib/llvm/lib/MCA/Context.cpp index c1b197dfe2e6..f0e8dfab8680 100644 --- a/contrib/llvm/lib/MCA/Context.cpp +++ b/contrib/llvm/lib/MCA/Context.cpp @@ -1,9 +1,8 @@ //===---------------------------- Context.cpp -------------------*- C++ -*-===// // -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// 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 @@ -22,6 +21,7 @@ #include "llvm/MCA/Stages/DispatchStage.h" #include "llvm/MCA/Stages/EntryStage.h" #include "llvm/MCA/Stages/ExecuteStage.h" +#include "llvm/MCA/Stages/MicroOpQueueStage.h" #include "llvm/MCA/Stages/RetireStage.h" namespace llvm { @@ -43,7 +43,8 @@ Context::createDefaultPipeline(const PipelineOptions &Opts, InstrBuilder &IB, auto Fetch = llvm::make_unique<EntryStage>(SrcMgr); auto Dispatch = llvm::make_unique<DispatchStage>(STI, MRI, Opts.DispatchWidth, *RCU, *PRF); - auto Execute = llvm::make_unique<ExecuteStage>(*HWS); + auto Execute = + llvm::make_unique<ExecuteStage>(*HWS, Opts.EnableBottleneckAnalysis); auto Retire = llvm::make_unique<RetireStage>(*RCU, *PRF); // Pass the ownership of all the hardware units to this Context. @@ -55,6 +56,9 @@ Context::createDefaultPipeline(const PipelineOptions &Opts, InstrBuilder &IB, // Build the pipeline. auto StagePipeline = llvm::make_unique<Pipeline>(); StagePipeline->appendStage(std::move(Fetch)); + if (Opts.MicroOpQueueSize) + StagePipeline->appendStage(llvm::make_unique<MicroOpQueueStage>( + Opts.MicroOpQueueSize, Opts.DecodersThroughput)); StagePipeline->appendStage(std::move(Dispatch)); StagePipeline->appendStage(std::move(Execute)); StagePipeline->appendStage(std::move(Retire)); |