5413b68b1f59041a821287790dbc1ee2e272cf4e |
|
11-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add more trace query functions. Trace::getResourceLength() computes the number of cycles required to execute the trace when ignoring data dependencies. The number can be compared to the critical path to estimate the trace ILP. Trace::getPHIDepth() computes the data dependency depth of a PHI in a trace successor that isn't necessarily part of the trace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161711 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
7a8f311ece7108e44ded601237091c23ef7782eb |
|
07-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Fix a couple of typos. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161437 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
84ef6ba44394f983d985b02e328cbb2dd779e4b0 |
|
07-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add trace accessor methods, implement primitive if-conversion heuristic. Compare the critical paths of the two traces through an if-conversion candidate. If the difference is larger than the branch brediction penalty, reject the if-conversion. If would never pay. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161433 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
79a20ce6f0d6c1041a5031aca41b50a1e58b1d4b |
|
02-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Compute the critical path length through a trace. Whenever both instruction depths and instruction heights are known in a block, it is possible to compute the length of the critical path as max(depth+height) over the instructions in the block. The stored live-in lists make it possible to accurately compute the length of a critical path that bypasses the current (small) block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161197 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
c7f44b8b8fca87cdd28ffe420c3b87141d88c099 |
|
02-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Compute instruction heights through a trace. The height on an instruction is the minimum number of cycles from the instruction is issued to the end of the trace. Heights are computed for all instructions in and below the trace center block. The method for computing heights is different from the depth computation. As we visit instructions in the trace bottom-up, heights of used instructions are pushed upwards. This way, we avoid scanning long use lists, looking for uses in the current trace. At each basic block boundary, a list of live-in registers and their minimum heights is saved in the trace block info. These live-in lists are used when restarting depth computations on a trace that converges with an already computed trace. They will also be used to accurately compute the critical path length. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161138 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
5f8e8bd656bb174b3e22c0e56ce3d1eb958ac2e2 |
|
31-Jul-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Compute instruction depths through the current trace. Assuming infinite issue width, compute the earliest each instruction in the trace can issue, when considering the latency of data dependencies. The issue cycle is record as a 'depth' from the beginning of the trace. This is half the computation required to find the length of the critical path through the trace. Heights are next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161074 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
64e2973bf78970aedecbb5fda44e19f93f56dd9b |
|
31-Jul-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Rename CT -> MTM. MachineTraceMetrics is abbreviated MTM. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161072 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
20f13c50d88560d75129f4a691fe6b477d04dc70 |
|
30-Jul-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Clarify invalidation strategy in comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
ef6c76c984f821ea866902a7f9e695b16e971468 |
|
30-Jul-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Hook into PassManager's analysis verification. By overriding Pass::verifyAnalysis(), the pass contents will be verified by the pass manager. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160994 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
a1b2bf79796d8c44b1321a69a7236b85c33ef7ca |
|
30-Jul-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add MachineTraceMetrics::verify(). This function verifies the consistency of cached data in the MachineTraceMetrics analysis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160976 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
08f6ef6a7807250d84446661b7a6ec4afa762099 |
|
28-Jul-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add more debug output to MachineTraceMetrics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
0271a5fa29f73150fad891ca4c43a0a89a64b3bf |
|
28-Jul-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Keep track of the head and tail of the trace through each block. This makes it possible to quickly detect blocks that are outside the trace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|
9f63e104271eb91e545fa8cdb16fb9e10a8a9578 |
|
26-Jul-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
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
/external/llvm/lib/CodeGen/MachineTraceMetrics.h
|