Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Significantly improve handling of vectors that are live across basic blocks, | Chris Lattner | 2006-03-31 | 3 | -52/+101 |
| | | | | | | | handling cases where the vector elements need promotion, expansion, and when the vector type itself needs to be decimated. llvm-svn: 27278 | ||||
* | Expand INSERT_VECTOR_ELT to store vec, sp; store elt, sp+k; vec = load sp; | Evan Cheng | 2006-03-31 | 1 | -1/+24 |
| | | | | llvm-svn: 27274 | ||||
* | Bug fixes: handle constantexpr insert/extract element operations | Chris Lattner | 2006-03-29 | 1 | -16/+6 |
| | | | | | | | | Handle constantpacked vectors with constantexpr elements. This fixes CodeGen/Generic/vector-constantexpr.ll llvm-svn: 27241 | ||||
* | When building a VVECTOR_SHUFFLE node from extract_element operations, make | Chris Lattner | 2006-03-28 | 1 | -1/+11 |
| | | | | | | | | | | | | | | | | | | sure to build it as SHUFFLE(X, undef, mask), not SHUFFLE(X, X, mask). The later is not canonical form, and prevents the PPC splat pattern from matching. For a particular splat, we go from generating this: li r10, lo16(LCPI1_0) lis r11, ha16(LCPI1_0) lvx v3, r11, r10 vperm v3, v2, v2, v3 to generating: vspltw v3, v2, 3 llvm-svn: 27236 | ||||
* | Canonicalize VECTOR_SHUFFLE(X, X, Y) -> VECTOR_SHUFFLE(X,undef,Y') | Chris Lattner | 2006-03-28 | 1 | -0/+30 |
| | | | | llvm-svn: 27235 | ||||
* | Turn a series of extract_element's feeding a build_vector into a | Chris Lattner | 2006-03-28 | 1 | -0/+86 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vector_shuffle node. For this: void test(__m128 *res, __m128 *A, __m128 *B) { *res = _mm_unpacklo_ps(*A, *B); } we now produce this code: _test: movl 8(%esp), %eax movaps (%eax), %xmm0 movl 12(%esp), %eax unpcklps (%eax), %xmm0 movl 4(%esp), %eax movaps %xmm0, (%eax) ret instead of this: _test: subl $76, %esp movl 88(%esp), %eax movaps (%eax), %xmm0 movaps %xmm0, (%esp) movaps %xmm0, 32(%esp) movss 4(%esp), %xmm0 movss 32(%esp), %xmm1 unpcklps %xmm0, %xmm1 movl 84(%esp), %eax movaps (%eax), %xmm0 movaps %xmm0, 16(%esp) movaps %xmm0, 48(%esp) movss 20(%esp), %xmm0 movss 48(%esp), %xmm2 unpcklps %xmm0, %xmm2 unpcklps %xmm1, %xmm2 movl 80(%esp), %eax movaps %xmm2, (%eax) addl $76, %esp ret GCC produces this (with -fomit-frame-pointer): _test: subl $12, %esp movl 20(%esp), %eax movaps (%eax), %xmm0 movl 24(%esp), %eax unpcklps (%eax), %xmm0 movl 16(%esp), %eax movaps %xmm0, (%eax) addl $12, %esp ret llvm-svn: 27233 | ||||
* | Teach Legalize how to pack VVECTOR_SHUFFLE nodes into VECTOR_SHUFFLE nodes. | Chris Lattner | 2006-03-28 | 1 | -0/+21 |
| | | | | llvm-svn: 27232 | ||||
* | new node | Chris Lattner | 2006-03-28 | 1 | -0/+1 |
| | | | | llvm-svn: 27231 | ||||
* | Don't crash on X^X if X is a vector. Instead, produce a vector of zeros. | Chris Lattner | 2006-03-28 | 1 | -2/+10 |
| | | | | llvm-svn: 27229 | ||||
* | Add an assertion | Chris Lattner | 2006-03-28 | 1 | -0/+2 |
| | | | | llvm-svn: 27228 | ||||
* | Refactor address attributes. Add base register to frame info. | Jim Laskey | 2006-03-28 | 1 | -13/+19 |
| | | | | llvm-svn: 27226 | ||||
* | More bulletproofing of llvm.dbg.declare. | Jim Laskey | 2006-03-28 | 1 | -1/+1 |
| | | | | llvm-svn: 27224 | ||||
* | More bulletproofing of DebugInfoDesc verify. | Jim Laskey | 2006-03-28 | 1 | -1/+1 |
| | | | | llvm-svn: 27203 | ||||
* | Tblgen doesn't like multiple SDNode<> definitions that map to the sameenum ↵ | Chris Lattner | 2006-03-28 | 3 | -7/+19 |
| | | | | | | value. Split them into separate enums. llvm-svn: 27201 | ||||
* | Reactivate llvm.dbg.declare. | Jim Laskey | 2006-03-27 | 1 | -1/+0 |
| | | | | llvm-svn: 27192 | ||||
* | Disable dbg_declare, it currently breaks the CFE build | Chris Lattner | 2006-03-27 | 1 | -0/+1 |
| | | | | llvm-svn: 27182 | ||||
* | Fix legalization of intrinsics with chain and result values | Chris Lattner | 2006-03-27 | 1 | -2/+13 |
| | | | | llvm-svn: 27181 | ||||
* | Unbreak the build on non-apple compilers :-( | Chris Lattner | 2006-03-27 | 1 | -1/+2 |
| | | | | llvm-svn: 27173 | ||||
* | Try again | Evan Cheng | 2006-03-27 | 1 | -3/+10 |
| | | | | llvm-svn: 27171 | ||||
* | Incorrect check for FP all one's | Evan Cheng | 2006-03-27 | 1 | -1/+2 |
| | | | | llvm-svn: 27169 | ||||
* | Change isBuildVectorAllOnesInteger to isBuildVectorAllOnes. Also check for | Evan Cheng | 2006-03-27 | 1 | -24/+39 |
| | | | | | | floating point cases. llvm-svn: 27165 | ||||
* | Instead of printing "INTRINSIC" on intrinsic node, print the intrinsic name. | Chris Lattner | 2006-03-27 | 1 | -1/+5 |
| | | | | llvm-svn: 27164 | ||||
* | Pass llvm/test/Regression/CodeGen/Generic/debug-info.ll. | Jim Laskey | 2006-03-27 | 1 | -0/+7 |
| | | | | llvm-svn: 27158 | ||||
* | SelectionDAGISel can now natively handle Switch instructions, in the same | Nate Begeman | 2006-03-27 | 1 | -37/+272 |
| | | | | | | | | | | | | | | manner that the LowerSwitch LLVM to LLVM pass does: emitting a binary search tree of basic blocks. The new approach has several advantages: it is faster, it generates significantly smaller code in many cases, and it paves the way for implementing dense switch tables as a jump table by handling switches directly in the instruction selector. This functionality is currently only enabled on x86, but should be safe for every target. In anticipation of making it the default, the cfg is now properly updated in the x86, ppc, and sparc select lowering code. llvm-svn: 27156 | ||||
* | Bullet proof against undefined args produced by upgrading ols-style debug info. | Jim Laskey | 2006-03-26 | 1 | -4/+5 |
| | | | | llvm-svn: 27155 | ||||
* | How to be dumb on $5/day. Need a tri-state to track valid debug descriptors. | Jim Laskey | 2006-03-26 | 1 | -24/+27 |
| | | | | llvm-svn: 27154 | ||||
* | Add ISD::isBuildVectorAllZeros predicate | Evan Cheng | 2006-03-26 | 1 | -0/+24 |
| | | | | llvm-svn: 27147 | ||||
* | Allow targets to custom lower their own intrinsics if desired. | Chris Lattner | 2006-03-26 | 1 | -0/+7 |
| | | | | llvm-svn: 27146 | ||||
* | Add some comments. | Chris Lattner | 2006-03-25 | 1 | -0/+4 |
| | | | | llvm-svn: 27133 | ||||
* | Fix a bug in ISD::isBuildVectorAllOnesInteger that caused it to always return | Chris Lattner | 2006-03-25 | 1 | -2/+3 |
| | | | | | | false llvm-svn: 27131 | ||||
* | Implement the ISD::isBuildVectorAllOnesInteger predicate | Chris Lattner | 2006-03-25 | 1 | -1/+32 |
| | | | | llvm-svn: 27130 | ||||
* | Don't call SimplifyDemandedBits on vectors | Chris Lattner | 2006-03-25 | 1 | -1/+2 |
| | | | | llvm-svn: 27128 | ||||
* | fix inverted conditional | Chris Lattner | 2006-03-24 | 1 | -2/+2 |
| | | | | llvm-svn: 27089 | ||||
* | Hack no more. | Jim Laskey | 2006-03-24 | 1 | -2/+0 |
| | | | | llvm-svn: 27079 | ||||
* | Only to vector shuffle for {x,x,y,y} cases when SCALAR_TO_VECTOR is free. | Evan Cheng | 2006-03-24 | 1 | -1/+2 |
| | | | | llvm-svn: 27071 | ||||
* | Rename for truth in advertising. | Jim Laskey | 2006-03-24 | 1 | -2/+2 |
| | | | | llvm-svn: 27063 | ||||
* | prefer to generate constant pool loads over splats. This prevents us from | Chris Lattner | 2006-03-24 | 1 | -34/+33 |
| | | | | | | using a splat for {1.0,1.0,1.0,1.0} llvm-svn: 27055 | ||||
* | fix spello | Chris Lattner | 2006-03-24 | 1 | -1/+1 |
| | | | | llvm-svn: 27053 | ||||
* | legalize vbit_convert nodes whose result is a legal type. | Chris Lattner | 2006-03-24 | 1 | -0/+38 |
| | | | | | | Legalize intrinsic nodes. llvm-svn: 27036 | ||||
* | Lower target intrinsics into an INTRINSIC node | Chris Lattner | 2006-03-24 | 1 | -4/+80 |
| | | | | llvm-svn: 27035 | ||||
* | fix some bogus assertions: noop bitconverts are legal | Chris Lattner | 2006-03-24 | 1 | -10/+4 |
| | | | | llvm-svn: 27032 | ||||
* | Lower BUILD_VECTOR to VECTOR_SHUFFLE if there are two distinct nodes (and if | Evan Cheng | 2006-03-24 | 1 | -8/+49 |
| | | | | | | | the target can handle it). Issue two SCALAR_TO_VECTOR ops followed by a VECTOR_SHUFFLE to select from the two vectors. llvm-svn: 27023 | ||||
* | Identify the INTRINSIC node | Chris Lattner | 2006-03-24 | 1 | -0/+1 |
| | | | | llvm-svn: 27020 | ||||
* | Unneeded forward. | Jim Laskey | 2006-03-23 | 1 | -1/+0 |
| | | | | llvm-svn: 27004 | ||||
* | Make sure types are allocated in the scope of their use. | Jim Laskey | 2006-03-23 | 1 | -107/+54 |
| | | | | llvm-svn: 27002 | ||||
* | add support for splitting casts. This implements | Chris Lattner | 2006-03-23 | 1 | -1/+41 |
| | | | | | | CodeGen/Generic/vector.ll:test_cast_2. llvm-svn: 26999 | ||||
* | Generate local variable and scope information and equivalent dwarf forms. | Jim Laskey | 2006-03-23 | 2 | -79/+434 |
| | | | | llvm-svn: 26989 | ||||
* | Handle new forms of llvm.dbg intrinsics. | Jim Laskey | 2006-03-23 | 2 | -24/+70 |
| | | | | llvm-svn: 26988 | ||||
* | simplify some code | Chris Lattner | 2006-03-23 | 1 | -8/+5 |
| | | | | llvm-svn: 26972 | ||||
* | Fix a typo | Chris Lattner | 2006-03-22 | 1 | -1/+1 |
| | | | | llvm-svn: 26965 |