- Mar 08, 2006
-
-
Chris Lattner authored
arrays out of range in a horrible way, but we shouldn't break it anyway. Details in the comments. llvm-svn: 26606
-
- Mar 07, 2006
-
-
Chris Lattner authored
llvm-svn: 26580
-
- Mar 06, 2006
-
-
Chris Lattner authored
the pointer is known to come from either a global variable, alloca or malloc. This allows us to compile this: P = malloc(28); memset(P, 0, 28); into explicit stores on PPC instead of a memset call. llvm-svn: 26577
-
- Mar 05, 2006
-
-
Chris Lattner authored
Transforms/InstCombine/vec_narrow.ll. This add support for narrowing extract_element(insertelement) also. llvm-svn: 26538
-
- Mar 04, 2006
-
-
Chris Lattner authored
Testcase here: Transforms/Reassociate/mulfactor.ll llvm-svn: 26524
-
Chris Lattner authored
This implements Transforms/InstCombine/add.ll:test31 llvm-svn: 26519
-
- Mar 03, 2006
-
-
Chris Lattner authored
llvm-svn: 26484
-
- Mar 02, 2006
-
-
Chris Lattner authored
pointed out: realize the AND can provide factors and look through Casts. llvm-svn: 26469
-
- Feb 28, 2006
-
-
Chris Lattner authored
Transforms/InstCombine/2006-02-28-Crash.ll llvm-svn: 26427
-
Chris Lattner authored
llvm-svn: 26415
-
Chris Lattner authored
llvm-svn: 26413
-
Chris Lattner authored
llvm-svn: 26411
-
- Feb 27, 2006
-
-
Chris Lattner authored
Make this code more powerful by using ComputeMaskedBits instead of looking for an AND operand. This lets us fold this: int %test23(int %a) { %tmp.1 = and int %a, 1 %tmp.2 = seteq int %tmp.1, 0 %tmp.3 = cast bool %tmp.2 to int ;; xor tmp1, 1 ret int %tmp.3 } into: xor (and a, 1), 1 llvm-svn: 26396
-
Chris Lattner authored
and (A-B) == A -> B == 0 llvm-svn: 26394
-
- Feb 26, 2006
-
-
Chris Lattner authored
InstCombine/or.ll:test23. llvm-svn: 26385
-
- Feb 24, 2006
-
-
Chris Lattner authored
in the code that does "select C, (X+Y), (X-Y) --> (X+(select C, Y, (-Y)))". We now compile this loop: LBB1_1: ; no_exit add r6, r2, r3 subf r3, r2, r3 cmpwi cr0, r2, 0 addi r7, r5, 4 lwz r2, 0(r5) addi r4, r4, 1 blt cr0, LBB1_4 ; no_exit LBB1_3: ; no_exit mr r3, r6 LBB1_4: ; no_exit cmpwi cr0, r4, 16 mr r5, r7 bne cr0, LBB1_1 ; no_exit into this instead: LBB1_1: ; no_exit srawi r6, r2, 31 add r2, r2, r6 xor r6, r2, r6 addi r7, r5, 4 lwz r2, 0(r5) addi r4, r4, 1 add r3, r3, r6 cmpwi cr0, r4, 16 mr r5, r7 bne cr0, LBB1_1 ; no_exit llvm-svn: 26356
-
- Feb 23, 2006
-
-
Chris Lattner authored
caused SPASS to fail building last night. We can't trivially unswitch a loop if the exit block has phi nodes in it, because we don't know which predecessor to use. llvm-svn: 26320
-
- Feb 22, 2006
-
-
Chris Lattner authored
to rewrite with the wrong value. llvm-svn: 26311
-
- Feb 18, 2006
-
-
Chris Lattner authored
llvm-svn: 26289
-
Jeff Cohen authored
llvm-svn: 26287
-
Chris Lattner authored
llvm-svn: 26285
-
Chris Lattner authored
Thanks to nate for pointing this out :) llvm-svn: 26280
-
Chris Lattner authored
llvm-svn: 26279
-
Chris Lattner authored
the right loop. llvm-svn: 26277
-
- Feb 17, 2006
-
-
Chris Lattner authored
llvm-svn: 26258
-
Chris Lattner authored
risk :) llvm-svn: 26248
-
- Feb 16, 2006
-
-
Nate Begeman authored
and ComputeMaskedBits to match the new improved versions in instcombine. Tested against all of multisource/benchmarks on ppc. llvm-svn: 26238
-
Chris Lattner authored
Change SplitBlock to increment a BasicBlock::iterator, not an Instruction*. Apparently they do different things :) This fixes a testcase that nate reduced from spass. Also included are a couple minor code changes that don't affect the generated code at all. llvm-svn: 26235
-
Jeff Cohen authored
llvm-svn: 26228
-
Chris Lattner authored
llvm-svn: 26225
-
- Feb 15, 2006
-
-
Chris Lattner authored
unswitch this loop on 2 before sweating to unswitch on 1/3. void test4(int N, int i, int C, int*P, int*Q) { int j; for (j = 0; j < N; ++j) { switch (C) { // general unswitching. default: P[i+j] = 0; break; case 1: Q[i+j] = 0; break; case 3: P[i+j] = Q[i+j]; break; case 2: break; // TRIVIAL UNSWITCH on C==2 } } } llvm-svn: 26223
-
Chris Lattner authored
this for example: for (j = 0; j < N; ++j) { // trivial unswitch if (C) P[i+j] = 0; } turning it into the obvious code without bothering to duplicate an empty loop. llvm-svn: 26220
-
Chris Lattner authored
Y = seteq bool X, true instead of just using X :) llvm-svn: 26215
-
Chris Lattner authored
llvm-svn: 26194
-
Chris Lattner authored
llvm-svn: 26191
-
- Feb 14, 2006
-
-
Chris Lattner authored
llvm-svn: 26157
-
Chris Lattner authored
llvm-svn: 26155
-
- Feb 13, 2006
-
-
Chris Lattner authored
for a sign extension. This fixes InstCombine/2006-02-13-DemandedMiscompile.ll and Ptrdist/bc. llvm-svn: 26152
-
Chris Lattner authored
of the input. This fixes the mediabench/gsm/toast failure last night. llvm-svn: 26138
-
- Feb 12, 2006
-
-
Chris Lattner authored
llvm-svn: 26135
-