summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Implement support for the formal_arguments node. To get this, targets ↵Chris Lattner2006-04-121-3/+8
| | | | | | shouldcustom legalize it and remove their XXXTargetLowering::LowerArguments overload llvm-svn: 27604
* Only get Tmp2 for cases where number of operands is > 1. Fixed return void.Evan Cheng2006-04-111-1/+1
| | | | llvm-svn: 27586
* add some todosChris Lattner2006-04-111-0/+8
| | | | llvm-svn: 27580
* Add basic support for legalizing returns of vectorsChris Lattner2006-04-111-9/+36
| | | | llvm-svn: 27578
* Missing breakEvan Cheng2006-04-101-0/+1
| | | | llvm-svn: 27559
* Add code generator support for VSELECTChris Lattner2006-04-081-0/+5
| | | | llvm-svn: 27542
* Canonicalize vvector_shuffle(x,x) -> vvector_shuffle(x,undef) to enable patternsChris Lattner2006-04-081-2/+14
| | | | | | to match again :) llvm-svn: 27533
* add a sanity check: LegalizeOp should return a value that is the same typeChris Lattner2006-04-081-0/+3
| | | | | | as its input. llvm-svn: 27528
* INSERT_VECTOR_ELT lowering bug:Evan Cheng2006-04-081-14/+11
| | | | | | | | | store vector to $esp store element to $esp + sizeof(VT) * index load vector from $esp The bug is VT is the type of the vector element, not the type of the vector! llvm-svn: 27517
* Exapnd a VECTOR_SHUFFLE to a BUILD_VECTOR if target asks for it to be expandedEvan Cheng2006-04-051-2/+30
| | | | | | or custom lowering fails. llvm-svn: 27432
* * Add supprot for SCALAR_TO_VECTOR operations where the input needs to beChris Lattner2006-04-041-21/+102
| | | | | | | | | | promoted/expanded (e.g. SCALAR_TO_VECTOR from i8/i16 on PPC). * Add support for targets to request that VECTOR_SHUFFLE nodes be promoted to a canonical type, for example, we only want v16i8 shuffles on PPC. * Move isShuffleLegal out of TLI into Legalize. * Teach isShuffleLegal to allow shuffles that need to be promoted. llvm-svn: 27399
* Implement promotion for EXTRACT_VECTOR_ELT, allowing v16i8 multiplies to ↵Chris Lattner2006-04-021-16/+27
| | | | | | work with PowerPC. llvm-svn: 27349
* Implement the Expand action for binary vector operations to break the binopChris Lattner2006-04-021-1/+18
| | | | | | | into elements and operate on each piece. This allows generic vector integer multiplies to work on PPC, though the generated code is horrible. llvm-svn: 27347
* Add a new -view-legalize-dags command line optionChris Lattner2006-04-021-1/+12
| | | | llvm-svn: 27342
* Do not endian swap split vector loads. This fixes ↵Chris Lattner2006-03-311-2/+0
| | | | | | | | UnitTests/Vector/sumarray-dbl on PPC. Now all UnitTests/Vector/* tests pass on PPC. llvm-svn: 27299
* Do not endian swap the operands to a store if the operands came from a vector.Chris Lattner2006-03-311-3/+3
| | | | | | This fixes UnitTests/Vector/simple.c with altivec. llvm-svn: 27298
* Implement PromoteOp for VEXTRACT_VECTOR_ELT. Thsi fixesChris Lattner2006-03-311-42/+54
| | | | | | Generic/vector.ll:test_extract_elt on non-sse X86 systems. llvm-svn: 27294
* Scalarized vector stores need not be legal, e.g. if the vector element typeChris Lattner2006-03-311-0/+3
| | | | | | | needs to be promoted or expanded. Relegalize the scalar store once created. This fixes CodeGen/Generic/vector.ll:test1 on non-SSE x86 targets. llvm-svn: 27293
* Significantly improve handling of vectors that are live across basic blocks,Chris Lattner2006-03-311-4/+1
| | | | | | | 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
* Teach Legalize how to pack VVECTOR_SHUFFLE nodes into VECTOR_SHUFFLE nodes.Chris Lattner2006-03-281-0/+21
| | | | llvm-svn: 27232
* Tblgen doesn't like multiple SDNode<> definitions that map to the sameenum ↵Chris Lattner2006-03-281-2/+4
| | | | | | value. Split them into separate enums. llvm-svn: 27201
* Fix legalization of intrinsics with chain and result valuesChris Lattner2006-03-271-2/+13
| | | | llvm-svn: 27181
* Allow targets to custom lower their own intrinsics if desired.Chris Lattner2006-03-261-0/+7
| | | | llvm-svn: 27146
* 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
* 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
* legalize vbit_convert nodes whose result is a legal type.Chris Lattner2006-03-241-0/+38
| | | | | | Legalize intrinsic nodes. llvm-svn: 27036
* 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
* add support for splitting casts. This implementsChris Lattner2006-03-231-1/+41
| | | | | | CodeGen/Generic/vector.ll:test_cast_2. llvm-svn: 26999
* simplify some codeChris Lattner2006-03-231-8/+5
| | | | llvm-svn: 26972
* Implement simple support for vector casting. This can currently only handleChris Lattner2006-03-221-0/+29
| | | | | | casts between legal vector types. llvm-svn: 26961
* Endianness does not affect the order of vector fields. This fixesChris Lattner2006-03-221-6/+1
| | | | | | SingleSource/UnitTests/Vector/build.c llvm-svn: 26936
* Enclose some variables in a scope to avoid error with some gcc versionsChris Lattner2006-03-221-2/+3
| | | | llvm-svn: 26934
* add expand support for extractelementChris Lattner2006-03-211-1/+31
| | | | llvm-svn: 26931
* add some trivial support for extractelement.Chris Lattner2006-03-211-1/+51
| | | | llvm-svn: 26928
* Add a hacky workaround for crashes due to vectors live across blocks.Chris Lattner2006-03-211-0/+3
| | | | | | | Note that this code won't work for vectors that aren't legal on the target. Improvements coming. llvm-svn: 26925
* If a target supports splatting with SHUFFLE_VECTOR, lower to it from ↵Chris Lattner2006-03-201-4/+41
| | | | | | BUILD_VECTOR(x,x,x,x) llvm-svn: 26885
* Allow SCALAR_TO_VECTOR to be custom lowered.Chris Lattner2006-03-191-0/+9
| | | | llvm-svn: 26867
* Add SCALAR_TO_VECTOR supportChris Lattner2006-03-191-87/+140
| | | | llvm-svn: 26866
* Don't bother storing undef elements of BUILD_VECTOR'sChris Lattner2006-03-191-1/+9
| | | | llvm-svn: 26858
* Implement expand of BUILD_VECTOR containing variable elements.Chris Lattner2006-03-191-2/+32
| | | | | | This implements CodeGen/Generic/vector.ll:test_variable_buildvector llvm-svn: 26852
* implement basic support for INSERT_VECTOR_ELT.Chris Lattner2006-03-191-51/+93
| | | | llvm-svn: 26849
* Rename ConstantVec -> BUILD_VECTOR and VConstant -> VBUILD_VECTOR. ↵Chris Lattner2006-03-191-50/+65
| | | | | | Allow*BUILD_VECTOR to take variable inputs. llvm-svn: 26847
* implement vector.ll:test_undefChris Lattner2006-03-191-2/+6
| | | | llvm-svn: 26845
* Fix the remaining bugs in the vector expansion rework I commited yesterday.Chris Lattner2006-03-191-4/+5
| | | | | | This fixes CodeGen/Generic/vector.ll llvm-svn: 26843
* Change the structure of lowering vector stuff. Note: This breaks someChris Lattner2006-03-181-160/+269
| | | | | | things. llvm-svn: 26840
* Remove BRTWOWAY*Nate Begeman2006-03-171-94/+0
| | | | | | | | Make the PPC backend not dependent on BRTWOWAY_CC and make the branch selector smarter about the code it generates, fixing a case in the readme. llvm-svn: 26814
* Add a note, this code should be moved to the dag combiner.Chris Lattner2006-03-151-0/+1
| | | | llvm-svn: 26787
* For targets with FABS/FNEG support, lower copysign to an integer load,Chris Lattner2006-03-131-2/+25
| | | | | | | | | a select and FABS/FNEG. This speeds up a trivial (aka stupid) copysign benchmark I wrote from 6.73s to 2.64s, woo. llvm-svn: 26723
* revert the previous patch, didn't mean to check it in yetChris Lattner2006-03-081-25/+2
| | | | llvm-svn: 26610
OpenPOWER on IntegriCloud