summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Handle callee saved registers in dwarf frame info (lead up to exceptionJim Laskey2006-08-291-9/+35
| | | | | | handling.) llvm-svn: 29954
* Move isCommutativeBinOp from SelectionDAG.cpp and DAGCombiner.cpp out. Make ↵Evan Cheng2006-08-292-31/+3
| | | | | | it a static method of SelectionDAG. llvm-svn: 29951
* eliminate RegisterOpt. It does the same thing as RegisterPass.Chris Lattner2006-08-271-1/+1
| | | | llvm-svn: 29925
* Eliminate RegisterAnalysis. RegisterPass now does all that is necessary.Chris Lattner2006-08-272-2/+2
| | | | llvm-svn: 29921
* s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|Chris Lattner2006-08-2715-15/+15
| | | | llvm-svn: 29911
* typo fixChris Lattner2006-08-271-3/+4
| | | | llvm-svn: 29910
* Eliminate SelectNodeTo() and getTargetNode() variants which take more thanEvan Cheng2006-08-271-254/+12
| | | | | | | 3 SDOperand operands. They are replaced by versions which take an array of SDOperand and the number of operands. llvm-svn: 29905
* Properly size the string table, and emit symbol table and string tableNate Begeman2006-08-261-59/+81
| | | | | | entries in the correct order, fixing several fixmes. llvm-svn: 29902
* SelectNodeTo now returns a SDNode*.Evan Cheng2006-08-261-74/+74
| | | | llvm-svn: 29901
* Simplifications to liveinterval analysis, no functionality change.Chris Lattner2006-08-262-37/+36
| | | | llvm-svn: 29896
* Completely change the way that joining with physregs is implemented. ThisChris Lattner2006-08-252-35/+72
| | | | | | | | paves the way for future changes, increases coallescing opportunities (in theory, not witnessed in practice), and eliminates the really expensive LiveIntervals::overlapsAliases method. llvm-svn: 29890
* Tidy up.Jim Laskey2006-08-251-2/+4
| | | | llvm-svn: 29888
* Consolidate callee saved register information so that it can me used by debugJim Laskey2006-08-251-20/+21
| | | | | | information and exception handling. llvm-svn: 29881
* Allow for register numbers > 31.Jim Laskey2006-08-251-4/+14
| | | | llvm-svn: 29879
* Get closer to handling globals correctly. We now generally get them in theNate Begeman2006-08-251-5/+70
| | | | | | right section. llvm-svn: 29871
* When replacing value numbers, make sure to compactify the value # space.Chris Lattner2006-08-241-0/+12
| | | | llvm-svn: 29865
* Take advantage of the recent improvements to the liveintervals set (trackingChris Lattner2006-08-243-221/+330
| | | | | | | | | | | | | | | | | | | instructions which define each value#) to simplify and improve the coallescer. In particular, this patch: 1. Implements iterative coallescing. 2. Reverts an unsafe hack from handlePhysRegDef, superceeding it with a better solution. 3. Implements PR865, "coallescing" away the second copy in code like: A = B ... B = A This also includes changes to symbolically print registers in intervals when possible. llvm-svn: 29862
* Initial checkin of the Mach-O emitter. There's plenty of fixmes, but itNate Begeman2006-08-231-0/+428
| | | | | | does emit linkable .o files in very simple cases. llvm-svn: 29850
* Improve the LiveInterval class to keep track of which machine instructionChris Lattner2006-08-222-17/+40
| | | | | | | defines each value# tracked by the interval. This will be used to improve coallescing. llvm-svn: 29830
* Print physreg names symbolically in dumpsChris Lattner2006-08-211-2/+3
| | | | llvm-svn: 29805
* Print debug info as:Chris Lattner2006-08-211-2/+5
| | | | | | | | | | | | | | | | *** Register mapping *** reg 1024 -> %reg1028 reg 1026 -> EAX reg 1027 -> %reg1028 instead of: *** Register mapping *** reg 1024 -> reg 1028 reg 1026 -> reg 15 reg 1027 -> reg 1028 llvm-svn: 29803
* Adding C++ member support.Jim Laskey2006-08-212-62/+152
| | | | llvm-svn: 29799
* Fix PR861Chris Lattner2006-08-211-0/+1
| | | | llvm-svn: 29796
* Added a check so that if we have two machine instructions in this formBill Wendling2006-08-211-10/+30
| | | | | | | | | MOV R0, R1 MOV R1, R0 the second machine instruction is removed. Added a regression test. llvm-svn: 29792
* switch the SUnit pred/succ sets from being std::sets to being smallvectors.Chris Lattner2006-08-173-78/+82
| | | | | | | | This reduces selectiondag time on kc++ from 5.43s to 4.98s (9%). More significantly, this speeds up the default ppc scheduler from ~1571ms to 1063ms, a 33% speedup. llvm-svn: 29743
* minor changes.Chris Lattner2006-08-162-22/+24
| | | | llvm-svn: 29740
* Use the appropriate typedefChris Lattner2006-08-161-2/+1
| | | | llvm-svn: 29730
* Start using SDVTList more consistentlyChris Lattner2006-08-152-72/+78
| | | | llvm-svn: 29711
* add a new SDVTList type and new SelectionDAG::getVTList methods to streamlineChris Lattner2006-08-151-68/+79
| | | | | | the creation of canonical VTLists. llvm-svn: 29709
* eliminate use of getNode that takes vector of valuetypes.Chris Lattner2006-08-142-30/+30
| | | | llvm-svn: 29687
* Add a new getNode() method that takes a pointer to an already-intern'd listChris Lattner2006-08-141-78/+70
| | | | | | | of value-type nodes. This avoids having to do mallocs for std::vectors of valuetypes when a node returns more than one type. llvm-svn: 29685
* remove SelectionDAG::InsertISelMapEntry, it is deadChris Lattner2006-08-141-9/+0
| | | | llvm-svn: 29677
* Add code to resize the CSEMap hash table. This doesn't speedup codegen ofChris Lattner2006-08-142-3/+47
| | | | | | 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-142-0/+2
| | | | | | Rafael Espindola for pointing this out. llvm-svn: 29669
* Emit .set directives for jump table entries when possible, which reducesNate Begeman2006-08-121-3/+39
| | | | | | the number of relocations in object files, shrinkifying them. llvm-svn: 29650
* Fix an obvious bug, noticed by inspection. No current targets trigger this.Chris Lattner2006-08-121-3/+3
| | | | llvm-svn: 29648
* Switch to using SuperFastHash instead of adding all elements together. ThisChris Lattner2006-08-121-6/+24
| | | | | | doesn't significantly improve performance but it helps a small amount. llvm-svn: 29642
* Switch NodeID to track 32-bit chunks instead of 8-bit chunks, for a 2.5%Chris Lattner2006-08-111-15/+9
| | | | | | speedup in isel time. llvm-svn: 29640
* Remove 8 more std::map's.Chris Lattner2006-08-112-92/+58
| | | | llvm-svn: 29631
* Move the BBNodes, GlobalValues, TargetGlobalValues, Constants, TargetConstants,Chris Lattner2006-08-112-88/+83
| | | | | | 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 internal impl of dag combiner so that calls to CombineTo never have toChris Lattner2006-08-111-12/+9
| | | | | | make a temporary vector. llvm-svn: 29618
* Change one ReplaceAllUsesWith method to take an array of operands to replaceChris Lattner2006-08-112-6/+5
| | | | | | instead of a vector of operands. llvm-svn: 29616
* Start eliminating temporary vectors used to create DAG nodes. Instead, passChris Lattner2006-08-084-274/+176
| | | | | | | | | | | | | | | | | | | 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-082-82/+67
| | | | | | | | | 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-072-312/+517
| | | | | | | | | | | 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
* Reverse the FlaggedNodes after scanning up for flagged preds or else the ↵Evan Cheng2006-08-071-5/+10
| | | | | | order would be reversed. llvm-svn: 29545
* Make SelectionDAG::RemoveDeadNodes iterative instead of recursive, whichChris Lattner2006-08-042-51/+33
| | | | | | also make it simpler. llvm-svn: 29524
* Copy the liveins for the first block. PR859Jim Laskey2006-08-031-0/+14
| | | | llvm-svn: 29511
OpenPOWER on IntegriCloud