summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-mca/Backend.h
diff options
context:
space:
mode:
authorMatt Davis <Matthew.Davis@sony.com>2018-06-14 01:20:18 +0000
committerMatt Davis <Matthew.Davis@sony.com>2018-06-14 01:20:18 +0000
commit488ac4cb39404c0e2f70e8e02323f4d8826b55cb (patch)
treec2b7efdab9c1426121daba4f6daa4a4eecb092bf /llvm/tools/llvm-mca/Backend.h
parent239452ca3e55be720917758b0dff12664e731325 (diff)
downloadbcm5719-llvm-488ac4cb39404c0e2f70e8e02323f4d8826b55cb.tar.gz
bcm5719-llvm-488ac4cb39404c0e2f70e8e02323f4d8826b55cb.zip
[llvm-mca] Introduce the ExecuteStage (was originally the Scheduler class).
Summary: This patch transforms the Scheduler class into the ExecuteStage. Most of the logic remains. Reviewers: andreadb, RKSimon, courbet Reviewed By: andreadb Subscribers: mgorny, javed.absar, tschuett, gbedwell, llvm-commits Differential Revision: https://reviews.llvm.org/D47246 llvm-svn: 334679
Diffstat (limited to 'llvm/tools/llvm-mca/Backend.h')
-rw-r--r--llvm/tools/llvm-mca/Backend.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/tools/llvm-mca/Backend.h b/llvm/tools/llvm-mca/Backend.h
index f38902b3439..79e5bba7f8d 100644
--- a/llvm/tools/llvm-mca/Backend.h
+++ b/llvm/tools/llvm-mca/Backend.h
@@ -16,6 +16,7 @@
#define LLVM_TOOLS_LLVM_MCA_BACKEND_H
#include "DispatchStage.h"
+#include "ExecuteStage.h"
#include "FetchStage.h"
#include "InstrBuilder.h"
#include "RegisterFile.h"
@@ -57,12 +58,13 @@ class Backend {
// The following are the simulated hardware components of the backend.
RetireControlUnit RCU;
RegisterFile PRF;
+ Scheduler HWS;
/// TODO: Eventually this will become a list of unique Stage* that this
/// backend pipeline executes.
std::unique_ptr<FetchStage> Fetch;
- std::unique_ptr<Scheduler> HWS;
std::unique_ptr<DispatchStage> Dispatch;
+ std::unique_ptr<ExecuteStage> Execute;
std::unique_ptr<RetireStage> Retire;
std::set<HWEventListener *> Listeners;
@@ -78,13 +80,13 @@ public:
unsigned StoreQueueSize = 0, bool AssumeNoAlias = false)
: RCU(Subtarget.getSchedModel()),
PRF(Subtarget.getSchedModel(), MRI, RegisterFileSize),
+ HWS(Subtarget.getSchedModel(), LoadQueueSize, StoreQueueSize,
+ AssumeNoAlias),
Fetch(std::move(InitialStage)),
- HWS(llvm::make_unique<Scheduler>(this, Subtarget.getSchedModel(), RCU,
- LoadQueueSize, StoreQueueSize,
- AssumeNoAlias)),
Dispatch(llvm::make_unique<DispatchStage>(
this, Subtarget, MRI, RegisterFileSize, DispatchWidth, RCU, PRF,
- HWS.get())),
+ HWS)),
+ Execute(llvm::make_unique<ExecuteStage>(this, RCU, HWS)),
Retire(llvm::make_unique<RetireStage>(this, RCU, PRF)), Cycles(0) {}
void run();
OpenPOWER on IntegriCloud