summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add code to resize the CSEMap hash table. This doesn't speedup codegen ofChris Lattner2006-08-141-0/+1
| | | | | | kimwitu, but seems like a good idea from a "avoid performance cliffs" standpoint :) llvm-svn: 29675
* Add the actual constant to the hash for ConstantPool nodes. Thanks toChris Lattner2006-08-141-0/+1
| | | | | | Rafael Espindola for pointing this out. llvm-svn: 29669
* Remove 8 more std::map's.Chris Lattner2006-08-111-92/+40
| | | | llvm-svn: 29631
* Move the BBNodes, GlobalValues, TargetGlobalValues, Constants, TargetConstants,Chris Lattner2006-08-111-88/+57
| | | | | | RegNodes, and ValueNodes maps into the CSEMap. llvm-svn: 29626
* eliminate the NullaryOps map, use CSEMap instead.Chris Lattner2006-08-111-22/+18
| | | | llvm-svn: 29621
* Change one ReplaceAllUsesWith method to take an array of operands to replaceChris Lattner2006-08-111-4/+2
| | | | | | instead of a vector of operands. llvm-svn: 29616
* Start eliminating temporary vectors used to create DAG nodes. Instead, passChris Lattner2006-08-081-128/+35
| | | | | | | | | | | | | | | | | | | in the start of an array and a count of operands where applicable. In many cases, the number of operands is known, so this static array can be allocated on the stack, avoiding the heap. In many other cases, a SmallVector can be used, which has the same benefit in the common cases. I updated a lot of code calling getNode that takes a vector, but ran out of time. The rest of the code should be updated, and these methods should be removed. We should also do the same thing to eliminate the methods that take a vector of MVT::ValueTypes. It would be extra nice to convert the dagiselemitter to avoid creating vectors for operands when calling getTargetNode. llvm-svn: 29566
* Eliminate some malloc traffic by allocating vectors on the stack. Change someChris Lattner2006-08-081-61/+44
| | | | | | | | | method that took std::vector<SDOperand> to take a pointer to a first operand and #operands. This speeds up isel on kc++ by about 3%. llvm-svn: 29561
* Revamp the "CSEMap" datastructure used in the SelectionDAG class. ThisChris Lattner2006-08-071-312/+278
| | | | | | | | | | | eliminates a bunch of std::map's in the SelectionDAG, replacing them with a home-grown hashtable. This is still a work in progress: not all the maps have been moved over and the hashtable never resizes. That said, this still speeds up llc 20% on kimwitu++ with -fast -regalloc=local using a release build. llvm-svn: 29550
* Clear TopOrder before assigning topological order. Some clean ups.Evan Cheng2006-08-071-1/+3
| | | | llvm-svn: 29546
* Make SelectionDAG::RemoveDeadNodes iterative instead of recursive, whichChris Lattner2006-08-041-50/+32
| | | | | | also make it simpler. llvm-svn: 29524
* - Change AssignTopologicalOrder to return vector of SDNode* by reference.Evan Cheng2006-08-021-16/+22
| | | | | | - Tweak implementation to avoid using std::map. llvm-svn: 29479
* Added AssignTopologicalOrder() to assign each node an unique id based on ↵Evan Cheng2006-08-011-2/+38
| | | | | | their topological order. llvm-svn: 29431
* Remove InFlightSet hack. No longer needed.Evan Cheng2006-07-281-14/+0
| | | | llvm-svn: 29373
* AssignNodeIds should return unsigned.Evan Cheng2006-07-271-2/+2
| | | | llvm-svn: 29343
* AssignNodeIds assign each node in the DAG an unique id.Evan Cheng2006-07-271-0/+12
| | | | llvm-svn: 29337
* Add an out-of-line virtual method for the sdnode class to give it a home.Chris Lattner2006-07-191-0/+4
| | | | llvm-svn: 29192
* Ugly hack! Add helper functions InsertInFlightSetEntry andEvan Cheng2006-06-291-0/+14
| | | | | | | RemoveInFlightSetEntry. They are used in place of direct set operators to reduce instruction selection function stack size. llvm-svn: 28987
* Fix CodeGen/Generic/2006-06-28-SimplifySetCCCrash.llChris Lattner2006-06-281-6/+4
| | | | llvm-svn: 28965
* Add a new ISD::CALL node, make the default impl of TargetLowering::LowerCallToChris Lattner2006-05-161-0/+1
| | | | | | produce it. llvm-svn: 28338
* remove dead varsChris Lattner2006-05-121-2/+1
| | | | llvm-svn: 28254
* Compile:Chris Lattner2006-05-121-1/+6
| | | | | | | | | | %tmp152 = setgt uint %tmp144, %tmp149 ; <bool> [#uses=1] %tmp159 = setlt uint %tmp144, %tmp149 ; <bool> [#uses=1] %bothcond2 = or bool %tmp152, %tmp159 ; <bool> [#uses=1] To setne, not setune, which causes an assertion fault. llvm-svn: 28244
* Fold shifts with undef operands.Chris Lattner2006-05-081-0/+7
| | | | llvm-svn: 28167
* constant fold sign_extend_inregChris Lattner2006-05-061-1/+9
| | | | llvm-svn: 28151
* Fix Regression/CodeGen/Generic/2006-04-26-SetCCAnd.ll andChris Lattner2006-04-271-1/+29
| | | | | | PR748. llvm-svn: 27987
* JumpTable support! What this represents is working asm and jit support forNate Begeman2006-04-221-0/+26
| | | | | | | | x86 and ppc for 100% dense switch statements when relocations are non-PIC. This support will be extended and enhanced in the coming days to support PIC, and less dense forms of jump tables. llvm-svn: 27947
* Implement folding of a bunch of binops with undefChris Lattner2006-04-201-0/+46
| | | | llvm-svn: 27863
* Make these predicates return true for bit_convert(buildvector)'s as well asChris Lattner2006-04-151-0/+8
| | | | | | buildvectors. llvm-svn: 27723
* Implement support for the formal_arguments node. To get this, targets ↵Chris Lattner2006-04-121-0/+1
| | | | | | shouldcustom legalize it and remove their XXXTargetLowering::LowerArguments overload llvm-svn: 27604
* Don't memoize vloads in the load map! Don't memoize them anywhere here, letChris Lattner2006-04-121-2/+0
| | | | | | getNode do it. This fixes CodeGen/Generic/2006-04-11-vecload.ll llvm-svn: 27602
* Add code generator support for VSELECTChris Lattner2006-04-081-8/+9
| | | | llvm-svn: 27542
* Constant fold bitconvert(undef)Chris Lattner2006-04-041-0/+2
| | | | llvm-svn: 27391
* These entries already existChris Lattner2006-04-021-4/+0
| | | | llvm-svn: 27340
* Add some missing node namesChris Lattner2006-04-021-0/+9
| | | | llvm-svn: 27339
* Significantly improve handling of vectors that are live across basic blocks,Chris Lattner2006-03-311-2/+1
| | | | | | | handling cases where the vector elements need promotion, expansion, and when the vector type itself needs to be decimated. llvm-svn: 27278
* new nodeChris Lattner2006-03-281-0/+1
| | | | llvm-svn: 27231
* Add an assertionChris Lattner2006-03-281-0/+2
| | | | llvm-svn: 27228
* Tblgen doesn't like multiple SDNode<> definitions that map to the sameenum ↵Chris Lattner2006-03-281-3/+7
| | | | | | value. Split them into separate enums. llvm-svn: 27201
* 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
* Add ISD::isBuildVectorAllZeros predicateEvan Cheng2006-03-261-0/+24
| | | | llvm-svn: 27147
* 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
* fix some bogus assertions: noop bitconverts are legalChris Lattner2006-03-241-10/+4
| | | | llvm-svn: 27032
* Identify the INTRINSIC nodeChris Lattner2006-03-241-0/+1
| | | | llvm-svn: 27020
* Implement simple support for vector casting. This can currently only handleChris Lattner2006-03-221-0/+1
| | | | | | casts between legal vector types. llvm-svn: 26961
* add some trivial support for extractelement.Chris Lattner2006-03-211-0/+2
| | | | llvm-svn: 26928
OpenPOWER on IntegriCloud