| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
rather than an int. Thankfully, this only causes LLVM to miss optimizations, not
generate incorrect code.
This just fixes the zext at the return. We still insert an i32 ZextAssert when
reading a function's arguments, but it is followed by a truncate and another i8
ZextAssert so it is not optimized.
llvm-svn: 127766
|
|
|
|
| |
llvm-svn: 127764
|
|
|
|
|
|
| |
zext(undef) = 0, because the top bits will be zero.
llvm-svn: 127649
|
|
|
|
| |
llvm-svn: 127600
|
|
|
|
| |
llvm-svn: 127598
|
|
|
|
| |
llvm-svn: 127496
|
|
|
|
|
|
| |
without being touched, so no longer needs to pollute the hidden-help text.
llvm-svn: 127468
|
|
|
|
|
|
| |
the load is indexed. rdar://9117613.
llvm-svn: 127440
|
|
|
|
| |
llvm-svn: 127380
|
|
|
|
| |
llvm-svn: 127376
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
flexible.
If it returns a register class that's different from the input, then that's the
register class used for cross-register class copies.
If it returns a register class that's the same as the input, then no cross-
register class copies are needed (normal copies would do).
If it returns null, then it's not at all possible to copy registers of the
specified register class.
llvm-svn: 127368
|
|
|
|
|
|
| |
This helps cases like 2008-07-19-movups-spills.ll, but doesn't have an obvious impact on benchmarks
llvm-svn: 127347
|
|
|
|
| |
llvm-svn: 127335
|
|
|
|
|
|
|
|
|
|
|
|
| |
with this before since none of the register tracking or nightly tests
had unschedulable nodes.
This should probably be refixed with a special default Node that just
returns some "don't touch me" values.
Fixes PR9427
llvm-svn: 127263
|
|
|
|
|
|
|
| |
This change uses the MaxReorderWindow for both height and depth, which
tends to limit the negative effects of high register pressure.
llvm-svn: 127203
|
|
|
|
| |
llvm-svn: 127175
|
|
|
|
|
|
| |
type.
llvm-svn: 127163
|
|
|
|
| |
llvm-svn: 127131
|
|
|
|
|
|
| |
current implementation of -pre-RA-sched=list-ilp.
llvm-svn: 127113
|
|
|
|
| |
llvm-svn: 127075
|
|
|
|
| |
llvm-svn: 127071
|
|
|
|
| |
llvm-svn: 127068
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
regs. This is the only change in this checkin that may affects the
default scheduler. With better register tracking and heuristics, it
doesn't make sense to artificially lower the register limit so much.
Added -sched-high-latency-cycles and X86InstrInfo::isHighLatencyDef to
give the scheduler a way to account for div and sqrt on targets that
don't have an itinerary. It is currently defaults to 10 (the actual
number doesn't matter much), but only takes effect on non-default
schedulers: list-hybrid and list-ilp.
Added several heuristics that can be individually disabled for the
non-default sched=list-ilp mode. This helps us determine how much
better we can do on a given benchmark than the default
scheduler. Certain compute intensive loops run much faster in this
mode with the right set of heuristics, and it doesn't seem to have
much negative impact elsewhere. Not all of the heuristics are needed,
but we still need to experiment to decide which should be disabled by
default for sched=list-ilp.
llvm-svn: 127067
|
|
|
|
|
|
|
|
|
|
|
| |
correct
type after type legalization has completed. Before then it may simply not be big
enough to hold the shift amount, particularly on x86 which uses a very small type
for shifts (this issue broke stuff in the past which is why LegalizeTypes carefully
uses a large type for shift amounts).
llvm-svn: 127000
|
|
|
|
|
|
|
|
| |
Fix the PendingQueue, then disable it because it's not required for
the current schedulers' heuristics.
Fix the logic for the unused list-ilp scheduler.
llvm-svn: 126981
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
it. It's been assumed up til now that it would be in its immediate
successor. However, this isn't necessarily the case. It could be in one of its
successor's successors.
Modify the code to more thoroughly check for an 'eh.selector' call in
successors. It only looks at a successor if we get there as a result of an
unconditional branch.
Testcase ObjC/exceptions-4.m in r126968.
llvm-svn: 126969
|
|
|
|
| |
llvm-svn: 126964
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
David Greene changed CannotYetSelect() to print the full DAG including multiple
copies of operands reached through different paths in the DAG. Unfortunately
this blows up exponentially in some cases. The depth limit of 100 is way too
high to prevent this -- I'm seeing a message string of 150MB with a depth of
only 40 in one particularly bad case, even though the DAG has less than 200
nodes. Part of the problem is that the printing code is following chain
operands, so if you fail to select an operation with a chain, the printer will
follow all the chained operations back to the entry node.
llvm-svn: 126899
|
|
|
|
|
|
| |
Radar 9056407.
llvm-svn: 126864
|
|
|
|
|
|
| |
in alphabetical order.
llvm-svn: 126745
|
|
|
|
| |
llvm-svn: 126733
|
|
|
|
| |
llvm-svn: 126731
|
|
|
|
| |
llvm-svn: 126684
|
|
|
|
| |
llvm-svn: 126683
|
|
|
|
| |
llvm-svn: 126574
|
|
|
|
| |
llvm-svn: 126565
|
|
|
|
|
|
| |
This follows the interface of getNodeAttributes.
llvm-svn: 126562
|
|
|
|
|
|
|
|
|
|
|
| |
legalized code for large integer arithmetic.
1. Inform users of ADDEs with two 0 operands that it never sets carry
2. Fold other ADDs or ADDCs into the ADDE if possible
It would be neat if we could do the same thing for SETCC+ADD eventually, but we can't do that in target independent code.
llvm-svn: 126557
|
|
|
|
|
|
| |
the type of the LHS.
llvm-svn: 126518
|
|
|
|
| |
llvm-svn: 126471
|
|
|
|
|
|
|
|
| |
is possible to do better if the high bit is set in either KnownZero/KnownOne, but
in practice NumSignBits is always 1 when we are zero extending because nothing
is known about that register.
llvm-svn: 126465
|
|
|
|
|
|
| |
actually larger.
llvm-svn: 126464
|
|
|
|
|
|
|
|
|
|
| |
Limit the folding of any_ext and sext into the load operation to scalars.
Limit the active-bits trunc optimization to scalars.
Document vector trunc and vector sext in LangRef.
Similar to commit 126080 (for enabling zext).
llvm-svn: 126424
|
|
|
|
|
|
|
| |
registers at phis. This enables us to eliminate a lot of pointless zexts during
the DAGCombine phase. This fixes <rdar://problem/8760114>.
llvm-svn: 126380
|
|
|
|
| |
llvm-svn: 126379
|
|
|
|
|
|
| |
a block is visited before all of its predecessors.
llvm-svn: 126378
|
|
|
|
| |
llvm-svn: 126377
|
|
|
|
|
|
| |
and make the actual map private.
llvm-svn: 126376
|
|
|
|
|
|
| |
allows for the information propagated across basic blocks to be merged at phis.
llvm-svn: 126375
|
|
|
|
| |
llvm-svn: 126185
|