- 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
-
- Apr 13, 2007
-
-
Chris Lattner authored
out to do! :) This fixes a problem where LSR would insert a bunch of code into each MBB that uses a particular subexpression (e.g. IV+base+C). The problem is that this code cannot be CSE'd back together if inserted into different blocks. This patch changes LSR to attempt to insert a single copy of this code and share it, allowing codegenprepare to duplicate the code if it can be sunk into various addressing modes. On CodeGen/ARM/lsr-code-insertion.ll, for example, this gives us code like: add r8, r0, r5 str r6, [r8, #+4] .. ble LBB1_4 @cond_next LBB1_3: @cond_true str r10, [r8, #+4] LBB1_4: @cond_next ... LBB1_5: @cond_true55 ldr r6, LCPI1_1 str r6, [r8, #+4] instead of: add r10, r0, r6 str r8, [r10, #+4] ... ble LBB1_4 @cond_next LBB1_3: @cond_true add r8, r0, r6 str r10, [r8, #+4] LBB1_4: @cond_next ... LBB1_5: @cond_true55 add r8, r0, r6 ldr r10, LCPI1_1 str r10, [r8, #+4] Besides being smaller and more efficient, this makes it immediately obvious that it is profitable to predicate LBB1_3 now :) llvm-svn: 35972
-
- Apr 10, 2007
-
-
Chris Lattner authored
llvm-svn: 35837
-
- Apr 07, 2007
-
-
Owen Anderson authored
llvm-svn: 35731
-
- Apr 03, 2007
-
-
Chris Lattner authored
llvm-svn: 35615
-
Chris Lattner authored
llvm-svn: 35607
-
- Apr 02, 2007
-
-
Chris Lattner authored
target hook. This allows us to codegen a loop as: LBB1_1: @cond_next mov r2, #0 str r2, [r0, +r3, lsl #2] add r3, r3, #1 cmn r3, #1 bne LBB1_1 @cond_next instead of: LBB1_1: @cond_next mov r2, #0 str r2, [r0], #+4 add r3, r3, #1 cmn r3, #1 bne LBB1_1 @cond_next This looks the same, but has one fewer induction variable (and therefore, one fewer register) live in the loop. llvm-svn: 35592
-
Chris Lattner authored
llvm-svn: 35563
-
- Mar 26, 2007
-
-
Dale Johannesen authored
llvm-svn: 35347
-
- Mar 20, 2007
-
-
Dale Johannesen authored
instructions (that would have to be split later) llvm-svn: 35227
-
Jeff Cohen authored
llvm-svn: 35224
-
Dale Johannesen authored
llvm-svn: 35197
-
- Mar 13, 2007
-
-
Evan Cheng authored
llvm-svn: 35086
-
Evan Cheng authored
llvm-svn: 35072
-
- Mar 09, 2007
-
-
Devang Patel authored
User from the list of I users. llvm-svn: 35051
-
- Mar 06, 2007
-
-
Devang Patel authored
llvm-svn: 34984
-
- Mar 03, 2007
-
-
Reid Spencer authored
Replace expensive getZExtValue() == 0 calls with isZero() calls. llvm-svn: 34861
-
Reid Spencer authored
llvm-svn: 34860
-
Reid Spencer authored
llvm-svn: 34859
-
- Mar 02, 2007
-
-
Reid Spencer authored
llvm-svn: 34822
-
Reid Spencer authored
Constant::isNullValue() in situations where it is possible. llvm-svn: 34821
-
- Feb 10, 2007
-
-
Chris Lattner authored
llvm-svn: 34156
-
- Feb 06, 2007
-
-
Reid Spencer authored
the Transforms library. This reduces debug library size by 132 KB, debug binary size by 376 KB, and reduces link time for llvm tools slightly. llvm-svn: 33939
-
- Jan 15, 2007
-
-
Chris Lattner authored
rename Type::getIntegralTypeMask to Type::getIntegerTypeMask. This makes naming much more consistent. For example, there are now no longer any instances of IntegerType that are not considered isInteger! :) llvm-svn: 33225
-
Chris Lattner authored
llvm-svn: 33218
-
- Jan 08, 2007
-
-
Reid Spencer authored
Enable complex addressing modes on 64-bit platforms involving two induction variables by keeping a size and scale in 64-bits not 32. Patch by Dan Gohman. llvm-svn: 33011
-
- Jan 06, 2007
-
-
Chris Lattner authored
llvm-svn: 32946
-
- Dec 31, 2006
-
-
Reid Spencer authored
This patch replaces signed integer types with signless ones: 1. [US]Byte -> Int8 2. [U]Short -> Int16 3. [U]Int -> Int32 4. [U]Long -> Int64. 5. Removal of isSigned, isUnsigned, getSignedVersion, getUnsignedVersion and other methods related to signedness. In a few places this warranted identifying the signedness information from other sources. llvm-svn: 32785
-
- Dec 23, 2006
-
-
Reid Spencer authored
This patch removes the SetCC instructions and replaces them with the ICmp and FCmp instructions. The SetCondInst instruction has been removed and been replaced with ICmpInst and FCmpInst. llvm-svn: 32751
-
- Dec 19, 2006
-
-
Chris Lattner authored
converted, we lose a static initializer. This also allows GCC to emit warnings about unused statistics. llvm-svn: 32690
-
- Dec 13, 2006
-
-
Reid Spencer authored
so the decision of which opcode to use is pushed upward to the caller. Adjust the callers to pass the expected opcode. llvm-svn: 32535
-
- Dec 12, 2006
-
-
Reid Spencer authored
llvm-svn: 32469
-
- Dec 07, 2006
-
-
Bill Wendling authored
now cerr, cout, and NullStream resp. llvm-svn: 32298
-
- Dec 06, 2006
-
-
Chris Lattner authored
is 'unsigned'. llvm-svn: 32279
-
- Nov 27, 2006
-
-
Reid Spencer authored
The long awaited CAST patch. This introduces 12 new instructions into LLVM to replace the cast instruction. Corresponding changes throughout LLVM are provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the exception of 175.vpr which fails only on a slight floating point output difference. llvm-svn: 31931
-
- Nov 26, 2006
-
-
Bill Wendling authored
llvm-svn: 31923
-
- Nov 17, 2006
-
-
Chris Lattner authored
and handle it like constant stride vars. This fixes some bad codegen in variable stride cases. For example, it compiles this: void foo(int k, int i) { for (k=i+i; k <= 8192; k+=i) flags2[k] = 0; } to: LBB1_1: #bb.preheader movl %eax, %ecx addl %ecx, %ecx movl L_flags2$non_lazy_ptr, %edx LBB1_2: #bb movb $0, (%edx,%ecx) addl %eax, %ecx cmpl $8192, %ecx jle LBB1_2 #bb LBB1_5: #return ret or (if the array is local and we are in dynamic-nonpic or static mode): LBB3_2: #bb movb $0, _flags2(%ecx) addl %eax, %ecx cmpl $8192, %ecx jle LBB3_2 #bb and: lis r2, ha16(L_flags2$non_lazy_ptr) lwz r2, lo16(L_flags2$non_lazy_ptr)(r2) slwi r3, r4, 1 LBB1_2: ;bb li r5, 0 add r6, r4, r3 stbx r5, r2, r3 cmpwi cr0, r6, 8192 bgt cr0, LBB1_5 ;return instead of: leal (%eax,%eax,2), %ecx movl %eax, %edx addl %edx, %edx addl L_flags2$non_lazy_ptr, %edx xorl %esi, %esi LBB1_2: #bb movb $0, (%edx,%esi) movl %eax, %edi addl %esi, %edi addl %ecx, %esi cmpl $8192, %esi jg LBB1_5 #return and: lis r2, ha16(L_flags2$non_lazy_ptr) lwz r2, lo16(L_flags2$non_lazy_ptr)(r2) mulli r3, r4, 3 slwi r5, r4, 1 li r6, 0 add r2, r2, r5 LBB1_2: ;bb li r5, 0 add r7, r3, r6 stbx r5, r2, r6 add r6, r4, r6 cmpwi cr0, r7, 8192 ble cr0, LBB1_2 ;bb This speeds up Benchmarks/Shootout/sieve from 8.533s to 6.464s and implements LoopStrengthReduce/var_stride_used_by_compare.ll llvm-svn: 31809
-
- Nov 02, 2006
-
-
Reid Spencer authored
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting fall out by removing unused variables. Remaining warnings have to do with unused functions (I didn't want to delete code without review) and unused variables in generated code. Maintainers should clean up the remaining issues when they see them. All changes pass DejaGnu tests and Olden. llvm-svn: 31380
-
- Oct 28, 2006
-
-
Chris Lattner authored
llvm-svn: 31257
-
Chris Lattner authored
llvm-svn: 31248
-