Start scaffolding for a MachineTraceMetrics analysis pass.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 26 Jul 2012 18:38:11 +0000 (18:38 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 26 Jul 2012 18:38:11 +0000 (18:38 +0000)
commit9f63e104271eb91e545fa8cdb16fb9e10a8a9578
tree129292c1e42af3731aa15b38dec315b74795fed6
parent27db99fcee85939f0b7580ad55303c4c60a3b98d
Start scaffolding for a MachineTraceMetrics analysis pass.

This is still a work in progress.

Out-of-order CPUs usually execute instructions from multiple basic
blocks simultaneously, so it is necessary to look at longer traces when
estimating the performance effects of code transformations.

The MachineTraceMetrics analysis will pick a typical trace through a
given basic block and provide performance metrics for the trace. Metrics
will include:

- Instruction count through the trace.
- Issue count per functional unit.
- Critical path length, and per-instruction 'slack'.

These metrics can be used to determine the performance limiting factor
when executing the trace, and how it will be affected by a code
transformation.

Initially, this will be used by the early if-conversion pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160796 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/Passes.h
include/llvm/InitializePasses.h
lib/CodeGen/CMakeLists.txt
lib/CodeGen/EarlyIfConversion.cpp
lib/CodeGen/MachineTraceMetrics.cpp [new file with mode: 0644]
lib/CodeGen/MachineTraceMetrics.h [new file with mode: 0644]