| Commit message (Collapse) | Author | Age | Files | Lines | ||
|---|---|---|---|---|---|---|
| ... | ||||||
| * | improved support for branch folding, still not enabled. | Chris Lattner | 2006-02-18 | 1 | -143/+269 | |
| | | | | | llvm-svn: 26289 | |||||
| * | If SSE3 is available, promote FP_TO_UINT i32 to FP_TO_SINT i64 to take | Evan Cheng | 2006-02-18 | 1 | -1/+2 | |
| | | | | | | | advantage of fisttpll. llvm-svn: 26288 | |||||
| * | Fix bugs identified by VC++. | Jeff Cohen | 2006-02-18 | 1 | -2/+2 | |
| | | | | | llvm-svn: 26287 | |||||
| * | Add a fold for add that exchanges it with a constant shift if possible, so | Nate Begeman | 2006-02-18 | 1 | -6/+24 | |
| | | | | | | | that the shift may be more easily folded into other operations. llvm-svn: 26286 | |||||
| * | Implement deletion of dead blocks, currently disabled. | Chris Lattner | 2006-02-18 | 1 | -28/+75 | |
| | | | | | llvm-svn: 26285 | |||||
| * | Add checks to make sure we don't create bogus extend nodes, and fix a bug | Nate Begeman | 2006-02-18 | 2 | -4/+14 | |
| | | | | | | | | where we were doing exactly that which was causing failures on x86 and alpha. llvm-svn: 26284 | |||||
| * | Added fisttp for fp to int conversion. | Evan Cheng | 2006-02-18 | 2 | -3/+29 | |
| | | | | | llvm-svn: 26283 | |||||
| * | Disable PIC for JIT. | Evan Cheng | 2006-02-18 | 1 | -0/+3 | |
| | | | | | llvm-svn: 26281 | |||||
| * | a previous patch completely disabled trivial unswitching, this fixees it. | Chris Lattner | 2006-02-18 | 1 | -1/+0 | |
| | | | | | | | Thanks to nate for pointing this out :) llvm-svn: 26280 | |||||
| * | initial trivial support for folding branches that have now-constant ↵ | Chris Lattner | 2006-02-18 | 1 | -3/+34 | |
| | | | | | | | destinations. llvm-svn: 26279 | |||||
| * | Jit does not support PIC yet. | Evan Cheng | 2006-02-18 | 1 | -0/+2 | |
| | | | | | llvm-svn: 26278 | |||||
| * | When unswitching a loop, make sure to update loop info with exit blocks in | Chris Lattner | 2006-02-18 | 1 | -2/+4 | |
| | | | | | | | the right loop. llvm-svn: 26277 | |||||
| * | Fix Transforms/SimplifyCFG/2006-02-17-InfiniteUnroll.ll | Chris Lattner | 2006-02-18 | 1 | -2/+8 | |
| | | | | | llvm-svn: 26275 | |||||
| * | x86 / Darwin PIC support. | Evan Cheng | 2006-02-18 | 10 | -36/+143 | |
| | | | | | llvm-svn: 26273 | |||||
| * | Moved PICEnabled to include/llvm/Target/TargetOptions.h | Evan Cheng | 2006-02-18 | 4 | -1/+3 | |
| | | | | | llvm-svn: 26272 | |||||
| * | Fix a tricky issue in the SimplifyDemandedBits code where CombineTo wasn't | Chris Lattner | 2006-02-17 | 2 | -9/+95 | |
| | | | | | | | | exactly the API we wanted to call into. This fixes the crash on crafty last night. llvm-svn: 26269 | |||||
| * | Clean up DemandedBitsAreZero interface | Nate Begeman | 2006-02-17 | 1 | -22/+26 | |
| | | | | | | | | Make more use of the new mask helpers in valuetypes.h Combine (sra (srl x, c1), c1) -> sext_inreg if legal llvm-svn: 26263 | |||||
| * | Don't expand sdiv by power of two before legalize, since it will likely | Nate Begeman | 2006-02-17 | 1 | -2/+2 | |
| | | | | | | | generate illegal nodes. llvm-svn: 26261 | |||||
| * | unbreak the build | Chris Lattner | 2006-02-17 | 1 | -1/+0 | |
| | | | | | llvm-svn: 26260 | |||||
| * | Unbreak x86 be | Evan Cheng | 2006-02-17 | 1 | -17/+22 | |
| | | | | | llvm-svn: 26259 | |||||
| * | Fix loops where the header has an exit, fixing a loop-unswitch crash on crafty | Chris Lattner | 2006-02-17 | 1 | -13/+15 | |
| | | | | | llvm-svn: 26258 | |||||
| * | kill ADD_PARTS & SUB_PARTS and replace them with fancy new ADDC, ADDE, SUBC | Nate Begeman | 2006-02-17 | 11 | -264/+115 | |
| | | | | | | | | and SUBE nodes that actually expose what's going on and allow for significant simplifications in the targets. llvm-svn: 26255 | |||||
| * | Fix another miscompilation exposed by lencode, where we lowered i64->f32 | Chris Lattner | 2006-02-17 | 1 | -1/+1 | |
| | | | | | | | | conversions to __floatdidf instead of __floatdisf on targets that support f32 but not i64 (e.g. sparc). llvm-svn: 26254 | |||||
| * | add note about div by power of 2 | Chris Lattner | 2006-02-17 | 1 | -0/+32 | |
| | | | | | llvm-svn: 26253 | |||||
| * | Fix bug noticed by VC++. | Jeff Cohen | 2006-02-17 | 1 | -2/+2 | |
| | | | | | llvm-svn: 26252 | |||||
| * | Whoops, didn't mean to check this in yet. | Nate Begeman | 2006-02-17 | 1 | -8/+0 | |
| | | | | | llvm-svn: 26250 | |||||
| * | Add a missing and useful pat frag | Nate Begeman | 2006-02-17 | 1 | -2/+9 | |
| | | | | | llvm-svn: 26249 | |||||
| * | start of some new simplification code, not thoroughly tested, use at your own | Chris Lattner | 2006-02-17 | 1 | -14/+161 | |
| | | | | | | | risk :) llvm-svn: 26248 | |||||
| * | Remind ourselves to revisit the "pxor vs. xorps/xorpd to clear XMM registers" | Evan Cheng | 2006-02-17 | 1 | -0/+6 | |
| | | | | | | | issue. Need to do more experiments. llvm-svn: 26247 | |||||
| * | Kill the x86 pattern isel. boom. | Nate Begeman | 2006-02-17 | 4 | -3973/+211 | |
| | | | | | llvm-svn: 26246 | |||||
| * | Remove the entry about using movapd for SSE reg-reg moves. | Evan Cheng | 2006-02-17 | 1 | -6/+0 | |
| | | | | | llvm-svn: 26245 | |||||
| * | pxor (for FLD0SS) encoding was missing the OpSize prefix. | Evan Cheng | 2006-02-16 | 1 | -1/+1 | |
| | | | | | llvm-svn: 26244 | |||||
| * | Remove the skeleton target, it doesn't produce useful code and there are | Chris Lattner | 2006-02-16 | 14 | -614/+0 | |
| | | | | | | | | other small targets that do that can be learned from. They also have the added advantage of being tested :) llvm-svn: 26243 | |||||
| * | Dumb bug. Code sees a memcpy from X+c so it increments src offset. But it | Evan Cheng | 2006-02-16 | 1 | -4/+10 | |
| | | | | | | | | turns out not to point to a constant string but it forgot change the offset back. llvm-svn: 26242 | |||||
| * | 1. Use pxor instead of xoraps / xorapd to clear FR32 / FR64 registers. This | Evan Cheng | 2006-02-16 | 3 | -13/+29 | |
| | | | | | | | | | | | | proves to be worth 20% on Ptrdist/ks. Might be related to dependency breaking support. 2. Added FsMOVAPSrr and FsMOVAPDrr as aliases to MOVAPSrr and MOVAPDrr. These are used for FR32 / FR64 reg-to-reg copies. 3. Tell reg-allocator to generate MOVSSrm / MOVSDrm and MOVSSmr / MOVSDmr to spill / restore FsMOVAPSrr and FsMOVAPDrr. llvm-svn: 26241 | |||||
| * | Use movaps / movapd to spill / restore V4F4 / V2F8 registers. | Evan Cheng | 2006-02-16 | 1 | -4/+12 | |
| | | | | | llvm-svn: 26240 | |||||
| * | Rework the SelectionDAG-based implementations of SimplifyDemandedBits | Nate Begeman | 2006-02-16 | 6 | -184/+570 | |
| | | | | | | | | and ComputeMaskedBits to match the new improved versions in instcombine. Tested against all of multisource/benchmarks on ppc. llvm-svn: 26238 | |||||
| * | Change SplitBlock to increment a BasicBlock::iterator, not an Instruction*. ↵ | Chris Lattner | 2006-02-16 | 1 | -23/+27 | |
| | | | | | | | | | | | | 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 | |||||
| * | MOVAPSrr and MOVAPDrr instruction format should be MRMSrcReg. | Evan Cheng | 2006-02-16 | 1 | -2/+2 | |
| | | | | | llvm-svn: 26234 | |||||
| * | distinguish between objects and register names, now we can have stuff | Duraid Madina | 2006-02-16 | 1 | -6/+12 | |
| | | | | | | | | | with names like "f84", "in6" etc etc. this should fix one or two tests llvm-svn: 26232 | |||||
| * | If the false case is the current basic block, then this is a self loop. | Evan Cheng | 2006-02-16 | 2 | -11/+9 | |
| | | | | | | | | | | | We do not want to emit "Loop: ... brcond Out; br Loop", as it adds an extra instruction in the loop. Instead, invert the condition and emit "Loop: ... br!cond Loop; br Out. Generalize the fix by moving it from PPCDAGToDAGISel to SelectionDAGLowering. llvm-svn: 26231 | |||||
| * | Lowering of sdiv X, pow2 was broken, this fixes it. This patch is written | Chris Lattner | 2006-02-16 | 1 | -6/+12 | |
| | | | | | | | by Nate, I'm just committing it for him. llvm-svn: 26230 | |||||
| * | Fix VC++ warning. | Jeff Cohen | 2006-02-16 | 1 | -1/+0 | |
| | | | | | llvm-svn: 26228 | |||||
| * | Use movaps / movapd (instead of movss / movsd) to do FR32 / FR64 reg to reg | Evan Cheng | 2006-02-16 | 1 | -2/+2 | |
| | | | | | | | | | | | | | | | | | | transfer. According to the Intel P4 Optimization Manual: Moves that write a portion of a register can introduce unwanted dependences. The movsd reg, reg instruction writes only the bottom 64 bits of a register, not to all 128 bits. This introduces a dependence on the preceding instruction that produces the upper 64 bits (even if those bits are not longer wanted). The dependence inhibits register renaming, and thereby reduces parallelism. Not to mention movaps is shorter than movss. llvm-svn: 26226 | |||||
| * | fix a bug where we unswitched the wrong way | Chris Lattner | 2006-02-16 | 1 | -2/+2 | |
| | | | | | llvm-svn: 26225 | |||||
| * | A bit more memset / memcpy optimization. | Evan Cheng | 2006-02-16 | 3 | -7/+53 | |
| | | | | | | | | Turns them into calls to memset / memcpy if 1) buffer(s) are not DWORD aligned, 2) size is not known to be greater or equal to some minimum value (currently 128). llvm-svn: 26224 | |||||
| * | Implement trivial unswitching for switch stmts. This allows us to trivial | Chris Lattner | 2006-02-15 | 1 | -27/+51 | |
| | | | | | | | | | | | | | | | | | | | 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 | |||||
| * | Remove an entry. | Evan Cheng | 2006-02-15 | 1 | -8/+0 | |
| | | | | | llvm-svn: 26222 | |||||
| * | Remove an unused function parameter. | Evan Cheng | 2006-02-15 | 1 | -2/+2 | |
| | | | | | llvm-svn: 26221 | |||||
| * | make "trivial" unswitching significantly more general. It can now handle | Chris Lattner | 2006-02-15 | 1 | -47/+79 | |
| | | | | | | | | | | | | | | 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 | |||||

