| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 43596
|
| |
|
|
| |
llvm-svn: 43553
|
| |
|
|
|
|
| |
PHI node with the constant value.
llvm-svn: 43533
|
| |
|
|
|
|
| |
delete the phi instruction that's being processed.
llvm-svn: 43524
|
| |
|
|
|
|
| |
- Allow icmp rewrite using an iv / stride of a smaller integer type.
llvm-svn: 43480
|
| |
|
|
|
|
| |
lowering load and store instructions.
llvm-svn: 43468
|
| |
|
|
| |
llvm-svn: 43467
|
| |
|
|
|
|
| |
of just printing to cerr.
llvm-svn: 43466
|
| |
|
|
| |
llvm-svn: 43463
|
| |
|
|
| |
llvm-svn: 43462
|
| |
|
|
| |
llvm-svn: 43461
|
| |
|
|
| |
llvm-svn: 43460
|
| |
|
|
|
|
| |
can have uses too. Wouldn't it be nice if invoke didn't exist? :)
llvm-svn: 43426
|
| |
|
|
|
|
|
|
|
| |
- ChangeCompareStride only reuse stride that is larger than current stride. It
will let the general reuse mechanism to try to reuse a smaller stride.
- Watch out for multiplication overflow in ChangeCompareStride.
- Replace std::set with SmallPtrSet.
llvm-svn: 43408
|
| |
|
|
| |
llvm-svn: 43384
|
| |
|
|
|
|
| |
improved wording in source files.
llvm-svn: 43377
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
truncating from the larger type to smaller type is free.
e.g.
Turns this loop:
LBB1_1: # entry.bb_crit_edge
xorl %ecx, %ecx
xorw %dx, %dx
movw %dx, %si
LBB1_2: # bb
movl L_X$non_lazy_ptr, %edi
movw %si, (%edi)
movl L_Y$non_lazy_ptr, %edi
movw %dx, (%edi)
addw $4, %dx
incw %si
incl %ecx
cmpl %eax, %ecx
jne LBB1_2 # bb
into
LBB1_1: # entry.bb_crit_edge
xorl %ecx, %ecx
xorw %dx, %dx
LBB1_2: # bb
movl L_X$non_lazy_ptr, %esi
movw %cx, (%esi)
movl L_Y$non_lazy_ptr, %esi
movw %dx, (%esi)
addw $4, %dx
incl %ecx
cmpl %eax, %ecx
jne LBB1_2 # bb
llvm-svn: 43375
|
| |
|
|
|
|
| |
stride may be rewritten using the stride of the compare instruction.
llvm-svn: 43367
|
| |
|
|
| |
llvm-svn: 43356
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and the compaison is against a constant value, try eliminate the stride
by moving the compare instruction to another stride and change its
constant operand accordingly. e.g.
loop:
...
v1 = v1 + 3
v2 = v2 + 1
if (v2 < 10) goto loop
=>
loop:
...
v1 = v1 + 3
if (v1 < 30) goto loop
llvm-svn: 43336
|
| |
|
|
| |
llvm-svn: 43309
|
| |
|
|
| |
llvm-svn: 43305
|
| |
|
|
|
|
| |
implementing cases related to PR1738.
llvm-svn: 43289
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Avoid attempting stride-reuse in the case that there are users that
aren't addresses. In that case, there will be places where the
multiplications won't be folded away, so it's better to try to
strength-reduce them.
- Several SSE intrinsics have operands that strength-reduction can
treat as addresses. The previous item makes this more visible, as
any non-address use of an IV can inhibit stride-reuse.
- Make ValidStride aware of whether there's likely to be a base
register in the address computation. This prevents it from thinking
that things like stride 9 are valid on x86 when the base register is
already occupied.
Also, XFAIL the 2007-08-10-LEA16Use32.ll test; the new logic to avoid
stride-reuse elimintes the LEA in the loop, so the test is no longer
testing what it was intended to test.
llvm-svn: 43231
|
| |
|
|
|
|
|
| |
SCEV subclasses to being non-static member functions of the ScalarEvolution
class.
llvm-svn: 43224
|
| |
|
|
|
|
|
| |
- enable phi instructions demotion to stack
- create alloca instructions in the entry block
llvm-svn: 43208
|
| |
|
|
|
|
|
| |
Instead of loading small global string from memory, use
integer constant.
llvm-svn: 43148
|
| |
|
|
| |
llvm-svn: 43147
|
| |
|
|
|
|
| |
fixing some obviously broken code :(
llvm-svn: 43141
|
| |
|
|
|
|
|
|
|
|
| |
DominatorInternals.h
in CodeExtractor and LoopSimplify unnecessary.
Hartmut, could you confirm that this fixes the issues you were seeing?
llvm-svn: 43115
|
| |
|
|
| |
llvm-svn: 43103
|
| |
|
|
| |
llvm-svn: 43083
|
| |
|
|
|
|
| |
VC++. Please review.
llvm-svn: 43081
|
| |
|
|
|
|
| |
directly" transformation while processing load instruction.
llvm-svn: 43070
|
| |
|
|
| |
llvm-svn: 43055
|
| |
|
|
| |
llvm-svn: 42985
|
| |
|
|
|
|
| |
Do not filter memmove.
llvm-svn: 42930
|
| |
|
|
| |
llvm-svn: 42920
|
| |
|
|
| |
llvm-svn: 42892
|
| |
|
|
|
|
|
|
| |
Fix DecomposeSimpleLinearExpr to handle simple constants better.
Don't nuke gep(bitcast(allocation)) if the bitcast(allocation) will
fold the allocation. This fixes PR1728 and Instcombine/malloc3.ll
llvm-svn: 42891
|
| |
|
|
| |
llvm-svn: 42864
|
| |
|
|
| |
llvm-svn: 42812
|
| |
|
|
|
|
|
| |
unswitch when frontier includes basic blocks that
are not inside loop.
llvm-svn: 42654
|
| |
|
|
| |
llvm-svn: 42591
|
| |
|
|
| |
llvm-svn: 42590
|
| |
|
|
|
|
| |
of comparing begin() and end().
llvm-svn: 42585
|
| |
|
|
| |
llvm-svn: 42582
|
| |
|
|
| |
llvm-svn: 42578
|
| |
|
|
| |
llvm-svn: 42565
|
| |
|
|
| |
llvm-svn: 42508
|