diff options
Diffstat (limited to 'llvm/tools')
-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 = |