summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-mca
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools/llvm-mca')
-rw-r--r--llvm/tools/llvm-mca/Views/SummaryView.cpp3
-rw-r--r--llvm/tools/llvm-mca/include/InstrBuilder.h3
-rw-r--r--llvm/tools/llvm-mca/include/Stages/InstructionTables.h9
-rw-r--r--llvm/tools/llvm-mca/lib/HardwareUnits/ResourceManager.cpp3
-rw-r--r--llvm/tools/llvm-mca/lib/Stages/InstructionTables.cpp1
-rw-r--r--llvm/tools/llvm-mca/llvm-mca.cpp2
6 files changed, 9 insertions, 12 deletions
diff --git a/llvm/tools/llvm-mca/Views/SummaryView.cpp b/llvm/tools/llvm-mca/Views/SummaryView.cpp
index 98f3410d61b..8d529ba1549 100644
--- a/llvm/tools/llvm-mca/Views/SummaryView.cpp
+++ b/llvm/tools/llvm-mca/Views/SummaryView.cpp
@@ -27,8 +27,7 @@ using namespace llvm;
SummaryView::SummaryView(const MCSchedModel &Model, const SourceMgr &S,
unsigned Width)
: SM(Model), Source(S), DispatchWidth(Width), TotalCycles(0),
- NumMicroOps(0), ProcResourceUsage(Model.getNumProcResourceKinds(), 0),
- ProcResourceMasks(Model.getNumProcResourceKinds(), 0) {
+ NumMicroOps(0), ProcResourceUsage(Model.getNumProcResourceKinds(), 0) {
computeProcResourceMasks(SM, ProcResourceMasks);
}
diff --git a/llvm/tools/llvm-mca/include/InstrBuilder.h b/llvm/tools/llvm-mca/include/InstrBuilder.h
index 9fee94bbb3f..31c52702058 100644
--- a/llvm/tools/llvm-mca/include/InstrBuilder.h
+++ b/llvm/tools/llvm-mca/include/InstrBuilder.h
@@ -65,8 +65,7 @@ public:
InstrBuilder(const llvm::MCSubtargetInfo &sti, const llvm::MCInstrInfo &mcii,
const llvm::MCRegisterInfo &mri,
const llvm::MCInstrAnalysis &mcia)
- : STI(sti), MCII(mcii), MRI(mri), MCIA(mcia),
- ProcResourceMasks(STI.getSchedModel().getNumProcResourceKinds()) {
+ : STI(sti), MCII(mcii), MRI(mri), MCIA(mcia) {
computeProcResourceMasks(STI.getSchedModel(), ProcResourceMasks);
}
diff --git a/llvm/tools/llvm-mca/include/Stages/InstructionTables.h b/llvm/tools/llvm-mca/include/Stages/InstructionTables.h
index 16be004d115..de31a7949bb 100644
--- a/llvm/tools/llvm-mca/include/Stages/InstructionTables.h
+++ b/llvm/tools/llvm-mca/include/Stages/InstructionTables.h
@@ -18,8 +18,8 @@
#define LLVM_TOOLS_LLVM_MCA_INSTRUCTIONTABLES_H
#include "HardwareUnits/Scheduler.h"
-#include "InstrBuilder.h"
#include "Stages/Stage.h"
+#include "Support.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/MC/MCSchedule.h"
@@ -27,12 +27,13 @@ namespace mca {
class InstructionTables final : public Stage {
const llvm::MCSchedModel &SM;
- InstrBuilder &IB;
llvm::SmallVector<std::pair<ResourceRef, ResourceCycles>, 4> UsedResources;
+ llvm::SmallVector<uint64_t, 8> Masks;
public:
- InstructionTables(const llvm::MCSchedModel &Model, InstrBuilder &Builder)
- : Stage(), SM(Model), IB(Builder) {}
+ InstructionTables(const llvm::MCSchedModel &Model) : Stage(), SM(Model) {
+ computeProcResourceMasks(Model, Masks);
+ }
bool hasWorkToComplete() const override { return false; }
llvm::Error execute(InstRef &IR) override;
diff --git a/llvm/tools/llvm-mca/lib/HardwareUnits/ResourceManager.cpp b/llvm/tools/llvm-mca/lib/HardwareUnits/ResourceManager.cpp
index bb6ed309c26..e033217d52d 100644
--- a/llvm/tools/llvm-mca/lib/HardwareUnits/ResourceManager.cpp
+++ b/llvm/tools/llvm-mca/lib/HardwareUnits/ResourceManager.cpp
@@ -97,8 +97,7 @@ getStrategyFor(const ResourceState &RS) {
return std::unique_ptr<ResourceStrategy>(nullptr);
}
-ResourceManager::ResourceManager(const MCSchedModel &SM)
- : ProcResID2Mask(SM.getNumProcResourceKinds()) {
+ResourceManager::ResourceManager(const MCSchedModel &SM) {
computeProcResourceMasks(SM, ProcResID2Mask);
Resources.resize(SM.getNumProcResourceKinds());
Strategies.resize(SM.getNumProcResourceKinds());
diff --git a/llvm/tools/llvm-mca/lib/Stages/InstructionTables.cpp b/llvm/tools/llvm-mca/lib/Stages/InstructionTables.cpp
index e49eb446062..06319f857dc 100644
--- a/llvm/tools/llvm-mca/lib/Stages/InstructionTables.cpp
+++ b/llvm/tools/llvm-mca/lib/Stages/InstructionTables.cpp
@@ -22,7 +22,6 @@ namespace mca {
using namespace llvm;
Error InstructionTables::execute(InstRef &IR) {
- ArrayRef<uint64_t> Masks = IB.getProcResourceMasks();
const InstrDesc &Desc = IR.getInstruction()->getDesc();
UsedResources.clear();
diff --git a/llvm/tools/llvm-mca/llvm-mca.cpp b/llvm/tools/llvm-mca/llvm-mca.cpp
index 9ad761e6665..9992395fb6e 100644
--- a/llvm/tools/llvm-mca/llvm-mca.cpp
+++ b/llvm/tools/llvm-mca/llvm-mca.cpp
@@ -519,7 +519,7 @@ int main(int argc, char **argv) {
// Create a pipeline, stages, and a printer.
auto P = llvm::make_unique<mca::Pipeline>();
P->appendStage(llvm::make_unique<mca::FetchStage>(IB, S));
- P->appendStage(llvm::make_unique<mca::InstructionTables>(SM, IB));
+ P->appendStage(llvm::make_unique<mca::InstructionTables>(SM));
mca::PipelinePrinter Printer(*P);
// Create the views for this pipeline, execute, and emit a report.
OpenPOWER on IntegriCloud