- Apr 14, 2008
-
-
Dan Gohman authored
llvm-svn: 49671
-
- Apr 06, 2008
-
-
Gabor Greif authored
Specifically, introduction of XXX::Create methods for Users that have a potentially variable number of Uses. llvm-svn: 49277
-
- Mar 19, 2008
-
-
Evan Cheng authored
llvm-svn: 48556
-
- Jan 29, 2008
-
-
Dan Gohman authored
llvm-svn: 46514
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45418
-
- Dec 20, 2007
-
-
Evan Cheng authored
Clean up previous patch: PHI uses should not prevent iv reuse if all other uses are addresses. This trades a constant multiply for one fewer iv. llvm-svn: 45251
-
Evan Cheng authored
llvm-svn: 45230
-
- Nov 17, 2007
-
-
Dale Johannesen authored
fix an occasional nonrepeatable bootstrap failure we've been seeing on Darwin. llvm-svn: 44202
-
- Oct 31, 2007
-
-
Evan Cheng authored
At end of LSR, replace uses of now constant (as result of SplitCriticalEdge) PHI node with the constant value. llvm-svn: 43533
-
- Oct 30, 2007
-
-
Evan Cheng authored
It's not safe to tell SplitCriticalEdge to merge identical edges. It may delete the phi instruction that's being processed. llvm-svn: 43524
-
- Oct 29, 2007
-
-
Evan Cheng authored
- Allow icmp rewrite using an iv / stride of a smaller integer type. llvm-svn: 43480
-
Dan Gohman authored
llvm-svn: 43463
-
Dan Gohman authored
llvm-svn: 43462
-
Dan Gohman authored
llvm-svn: 43461
-
Dan Gohman authored
llvm-svn: 43460
-
- Oct 27, 2007
-
-
Evan Cheng authored
- 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
-
- Oct 26, 2007
-
-
Evan Cheng authored
llvm-svn: 43384
-
Evan Cheng authored
Loosen up iv reuse to allow reuse of the same stride but a larger type when 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
-
Evan Cheng authored
stride may be rewritten using the stride of the compare instruction. llvm-svn: 43367
-
- Oct 25, 2007
-
-
Evan Cheng authored
llvm-svn: 43356
-
Evan Cheng authored
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
-
- Oct 22, 2007
-
-
Dan Gohman authored
- 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
-
Dan Gohman authored
SCEV subclasses to being non-static member functions of the ScalarEvolution class. llvm-svn: 43224
-
- Oct 02, 2007
-
-
Dale Johannesen authored
llvm-svn: 42508
-
- Aug 02, 2007
-
-
Chris Lattner authored
gvn, gvnpre, dse, and predsimplify. To see these, use: make check-line-length llvm-svn: 40738
-
- Aug 01, 2007
-
-
Dan Gohman authored
llvm-svn: 40673
-
- Jul 31, 2007
-
-
Dan Gohman authored
directly, because the insert point used by the SCEVExpander may vary from what LSR originally computes. llvm-svn: 40641
-
- Jun 19, 2007
-
-
Dan Gohman authored
deleteValueFromRecords and loosen the types to all it to accept Value* instead of just Instruction*, since this is what ScalarEvolution uses internally anyway. This allows more flexibility for future uses. llvm-svn: 37657
-
- Jun 15, 2007
-
-
Dan Gohman authored
This created an ambiguity for expandInTy to decide when to use sign-extension or zero-extension, but it turns out that most of its callers don't actually need a type conversion, now that LLVM types don't have explicit signedness. Drop expandInTy in favor of plain expand, and change the few places that actually need a type conversion to do it themselves. llvm-svn: 37591
-
- Jun 07, 2007
-
-
Devang Patel authored
llvm-svn: 37499
-
- Jun 06, 2007
-
-
Chris Lattner authored
llvm-svn: 37454
-
- May 19, 2007
-
-
Chris Lattner authored
into: _t: movl 8(%esp), %ecx movl 4(%esp), %eax cmpl %ecx, %eax je LBB1_3 #bb17 LBB1_1: #bb cmpl %ecx, %eax jg LBB1_4 #cond_true LBB1_2: #cond_false subl %eax, %ecx cmpl %ecx, %eax jne LBB1_1 #bb LBB1_3: #bb17 ret LBB1_4: #cond_true subl %ecx, %eax cmpl %ecx, %eax jne LBB1_1 #bb jmp LBB1_3 #bb17 instead of: _t: subl $4, %esp movl %esi, (%esp) movl 12(%esp), %ecx movl 8(%esp), %eax cmpl %ecx, %eax je LBB1_4 #bb17 LBB1_1: #bb.outer movl %ecx, %edx negl %edx LBB1_2: #bb cmpl %ecx, %eax jle LBB1_5 #cond_false LBB1_3: #cond_true addl %edx, %eax cmpl %ecx, %eax jne LBB1_2 #bb LBB1_4: #bb17 movl (%esp), %esi addl $4, %esp ret LBB1_5: #cond_false movl %ecx, %edx subl %eax, %edx movl %eax, %esi addl %esi, %esi cmpl %ecx, %esi je LBB1_4 #bb17 LBB1_6: #cond_false.bb.outer_crit_edge movl %edx, %ecx jmp LBB1_1 #bb.outer llvm-svn: 37252
-
- May 12, 2007
-
-
Chris Lattner authored
llvm-svn: 36996
-
- May 04, 2007
-
-
Dan Gohman authored
slightly nicer than using CallInst with an extra check; thanks Chris. llvm-svn: 36743
-
Dan Gohman authored
address operand in a prefetch intrinsic. llvm-svn: 36713
-
- May 03, 2007
-
-
Devang Patel authored
llvm-svn: 36662
-
- May 02, 2007
-
-
Devang Patel authored
Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
-
- May 01, 2007
-
-
Devang Patel authored
llvm-svn: 36632
-
- Apr 24, 2007
-
-
Devang Patel authored
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070423/048333.html llvm-svn: 36380
-
- Apr 15, 2007
-
-
Owen Anderson authored
Remove ImmediateDominator analysis. The same information can be obtained from DomTree. A lot of code for constructing ImmediateDominator is now folded into DomTree construction. This is part of the ongoing work for PR217. llvm-svn: 36063
-