9 Commits

Author SHA1 Message Date
Andrea Di Biagio
add7b3e24e [llvm-mca] run clang-format on all files.
This also addresses Simon's review comment in D44839.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328428 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-24 16:05:36 +00:00
Andrea Di Biagio
f536a15c84 [llvm-mca] update the ResourcePressureView after r328335. NFC.
This should have been part of r328335. I forgot to svn add these files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328340 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-23 17:53:02 +00:00
Andrea Di Biagio
280f00a153 [llvm-mca] Simplify code. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328187 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-22 10:19:20 +00:00
Clement Courbet
641c297f4d [llvm-mca] Refactor event listeners to make the backend agnostic to event types.
Summary: This is a first step towards making the pipeline configurable.

Subscribers: llvm-commits, andreadb

Differential Revision: https://reviews.llvm.org/D44309

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327389 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-13 13:11:01 +00:00
Andrea Di Biagio
80f8cd5c84 [llvm-mca] Views are now independent from resource masks. NFCI
This change removes method Backend::getProcResourceMasks() and simplifies some
logic in the Views. This effectively removes yet another dependency between the
views and the Backend.
No functional change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327214 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-10 16:55:07 +00:00
Andrea Di Biagio
163bd8a42d [llvm-mca] Run clang-format on the source code. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327125 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-09 12:50:42 +00:00
Andrea Di Biagio
ed2fadf0a7 [llvm-mca] add override keyword to method ResourcePressureView::printView().
NFC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327027 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-08 17:02:28 +00:00
Andrea Di Biagio
6b07e2fa92 [llvm-mca] Unify the API for the various views. NFCI
This allows the customization of the performance report.

Users can specify their own custom sequence of views.
Each view contributes a portion of the performance report generated by the
BackendPrinter.

Internally, class BackendPrinter keeps a sequence of views; views are printed
out in sequence when method 'printReport()' is called. 

This patch addresses one of the two review comments from Clement in D43951.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327018 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-08 16:08:43 +00:00
Andrea Di Biagio
29b29cc6a9 [llvm-mca] LLVM Machine Code Analyzer.
llvm-mca is an LLVM based performance analysis tool that can be used to
statically measure the performance of code, and to help triage potential
problems with target scheduling models.

llvm-mca uses information which is already available in LLVM (e.g. scheduling
models) to statically measure the performance of machine code in a specific cpu.
Performance is measured in terms of throughput as well as processor resource
consumption. The tool currently works for processors with an out-of-order
backend, for which there is a scheduling model available in LLVM.

The main goal of this tool is not just to predict the performance of the code
when run on the target, but also help with diagnosing potential performance
issues.

Given an assembly code sequence, llvm-mca estimates the IPC (instructions per
cycle), as well as hardware resources pressure. The analysis and reporting style
were mostly inspired by the IACA tool from Intel.

This patch is related to the RFC on llvm-dev visible at this link:
http://lists.llvm.org/pipermail/llvm-dev/2018-March/121490.html

Differential Revision: https://reviews.llvm.org/D43951


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@326998 91177308-0d34-0410-b5e6-96231b3b80d8
2018-03-08 13:05:02 +00:00