| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 49986
|
|
|
|
| |
llvm-svn: 49985
|
|
|
|
| |
llvm-svn: 49970
|
|
|
|
| |
llvm-svn: 49949
|
|
|
|
|
|
| |
destination operand has already been coalesced with another register that's defined by a insert_subreg or extract_subreg.
llvm-svn: 49843
|
|
|
|
| |
llvm-svn: 49832
|
|
|
|
| |
llvm-svn: 49830
|
|
|
|
| |
llvm-svn: 49810
|
|
|
|
| |
llvm-svn: 49802
|
|
|
|
|
|
|
|
| |
simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential for performance improvement by replacing the conservative handling of partial physical register definitions. The code is currently disabled until live interval analysis is taught of the name scheme.
This patch also fixed a couple of nasty corner cases.
llvm-svn: 49784
|
|
|
|
|
|
| |
puts its result in a 32-bit GPR.
llvm-svn: 49762
|
|
|
|
|
|
|
|
| |
memcpy lowering code; this ensures that the size node has the desired
result type. This fixes a regression from r49572 with @llvm.memcpy.i64
on x86-32.
llvm-svn: 49761
|
|
|
|
|
|
| |
to 64-bit GPR registers on x86-64.
llvm-svn: 49757
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ScheduleDAG; they don't correspond to any actual instructions so they
don't need to be scheduled.
This fixes a bug where the EntryToken was being scheduled multiple
times in some cases, though it ended up not causing any trouble because
EntryToken doesn't expand into anything. With this fixed the schedulers
reliably schedule the expected number of units, so we can check this
with an assertion.
This requires a tweak to test/CodeGen/X86/loop-hoist.ll because it
ends up getting scheduled differently in a trivial way, though it was
enough to fool the prcontext+grep that the test does.
llvm-svn: 49701
|
|
|
|
| |
llvm-svn: 49669
|
|
|
|
|
|
| |
this is now the default.
llvm-svn: 49667
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
optimized x86-64 (and x86) calls so that they work (... at least for
my test cases).
Should fix the following problems:
Problem 1: When i introduced the optimized handling of arguments for
tail called functions (using a sequence of copyto/copyfrom virtual
registers instead of always lowering to top of the stack) i did not
handle byval arguments correctly e.g they did not work at all :).
Problem 2: On x86-64 after the arguments of the tail called function
are moved to their registers (which include ESI/RSI etc), tail call
optimization performs byval lowering which causes xSI,xDI, xCX
registers to be overwritten. This is handled in this patch by moving
the arguments to virtual registers first and after the byval lowering
the arguments are moved from those virtual registers back to
RSI/RDI/RCX.
llvm-svn: 49584
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
on any current target and aren't optimized in DAGCombiner. Instead
of using intermediate nodes, expand the operations, choosing between
simple loads/stores, target-specific code, and library calls,
immediately.
Previously, the code to emit optimized code for these operations
was only used at initial SelectionDAG construction time; now it is
used at all times. This fixes some cases where rep;movs was being
used for small copies where simple loads/stores would be better.
This also cleans up code that checks for alignments less than 4;
let the targets make that decision instead of doing it in
target-independent code. This allows x86 to use rep;movs in
low-alignment cases.
Also, this fixes a bug that resulted in the use of rep;stos for
memsets of 0 with non-constant memory size when the alignment was
at least 4. It's better to use the library in this case, which
can be significantly faster when the size is large.
This also preserves more SourceValue information when memory
intrinsics are lowered into simple loads/stores.
llvm-svn: 49572
|
|
|
|
|
|
| |
8-byte-aligned data.
llvm-svn: 49571
|
|
|
|
|
|
| |
implicit_def instead of a copy.
llvm-svn: 49543
|
|
|
|
| |
llvm-svn: 49514
|
|
|
|
|
|
| |
them all.
llvm-svn: 49491
|
|
|
|
|
|
|
|
| |
MOVZQI2PQIrr. This would be better handled as a dag combine
(with the goal of eliminating the bitconvert) but I don't know
how to do that safely. Thoughts welcome.
llvm-svn: 49463
|
|
|
|
|
|
| |
can't just eliminate them since register scavenger expects every register use to be defined. However, we can delete them when there are no intra-block uses. Carefully removing some implicit def's which enable more blocks to be optimized away.
llvm-svn: 49461
|
|
|
|
|
|
|
|
| |
implicit_def.
- Added insert_subreg coalescing support.
llvm-svn: 49448
|
|
|
|
| |
llvm-svn: 49415
|
|
|
|
| |
llvm-svn: 49391
|
|
|
|
| |
llvm-svn: 49365
|
|
|
|
|
|
|
| |
that need it (usually, grepping for some string
found in unwind info)
llvm-svn: 49364
|
|
|
|
| |
llvm-svn: 49343
|
|
|
|
| |
llvm-svn: 49281
|
|
|
|
|
|
|
| |
If it cannot be expanded, it will keep the old behaviour and try to shrink the constant.
Part of enhancement for PR2191.
llvm-svn: 49280
|
|
|
|
|
|
|
| |
2. Coalescer can now create an interesting situation where a register def can
reaches itself without being killed.
llvm-svn: 49246
|
|
|
|
|
|
| |
faster than shufps.
llvm-svn: 49244
|
|
|
|
| |
llvm-svn: 49190
|
|
|
|
| |
llvm-svn: 49111
|
|
|
|
| |
llvm-svn: 49048
|
|
|
|
| |
llvm-svn: 49016
|
|
|
|
| |
llvm-svn: 49012
|
|
|
|
|
|
|
|
| |
EH info for these functions causes the tests to fail for
random reasons (e.g. looking for 'or' or counting lines
with asm-printer; labels count as lines.)
llvm-svn: 49003
|
|
|
|
|
|
| |
use.
llvm-svn: 49002
|
|
|
|
| |
llvm-svn: 48994
|
|
|
|
|
|
| |
load value. This fixes PR2177.
llvm-svn: 48932
|
|
|
|
| |
llvm-svn: 48853
|
|
|
|
| |
llvm-svn: 48837
|
|
|
|
|
|
| |
use of the same val# is a copy instruction that has already been coalesced.
llvm-svn: 48833
|
|
|
|
|
|
|
|
| |
llvm's output .s files will go through gcc -std=c99
without triggering preprocesser errors. Approach
suggested by Daveed Vandevoorde.
llvm-svn: 48808
|
|
|
|
|
|
| |
transformed to undef. But this is such a common idiom (misuse) we are going to handle it.
llvm-svn: 48792
|
|
|
|
|
|
|
|
| |
other things, this allows the scheduler to unfold a load operand
in the 2008-01-08-SchedulerCrash.ll testcase, so it now successfully
clones the comparison to avoid a pushf+popf.
llvm-svn: 48777
|
|
|
|
| |
llvm-svn: 48762
|