| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
hierarchy) that were used to handle debug info.
llvm-svn: 62199
|
| |
|
|
| |
llvm-svn: 62190
|
| |
|
|
| |
llvm-svn: 62184
|
| |
|
|
|
|
|
|
|
|
|
| |
scheduling dependencies. Add assertion checks to help catch
this.
It appears the Mips target defaults to list-td, and it has a
regression test that uses a physreg dependence. Such code was
liable to be miscompiled, and now evokes an assertion failure.
llvm-svn: 62177
|
| |
|
|
|
|
|
|
| |
via two paths, process it once not twice, d'oh!
Analysis, testcase and original patch thanks to
Mon Ping Wang.
llvm-svn: 62169
|
| |
|
|
|
|
| |
was not being cleaned by ExpungeNode.
llvm-svn: 62167
|
| |
|
|
| |
llvm-svn: 62166
|
| |
|
|
| |
llvm-svn: 62127
|
| |
|
|
|
|
| |
suggested by Chris.
llvm-svn: 62099
|
| |
|
|
|
|
|
|
| |
register to a virtual register unless it requires an expensive cross class copy. That means we are only treating "expensive to copy" register dependency as physical register dependency.
Also future proof the scheduler to handle "normal" physical register dependencies. The code is not exercised yet.
llvm-svn: 62074
|
| |
|
|
|
|
| |
functionality change.
llvm-svn: 62036
|
| |
|
|
| |
llvm-svn: 62015
|
| |
|
|
| |
llvm-svn: 62005
|
| |
|
|
| |
llvm-svn: 61999
|
| |
|
|
| |
llvm-svn: 61991
|
| |
|
|
| |
llvm-svn: 61891
|
| |
|
|
|
|
|
|
| |
aggregate types. Don't increment the current index after reaching
the end of a struct, as it will already be pointing at
one-past-the end. This fixes PR3288.
llvm-svn: 61828
|
| |
|
|
|
|
| |
argument. This doesn't affect current functionality.
llvm-svn: 61779
|
| |
|
|
|
|
|
|
|
|
|
|
| |
AddPseudoTwoAddrDeps. This lets the scheduling infrastructure
avoid recalculating node heights. In very large testcases this
was a major bottleneck. Thanks to Roman Levenstein for finding
this!
As a side effect, fold-pcmpeqd-0.ll is now scheduled better
and it no longer requires spilling on x86-32.
llvm-svn: 61778
|
| |
|
|
|
|
|
| |
own OpActionsCapacity magic number; it can just use ISD::BUILTIN_OP_END,
as long as it takes care to round up when needed.
llvm-svn: 61733
|
| |
|
|
| |
llvm-svn: 61715
|
| |
|
|
| |
llvm-svn: 61707
|
| |
|
|
| |
llvm-svn: 61613
|
| |
|
|
| |
llvm-svn: 61612
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
instructions to avoid copies, because TwoAddressInstructionPass
also does this optimization. The scheduler's version didn't
account for live-out values, which resulted in spurious commutes
and missed opportunities.
Now, TwoAddressInstructionPass handles all the opportunities,
instead of just those that the scheduler missed. The result is
usually the same, though there are occasional trivial differences
resulting from the avoidance of spurious commutes.
llvm-svn: 61611
|
| |
|
|
|
|
|
| |
and BRCOND conditions. Reorder a few methods while
there.
llvm-svn: 61547
|
| |
|
|
| |
llvm-svn: 61545
|
| |
|
|
|
|
|
|
|
|
| |
promote from i1 all the way up to the canonical SetCC type.
In order to discover an appropriate type to use, pass
MVT::Other to getSetCCResultType. In order to be able to
do this, change getSetCCResultType to take a type as an
argument, not a value (this is also more logical).
llvm-svn: 61542
|
| |
|
|
| |
llvm-svn: 61463
|
| |
|
|
| |
llvm-svn: 61405
|
| |
|
|
| |
llvm-svn: 61401
|
| |
|
|
| |
llvm-svn: 61398
|
| |
|
|
| |
llvm-svn: 61397
|
| |
|
|
| |
llvm-svn: 61396
|
| |
|
|
| |
llvm-svn: 61395
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This removes all the _8, _16, _32, and _64 opcodes and replaces each
group with an unsuffixed opcode. The MemoryVT field of the AtomicSDNode
is now used to carry the size information. In tablegen, the size-specific
opcodes are replaced by size-independent opcodes that utilize the
ability to compose them with predicates.
This shrinks the per-opcode tables and makes the code that handles
atomics much more concise.
llvm-svn: 61389
|
| |
|
|
|
|
| |
code in ScheduleDAGSDNodes' BuildSchedGraph into separate functions.
llvm-svn: 61376
|
| |
|
|
| |
llvm-svn: 61372
|
| |
|
|
| |
llvm-svn: 61361
|
| |
|
|
| |
llvm-svn: 61209
|
| |
|
|
| |
llvm-svn: 61129
|
| |
|
|
|
|
|
|
|
| |
temporary workaround for an obscure bug. When node cloning is
used, it is possible that more SUnits will be created, and
if the SUnits std::vector has to reallocate, it will
invalidate all the graph edges.
llvm-svn: 61122
|
| |
|
|
|
|
|
|
|
| |
DAGTypeLegalizer::ExpandShiftWithKnownAmountBit.
In terms of restoring the optimization, the best fix here isn't
obvious... any ideas?
llvm-svn: 61119
|
| |
|
|
|
|
| |
are there under ADD, this one was missing.
llvm-svn: 61107
|
| |
|
|
|
|
| |
different offsets within the same stack slot.
llvm-svn: 61093
|
| |
|
|
|
|
| |
matching input operand with incompatible type (i.e. either one is a floating point and the other is an integer or the sizes of the types differ). SelectionDAGBuild will catch these and exit with an error.
llvm-svn: 61092
|
| |
|
|
|
|
|
| |
latency computation code that is no longer needed with the
new method for handling latencies.
llvm-svn: 61074
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
computation code. Also, avoid adding output-depenency edges when both
defs are dead, which frequently happens with EFLAGS defs.
Compute Depth and Height lazily, and always in terms of edge latency
values. For the schedulers that don't care about latency, edge latencies
are set to 1.
Eliminate Cycle and CycleBound, and LatencyPriorityQueue's Latencies array.
These are all subsumed by the Depth and Height fields.
llvm-svn: 61073
|
| |
|
|
|
|
| |
currently used by anything.
llvm-svn: 61066
|
| |
|
|
| |
llvm-svn: 61050
|