aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/SelectionDAG
AgeCommit message (Collapse)Author
2008-08-21MVT::getMVT uses iPTR for pointer types, while we need the actualDan Gohman
intptr_t type in this case. FastISel can now select simple getelementptr instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55125 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21Elements in DeadNodeSet are checked for use_empty() before theyDan Gohman
are actually deleted, so it's not necessary to remove re-used nodes from the set. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55123 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21Basic fast-isel support for instructions with constant int operands.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55099 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-21Type of first GEP operand is always the same as the target pointer type.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55097 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Fix unused variable warnings.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55089 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20First cut, un-optimized (and untested) fast isel lowering of GetElementPtrInst.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55085 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Simplify the BuildMI calls even more.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55077 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Simplify FastISel's constructor argument list, make the FastISelDan Gohman
class hold a MachineRegisterInfo member, and make the MachineBasicBlock be passed in to SelectInstructions rather than the FastISel constructor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55076 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Dump the instruction that foiled ISel even when -debug is not used.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55075 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Make more use of the BuildMI API.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55072 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Minor code reorganization.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55071 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Minor whitespace cleanup.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55070 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Fix 80 column violation.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55069 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Kill off SimpleBBISel, it's replaced by FastISel.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55067 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Disable DAGCombine's alignment inference in "fast" codegen mode.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55059 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Change the FoldingSetNodeID usage for objects which carryDan Gohman
alignment and volatility information, such as loads and stores, to reduce the number of integer values added to the FoldingSetNodeID. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55058 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Use BitVector instead of std::vector<unsigned char>.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55054 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Avoid an empty-if-body warning in release builds.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55050 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Fix FastISel to recognize that the last block in the function doesDan Gohman
not have a fall-through successor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55033 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Fix a leak in the FastISel code that Chris pointed out.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55031 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Add support for running SelectionDAG if FastISel fails. This is underDan Gohman
a command-line option, so that the default behavior is an abort, which is useful for exposing code that isn't supported yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55028 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Fix FastISel to recognize unhandled operands, such as constantsDan Gohman
that aren't available as virtual registers (for now). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55026 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Add FastISel support for floating-point operations.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55021 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-20Add FastISel support for several more binary operators.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55020 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19Add code to call FastISel, and a command-line option to enable it.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55015 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19Support unconditional fall-through branches in FastISel.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55014 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19Use the BuildMI overload that sets up a destination registerDan Gohman
instead of the one that doesn't and then adding it manually. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55006 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19Handle the case where target-specific fastisel code doesn't haveDan Gohman
a desired opcode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55005 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-19don't use the result of WriteTypeSymbolic or WriteAsOperand.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54978 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17Rename some GC classes so that their roll will hopefully be clearer.Gordon Henriksen
In particular, Collector was confusing to implementors. Several thought that this compile-time class was the place to implement their runtime GC heap. Of course, it doesn't even exist at runtime. Specifically, the renames are: Collector -> GCStrategy CollectorMetadata -> GCFunctionInfo CollectorModuleMetadata -> GCModuleInfo CollectorRegistry -> GCRegistry Function::getCollector -> getGC (setGC, hasGC, clearGC) Several accessors and nested types have also been renamed to be consistent. These changes should be obvious. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54899 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17Factor GC metadata table assembly generation out of Collector in preparation ↵Gordon Henriksen
for splitting AsmPrinter into its own library. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54881 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17Rework the routines that convert AP[S]Int into a string. Now, instead ofChris Lattner
returning an std::string by value, it fills in a SmallString/SmallVector passed in. This significantly reduces string thrashing in some cases. More specifically, this: - Adds an operator<< and a print method for APInt that allows you to directly send them to an ostream. - Reimplements APInt::toString to be much simpler and more efficient algorithmically in addition to not thrashing strings quite as much. This speeds up llvm-dis on kc++ by 7%, and may also slightly speed up the asmprinter. This also fixes a bug I introduced into the asmwriter in a previous patch w.r.t. alias printing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54873 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-14Make FastISel's constructor protected, and give it a destructor.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54793 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-14Improve support for vector casts in LLVM IR and CodeGen.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54784 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13Fix a bogus srem rule - a negative value srem'd by a power-of-2Dan Gohman
can have a non-negative result; for example, -16%16 is 0. Also, clarify the related comments. This fixes PR2670. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54767 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13Allow SelectionDAG to create EXTRACT_VECTOR_ELT nodes withDan Gohman
non-constant indices. Only a few of the peephole checks require a constant index. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54764 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13Initial checkin of the new "fast" instruction selection support. SeeDan Gohman
the comments in FastISelEmitter.cpp for details on what this is. This is currently experimental and unusable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54751 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13Rename SelectionDAGISel's FastISel to Fast, to begin to makeDan Gohman
room for the new FastISel instruction selection code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54749 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-12Correct the filename in the top-of-file comment.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54688 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-11Take the FrameOffset into account when computing the alignmentDan Gohman
of stack objects. This fixes PR2656. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54646 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-08Add skeleton of simple basic block instruction selector.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54522 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-07Add the remaining fp_round libcalls:Bruno Cardoso Lopes
FPROUND_F80_F32, FPROUND_PPCF128_F32, FPROUND_F80_F64, FPROUND_PPCF128_F64 Support for soften float fp_round operands is added, Mips needs this to round f64->f32. Also added support to soften float FABS result, Mips doesn't support double fabs results while in 'single float only' mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54484 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-07Factor code that finalize PHI nodes, jump tables, etc. out of ↵Evan Cheng
SelectBasicBlock. No functionality changes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54438 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Remove the -disable-correct-folding option, which was ugly and is no longer ↵Owen Anderson
needed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54361 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Fix several const-correctness issues, resolving some -Wcast-qual warnings.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54349 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05This option doesn't need to be a target option. It can be in SDISel instead.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54336 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-04- Fix SelectionDAG to generate correct CFGs.Owen Anderson
- Add a basic machine-level dead block eliminator. These two have to go together, since many other parts of the code generator are unable to handle the unreachable blocks otherwise created. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54333 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-04Fix SDISel lowering of PHI nodes to use ComputeValueVTs.Dan Gohman
This allows it to work correctly on aggregate values. This fixes PR2623. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54331 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-04Fix SDISel lowering of zeroinitializer and undef to use ComputeValueVTs.Dan Gohman
This allows it to work correctly on nested aggregate values. This fixes PR2625. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54330 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-31Add a flag to disable jump table generation (allDale Johannesen
switches use the binary search algorithm) for environments that don't support it. PPC64 JIT is such an environment; turn the flag on for that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54248 91177308-0d34-0410-b5e6-96231b3b80d8