Revision tags: llvmorg-3.4.1, llvmorg-3.4.1-rc2 |
|
#
1b9dde08 |
| 22-Apr-2014 |
Chandler Carruth <chandlerc@gmail.com> |
[Modules] Remove potential ODR violations by sinking the DEBUG_TYPE define below all header includes in the lib/CodeGen/... tree. While the current modules implementation doesn't check for this kind
[Modules] Remove potential ODR violations by sinking the DEBUG_TYPE define below all header includes in the lib/CodeGen/... tree. While the current modules implementation doesn't check for this kind of ODR violation yet, it is likely to grow support for it in the future. It also removes one layer of macro pollution across all the included headers.
Other sub-trees will follow.
llvm-svn: 206837
show more ...
|
#
c0196b1b |
| 14-Apr-2014 |
Craig Topper <craig.topper@gmail.com> |
[C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr.
llvm-svn: 206142
|
#
502b9e1d |
| 12-Apr-2014 |
Benjamin Kramer <benny.kra@googlemail.com> |
Retire llvm::array_endof in favor of non-member std::end.
While there make array_lengthof constexpr if we have support for it.
llvm-svn: 206112
|
Revision tags: llvmorg-3.4.1-rc1 |
|
#
16c6bf49 |
| 13-Mar-2014 |
Owen Anderson <resistor@mac.com> |
Phase 2 of the great MachineRegisterInfo cleanup. This time, we're changing operator* on the by-operand iterators to return a MachineOperand& rather than a MachineInstr&. At this point they almost
Phase 2 of the great MachineRegisterInfo cleanup. This time, we're changing operator* on the by-operand iterators to return a MachineOperand& rather than a MachineInstr&. At this point they almost behave like normal iterators!
Again, this requires making some existing loops more verbose, but should pave the way for the big range-based for-loop cleanups in the future.
llvm-svn: 203865
show more ...
|
#
4584cd54 |
| 07-Mar-2014 |
Craig Topper <craig.topper@gmail.com> |
[C++11] Add 'override' keyword to virtual methods that override their base class.
llvm-svn: 203220
|
#
d6f1f84f |
| 02-Mar-2014 |
Benjamin Kramer <benny.kra@googlemail.com> |
[C++11] Replace llvm::tie with std::tie.
The old implementation is no longer needed in C++11.
llvm-svn: 202644
|
Revision tags: llvmorg-3.4.0, llvmorg-3.4.0-rc3, llvmorg-3.4.0-rc2, llvmorg-3.4.0-rc1, llvmorg-3.3.1-rc1 |
|
#
de2109eb |
| 15-Jun-2013 |
Andrew Trick <atrick@apple.com> |
Machine Model: Add MicroOpBufferSize and resource BufferSize.
Replace the ill-defined MinLatency and ILPWindow properties with with straightforward buffer sizes: MCSchedMode::MicroOpBufferSize MCPro
Machine Model: Add MicroOpBufferSize and resource BufferSize.
Replace the ill-defined MinLatency and ILPWindow properties with with straightforward buffer sizes: MCSchedMode::MicroOpBufferSize MCProcResourceDesc::BufferSize
These can be used to more precisely model instruction execution if desired.
Disabled some misched tests temporarily. They'll be reenabled in a few commits.
llvm-svn: 184032
show more ...
|
Revision tags: llvmorg-3.3.0, llvmorg-3.3.0-rc3, llvmorg-3.3.0-rc2, llvmorg-3.3.0-rc1 |
|
#
85058af6 |
| 27-Apr-2013 |
Andrew Trick <atrick@apple.com> |
Generalize the MachineTraceMetrics public API.
Naturally, we should be able to pass in extra instructions, not just extra blocks.
llvm-svn: 180667
|
#
aeb69a54 |
| 02-Apr-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Allow MachineTraceMetrics to be used when the model has no resources.
It it still possible to extract information from itineraries, for example.
llvm-svn: 178582
|
#
3ca14772 |
| 02-Apr-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Count processor resources individually in MachineTraceMetrics.
The new instruction scheduling models provide information about the number of cycles consumed on each processor resource. This makes it
Count processor resources individually in MachineTraceMetrics.
The new instruction scheduling models provide information about the number of cycles consumed on each processor resource. This makes it possible to estimate ILP more accurately than simply counting instructions / issue width.
The functions getResourceDepth() and getResourceLength() now identify the limiting processor resource, and return a cycle count based on that.
This gives more precise resource information, particularly in traces that use one resource a lot more than others.
llvm-svn: 178553
show more ...
|
#
299cedc7 |
| 07-Mar-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Rename isEarlierInSameTrace to isUsefulDominator.
In very rare cases caused by irreducible control flow, the dominating block can have the same trace head without actually being part of the trace.
Rename isEarlierInSameTrace to isUsefulDominator.
In very rare cases caused by irreducible control flow, the dominating block can have the same trace head without actually being part of the trace.
As long as such a dominator still has valid instruction depths, it is OK to use it for computing instruction depths.
Rename the function to avoid lying, and add a check that instruction depths are computed for the dominator.
llvm-svn: 176668
show more ...
|
#
965665bb |
| 17-Jan-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Move MachineTraceMetrics.h into include/llvm/CodeGen.
Let targets use it.
llvm-svn: 172688
|
Revision tags: llvmorg-3.2.0, llvmorg-3.2.0-rc3 |
|
#
ed0881b2 |
| 03-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Use the new script to sort the includes of every file under lib.
Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module
Use the new script to sort the includes of every file under lib.
Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented.
Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =]
llvm-svn: 169131
show more ...
|
Revision tags: llvmorg-3.2.0-rc2, llvmorg-3.2.0-rc1 |
|
#
d0d7860f |
| 11-Oct-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Pass an explicit operand number to addLiveIns.
Not all instructions define a virtual register in their first operand. Specifically, INLINEASM has a different format.
<rdar://problem/12472811>
llvm
Pass an explicit operand number to addLiveIns.
Not all instructions define a virtual register in their first operand. Specifically, INLINEASM has a different format.
<rdar://problem/12472811>
llvm-svn: 165721
show more ...
|
#
9d1173a8 |
| 08-Oct-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't crash on extra evil irreducible control flow.
When the CFG contains a loop with multiple entry blocks, the traces computed by MachineTraceMetrics don't always have the same nice properties. Lo
Don't crash on extra evil irreducible control flow.
When the CFG contains a loop with multiple entry blocks, the traces computed by MachineTraceMetrics don't always have the same nice properties. Loop back-edges are normally excluded from traces, but MachineLoopInfo doesn't recognize loops with multiple entry blocks, so those back-edges may be included.
Avoid asserting when that happens by adding an isEarlierInSameTrace() function that accurately determines if a dominating block is part of the same trace AND is above the currrent block in the trace.
llvm-svn: 165434
show more ...
|
#
89822229 |
| 04-Oct-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Switch MachineTraceMetrics to the new TargetSchedModel interface.
llvm-svn: 165235
|
#
a0042acd |
| 10-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Give MachineTraceMetrics its own debug tag.
llvm-svn: 161712
|
#
34844209 |
| 10-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 pat
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.
llvm-svn: 161711
show more ...
|
#
0954d419 |
| 10-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Include loop-carried dependencies when computing instr heights.
When a trace ends with a back-edge, include PHIs in the loop header in the height computations. This makes the critical path through a
Include loop-carried dependencies when computing instr heights.
When a trace ends with a back-edge, include PHIs in the loop header in the height computations. This makes the critical path through a loop more accurate by including the latencies of the last instructions in the loop.
llvm-svn: 161688
show more ...
|
#
bf1ac4bd |
| 08-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Deal with irreducible control flow when building traces.
We filter out MachineLoop back-edges during the trace-building PO traversals, but it is possible to have CFG cycles that aren't natural loops
Deal with irreducible control flow when building traces.
We filter out MachineLoop back-edges during the trace-building PO traversals, but it is possible to have CFG cycles that aren't natural loops, and MachineLoopInfo doesn't include such cycles.
Use a standard visited set to detect such CFG cycles, and completely ignore them when picking traces.
llvm-svn: 161532
show more ...
|
#
296448b2 |
| 07-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Fix a couple of typos.
llvm-svn: 161437
|
#
75d9d515 |
| 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
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.
llvm-svn: 161433
show more ...
|
#
5d30630e |
| 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(dept
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.
llvm-svn: 161197
show more ...
|
#
2db6b653 |
| 01-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 instruc
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.
llvm-svn: 161138
show more ...
|
#
5e19d35e |
| 01-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add DataDep constructors. Explicitly check SSA form.
llvm-svn: 161115
|