summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-mca
diff options
context:
space:
mode:
authorAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2018-10-24 16:56:43 +0000
committerAndrea Di Biagio <Andrea_DiBiagio@sn.scee.net>2018-10-24 16:56:43 +0000
commit65c77d7283b0026c1f8235514a67eb57fbcc31ec (patch)
treed9f221196175b79fd26c98a0964760004781ef20 /llvm/tools/llvm-mca
parentd5a27884b1ffc3077b915046eeb241a5c31bf458 (diff)
downloadbcm5719-llvm-65c77d7283b0026c1f8235514a67eb57fbcc31ec.tar.gz
bcm5719-llvm-65c77d7283b0026c1f8235514a67eb57fbcc31ec.zip
[llvm-mca] Remove dependency from InstrBuilder in class InstructionTables.
Also, removed the initialization of vectors used for processor resource masks. Support function 'computeProcResourceMasks()' already calls method resize on those vectors. No functional change intended. llvm-svn: 345161
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