summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Significantly improve handling of vectors that are live across basic blocks,Chris Lattner2006-03-313-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 Cheng2006-03-311-1/+24
| | | | llvm-svn: 27274
* Bug fixes: handle constantexpr insert/extract element operationsChris Lattner2006-03-291-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, makeChris Lattner2006-03-281-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 Lattner2006-03-281-0/+30
| | | | llvm-svn: 27235
* Turn a series of extract_element's feeding a build_vector into aChris Lattner2006-03-281-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 Lattner2006-03-281-0/+21
| | | | llvm-svn: 27232
* new nodeChris Lattner2006-03-281-0/+1
| | | | llvm-svn: 27231
* Don't crash on X^X if X is a vector. Instead, produce a vector of zeros.Chris Lattner2006-03-281-2/+10
| | | | llvm-svn: 27229
* Add an assertionChris Lattner2006-03-281-0/+2
| | | | llvm-svn: 27228
* Refactor address attributes. Add base register to frame info.Jim Laskey2006-03-281-13/+19
| | | | llvm-svn: 27226
* More bulletproofing of llvm.dbg.declare.Jim Laskey2006-03-281-1/+1
| | | | llvm-svn: 27224
* More bulletproofing of DebugInfoDesc verify.Jim Laskey2006-03-281-1/+1
| | | | llvm-svn: 27203
* Tblgen doesn't like multiple SDNode<> definitions that map to the sameenum ↵Chris Lattner2006-03-283-7/+19
| | | | | | value. Split them into separate enums. llvm-svn: 27201
* Reactivate llvm.dbg.declare.Jim Laskey2006-03-271-1/+0
| | | | llvm-svn: 27192
* Disable dbg_declare, it currently breaks the CFE buildChris Lattner2006-03-271-0/+1
| | | | llvm-svn: 27182
* Fix legalization of intrinsics with chain and result valuesChris Lattner2006-03-271-2/+13
| | | | llvm-svn: 27181
* Unbreak the build on non-apple compilers :-(Chris Lattner2006-03-271-1/+2
| | | | llvm-svn: 27173
* Try againEvan Cheng2006-03-271-3/+10
| | | | llvm-svn: 27171
* Incorrect check for FP all one'sEvan Cheng2006-03-271-1/+2
| | | | llvm-svn: 27169
* Change isBuildVectorAllOnesInteger to isBuildVectorAllOnes. Also check forEvan Cheng2006-03-271-24/+39
| | | | | | floating point cases. llvm-svn: 27165
* Instead of printing "INTRINSIC" on intrinsic node, print the intrinsic name.Chris Lattner2006-03-271-1/+5
| | | | llvm-svn: 27164
* Pass llvm/test/Regression/CodeGen/Generic/debug-info.ll.Jim Laskey2006-03-271-0/+7
| | | | llvm-svn: 27158
* SelectionDAGISel can now natively handle Switch instructions, in the sameNate Begeman2006-03-271-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 Laskey2006-03-261-4/+5
| | | | llvm-svn: 27155
* How to be dumb on $5/day. Need a tri-state to track valid debug descriptors.Jim Laskey2006-03-261-24/+27
| | | | llvm-svn: 27154
* Add ISD::isBuildVectorAllZeros predicateEvan Cheng2006-03-261-0/+24
| | | | llvm-svn: 27147
* Allow targets to custom lower their own intrinsics if desired.Chris Lattner2006-03-261-0/+7
| | | | llvm-svn: 27146
* Add some comments.Chris Lattner2006-03-251-0/+4
| | | | llvm-svn: 27133
* Fix a bug in ISD::isBuildVectorAllOnesInteger that caused it to always returnChris Lattner2006-03-251-2/+3
| | | | | | false llvm-svn: 27131
* Implement the ISD::isBuildVectorAllOnesInteger predicateChris Lattner2006-03-251-1/+32
| | | | llvm-svn: 27130
* Don't call SimplifyDemandedBits on vectorsChris Lattner2006-03-251-1/+2
| | | | llvm-svn: 27128
* fix inverted conditionalChris Lattner2006-03-241-2/+2
| | | | llvm-svn: 27089
* Hack no more.Jim Laskey2006-03-241-2/+0
| | | | llvm-svn: 27079
* Only to vector shuffle for {x,x,y,y} cases when SCALAR_TO_VECTOR is free.Evan Cheng2006-03-241-1/+2
| | | | llvm-svn: 27071
* Rename for truth in advertising.Jim Laskey2006-03-241-2/+2
| | | | llvm-svn: 27063
* prefer to generate constant pool loads over splats. This prevents us fromChris Lattner2006-03-241-34/+33
| | | | | | using a splat for {1.0,1.0,1.0,1.0} llvm-svn: 27055
* fix spelloChris Lattner2006-03-241-1/+1
| | | | llvm-svn: 27053
* legalize vbit_convert nodes whose result is a legal type.Chris Lattner2006-03-241-0/+38
| | | | | | Legalize intrinsic nodes. llvm-svn: 27036
* Lower target intrinsics into an INTRINSIC nodeChris Lattner2006-03-241-4/+80
| | | | llvm-svn: 27035
* fix some bogus assertions: noop bitconverts are legalChris Lattner2006-03-241-10/+4
| | | | llvm-svn: 27032
* Lower BUILD_VECTOR to VECTOR_SHUFFLE if there are two distinct nodes (and ifEvan Cheng2006-03-241-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 nodeChris Lattner2006-03-241-0/+1
| | | | llvm-svn: 27020
* Unneeded forward.Jim Laskey2006-03-231-1/+0
| | | | llvm-svn: 27004
* Make sure types are allocated in the scope of their use.Jim Laskey2006-03-231-107/+54
| | | | llvm-svn: 27002
* add support for splitting casts. This implementsChris Lattner2006-03-231-1/+41
| | | | | | CodeGen/Generic/vector.ll:test_cast_2. llvm-svn: 26999
* Generate local variable and scope information and equivalent dwarf forms.Jim Laskey2006-03-232-79/+434
| | | | llvm-svn: 26989
* Handle new forms of llvm.dbg intrinsics.Jim Laskey2006-03-232-24/+70
| | | | llvm-svn: 26988
* simplify some codeChris Lattner2006-03-231-8/+5
| | | | llvm-svn: 26972
* Fix a typoChris Lattner2006-03-221-1/+1
| | | | llvm-svn: 26965
OpenPOWER on IntegriCloud