| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
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: 161009
|
|
|
|
| |
llvm-svn: 161007
|
|
|
|
|
|
|
|
| |
CallInst for intrinsics. This allows users of the InstVisitor that would
like to special case certain very common intrinsics to do so naturally
in keeping with the type hierarchy's utility classes.
llvm-svn: 161006
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
test more than a single instantiation of SmallVector.
Add testing for 0, 1, 2, and 4 element sized "small" buffers. These
appear to be essentially untested in the unit tests until now.
Fix several tests to be robust in the face of a '0' small buffer. As
a consequence of this size buffer, the growth patterns are actually
observable in the test -- yes this means that many tests never caused
a grow to occur before. For some tests I've merely added a reserve call
to normalize behavior. For others, the growth is actually interesting,
and so I captured the fact that growth would occur and adjusted the
assertions to not assume how rapidly growth occured.
Also update the specialization for a '0' small buffer length to have all
the same interface points as the normal small vector.
llvm-svn: 161001
|
|
|
|
| |
llvm-svn: 160997
|
|
|
|
| |
llvm-svn: 160996
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 160981
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
IsCodeGenOnly
llvm-svn: 160950
|
|
|
|
|
|
| |
guaranteed it. Replace another sub class check with ShouldBeEmitted flag since it was factored in there already.
llvm-svn: 160949
|
|
|
|
|
|
| |
functional change.
llvm-svn: 160948
|
|
|
|
|
|
| |
and it isn't the only 256-bit memory type anyway.
llvm-svn: 160946
|
|
|
|
| |
llvm-svn: 160945
|
|
|
|
| |
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
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 160929
|
|
|
|
| |
llvm-svn: 160927
|
|
|
|
| |
llvm-svn: 160925
|
|
|
|
|
|
| |
instruction definitions.
llvm-svn: 160922
|
|
|
|
| |
llvm-svn: 160921
|
|
|
|
|
|
| |
Trying to fix the bot by specifying a triple in the failing testing cases.
llvm-svn: 160920
|
|
|
|
|
|
|
|
|
| |
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
|