- Apr 21, 2008
-
-
Owen Anderson authored
and simplify code that was fallout from the separation of memcpyopt and gvn. llvm-svn: 50034
-
- Apr 20, 2008
-
-
Chris Lattner authored
llvm-svn: 49986
-
Chris Lattner authored
llvm-svn: 49985
-
Chris Lattner authored
llvm-svn: 49971
-
Chris Lattner authored
llvm-svn: 49970
-
Chris Lattner authored
llvm-svn: 49969
-
Chris Lattner authored
llvm-svn: 49967
-
- Apr 19, 2008
-
-
Chris Lattner authored
a few new cases( see Integer/a1.ll), but not anything that would happen in practice. llvm-svn: 49965
-
Evan Cheng authored
llvm-svn: 49949
-
Dan Gohman authored
llvm-svn: 49945
-
- Apr 17, 2008
-
-
Evan Cheng authored
Be more careful with insert_subreg and extract_subreg where either source or destination operand has already been coalesced with another register that's defined by a insert_subreg or extract_subreg. llvm-svn: 49843
-
Owen Anderson authored
llvm-svn: 49842
-
Evan Cheng authored
llvm-svn: 49832
-
Evan Cheng authored
llvm-svn: 49830
-
- Apr 16, 2008
-
-
Evan Cheng authored
llvm-svn: 49810
-
Evan Cheng authored
llvm-svn: 49802
-
Evan Cheng authored
Rewrite LiveVariable liveness computation. The new implementation is much 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
-
Owen Anderson authored
from transforming loops and adding a separate loop pass for removing loops with know trip counts. Until that happens, ADCE is miscompiling this code. llvm-svn: 49769
-
Dan Gohman authored
puts its result in a 32-bit GPR. llvm-svn: 49762
-
Dan Gohman authored
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
-
Dan Gohman authored
to 64-bit GPR registers on x86-64. llvm-svn: 49757
-
- Apr 15, 2008
-
-
Dale Johannesen authored
argument to the outer function, this isn't correct. llvm-svn: 49731
-
Dan Gohman authored
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
-
- Apr 14, 2008
-
-
Dan Gohman authored
llvm-svn: 49669
-
Dale Johannesen authored
this is now the default. llvm-svn: 49667
-
- Apr 13, 2008
-
-
Owen Anderson authored
llvm-svn: 49610
-
- Apr 12, 2008
-
-
Arnold Schwaighofer authored
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
-
Dan Gohman authored
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
-
Dan Gohman authored
8-byte-aligned data. llvm-svn: 49571
-
- Apr 11, 2008
-
-
Evan Cheng authored
llvm-svn: 49543
-
Owen Anderson authored
llvm-svn: 49517
-
Evan Cheng authored
llvm-svn: 49514
-
- Apr 10, 2008
-
-
Dan Gohman authored
in addition to integer expressions. Rewrite GetOrEnforceKnownAlignment as a ComputeMaskedBits problem, moving all of its special alignment knowledge to ComputeMaskedBits as low-zero-bits knowledge. Also, teach ComputeMaskedBits a few basic things about Mul and PHI instructions. This improves ComputeMaskedBits-based simplifications in a few cases, but more noticeably it significantly improves instcombine's alignment detection for loads, stores, and memory intrinsics. llvm-svn: 49492
-
Evan Cheng authored
llvm-svn: 49491
-
Chris Lattner authored
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
-
Evan Cheng authored
Teach branch folding pass about implicit_def instructions. Unfortunately we 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
-
- Apr 09, 2008
-
-
Evan Cheng authored
- Added insert_subreg coalescing support. llvm-svn: 49448
-
Chris Lattner authored
figuring out the suffix to use. implement pow(2,x) -> exp2(x). llvm-svn: 49437
-
Chris Lattner authored
llvm-svn: 49436
-
Owen Anderson authored
GVN and into its own pass. llvm-svn: 49419
-