diff options
author | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2018-03-23 11:50:43 +0000 |
---|---|---|
committer | Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> | 2018-03-23 11:50:43 +0000 |
commit | b5088da452d82a11e9f0f518df100e440d7266d6 (patch) | |
tree | ea5d784471b5fc11a841a9fada01880cc2f3130d /llvm/tools/llvm-mca | |
parent | 29538c6ddbdc74889d2f76bb4f710782e39989b3 (diff) | |
download | bcm5719-llvm-b5088da452d82a11e9f0f518df100e440d7266d6.tar.gz bcm5719-llvm-b5088da452d82a11e9f0f518df100e440d7266d6.zip |
[llvm-mca] Pass the InstrBuilder to the constructor of Backend.
This is done in preparation for the fix for PR36784.
No functional change.
llvm-svn: 328306
Diffstat (limited to 'llvm/tools/llvm-mca')
-rw-r--r-- | llvm/tools/llvm-mca/Backend.cpp | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-mca/Backend.h | 10 | ||||
-rw-r--r-- | llvm/tools/llvm-mca/llvm-mca.cpp | 6 |
3 files changed, 10 insertions, 8 deletions
diff --git a/llvm/tools/llvm-mca/Backend.cpp b/llvm/tools/llvm-mca/Backend.cpp index 94edf873ed4..d0afa45461c 100644 --- a/llvm/tools/llvm-mca/Backend.cpp +++ b/llvm/tools/llvm-mca/Backend.cpp @@ -34,7 +34,7 @@ void Backend::runCycle(unsigned Cycle) { while (SM.hasNext()) { InstRef IR = SM.peekNext(); std::unique_ptr<Instruction> NewIS = - IB->createInstruction(IR.first, *IR.second); + IB.createInstruction(IR.first, *IR.second); const InstrDesc &Desc = NewIS->getDesc(); if (!DU->isAvailable(Desc.NumMicroOps) || !DU->canDispatch(IR.first, *NewIS)) diff --git a/llvm/tools/llvm-mca/Backend.h b/llvm/tools/llvm-mca/Backend.h index 027850ecba5..902327ac625 100644 --- a/llvm/tools/llvm-mca/Backend.h +++ b/llvm/tools/llvm-mca/Backend.h @@ -47,7 +47,7 @@ class HWStallEvent; class Backend { const llvm::MCSubtargetInfo &STI; - std::unique_ptr<InstrBuilder> IB; + InstrBuilder &IB; std::unique_ptr<Scheduler> HWS; std::unique_ptr<DispatchUnit> DU; SourceMgr &SM; @@ -59,12 +59,12 @@ class Backend { void runCycle(unsigned Cycle); public: - Backend(const llvm::MCSubtargetInfo &Subtarget, const llvm::MCInstrInfo &MCII, - const llvm::MCRegisterInfo &MRI, SourceMgr &Source, + Backend(const llvm::MCSubtargetInfo &Subtarget, + const llvm::MCRegisterInfo &MRI, InstrBuilder &B, SourceMgr &Source, unsigned DispatchWidth = 0, unsigned RegisterFileSize = 0, unsigned MaxRetirePerCycle = 0, unsigned LoadQueueSize = 0, unsigned StoreQueueSize = 0, bool AssumeNoAlias = false) - : STI(Subtarget), + : STI(Subtarget), IB(B), HWS(llvm::make_unique<Scheduler>(this, Subtarget.getSchedModel(), LoadQueueSize, StoreQueueSize, AssumeNoAlias)), @@ -72,7 +72,6 @@ public: this, MRI, Subtarget.getSchedModel().MicroOpBufferSize, RegisterFileSize, MaxRetirePerCycle, DispatchWidth, HWS.get())), SM(Source), Cycles(0) { - IB = llvm::make_unique<InstrBuilder>(Subtarget, MCII); HWS->setDispatchUnit(DU.get()); } @@ -98,7 +97,6 @@ public: void notifyReleasedBuffers(llvm::ArrayRef<unsigned> Buffers); void notifyCycleEnd(unsigned Cycle); }; - } // namespace mca #endif diff --git a/llvm/tools/llvm-mca/llvm-mca.cpp b/llvm/tools/llvm-mca/llvm-mca.cpp index 0ae9c8849bb..5c085af9685 100644 --- a/llvm/tools/llvm-mca/llvm-mca.cpp +++ b/llvm/tools/llvm-mca/llvm-mca.cpp @@ -321,8 +321,12 @@ int main(int argc, char **argv) { if (DispatchWidth) Width = DispatchWidth; + // Create an instruction builder. + std::unique_ptr<mca::InstrBuilder> IB = + llvm::make_unique<mca::InstrBuilder>(*STI, *MCII); + std::unique_ptr<mca::Backend> B = llvm::make_unique<mca::Backend>( - *STI, *MCII, *MRI, *S, Width, RegisterFileSize, MaxRetirePerCycle, + *STI, *MRI, *IB, *S, Width, RegisterFileSize, MaxRetirePerCycle, LoadQueueSize, StoreQueueSize, AssumeNoAlias); std::unique_ptr<mca::BackendPrinter> Printer = |