| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
Previously, we were using EBX, but PIC requires the GOT to be in EBX before
function calls via PLT GOT pointer.
llvm-svn: 161066
|
| |
|
|
|
|
|
|
|
| |
single-precision load and store.
Also avoid selecting LUXC1 and SUXC1 instructions during isel. It is incorrect
to map unaligned floating point load/store nodes to these instructions.
llvm-svn: 161063
|
| |
|
|
|
|
|
|
|
|
| |
One motivating example is to sink an instruction from a basic block which has
two successors: one outside the loop, the other inside the loop. We should try
to sink the instruction outside the loop.
rdar://11980766
llvm-svn: 161062
|
| |
|
|
| |
llvm-svn: 161061
|
| |
|
|
|
|
| |
to do so.
llvm-svn: 161053
|
| |
|
|
|
|
| |
trailing whitespace.
llvm-svn: 161029
|
| |
|
|
| |
llvm-svn: 161027
|
| |
|
|
| |
llvm-svn: 161026
|
| |
|
|
|
|
|
|
|
| |
We are extending live ranges, so kill flags are not accurate. They
aren't needed until they are recomputed after RA anyway.
<rdar://problem/11950722>
llvm-svn: 161023
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We branch to the successor with higher edge weight first.
Convert from
je LBB4_8 --> to outer loop
jmp LBB4_14 --> to inner loop
to
jne LBB4_14
jmp LBB4_8
PR12750
rdar: 11393714
llvm-svn: 161018
|
| |
|
|
| |
llvm-svn: 161010
|
| |
|
|
| |
llvm-svn: 161007
|
| |
|
|
| |
llvm-svn: 161004
|
| |
|
|
|
|
|
|
|
|
|
| |
This lets traces include the final iteration of a nested loop above the
center block, and the first iteration of a nested loop below the center
block.
We still don't allow traces to contain backedges, and traces are
truncated where they would leave a loop, as seen from the center block.
llvm-svn: 161003
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Empty macro arguments at the end of the list should be as-if not specified at
all, but those in the middle of the list need to be kept so as not to screw
up the positional numbering. E.g.:
.macro foo
foo_-bash___:
nop
.endm
foo 1, 2, 3, 4
foo 1, , 3, 4
Should create two labels, "foo_1_2_3_4" and "foo_1__3_4".
rdar://11948769
llvm-svn: 161002
|
| |
|
|
| |
llvm-svn: 160997
|
| |
|
|
|
|
|
|
|
|
| |
When computing a trace, all the candidates for pred/succ must have been
visited. Filter out back-edges first, though. The PO traversal ignores
them.
Thanks to Andy for spotting this in review.
llvm-svn: 160995
|
| |
|
|
|
|
|
| |
By overriding Pass::verifyAnalysis(), the pass contents will be verified
by the pass manager.
llvm-svn: 160994
|
| |
|
|
|
|
| |
loads from different x86 segments but the same address would get CSEd
llvm-svn: 160987
|
| |
|
|
|
|
|
|
|
| |
where the other_half of the movt and movw relocation entries needs to get set
and only with the 16 bits of the other half.
rdar://10038370
llvm-svn: 160978
|
| |
|
|
|
|
|
|
|
|
|
| |
This is a cleaned up version of the isFree() function in
MachineTraceMetrics.cpp.
Transient instructions are very unlikely to produce any code in the
final output. Either because they get eliminated by RegisterCoalescing,
or because they are pseudo-instructions like labels and debug values.
llvm-svn: 160977
|
| |
|
|
|
|
|
| |
This function verifies the consistency of cached data in the
MachineTraceMetrics analysis.
llvm-svn: 160976
|
| |
|
|
|
|
|
| |
The MachineTraceMetrics analysis must be invalidated before modifying
the CFG. This will catch some of the violations of that rule.
llvm-svn: 160969
|
| |
|
|
|
|
|
|
| |
A->isPredecessor(B) is the same as B->isSuccessor(A), but it can
tolerate a B that is null or dangling. This shouldn't happen normally,
but it it useful for verification code.
llvm-svn: 160968
|
| |
|
|
|
|
|
|
| |
pointers.
Together with Ran Chachick <ran.chachick@intel.com>
llvm-svn: 160954
|
| |
|
|
| |
llvm-svn: 160953
|
| |
|
|
|
|
| |
isCodeGenOnly change allows special detection of _NOREX instructions to be removed from tablegen disassembler code.
llvm-svn: 160951
|
| |
|
|
| |
llvm-svn: 160942
|
| |
|
|
| |
llvm-svn: 160941
|
| |
|
|
|
|
| |
Add an OptForSpeed to explicitly pair up with an OptForSize that was already on another pattern.
llvm-svn: 160939
|
| |
|
|
|
|
| |
instruction patterns.
llvm-svn: 160938
|
| |
|
|
| |
llvm-svn: 160937
|
| |
|
|
| |
llvm-svn: 160927
|
| |
|
|
|
|
| |
instruction definitions.
llvm-svn: 160922
|
| |
|
|
| |
llvm-svn: 160921
|
| |
|
|
|
|
|
|
|
| |
Machine CSE and other optimizations can remove instructions so folding
is possible at peephole while not possible at ISel.
rdar://10554090 and rdar://11873276
llvm-svn: 160919
|
| |
|
|
| |
llvm-svn: 160914
|
| |
|
|
| |
llvm-svn: 160913
|
| |
|
|
|
|
|
|
| |
It is possible that an instruction can use and update EFLAGS.
When checking the safety, we should check the usage of EFLAGS first before
declaring it is safe to optimize due to the update.
llvm-svn: 160912
|
| |
|
|
|
|
| |
Jakob fixed ProcessImplicifDefs in r159149.
llvm-svn: 160910
|
| |
|
|
| |
llvm-svn: 160905
|
| |
|
|
|
|
|
| |
This makes it possible to quickly detect blocks that are outside the
trace.
llvm-svn: 160904
|
| |
|
|
|
|
|
|
|
|
| |
all tests accordingly.
Fixes PR13351.
Patch by shinichiro hamaji!
llvm-svn: 160899
|
| |
|
|
| |
llvm-svn: 160898
|
| |
|
|
| |
llvm-svn: 160897
|
| |
|
|
|
|
|
|
| |
into predecessor blocks to enable tail call optimization.
rdar://11958338
llvm-svn: 160894
|
| |
|
|
|
|
|
|
| |
A value number is a PHI def if and only if it begins at a block
boundary. This can be derived from the def slot, a separate flag is not
necessary.
llvm-svn: 160893
|
| |
|
|
|
|
|
|
|
| |
This option replaces the existing live interval computation with one
based on LiveRangeCalc.cpp. The new algorithm does not depend on
LiveVariables, and it can be run at any time, before or after leaving
SSA form.
llvm-svn: 160892
|
| |
|
|
|
|
| |
readable.
llvm-svn: 160889
|
| |
|
|
|
|
| |
Patch by Tyler Nowicki!
llvm-svn: 160888
|