- May 27, 2006
-
-
Chris Lattner authored
Refactor some code to expose an interface to constant fold and instruction given it's opcode, typeand operands. llvm-svn: 28517
-
Owen Anderson authored
llvm-svn: 28512
-
- May 26, 2006
-
-
Owen Anderson authored
llvm-svn: 28507
-
Owen Anderson authored
there's still a lot of work to be done on it. llvm-svn: 28506
-
Chris Lattner authored
llvm-svn: 28503
-
Owen Anderson authored
and documentation updates soo. llvm-svn: 28495
-
Chris Lattner authored
llvm-svn: 28490
-
Chris Lattner authored
No functionality change. llvm-svn: 28489
-
Chris Lattner authored
the program. This exposes more opportunities for the instcombiner, and implements vec_shuffle.ll:test6 llvm-svn: 28487
-
Chris Lattner authored
extractelement from the SV's source. This implement vec_shuffle.ll:test[45] llvm-svn: 28485
-
- May 25, 2006
-
-
Chris Lattner authored
array scopes possibly accessing valid memory in outer subscripts. llvm-svn: 28478
-
- May 24, 2006
-
-
Chris Lattner authored
This implements Transforms/InstCombine/2006-05-10-InvalidIndexUndef.ll llvm-svn: 28450
-
Chris Lattner authored
by Anton Korobeynikov! This is a step towards closing PR786. llvm-svn: 28447
-
- May 21, 2006
-
-
Chris Lattner authored
llvm-svn: 28422
-
- May 19, 2006
-
-
Reid Spencer authored
llvm-svn: 28395
-
- May 17, 2006
-
-
Chris Lattner authored
Patch written by Domagoj Babic! llvm-svn: 28367
-
Chris Lattner authored
to the new module. Patch provided by Nick Lewycky! llvm-svn: 28349
-
- May 14, 2006
-
-
Chris Lattner authored
llvm-svn: 28289
-
Chris Lattner authored
llvm-svn: 28286
-
Evan Cheng authored
llvm-svn: 28284
-
- May 13, 2006
-
-
Chris Lattner authored
bitfield now gives this code: _plus: lwz r2, 0(r3) rlwimi r2, r2, 0, 1, 31 xoris r2, r2, 32768 stw r2, 0(r3) blr instead of this: _plus: lwz r2, 0(r3) srwi r4, r2, 31 slwi r4, r4, 31 addis r4, r4, -32768 rlwimi r2, r4, 0, 0, 0 stw r2, 0(r3) blr this can obviously still be improved. llvm-svn: 28275
-
Chris Lattner authored
currently very limited, but can be extended in the future. For example, we now compile: uint %test30(uint %c1) { %c2 = cast uint %c1 to ubyte %c3 = xor ubyte %c2, 1 %c4 = cast ubyte %c3 to uint ret uint %c4 } to: _xor: movzbl 4(%esp), %eax xorl $1, %eax ret instead of: _xor: movb $1, %al xorb 4(%esp), %al movzbl %al, %eax ret More impressively, we now compile: struct B { unsigned bit : 1; }; void xor(struct B *b) { b->bit = b->bit ^ 1; } To (X86/PPC): _xor: movl 4(%esp), %eax xorl $-2147483648, (%eax) ret _xor: lwz r2, 0(r3) xoris r2, r2, 32768 stw r2, 0(r3) blr instead of (X86/PPC): _xor: movl 4(%esp), %eax movl (%eax), %ecx movl %ecx, %edx shrl $31, %edx # TRUNCATE movb %dl, %dl xorb $1, %dl movzbl %dl, %edx andl $2147483647, %ecx shll $31, %edx orl %ecx, %edx movl %edx, (%eax) ret _xor: lwz r2, 0(r3) srwi r4, r2, 31 xori r4, r4, 1 rlwimi r2, r4, 31, 0, 0 stw r2, 0(r3) blr This implements InstCombine/cast.ll:test30. llvm-svn: 28273
-
Chris Lattner authored
Fix a nasty bug in the memcmp optimizer where we used the wrong variable! llvm-svn: 28269
-
Chris Lattner authored
llvm-svn: 28268
-
- May 11, 2006
-
-
Chris Lattner authored
When doing the initial pass of constant folding, if we get a constantexpr, simplify the constant expr like we would do if the constant is folded in the normal loop. This fixes the missed-optimization regression in Transforms/InstCombine/getelementptr.ll last night. llvm-svn: 28224
-
- May 10, 2006
-
-
Chris Lattner authored
1. Implement InstCombine/deadcode.ll by not adding instructions in unreachable blocks (due to constants in conditional branches/switches) to the worklist. This causes them to be deleted before instcombine starts up, leading to better optimization. 2. In the prepass over instructions, do trivial constprop/dce as we go. This has the effect of improving the effectiveness of #1. In addition, it *significantly* speeds up instcombine on test cases with large amounts of constant folding code (for example, that produced by code specialization or partial evaluation). In one example, it speeds up instcombine from 0.0589s to 0.0224s with a release build (a 2.6x speedup). llvm-svn: 28215
-
- May 09, 2006
-
-
Chris Lattner authored
Domagoj Babic! llvm-svn: 28181
-
- May 06, 2006
-
-
Chris Lattner authored
Make the "fold (and (cast A), (cast B)) -> (cast (and A, B))" transformation only apply when both casts really will cause code to be generated. If one or both doesn't, then this xform doesn't remove a cast. This fixes Transforms/InstCombine/2006-05-06-Infloop.ll llvm-svn: 28141
-
- May 05, 2006
-
-
Chris Lattner authored
llvm-svn: 28128
-
Chris Lattner authored
llvm-svn: 28126
-
- May 04, 2006
-
-
Chris Lattner authored
llvm-svn: 28101
-
- May 02, 2006
-
-
Chris Lattner authored
Domagoj Babic! llvm-svn: 28048
-
- Apr 29, 2006
-
-
Chris Lattner authored
llvm-svn: 28019
-
- Apr 28, 2006
-
-
Chris Lattner authored
llvm-svn: 28007
-
- Apr 27, 2006
-
-
Chris Lattner authored
Transforms/InstCombine/vec_insert_to_shuffle.ll llvm-svn: 27997
-
Chris Lattner authored
nondeterminism being bad) could cause some trivial missed optimizations (dead phi nodes being left around for later passes to clean up). With this, llvm-gcc4 now bootstraps and correctly compares. I don't know why I never tried to do it before... :) llvm-svn: 27984
-
- Apr 20, 2006
-
-
Chris Lattner authored
llvm-svn: 27912
-
Andrew Lenharth authored
llvm-svn: 27881
-
Andrew Lenharth authored
can be converted to losslessly, we can continue the conversion to a direct call. llvm-svn: 27880
-
- Apr 18, 2006
-
-
Chris Lattner authored
if the pointer is known aligned. llvm-svn: 27781
-