| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 91866
|
|
|
|
| |
llvm-svn: 91863
|
|
|
|
|
|
| |
SDNodes. This time in the load/store and limited-precision code.
llvm-svn: 91860
|
|
|
|
|
|
| |
This fixes an in-place update bug where code inserted at the end of basic blocks may not be covered by existing intervals which were live across the entire block. It is also consistent with the way ranges are specified for live intervals.
llvm-svn: 91859
|
|
|
|
|
|
|
| |
assign the ordering when called. Combine some of the ordering assignments to
keep things simple.
llvm-svn: 91857
|
|
|
|
|
|
| |
orderings to values returned by getValue().
llvm-svn: 91850
|
|
|
|
|
|
| |
shuffle and insert vector.
llvm-svn: 91847
|
|
|
|
| |
llvm-svn: 91846
|
|
|
|
|
|
| |
- Modify the "dump" method to emit the order of an SDNode.
llvm-svn: 91845
|
|
|
|
|
|
| |
a lot of the branching instructions.
llvm-svn: 91838
|
|
|
|
| |
llvm-svn: 91834
|
|
|
|
|
|
|
|
|
|
| |
by allowing backends to override routines that will default
the JIT and Static code generation to an appropriate code model
for the architecture.
Should fix PR 5773.
llvm-svn: 91824
|
|
|
|
| |
llvm-svn: 91764
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 91717
|
|
|
|
|
|
|
|
| |
contains another loop, or an instruction. The loop form is
substantially more efficient on large loops than the typical
code it replaces.
llvm-svn: 91654
|
|
|
|
|
|
|
|
| |
The change in SelectionDAGBuilder is needed to allow using bitcasts to convert
between f64 (the default type for ARM "d" registers) and 64-bit Neon vector
types. Radar 7457110.
llvm-svn: 91649
|
|
|
|
| |
llvm-svn: 91636
|
|
|
|
| |
llvm-svn: 91635
|
|
|
|
|
|
|
|
|
|
| |
non-landing pad basic block as the successor to a block that ends in an
unconditional jump will cause block folding to remove the added block as a
successor. Thus eventually removing it AND the landing pad entirely. Critical
edge splitting is an optimization, so we can safely turn it off when dealing
with landing pads.
llvm-svn: 91634
|
|
|
|
|
|
|
|
| |
$ svn merge -c -91337 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91337 into '.':
U lib/CodeGen/AsmPrinter/DwarfException.cpp
llvm-svn: 91618
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LegalizeDAG.cpp. Unlike the code it replaces, which simply decrements the simple
type by one, getHalfSizedIntegerVT() searches for the smallest simple integer
type that is at least half the size of the type it is called on. This approach
has the advantage that it will continue working if a new value type (such as
i24) is added to MVT.
Also, in preparation for new value types, remove the assertions that
non-power-of-2 8-bit-mutiple types are Extended when legalizing extload and
truncstore operations.
llvm-svn: 91614
|
|
|
|
| |
llvm-svn: 91604
|
|
|
|
|
|
| |
introduced a non-deterministic behavior in the optimizer somewhere.
llvm-svn: 91598
|
|
|
|
| |
llvm-svn: 91584
|
|
|
|
|
|
|
|
| |
Fold (zext (and x, cst)) -> (and (zext x), cst)
DAG combiner likes to optimize expression in the other way so this would end up cause an infinite looping.
llvm-svn: 91574
|
|
|
|
|
|
| |
having it reverted does no good.
llvm-svn: 91560
|
|
|
|
| |
llvm-svn: 91554
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Tail duplication produces lots of identical phi nodes in different basic
blocks. Teach PHIElimination to reuse the join registers when lowering a phi
node that is identical to an already lowered node. This saves virtual
registers, and more importantly it avoids creating copies the the coalescer
doesn't know how to eliminate.
Teach LiveIntervalAnalysis about the phi joins with multiple uses.
This patch significantly reduces code size produced by -pre-regalloc-taildup.
llvm-svn: 91549
|
|
|
|
|
|
|
| |
this", this broke llvm-gcc bootstrap for release builds on
x86_64-apple-darwin10.
llvm-svn: 91533
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in local register allocator. If a reg-reg copy has a phys reg
input and a virt reg output, and this is the last use of the phys
reg, assign the phys reg to the virt reg. If a reg-reg copy has
a phys reg output and we need to reload its spilled input, reload
it directly into the phys reg than passing it through another reg.
Following 76208, there is sometimes no dependency between the def of
a phys reg and its use; this creates a window where that phys reg
can be used for spilling (this is true in linear scan also). This
is bad and needs to be fixed a better way, although 76208 works too
well in practice to be reverted. However, there should normally be
no spilling within inline asm blocks. The patch here goes a long way
towards making this actually be true.
llvm-svn: 91485
|
|
|
|
|
|
| |
enclosing namespace. Caught by clang++.
llvm-svn: 91480
|
|
|
|
| |
llvm-svn: 91479
|
|
|
|
| |
llvm-svn: 91477
|
|
|
|
| |
llvm-svn: 91475
|
|
|
|
| |
llvm-svn: 91440
|
|
|
|
|
|
|
|
| |
isPodLike type trait. This is a generally useful type trait for
more than just DenseMap, and we really care about whether something
acts like a pod, not whether it really is a pod.
llvm-svn: 91421
|
|
|
|
|
|
|
| |
1. Only perform (zext (shl (zext x), y)) -> (shl (zext x), y) when y is a constant. This makes sure it remove at least one zest.
2. If the shift is a left shift, make sure the original shift cannot shift out bits.
llvm-svn: 91399
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
the only use of its source.
llvm-svn: 91390
|
|
|
|
| |
llvm-svn: 91380
|
|
|
|
| |
llvm-svn: 91378
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
$ svn merge -c -91161 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91161 into '.':
U lib/CodeGen/BranchFolding.cpp
U lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91113 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91113 into '.':
G lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91101 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91101 into '.':
U include/llvm/CodeGen/MachineBasicBlock.h
G lib/CodeGen/MachineBasicBlock.cpp
$ svn merge -c -91092 https://llvm.org/svn/llvm-project/llvm/trunk
--- Reverse-merging r91092 into '.':
G include/llvm/CodeGen/MachineBasicBlock.h
G lib/CodeGen/MachineBasicBlock.cpp
llvm-svn: 91376
|
|
|
|
| |
llvm-svn: 91362
|
|
|
|
|
|
| |
Bill for spotting this!
llvm-svn: 91355
|
|
|
|
|
|
| |
but we need it to actually be 4-bytes in the FDE.
llvm-svn: 91337
|
|
|
|
| |
llvm-svn: 91278
|
|
|
|
| |
llvm-svn: 91275
|
|
|
|
| |
llvm-svn: 91274
|