| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 95012
|
|
|
|
|
|
|
|
| |
type is the same as the element type of the vector. EXTRACT_VECTOR_ELT can
be used to extended the width of an integer type. This fixes a bug for
Generic/vector-casts.ll on a ppc750.
llvm-svn: 94990
|
|
|
|
| |
llvm-svn: 94805
|
|
|
|
|
|
|
| |
"visit*" method is called, take the newly created nodes, walk them in a DFS
fashion, and if they don't have an ordering set, then give it one.
llvm-svn: 94757
|
|
|
|
|
|
|
|
|
| |
the '-pre-RA-sched' flag. It actually makes more sense to do it this way. Also,
keep track of the SDNode ordering by default. Eventually, we would like to make
this ordering a way to break a "tie" in the scheduler. However, doing that now
breaks the "CodeGen/X86/abi-isel.ll" test for 32-bit Linux.
llvm-svn: 94308
|
|
|
|
|
|
|
| |
points. This will help us find future problems like the one
described in PR6019.
llvm-svn: 94019
|
|
|
|
| |
llvm-svn: 93960
|
|
|
|
|
|
| |
understanding CannotYTetSelect and other errors easier.
llvm-svn: 93901
|
|
|
|
|
|
|
|
|
|
|
| |
print/dumpWithDepth allows one to dump a DAG up to N levels deep.
dump/printWithFullDepth prints the whole DAG, subject to a depth limit
on 100 in the default case (to prevent infinite recursion).
Have CannotYetSelect to a dumpWithFullDepth so it is clearer exactly
what the non-matching DAG looks like.
llvm-svn: 93538
|
|
|
|
|
|
|
|
|
|
| |
really does need to be a vector type, because
TargetLowering::getOperationAction for SIGN_EXTEND_INREG uses that type,
and it needs to be able to distinguish between vectors and scalars.
Also, fix some more issues with legalization of vector casts.
llvm-svn: 93043
|
|
|
|
|
|
|
|
|
|
| |
(OP (trunc x), (trunc y)) -> (trunc (OP x, y))
Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel.
This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places.
llvm-svn: 92849
|
|
|
|
| |
llvm-svn: 92569
|
|
|
|
|
|
|
|
| |
return partial registers. This affected the back-end lowering code some.
Also patch up some places I missed before in the "get" functions.
llvm-svn: 91880
|
|
|
|
|
|
| |
- Modify the "dump" method to emit the order of an SDNode.
llvm-svn: 91845
|
|
|
|
| |
llvm-svn: 91834
|
|
|
|
| |
llvm-svn: 91744
|
|
|
|
|
|
|
|
|
|
|
| |
- Move DisableScheduling flag into TargetOption.h
- Move SDNodeOrdering into its own header file. Give it a minimal interface that
doesn't conflate construction with storage.
- Move assigning the ordering into the SelectionDAGBuilder.
This isn't used yet, so there should be no functional changes.
llvm-svn: 91727
|
|
|
|
|
|
| |
having it reverted does no good.
llvm-svn: 91560
|
|
|
|
|
|
|
| |
this", this broke llvm-gcc bootstrap for release builds on
x86_64-apple-darwin10.
llvm-svn: 91533
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
stuff isn't used just yet.
We want to model the GCC `-fno-schedule-insns' and `-fno-schedule-insns2'
flags. The hypothesis is that the people who use these flags know what they are
doing, and have hand-optimized the C code to reduce latencies and other
conflicts.
The idea behind our scheme to turn off scheduling is to create a map "on the
side" during DAG generation. It will order the nodes by how they appeared in the
code. This map is then used during scheduling to get the ordering.
llvm-svn: 91392
|
|
|
|
| |
llvm-svn: 91362
|
|
|
|
|
|
| |
results.
llvm-svn: 91233
|
|
|
|
| |
llvm-svn: 91158
|
|
|
|
|
|
| |
isl lowering code.
llvm-svn: 90925
|
|
|
|
|
|
| |
primary used by selectdag passes.
llvm-svn: 90922
|
|
|
|
| |
llvm-svn: 90919
|
|
|
|
| |
llvm-svn: 90918
|
|
|
|
| |
llvm-svn: 90917
|
|
|
|
|
|
|
|
|
| |
vectors for
divide/remainder since these operations can trap by unroll them and adding undefs
for the resulting vector.
llvm-svn: 90108
|
|
|
|
|
|
|
|
| |
Note that "hasDotLocAndDotFile"-style debug info was already broken;
people wanting this functionality should implement it in the
AsmPrinter/DwarfWriter code.
llvm-svn: 89711
|
|
|
|
| |
llvm-svn: 89536
|
|
|
|
|
|
| |
and support for blockaddresses in x86-32 PIC mode.
llvm-svn: 89506
|
|
|
|
|
|
| |
PPC is such a target; make it work.
llvm-svn: 87060
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
slots. The AsmPrinter will use this information to determine whether to
print a spill/reload comment.
Remove default argument values. It's too easy to pass a wrong argument
value when multiple arguments have default values. Make everything
explicit to trap bugs early.
Update all targets to adhere to the new interfaces..
llvm-svn: 87022
|
|
|
|
| |
llvm-svn: 86340
|
|
|
|
| |
llvm-svn: 86151
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Be consistent when referring to MachineBasicBlocks: BB#0.
- Be consistent when referring to virtual registers: %reg1024.
- Be consistent when referring to unknown physical registers: %physreg10.
- Be consistent when referring to known physical registers: %RAX
- Be consistent when referring to register 0: %reg0
- Be consistent when printing alignments: align=16
- Print jump table contents.
- Don't print host addresses, in general.
- and various other cleanups.
llvm-svn: 85682
|
|
|
|
| |
llvm-svn: 85556
|
|
|
|
| |
llvm-svn: 85536
|
|
|
|
|
|
|
| |
recursive to avoid consuming extraordinary amounts of stack space
when processing tall graphs.
llvm-svn: 85369
|
|
|
|
| |
llvm-svn: 84806
|
|
|
|
|
|
|
|
|
|
|
| |
stack slots and giving them different PseudoSourceValue's did not fix the
problem of post-alloc scheduling miscompiling llvm itself.
- Apply Dan's conservative workaround by assuming any non fixed stack slots can
alias other memory locations. This means a load from spill slot #1 cannot
move above a store of spill slot #2.
- Enable post-alloc scheduling for x86 at optimization leverl Default and above.
llvm-svn: 84424
|
|
|
|
|
|
| |
PseudoSourceValue.
llvm-svn: 84411
|
|
|
|
| |
llvm-svn: 84321
|
|
|
|
|
|
| |
necessarily fixed. Only those will negative frame indices are "fixed."
llvm-svn: 84315
|
|
|
|
| |
llvm-svn: 84193
|
|
|
|
|
|
|
|
|
|
|
|
| |
truncating an SDValue (depending on whether the target
type is bigger or smaller than the value's type); or zero
extending or truncating it. Use it in a few places (this
seems to be a popular operation, but I only modified cases
of it in SelectionDAGBuild). In particular, the eh_selector
lowering was doing this wrong due to a repeated rather than
inverted test, fixed with this change.
llvm-svn: 84027
|
|
|
|
|
|
|
| |
since it won't do any folding. This will help avoid some inconvenient
casting.
llvm-svn: 83698
|
|
|
|
|
|
| |
similar to getTargetExtractSubreg.
llvm-svn: 83564
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
This eliminates MachineInstr's std::list member and allows the data to be
created by isel and live for the remainder of codegen, avoiding a lot of
copying and unnecessary translation. This also shrinks MemSDNode.
- Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
fields for MachineMemOperands.
- Change MemSDNode to have a MachineMemOperand member instead of its own
fields with the same information. This introduces some redundancy, but
it's more consistent with what MachineInstr will eventually want.
- Ignore alignment when searching for redundant loads for CSE, but remember
the greatest alignment.
Target-specific code which previously used MemOperandSDNodes with generic
SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
so that the SelectionDAG framework knows that MachineMemOperand information
is available.
llvm-svn: 82794
|