| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
Fixes PR27241.
Differential Revision: http://reviews.llvm.org/D19688
llvm-svn: 268227
|
|
|
|
|
|
| |
It will be used in lld.
llvm-svn: 268226
|
|
|
|
|
|
|
|
| |
Only add operands for GRs to the LMG.
Reviewed by Ulrich Weigand.
llvm-svn: 268216
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Marking implicit CC defs as dead everywhere except when CC is actually
defined and used explicitly, is important since the post-ra scheduler
will otherwise insert edges between instructions unnecessarily.
Also temporarily disable LA(Y)-> AGSI optimization in
foldMemoryOperandImpl(), since this inroduces a def of the CC reg,
which is illegal unless it is known to be dead.
Reviewed by Ulrich Weigand.
llvm-svn: 268215
|
|
|
|
|
|
|
|
| |
wrong immediate predicate check was being used for 64-bit instructions with 8-bit immediates.
This didn't cause a bug because the order of the patterns ensured that the 64-bit instructions with 32-bit immediates were selected first.
llvm-svn: 268212
|
|
|
|
|
|
| |
rather suboptimal.
llvm-svn: 268211
|
|
|
|
|
|
| |
to optimize table size. Shaves about 12K off the X86 matcher table.
llvm-svn: 268209
|
|
|
|
|
|
| |
accept UNDEF elements.
llvm-svn: 268206
|
|
|
|
|
|
| |
UNDEF elements.
llvm-svn: 268204
|
|
|
|
|
|
| |
UNDEF elements.
llvm-svn: 268202
|
|
|
|
|
|
| |
there fix the execution domain for VPACKSSDW/VPACKUSDW.
llvm-svn: 268200
|
|
|
|
|
|
| |
shufflevector.
llvm-svn: 268199
|
|
|
|
| |
llvm-svn: 268198
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19775
llvm-svn: 268195
|
|
|
|
|
|
|
|
| |
implementation take a scalar register and generate a vector without COPY_TO_REGCLASS (turn it into a VR128 register ) .The issue is that during register allocation we may spill a scalar value using 128-bit loads and stores, wasting cache bandwidth.
Differential Revision: http://reviews.llvm.org/D19579
llvm-svn: 268190
|
|
|
|
|
|
| |
VLX and BWI are supported.
llvm-svn: 268189
|
|
|
|
|
|
| |
and VPMADDUBSW/VPMADDWD.
llvm-svn: 268188
|
|
|
|
|
|
| |
marked as requiring VLX.
llvm-svn: 268186
|
|
|
|
|
|
| |
the output file.
llvm-svn: 268184
|
|
|
|
|
|
| |
with an AddedComplexity that made this unreachable.
llvm-svn: 268183
|
|
|
|
|
|
| |
the output file.
llvm-svn: 268181
|
|
|
|
| |
llvm-svn: 268180
|
|
|
|
|
|
| |
the same thing but vector_extract is deprecated. NFC
llvm-svn: 268179
|
|
|
|
|
|
|
|
|
|
|
| |
There are currently some bugs in tree around SCEV caching an incorrect
loop disposition. Printing out loop dispositions will let us write
whitebox tests as those are fixed.
The dispositions are printed as a list in "inside out" order,
i.e. innermost loop first.
llvm-svn: 268177
|
|
|
|
| |
llvm-svn: 268176
|
|
|
|
| |
llvm-svn: 268174
|
|
|
|
|
|
|
| |
The earlier version of the resolver code did not save NEON state, so it would
have broken any callees that used floating point.
llvm-svn: 268173
|
|
|
|
|
|
|
| |
Convert to using some range based loops, avoid unnecessary variables for
unchecked casts. NFC.
llvm-svn: 268165
|
|
|
|
| |
llvm-svn: 268164
|
|
|
|
| |
llvm-svn: 268163
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SystemZ on Linux currently has 53-bit address space. In theory, the hardware
could support a full 64-bit address space, but that's not supported due to
kernel limitations (it'd require 5-level page tables), and there are no plans
for that. The default process layout stays within first 4TB of address space
(to avoid creating 4-level page tables), so any offset >= (1 << 42) is fine.
Let's use 1 << 52 here, ie. exactly half the address space.
I've originally used 7 << 50 (uses top 1/8th of the address space), but ASan
runtime assumes there's some space after the shadow area. While this is
fixable, it's simpler to avoid the issue entirely.
Also, I've originally wanted to have the shadow aligned to 1/8th the address
space, so that we can use OR like X86 to assemble the offset. I no longer
think it's a good idea, since using ADD enables us to load the constant just
once and use it with register + register indexed addressing.
Differential Revision: http://reviews.llvm.org/D19650
llvm-svn: 268161
|
|
|
|
|
|
|
|
| |
elements. NFCI.
Make use of Constant::getAggregateElement instead of checking constant types - first step towards adding support for UNDEF mask elements.
llvm-svn: 268158
|
|
|
|
|
|
| |
This was supposed to be part of r268143.
llvm-svn: 268154
|
|
|
|
|
|
|
|
|
|
|
| |
If, in between the splat and the load (which does an implicit splat), there is
a read of the splat register, then that register must have another earlier
definition. In that case, we can't replace the load's destination register with
the splat's destination register.
Unfortunately, I don't have a small or non-fragile test case.
llvm-svn: 268152
|
|
|
|
| |
llvm-svn: 268150
|
|
|
|
|
|
|
|
|
|
| |
If a guard call being lowered by LowerGuardIntrinsics has the
`!make.implicit` metadata attached, then reattach the metadata to the
branch in the resulting expanded form of the intrinsic. This allows us
to implement null checks as guards and still get the benefit of implicit
null checks.
llvm-svn: 268148
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
support multiple induction variables
This patch enable loop reroll for the following case:
for(int i=0; i<N; i += 2) {
S += *a++;
S += *a++;
};
Differential Revision: http://reviews.llvm.org/D16550
llvm-svn: 268147
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This includes a hazard recognizer implementation to replace some of
the hazard handling we had during frame index elimination.
Reviewers: arsenm
Subscribers: qcolombet, arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D18602
llvm-svn: 268143
|
|
|
|
| |
llvm-svn: 268142
|
|
|
|
|
|
| |
Makes the new method to set data needed by debug dump.
llvm-svn: 268130
|
|
|
|
|
|
|
|
|
| |
This moves some logic added to EarlyCSE in rL268120 into
`llvm::isInstructionTriviallyDead`. Adds a test case for DCE to
demonstrate that passes other than EarlyCSE can now pick up on the new
information.
llvm-svn: 268126
|
|
|
|
| |
llvm-svn: 268122
|
|
|
|
|
|
| |
Fix a FIXME. Disable loop alignment if compiled with -Oz now.
llvm-svn: 268121
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This change teaches EarlyCSE some basic properties of guard intrinsics:
- Guard intrinsics read all memory, but don't write to any memory
- After a guard has executed, the condition it was guarding on can be
assumed to be true
- Guard intrinsics on a constant `true` are no-ops
Reviewers: reames, hfinkel
Subscribers: mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D19578
llvm-svn: 268120
|
|
|
|
|
|
|
|
|
|
| |
If a block has no successors because it ends in unreachable,
this was accessing an invalid iterator.
Also stop counting instructions that don't emit any
real instructions.
llvm-svn: 268119
|
|
|
|
| |
llvm-svn: 268116
|
|
|
|
|
|
|
|
| |
elements. NFCI.
Make use of Constant::getAggregateElement instead of checking constant types - first step towards adding support for UNDEF mask elements.
llvm-svn: 268115
|
|
|
|
|
|
|
| |
The ORC compile callbacks and indirect stubs APIs will now work for AArc64,
allowing functions to be lazily compiled and/or updated.
llvm-svn: 268112
|
|
|
|
|
|
| |
No functionality change is intended.
llvm-svn: 268108
|
|
|
|
|
|
|
|
| |
The implemented heuristic has a large body of code which better sits
in its own function for better readability. It also allows adding more
heuristics easier in the future.
llvm-svn: 268107
|