[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