summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Use a combination of copyRegToReg and ISD::BIT_CONVERT when doing fast isel ↵Owen Anderson2008-08-261-8/+19
| | | | | | | | of bitcasts, allowing it to support the full range of conversions people might ask for in a correct manner. llvm-svn: 55378
* Make TargetInstrInfo::copyRegToReg return a bool indicating whether the copy ↵Owen Anderson2008-08-261-5/+5
| | | | | | | | | requested was inserted or not. This allows bitcast in fast isel to properly handle the case where an appropriate reg-to-reg copy is not available. llvm-svn: 55375
* Add support for fast isel of non-constant fptosi instructions.Owen Anderson2008-08-261-5/+43
| | | | llvm-svn: 55373
* typo fix.Chris Lattner2008-08-261-1/+1
| | | | llvm-svn: 55355
* Actually recycle SDNode allocations. SelectionDAG is usingDan Gohman2008-08-261-2/+6
| | | | | | | | RecyclingAllocator, but this change is needed for the nodes to actually be recycled. This cuts SelectionDAG's memory usage high-water-mark in half in some cases. llvm-svn: 55351
* Add a RetVT parameter to emitted FastISel methods, so that we will be able ↵Owen Anderson2008-08-251-18/+23
| | | | | | | | to pass the desired return type down. This is not currently used. llvm-svn: 55345
* Unbreak build.Evan Cheng2008-08-251-2/+2
| | | | llvm-svn: 55342
* Expand bitcast support in fast isel to support bitcasts of non-constant ↵Owen Anderson2008-08-251-1/+29
| | | | | | values by emitting reg-reg copies. llvm-svn: 55340
* Add support for fast isel of (integer) immediate materialization pattens, ↵Owen Anderson2008-08-251-2/+29
| | | | | | | | and use them to support bitcast of constants in fast isel. llvm-svn: 55325
* simplify PseudoSourceValue printing a bit. Unnest all of ↵Chris Lattner2008-08-242-47/+46
| | | | | | PseudoSourceValue.cpp from the llvm namespace. llvm-svn: 55293
* Print PseudoSourceValue.Evan Cheng2008-08-242-2/+9
| | | | llvm-svn: 55291
* make sure to flush the stream after dumping, to make sure it goes out ↵Chris Lattner2008-08-241-0/+1
| | | | | | immediately. llvm-svn: 55288
* get MachineConstantPool off std::ostream, onto raw_ostream. It would beChris Lattner2008-08-232-18/+23
| | | | | | really nice if someone converted MachineFunction::print to raw_ostream. llvm-svn: 55268
* Switch the asmprinter (.ll) and all the stuff it requires over toChris Lattner2008-08-232-75/+78
| | | | | | | | | | | | | | | | | | | | | | | | use raw_ostream instead of std::ostream. Among other goodness, this speeds up llvm-dis of kc++ with a release build from 0.85s to 0.49s (88% faster). Other interesting changes: 1) This makes Value::print be non-virtual. 2) AP[S]Int and ConstantRange can no longer print to ostream directly, use raw_ostream instead. 3) This fixes a bug in raw_os_ostream where it didn't flush itself when destroyed. 4) This adds a new SDNode::print method, instead of only allowing "dump". A lot of APIs have both std::ostream and raw_ostream versions, it would be useful to go through and systematically anihilate the std::ostream versions. This passes dejagnu, but there may be minor fallout, plz let me know if so and I'll fix it. llvm-svn: 55263
* Make MBBMap a DenseMap instead of a std::map.Dan Gohman2008-08-232-4/+4
| | | | llvm-svn: 55220
* Move the point at which FastISel taps into the SelectionDAGISelDan Gohman2008-08-232-238/+263
| | | | | | | | | | | | | | | | | | process up to a higher level. This allows FastISel to leverage more of SelectionDAGISel's infastructure, such as updating Machine PHI nodes. Also, implement transitioning from SDISel back to FastISel in the middle of a block, so it's now possible to go back and forth. This allows FastISel to hand individual CallInsts and other complicated things off to SDISel to handle, while handling the rest of the block itself. To help support this, reorganize the SelectionDAG class so that it is allocated once and reused throughout a function, instead of being completely reallocated for each block. llvm-svn: 55219
* Avoid creating shift-by-zero SDNodes in the common case ofDan Gohman2008-08-231-9/+10
| | | | | | | i8* getelementptr. DAGCombine eliminates these, but this is a fairly common case. llvm-svn: 55214
* Move SelectionDAG's constructor out of line.Dan Gohman2008-08-231-0/+7
| | | | llvm-svn: 55212
* Reapply r55191 and r55192.Dan Gohman2008-08-222-9/+16
| | | | llvm-svn: 55205
* Reverting r55190, r55191, and r55192. They broke the build with this error ↵Bill Wendling2008-08-222-16/+9
| | | | | | | | | | | | | | | message: {standard input}:17:bad register name `%sil' make[4]: *** [libgcc/./_addvsi3.o] Error 1 make[4]: *** Waiting for unfinished jobs.... {standard input}:23:bad register name `%dil' {standard input}:28:bad register name `%dil' make[4]: *** [libgcc/./_addvdi3.o] Error 1 {standard input}:18:bad register name `%sil' make[4]: *** [libgcc/./_subvsi3.o] Error 1 llvm-svn: 55200
* Fix the InsertBranch call.Dan Gohman2008-08-221-2/+1
| | | | llvm-svn: 55192
* Support non-fallthrough unconditional branches in FastISel.Dan Gohman2008-08-222-9/+17
| | | | llvm-svn: 55191
* Add FastISel support for PHINodes. Machine PHI nodesDan Gohman2008-08-221-0/+5
| | | | | | | are not yet updated properly, but that's a separate task. llvm-svn: 55187
* Fix SmallVector's size calculation so that a size of 0 isDan Gohman2008-08-222-3/+3
| | | | | | | handled correctly, and change a few SmallVector uses to use size 0 to more clearly reflect their intent. llvm-svn: 55181
* consolidate DenseMapInfo implementations, and add one for std::pair.Chris Lattner2008-08-221-12/+0
| | | | | | Patch contributed by m-s. llvm-svn: 55167
* Factor out the predicate check code from DAGISelEmitter.cppDan Gohman2008-08-221-4/+6
| | | | | | | | | and use it in FastISelEmitter.cpp, and make FastISel subtarget aware. Among other things, this lets it work properly on x86 targets that don't have SSE, where it successfully selects x87 instructions. llvm-svn: 55156
* Remove tabs.Bill Wendling2008-08-221-8/+8
| | | | llvm-svn: 55154
* Remove unneeded #include.Owen Anderson2008-08-211-1/+0
| | | | llvm-svn: 55134
* Add libcalls for the new rounding opcodes.Dan Gohman2008-08-212-0/+75
| | | | llvm-svn: 55133
* Add libm-oriented ISD opcodes for rounding operations.Dan Gohman2008-08-213-0/+20
| | | | llvm-svn: 55130
* Have FastISel skip the multiply by 1 for getelementptr on i8*.Dan Gohman2008-08-211-4/+2
| | | | llvm-svn: 55129
* MVT::getMVT uses iPTR for pointer types, while we need the actualDan Gohman2008-08-211-8/+8
| | | | | | | intptr_t type in this case. FastISel can now select simple getelementptr instructions. llvm-svn: 55125
* Elements in DeadNodeSet are checked for use_empty() before theyDan Gohman2008-08-211-1/+0
| | | | | | | are actually deleted, so it's not necessary to remove re-used nodes from the set. llvm-svn: 55123
* Basic fast-isel support for instructions with constant int operands.Dan Gohman2008-08-211-19/+69
| | | | llvm-svn: 55099
* Type of first GEP operand is always the same as the target pointer type.Evan Cheng2008-08-211-7/+5
| | | | llvm-svn: 55097
* Use raw_ostream throughout the AsmPrinter.Owen Anderson2008-08-219-33/+42
| | | | llvm-svn: 55092
* Fix unused variable warnings.Dan Gohman2008-08-201-3/+3
| | | | llvm-svn: 55089
* First cut, un-optimized (and untested) fast isel lowering of GetElementPtrInst.Evan Cheng2008-08-202-5/+109
| | | | llvm-svn: 55085
* Simplify the BuildMI calls even more.Dan Gohman2008-08-201-6/+3
| | | | llvm-svn: 55077
* Simplify FastISel's constructor argument list, make the FastISelDan Gohman2008-08-202-14/+18
| | | | | | | | class hold a MachineRegisterInfo member, and make the MachineBasicBlock be passed in to SelectInstructions rather than the FastISel constructor. llvm-svn: 55076
* Dump the instruction that foiled ISel even when -debug is not used.Dan Gohman2008-08-201-1/+3
| | | | llvm-svn: 55075
* Don't hoist instructions that define a physical register.Bill Wendling2008-08-201-1/+8
| | | | llvm-svn: 55074
* Make more use of the BuildMI API.Dan Gohman2008-08-201-8/+2
| | | | llvm-svn: 55072
* Minor code reorganization.Dan Gohman2008-08-201-3/+3
| | | | llvm-svn: 55071
* Minor whitespace cleanup.Dan Gohman2008-08-201-1/+1
| | | | llvm-svn: 55070
* Fix 80 column violation.Dan Gohman2008-08-201-1/+2
| | | | llvm-svn: 55069
* Kill off SimpleBBISel, it's replaced by FastISel.Evan Cheng2008-08-203-78/+1
| | | | llvm-svn: 55067
* Disable DAGCombine's alignment inference in "fast" codegen mode.Dan Gohman2008-08-202-9/+12
| | | | llvm-svn: 55059
* Change the FoldingSetNodeID usage for objects which carryDan Gohman2008-08-202-36/+36
| | | | | | | | alignment and volatility information, such as loads and stores, to reduce the number of integer values added to the FoldingSetNodeID. llvm-svn: 55058
* Use BitVector instead of std::vector<unsigned char>.Dan Gohman2008-08-201-2/+1
| | | | llvm-svn: 55054
OpenPOWER on IntegriCloud