| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 139537
|
| |
|
|
|
|
|
|
| |
No tests; these changes aren't really interesting in the sense that the logic is the same for volatile and atomic.
I believe this completes all of the changes necessary for the optimizer to handle loads and stores correctly. I'm going to try and come up with some additional testing, though.
llvm-svn: 139533
|
| |
|
|
|
|
| |
a tBfar now. Fixes nightly test failures on armv6 Thumb. <rdar://problem/10110404>
llvm-svn: 139531
|
| |
|
|
| |
llvm-svn: 139530
|
| |
|
|
|
|
|
|
|
|
|
|
| |
However with this fix it does now.
Basically the operand order for the x86 target specific node
is not the same as the instruction, but since the intrinsic need that
specific order at the instruction definition, just change the order
during legalization. Also, there were some wrong invertions of condition
codes, such as GE => LE, GT => LT, fix that too. Fix PR10907.
llvm-svn: 139528
|
| |
|
|
| |
llvm-svn: 139527
|
| |
|
|
| |
llvm-svn: 139526
|
| |
|
|
| |
llvm-svn: 139525
|
| |
|
|
|
|
| |
pre-indexed load decoding this uncovered.
llvm-svn: 139522
|
| |
|
|
|
|
| |
default change.
llvm-svn: 139517
|
| |
|
|
|
|
| |
using DIBuilder.
llvm-svn: 139515
|
| |
|
|
| |
llvm-svn: 139503
|
| |
|
|
|
|
|
| |
It has been enabled by default for a while, it was only there to allow
performance comparisons.
llvm-svn: 139501
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SplitKit always computes a complement live range to cover the places
where the original live range was live, but no explicit region has been
allocated.
Currently, the complement live range is created to be as small as
possible - it never overlaps any of the regions. This minimizes
register pressure, but if the complement is going to be spilled anyway,
that is not very important. The spiller will eliminate redundant
spills, and hoist others by making the spill slot live range overlap
some of the regions created by splitting. Stack slots are cheap.
This patch adds the interface to enable spill modes in SplitKit. In
spill mode, SplitKit will assume that the complement is going to spill,
so it will allow it to overlap regions in order to avoid back-copies.
By doing some of the spiller's work early, the complement live range
becomes simpler. In some cases, it can become much simpler because no
extra PHI-defs are required. This will speed up both splitting and
spilling.
This is only the interface to enable spill modes, no implementation yet.
llvm-svn: 139500
|
| |
|
|
| |
llvm-svn: 139498
|
| |
|
|
|
|
| |
This information is required if we want LDWCP to be hoisted out of loops.
llvm-svn: 139495
|
| |
|
|
| |
llvm-svn: 139494
|
| |
|
|
| |
llvm-svn: 139491
|
| |
|
|
|
|
| |
MOVUPS/MOVUPD/MOVAPS/MOVAPD/MOVSS/MOVSD and their VEX equivalents. Fixes PR10877.
llvm-svn: 139486
|
| |
|
|
|
|
| |
ADD/SUB/XOR/OR/AND/SBB/ADC/CMP/MOV.
llvm-svn: 139485
|
| |
|
|
|
|
|
| |
Undo the changes from r139285 which added custom lowering to vselect.
Add tablegen lowering for vselect.
llvm-svn: 139479
|
| |
|
|
|
|
| |
anyway. Make that explicit, and un-XFAIL the testcase.
llvm-svn: 139458
|
| |
|
|
|
|
|
|
|
|
|
|
| |
lib/ExecutionEngine/MCJIT/MCJIT.cpp from:
assert("error");
to:
assert(0 && "error");
llvm-svn: 139456
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
assert("not implemented for target shuffle node");
to:
assert(0 && "not implemented for target shuffle node");
This causes a test failure in CodeGen/X86/palignr.ll which has
been marked as XFAIL for the time being.
Test failure filed at PR10901.
llvm-svn: 139454
|
| |
|
|
|
|
|
|
|
|
|
|
| |
better.
Don't immediately give up when an add operation can't be trivially
sign/zero-extended within a loop. If it has NSW/NUW flags, generate a
new expression with sign extended (non-recurrent) operand. As before,
if SCEV says that all sign extends are loop invariant, then we can
widen the operation.
llvm-svn: 139453
|
| |
|
|
|
|
|
|
|
|
| |
such.
I'm doing this now for completeness because I can't think of/remember
any reason that it was left out. I'm not sure it will help anything,
but if we don't do it we need to explain why in comments.
llvm-svn: 139450
|
| |
|
|
|
|
|
|
|
|
| |
assert("error");
to:
assert(0 && "error");
llvm-svn: 139449
|
| |
|
|
|
|
|
| |
Some aliases for MOV(register) also to keep existing T1 tests happy when
run in thumbv7 mode.
llvm-svn: 139440
|
| |
|
|
| |
llvm-svn: 139432
|
| |
|
|
| |
llvm-svn: 139431
|
| |
|
|
|
|
| |
manually create ARM::tB.
llvm-svn: 139429
|
| |
|
|
| |
llvm-svn: 139422
|
| |
|
|
| |
llvm-svn: 139421
|
| |
|
|
| |
llvm-svn: 139420
|
| |
|
|
| |
llvm-svn: 139419
|
| |
|
|
|
|
| |
have a predicate operand, unlike conditional branches.
llvm-svn: 139415
|
| |
|
|
| |
llvm-svn: 139412
|
| |
|
|
|
|
| |
same type. Teach DAGCombiner::visitINSERT_VECTOR_ELT not to make invalid BUILD_VECTORs. Fixes PR10897.
llvm-svn: 139407
|
| |
|
|
| |
llvm-svn: 139405
|
| |
|
|
|
|
| |
implementation to have tablegen match the instruction by the node type
llvm-svn: 139400
|
| |
|
|
| |
llvm-svn: 139399
|
| |
|
|
|
|
| |
the instruction.
llvm-svn: 139398
|
| |
|
|
| |
llvm-svn: 139389
|
| |
|
|
| |
llvm-svn: 139383
|
| |
|
|
| |
llvm-svn: 139381
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In some cases such as interpreters using indirectbr, the CFG can be very
complicated, and live range splitting may be forced to insert a large
number of phi-defs. When that happens, traceSiblingValue can spend a
lot of time zipping around in the CFG looking for defs and reloads.
This patch causes more information to be cached in SibValues, and the
cached values are used to terminate searches early. This speeds up
spilling by 20x in one interpreter test case. For more typical code,
this is just a 10% speedup of spilling.
The previous version had bugs that caused miscompilations. They have
been fixed.
llvm-svn: 139378
|
| |
|
|
| |
llvm-svn: 139375
|
| |
|
|
|
|
| |
blank. Also fixed scas, and cmps to always print size suffix in Intel syntax since its abiguous without arguments. Fixes PR10875.
llvm-svn: 139353
|
| |
|
|
|
|
|
|
|
| |
removing support for Mips1 and Mips2.
This change and the ones that follow have been discussed with and approved by
Bruno.
llvm-svn: 139344
|
| |
|
|
| |
llvm-svn: 139343
|