| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
store intrinsics instead.
The intrinsics will be autoupgraded to the same generic masked stores.
llvm-svn: 271245
|
| |
|
|
|
|
|
|
|
|
|
| |
This adds support to the backed to actually support SjLj EH as an exception
model. This is *NOT* the default model, and requires explicitly opting into it
from the frontend. GCC supports this model and for MinGW can still be enabled
via the `--using-sjlj-exceptions` options.
Addresses PR27749!
llvm-svn: 271244
|
| |
|
|
|
|
| |
them. Auto upgrade to native unaligned store instructions.
llvm-svn: 271236
|
| |
|
|
| |
llvm-svn: 271229
|
| |
|
|
| |
llvm-svn: 271160
|
| |
|
|
|
|
|
|
|
|
|
|
| |
intrinsics with generic IR (llvm)
This patch removes the llvm intrinsics VPMOVSX and (V)PMOVZX sign/zero extension intrinsics and auto-upgrades to SEXT/ZEXT calls instead. We already did this for SSE41 PMOVSX sometime ago so much of that implementation can be reused.
Reapplied now that the the companion patch (D20684) removes/auto-upgrade the clang intrinsics has been committed.
Differential Revision: http://reviews.llvm.org/D20686
llvm-svn: 271131
|
| |
|
|
|
|
|
|
| |
We were producing R_X86_64_GOTPCRELX for invalid instructions and
sometimes producing R_X86_64_GOTPCRELX instead of
R_X86_64_REX_GOTPCRELX.
llvm-svn: 271118
|
| |
|
|
|
|
|
|
|
|
|
| |
(PR20347)
It would be better to check the valid/expected size of the immediate operand, but this is
generally better than what we print right now.
Differential Revision: http://reviews.llvm.org/D20385
llvm-svn: 271114
|
| |
|
|
|
|
|
|
| |
Otherwise we fallback to a blend of PSHUFBs later on.
Differential Revision: http://reviews.llvm.org/D19661
llvm-svn: 271113
|
| |
|
|
| |
llvm-svn: 271112
|
| |
|
|
|
|
|
|
| |
This recommits r267649 with a fix for PR27539.
Differential Revision: http://reviews.llvm.org/D20598
llvm-svn: 271033
|
| |
|
|
|
|
| |
Also guard against v32i8 users.
llvm-svn: 271024
|
| |
|
|
|
|
| |
extension intrinsics with generic IR (llvm)
llvm-svn: 270976
|
| |
|
|
|
|
|
|
|
|
|
|
| |
generic IR (llvm)
This patch removes the llvm intrinsics VPMOVSX and (V)PMOVZX sign/zero extension intrinsics and auto-upgrades to SEXT/ZEXT calls instead. We already did this for SSE41 PMOVSX sometime ago so much of that implementation can be reused.
A companion patch (D20684) removes/auto-upgrade the clang intrinsics.
Differential Revision: http://reviews.llvm.org/D20686
llvm-svn: 270973
|
| |
|
|
|
|
|
|
| |
vector to the lower 128-bit subvector.
Most often as not this is what it started out as, the extraction is zero-cost on AVX and the PMOVZX/PMOVSX folding logic is based around 128-bit loads.
llvm-svn: 270858
|
| |
|
|
|
|
| |
This reduces code duplication and now AArch64 also handles PIE.
llvm-svn: 270844
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20615
llvm-svn: 270843
|
| |
|
|
| |
llvm-svn: 270753
|
| |
|
|
| |
llvm-svn: 270746
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
By making pointer extraction from a vector more expensive in the cost model,
we avoid the vectorization of a loop that is very likely to be memory-bound:
https://llvm.org/bugs/show_bug.cgi?id=27826
There are still bugs related to this, so we may need a more general solution
to avoid vectorizing obviously memory-bound loops when we don't have HW gather
support.
Differential Revision: http://reviews.llvm.org/D20601
llvm-svn: 270729
|
| |
|
|
|
|
|
|
|
|
| |
VZeroUpperInserter pass (PR27823)
As noted in the review, there are still problems, so this doesn't the bug completely.
Differential Revision: http://reviews.llvm.org/D20529
llvm-svn: 270718
|
| |
|
|
|
|
|
|
|
|
| |
intrinsics with generic IR
Followup to D20528 clang patch, this removes the (V)CVTDQ2PD(Y) and (V)CVTPS2PD(Y) llvm intrinsics and auto-upgrades to sitofp/fpext instead.
Differential Revision: http://reviews.llvm.org/D20568
llvm-svn: 270678
|
| |
|
|
|
|
| |
long time.
llvm-svn: 270677
|
| |
|
|
|
|
|
|
| |
second argument to buildin function but it is first instruction operand.
Differential Revision: http://reviews.llvm.org/D20515
llvm-svn: 270548
|
| |
|
|
|
|
| |
Now that we have a nice fast VPPERM solution. Added framework for future intrinsic costs as well.
llvm-svn: 270537
|
| |
|
|
| |
llvm-svn: 270469
|
| |
|
|
| |
llvm-svn: 270467
|
| |
|
|
| |
llvm-svn: 270444
|
| |
|
|
|
|
| |
optimizing moves to use 2 byte VEX prefix.
llvm-svn: 270394
|
| |
|
|
|
|
|
|
| |
subvectors using XMM or YMM stores instead of the vector extract instructions.
Similar is already done for AVX and we had lost it going to AVX512VL.
llvm-svn: 270383
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(PR27823)
This isn't the complete fix, but it handles the trivial examples of duplicate vzero* ops in PR27823:
https://llvm.org/bugs/show_bug.cgi?id=27823
...and amusingly, the bogus cases already exist as regression tests, so let's take this baby step.
We'll need to do more in the general case where there's legitimate AVX usage in the function + there's
already a vzero in the code.
Differential Revision: http://reviews.llvm.org/D20477
llvm-svn: 270378
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20513
llvm-svn: 270357
|
| |
|
|
|
|
| |
the source is 512-bits. The 256-bit source patterns were redundant with AVX.
llvm-svn: 270356
|
| |
|
|
|
|
| |
index 0 patterns. This gives them higher priority than the memory patterns. This matches AVX1/2.
llvm-svn: 270355
|
| |
|
|
|
|
| |
equivalents. This helps group them close together in the isel tables and enable table compression.
llvm-svn: 270354
|
| |
|
|
|
|
| |
inversions could appear in a row.
llvm-svn: 270344
|
| |
|
|
| |
llvm-svn: 270343
|
| |
|
|
|
|
| |
for integer types when only AVX1 is supported.
llvm-svn: 270335
|
| |
|
|
| |
llvm-svn: 270334
|
| |
|
|
|
|
| |
used to indicating the zero masking behavior which is not the case here. NFC
llvm-svn: 270333
|
| |
|
|
|
|
| |
reflect the fact that memory is the destination.
llvm-svn: 270332
|
| |
|
|
| |
llvm-svn: 270331
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20438
llvm-svn: 270322
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D20324
llvm-svn: 270321
|
| |
|
|
|
|
| |
AVX2 versions of vector extract when AVX512VL is enabled.
llvm-svn: 270318
|
| |
|
|
|
|
| |
AVX512VL is enabled. Also add shuffle comment printing for AVX512VL VPERMPD/VPERMQ to keep some tests that now use these instructions instead of the AVX2 ones.
llvm-svn: 270317
|
| |
|
|
|
|
| |
is enabled.
llvm-svn: 270316
|
| |
|
|
|
|
| |
AVX512VL/AVX512BWI equivalents are available.
llvm-svn: 270311
|
| |
|
|
|
|
| |
instead of pattern matching the intrinsics. This unifies handling with AVX512 and allows these intrinsics to select EVEX encoded instructions to increase available registers.
llvm-svn: 270310
|
| |
|
|
|
|
|
|
|
| |
This gets rid of some unnecessary SmallStrings in
X86TargetMachine::getSubtargetImpl.
No functionality change is intended.
llvm-svn: 270270
|