summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix build problems on Cygwin (PR1652), patch by Patrick Walton.Chris Lattner2007-09-131-10/+10
| | | | llvm-svn: 41923
* Yet another getTargetNode variant.Evan Cheng2007-09-121-0/+12
| | | | llvm-svn: 41898
* Revise previous patch per review comments.Dale Johannesen2007-09-121-6/+6
| | | | | | | Next round of x87 long double stuff. Getting close now, basically works. llvm-svn: 41875
* Add APInt interfaces to APFloat (allows directlyDale Johannesen2007-09-111-7/+6
| | | | | | | | | access to bits). Use them in place of float and double interfaces where appropriate. First bits of x86 long double constants handling (untested, probably does not work). llvm-svn: 41858
* Fold the adjust_trampoline intrinsic intoDuncan Sands2007-09-111-2/+1
| | | | | | | init_trampoline. There is now only one trampoline intrinsic. llvm-svn: 41841
* Add mod, copysign, abs operations to APFloat.Dale Johannesen2007-08-311-30/+58
| | | | | | | | Implement some constant folding in SelectionDAG and DAGCombiner using APFloat. Remove double versions of constructor and getValue from ConstantFPSDNode. llvm-svn: 41664
* Revise per review of previous patch.Dale Johannesen2007-08-311-12/+24
| | | | llvm-svn: 41645
* Enhance APFloat to retain bits of NaNs (fixes oggenc).Dale Johannesen2007-08-311-14/+43
| | | | | | | Use APFloat interfaces for more references, mostly of ConstantFPSDNode. llvm-svn: 41632
* Change LegalFPImmediates to use APFloat.Dale Johannesen2007-08-301-3/+41
| | | | | | | | | Add APFloat interfaces to ConstantFP, SelectionDAG. Fix integer bit in double->APFloat conversion. Convert LegalizeDAG to use APFloat interface in ConstantFPSDNode uses. llvm-svn: 41587
* Revise per review comments.Dale Johannesen2007-08-261-1/+1
| | | | llvm-svn: 41409
* Add APFloat interface to ConstantFPSDNode. ChangeDale Johannesen2007-08-251-3/+2
| | | | | | | over uses in DAGCombiner. Fix interfaces to work with APFloats. llvm-svn: 41407
* Poison APFloat::operator==. Replace existing uses with bitwiseIsEqual.Dale Johannesen2007-08-241-1/+1
| | | | | | This means backing out the preceding change to Constants.cpp, alas. llvm-svn: 41378
* Use APFloat internally for ConstantFPSDNode.Dale Johannesen2007-08-241-1/+1
| | | | llvm-svn: 41372
* Do not emit copies for physical register output if it's not used.Evan Cheng2007-08-021-1/+26
| | | | llvm-svn: 40722
* Support for trampolines, except for X86 codegen which isDuncan Sands2007-07-271-0/+4
| | | | | | still under discussion. llvm-svn: 40549
* Add selection DAG nodes for subreg insert/extract. PR1350Christopher Lamb2007-07-261-1/+4
| | | | llvm-svn: 40516
* Fix some uses of dyn_cast to be uses of cast.Dan Gohman2007-07-231-1/+1
| | | | llvm-svn: 40443
* As pointed out by g++-4.2, the original code didn't doDuncan Sands2007-07-191-2/+2
| | | | | | what it thought it was doing. llvm-svn: 40044
* Long live the exception handling!Anton Korobeynikov2007-07-141-0/+2
| | | | | | | | | | | | | | | This patch fills the last necessary bits to enable exceptions handling in LLVM. Currently only on x86-32/linux. In fact, this patch adds necessary intrinsics (and their lowering) which represent really weird target-specific gcc builtins used inside unwinder. After corresponding llvm-gcc patch will land (easy) exceptions should be more or less workable. However, exceptions handling support should not be thought as 'finished': I expect many small and not so small glitches everywhere. llvm-svn: 39855
* Change the peep for EXTRACT_VECTOR_ELT of BUILD_PAIR to look forDan Gohman2007-07-101-7/+19
| | | | | | | the new CONCAT_VECTORS node type instead, as that's what legalize uses now. And add a peep for EXTRACT_VECTOR_ELT of INSERT_VECTOR_ELT. llvm-svn: 38503
* Make the debug string for ISD::MERGE_VALUES consistent with the others.Dan Gohman2007-07-051-1/+1
| | | | llvm-svn: 37922
* Fix a vector FP constant CSE bug.Evan Cheng2007-06-291-5/+10
| | | | llvm-svn: 37814
* Rename ("shrinkify") MVT::isExtendedValueType to MVT::isExtendedVT.Dan Gohman2007-06-271-1/+1
| | | | llvm-svn: 37758
* Generalize MVT::ValueType and associated functions to be able to representDan Gohman2007-06-251-43/+52
| | | | | | | | | | | | | | | extended vector types. Remove the special SDNode opcodes used for pre-legalize vector operations, and the special MVT::Vector type used with them. Adjust lowering and legalize to work with the normal SDNode kinds instead, and to use the normal MVT functions to work with vector types instead of using the two special operands that the pre-legalize nodes held. This allows pre-legalize and post-legalize DAGs, and the code that operates on them, to be more consistent. Pre-legalize vector operators can be handled more consistently with scalar operators. And, -view-dag-combine1-dags and -view-legalize-dags now look prettier for vector code. llvm-svn: 37719
* Move ComputeMaskedBits, MaskedValueIsZero, and ComputeNumSignBits fromDan Gohman2007-06-221-0/+546
| | | | | | | | | TargetLowering to SelectionDAG so that they have more convenient access to the current DAG, in preparation for the ValueType routines being changed from standalone functions to members of SelectionDAG for the pre-legalize vector type changes. llvm-svn: 37704
* Pass a SelectionDAG into SDNode::dump everywhere it's used, in preprationDan Gohman2007-06-191-1/+1
| | | | | | | for needing the DAG node to print pre-legalize extended value types, and to get better debug messages with target-specific nodes. llvm-svn: 37656
* Rename MVT::getVectorBaseType to MVT::getVectorElementType.Dan Gohman2007-06-141-2/+2
| | | | llvm-svn: 37579
* Introduce new SelectionDAG node opcodes VEXTRACT_SUBVECTOR andDan Gohman2007-06-131-0/+2
| | | | | | | | | | | | | VCONCAT_VECTORS. Use these for CopyToReg and CopyFromReg legalizing in the case that the full register is to be split into subvectors instead of scalars. This replaces uses of VBIT_CONVERT to present values as vector-of-vector types in order to make whole subvectors accessible via BUILD_VECTOR and EXTRACT_VECTOR_ELT. This is in preparation for adding extended ValueType values, where having vector-of-vector types is undesirable. llvm-svn: 37569
* Resolve implicit alignment before computing the FoldingSet information soDan Gohman2007-06-041-50/+49
| | | | | | | | | | | | that the CSE map always contains explicit alignment information. This allows more loads to be CSE'd when there is a mix of explicit-alignment loads and implicit-alignment loads. Also, in SelectionDAG::FindModifiedNodeSlot, add the operands to the FoldingSetNodeID before the load/store information instead of after, so that it matches what is done elsewhere. llvm-svn: 37411
* Add explicit qualification for namespace MVT members.Dan Gohman2007-05-241-1/+1
| | | | llvm-svn: 37320
* Be more careful about folding op(x, undef) when we have vector operands.Chris Lattner2007-04-251-9/+16
| | | | | | This fixes CodeGen/X86/2007-04-24-VectorCrash.ll llvm-svn: 36413
* PR400 phase 2. Propagate attributed load/store information through DAGs.Christopher Lamb2007-04-221-12/+54
| | | | llvm-svn: 36356
* X86 TLS: Implement review feedback.Lauro Ramos Venancio2007-04-211-1/+11
| | | | llvm-svn: 36318
* Revert Christopher Lamb's load/store alignment changes.Reid Spencer2007-04-211-21/+12
| | | | llvm-svn: 36309
* add support for alignment attributes on load/store instructionsChristopher Lamb2007-04-211-12/+21
| | | | llvm-svn: 36301
* Implement "general dynamic", "initial exec" and "local exec" TLS models forLauro Ramos Venancio2007-04-201-2/+20
| | | | | | X86 32 bits. llvm-svn: 36283
* fold noop vbitconvert instructionsChris Lattner2007-04-121-0/+9
| | | | llvm-svn: 35943
* add some assertionsChris Lattner2007-04-091-0/+13
| | | | llvm-svn: 35800
* For PR1297:Reid Spencer2007-04-011-1/+1
| | | | | | Change getOperationName to return std::string instead of const char* llvm-svn: 35545
* Fix incorrect combination of different loads. Reenable zext-over-truncateDale Johannesen2007-03-301-72/+70
| | | | | | combination. llvm-svn: 35517
* fold away addc nodes when we know there cannot be a carry-out.Chris Lattner2007-03-041-0/+1
| | | | llvm-svn: 34913
* eliminate some ops if they have an undef RHSChris Lattner2007-03-041-0/+2
| | | | llvm-svn: 34908
* fold trivial token factor nodes. This allows us to compileChris Lattner2007-02-251-0/+6
| | | | | | | | | | | | | | | | | | | | | | test/CodeGen/X86/fp-stack-ret.ll into: movl 4(%esp), %eax fldl (%eax) ret instead of: subl $12, %esp movl 16(%esp), %eax movsd (%eax), %xmm0 movsd %xmm0, (%esp) fldl (%esp) addl $12, %esp ret by eliminating a token factor that blocked a check. llvm-svn: 34584
* Selection and lowering for exception handling.Jim Laskey2007-02-211-0/+2
| | | | llvm-svn: 34481
* Introduce new UnarySDNode/BinarySDNode/TernarySDNode nodes, which coallocateChris Lattner2007-02-041-12/+29
| | | | | | | their operands with the node itself. This reduces malloc traffic for operand lists. This reduces isel time on kc++ from 2.6164 to 2.5570s, about 2.3%. llvm-svn: 33878
* eliminate the SDNode::setValueTypes method.Chris Lattner2007-02-041-34/+17
| | | | llvm-svn: 33876
* eliminate a bunch of duplicate ctors and helper functions.Chris Lattner2007-02-041-116/+81
| | | | llvm-svn: 33875
* move MorphNode to out of line and merge setNodeOperands into it. There isChris Lattner2007-02-041-14/+33
| | | | | | no behavior or performance change here. llvm-svn: 33869
* simplify MorphNodeTo to take a VTList operand.Chris Lattner2007-02-041-14/+13
| | | | llvm-svn: 33868
* eliminate some extraneous methods in SDNodeChris Lattner2007-02-041-5/+16
| | | | llvm-svn: 33867
OpenPOWER on IntegriCloud