[PATCH] D48691: [llvm-mca] Add a HardwareUnit and Context classes.

Matt Davis via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 27 17:20:48 PDT 2018


mattd created this revision.
mattd added reviewers: andreadb, courbet, RKSimon.
Herald added subscribers: gbedwell, tschuett, javed.absar, mgorny.

This patch moves the construction of the default backend from llvm-mca.cpp and into mca::Context.  The Context class is responsible for holding ownership of the simulated hardware components.  These components are subclasses of HardwareUnit.  Right now the HardwareUnit is pretty bare-bones, but eventually we might want to add some common functionality across all hardware components, such as isReady() or something similar.

I have a feeling this patch will probably need some updates, but it's a start.  One thing I am not particularly fond of is the rather large interface for createDefaultPipeline.  That convenience routine takes a rather large set of inputs from the llvm-mca driver, where many of those inputs are generated via command line options.

One item I think we might want to change is the separating of  ownership of hardware components (owned by the context) and the pipeline (which owns Stages).  In short, a Pipeline owns Stages, a Context (currently) owns hardware.  The Pipeline's Stages make use of the components, and thus there is a lifetime dependency generated.  The components must outlive the pipeline.  We could solve this by having the Context also own the Pipeline, and not return a unique_ptr<Pipeline>.  Now that I think about it, I like that idea more.


https://reviews.llvm.org/D48691

Files:
  tools/llvm-mca/CMakeLists.txt
  tools/llvm-mca/Context.cpp
  tools/llvm-mca/Context.h
  tools/llvm-mca/HardwareUnit.h
  tools/llvm-mca/RegisterFile.h
  tools/llvm-mca/RetireControlUnit.h
  tools/llvm-mca/Scheduler.h
  tools/llvm-mca/llvm-mca.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D48691.153213.patch
Type: text/x-patch
Size: 11180 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180628/f59e88b8/attachment.bin>


More information about the llvm-commits mailing list