aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen
AgeCommit message (Collapse)Author
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-14Remove more uses of std::set.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54787 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-14Speed up addRegisterDead by adding more fast checks before performing the ↵Owen Anderson
expensive subregister query, and by increasing the size of the subregister hashtable so that there are fewer collisions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54781 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-14Use empty() instead of begin() == end().Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54780 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13Get rid of a use of std::map.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54770 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-13Expunge the last uses of std::map from LiveIntervals.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54766 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13Move r2iMap_ over to DenseMap from std::map.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54765 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-13Make the allocation of LiveIntervals explicit, rather than holding them in ↵Owen Anderson
the r2iMap_ by value. This will prevent references to them from being invalidated if the map is changed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54763 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-13Get rid of unused variable.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54742 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-131) Merge entire live intervals instead of parts of them.Owen Anderson
2) Conditionalize temporary insertion if we don't need it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54741 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-09Fix some typos. Apparently I think C needs a power-of operator.Gordon Henriksen
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54574 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-08Have IRBuilder take a template argument on whether or not to preserveEric Christopher
names. This can save a lot of allocations if you aren't going to be looking at the output. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54546 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-08Handle visibility printing with all generality. Remove bunch of duplicate code.Anton Korobeynikov
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54540 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-08Reduce the entries in a phi before testing it for deadness, because removing ↵Owen Anderson
the entries might make it dead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54535 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-08Don't crash printing the asm for a ConstantExpr PtrToInt just because the intNick Lewycky
is narrower than the pointer. This testcase emits: .byte (((17) - 16) & 255) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54517 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-07Do a dominator walk when scheduling copies, rather than a DFS on the CFG. ↵Owen Anderson
Also, fix a few problems when creating live intervals for temporaries created by phi elimination. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54483 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-07Re-enable elimination of unnecessary SUBREG_TO_REG instructions inDan Gohman
LowerSubregs, and fix an x86-64 isel bug that this exposed. SUBREG_TO_REG for x86-64 implicit zero extension is only safe for isel to generate when the source is known to always have zeros in the high 32 bits. The EXTRACT_SUBREG instruction does not clear the high 32 bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54444 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-06SDISel's constant branch folding can fold away self-loops, which doesn't ↵Owen Anderson
result in any dead blocks, but rather an incorrect phi input. Add code to UnreachableMachineBlockElim to get rid of these entries. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54432 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06Correct handle cases where two phis are coalesced together, and correct ↵Owen Anderson
break up the case where two different phis want to coalesce with the same vreg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54426 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06Oops, didn't mean to commit this.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54425 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06We don't need to try to coalesce input vregs that are the same as the output ↵Owen Anderson
vreg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54422 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06Only trim a live interval if the register is not used after the PHI node.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54421 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06Only remap each VNInfo once when doing renumbering.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54420 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Fix breakage on ARM/2008-04-10-ScavengerAssert.ll.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54378 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Fix PR2596: out of bound reference.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54375 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Correctly handle replacement and removal of PHIs with one incoming register.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54374 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Oops, we were already checking for dead phis. Handle this the proper way, then.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54371 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05We don't need to update live intervals for dead PHIs.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54369 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-05Remove #if 0.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54347 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Fix PR2568: Fix bug that cause redudant kill marker after its live interval ↵Evan Cheng
has been extended due to coalescing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54346 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-05Remove unneeded iteration. Thanks to Dan for the feedback.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54337 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
2008-07-31Improve dagcombining for sext-loads and sext-in-reg nodes.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54239 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-30Move SelectionDAG::viewGraph() out of line; as an inline functionDan Gohman
it isn't always visible to gdb. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54228 91177308-0d34-0410-b5e6-96231b3b80d8