| 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
|
| |
|
|
|
|
|
|
|
|
|
| |
The exit-on-error flag is necessary to avoid some assertions/unreachables. We
can get past them by creating a few dummy nodes.
Fixes PR27768, PR27769.
Differential Revision: http://reviews.llvm.org/D20726
llvm-svn: 271200
|
| |
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 271111
|
| |
|
|
|
|
|
|
| |
This reverts commit r271096, as reverting it broke even more buildbots!
But that also means I'll break on ARM again... :(
llvm-svn: 271099
|
| |
|
|
|
|
| |
This reverts commit r271052, as it broke some ARM buildbots.
llvm-svn: 271096
|
| |
|
|
| |
llvm-svn: 271088
|
| |
|
|
|
|
|
|
| |
Composing subreg_loreg with subreg_oveflow leads to strange results with
lane masks for register classes with subreg_loreg. In particular, dead
lane detection generates incorrect code.
llvm-svn: 271087
|
| |
|
|
| |
llvm-svn: 271084
|
| |
|
|
| |
llvm-svn: 271081
|
| |
|
|
|
|
|
|
|
| |
Remove broken patterns matching it. This was matching the
unsafe math pattern and expanding the fix for the buggy instruction
from the pattern. The problems are also on CI. Remove the workarounds
and only use fract with unsafe math or from the intrinsic.
llvm-svn: 271078
|
| |
|
|
|
|
| |
Given where this is used it should be a nop.
llvm-svn: 271066
|
| |
|
|
| |
llvm-svn: 271057
|
| |
|
|
|
|
|
| |
DynamicNoPIC was only every used on darwin. This maps it to static on
ELF. It matches what is done on X86.
llvm-svn: 271052
|
| |
|
|
| |
llvm-svn: 271045
|
| |
|
|
|
|
|
| |
When running mir tests, a pass created in that constructor would not be
freed, leading to memory leaks.
llvm-svn: 271043
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 271023
|
| |
|
|
|
|
| |
It's faster and easier to read.
llvm-svn: 271018
|
| |
|
|
|
|
|
|
| |
"ld".
PR27904.
llvm-svn: 271016
|
| |
|
|
|
|
| |
No functionality change intended, maybe a tiny performance improvement.
llvm-svn: 270997
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The isMemWithSimmOffset predicate rejects relocations which is incorrect
behaviour. Linkers and other tools should handle|warn|error when the
field overflows.
Reviewers: dsanders, vkalintiris
Differential Revision: http://reviews.llvm.org/D20727
llvm-svn: 270995
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Register numbers may be specified as assembly-time expressions.
This feature can be useful in macros and alike. However, expressions
are supported within sqare braces only.
Sqare braces were initially intended to support specifying of multiple
(pairs/quads...) registers. Syntax like v[8:8] which specifies single register
is also supported. That allows expressions but looks a bit unnatural.
This change supports syntax REG[EXPR].
Tests added.
Differential Revision: http://reviews.llvm.org/D20588
llvm-svn: 270990
|
| |
|
|
|
|
|
| |
clang-tidy's performance-unnecessary-copy-initialization with some manual
fixes. No functional changes intended.
llvm-svn: 270988
|
| |
|
|
|
|
|
| |
Also fold conditions into assert(0) where it makes sense. No functional
change intended.
llvm-svn: 270982
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 270981
|
| |
|
|
|
|
| |
No functional change intended.
llvm-svn: 270980
|
| |
|
|
|
|
| |
Also give them library visiblity while there.
llvm-svn: 270979
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
The aggressive anti-dependency breaker can rename the restored callee-
saved registers. To prevent this, mark these registers are live on all
paths to the return/tail-call instructions, and add implicit use operands
for them to these instructions.
llvm-svn: 270898
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Canonicalize (srl (bswap i32 x), 16) to (rotr (bswap i32 x), 16), if the high
16-bits of x are zero. Similarly, canonicalize (srl (bswap i64 x), 32) to
(rotr (bswap i64 x), 32), if the high 32-bits of x are zero.
test_rev_w_srl16: test_rev_w_srl16:
and w8, w0, #0xffff and w8, w0, #0xffff
rev w8, w8 ---> rev16 w0, w8
lsr w0, w8, #16
test_rev_x_srl32: test_rev_x_srl32:
rev x8, x8 ---> rev32 x0, x8
lsr x0, x8, #32
llvm-svn: 270896
|
| |
|
|
|
|
|
|
|
|
| |
Summary: Enable load-store-opt by default, and update LIT tests.
Reviewers: arsenm
Differential Revision: http://reviews.llvm.org/D20694
llvm-svn: 270894
|
| |
|
|
|
|
|
| |
Fixes build error on windows where MSVC does not
support list initialization inside member initializer list.
llvm-svn: 270877
|
| |
|
|
|
|
|
|
|
|
|
|
| |
NVVMIntrRange adds !range metadata to calls of NVVM intrinsics
that return values within known limited range.
This allows LLVM to generate optimal code for indexing arrays
based on tid/ctaid which is a frequently used pattern in CUDA code.
Differential Revision: http://reviews.llvm.org/D20644
llvm-svn: 270872
|
| |
|
|
|
|
|
|
|
|
|
| |
Hwreg(...) syntax implementation unified with sendmsg(...).
Common strings moved to Utils
MathExtras.h functionality utilized.
Added missing build dependency in Disassembler.
Differential Revision: http://reviews.llvm.org/D20381
llvm-svn: 270871
|
| |
|
|
|
|
| |
support for TTMP/TBA/TMA registers."
llvm-svn: 270859
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 270857
|
| |
|
|
|
|
|
|
|
|
| |
Similar to r269948, but for argument lowering.
Fixes PR27762
Differential Revision: http://reviews.llvm.org/D20430
llvm-svn: 270856
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The exit-on-error flag is needed to avoid an assert where
llvm::SelectionDAGISel::LowerArguments doesn't create enough arguments. Fill up
with zeroes to reach the right number of args.
Fixes PR27767.
Differential Revision: http://reviews.llvm.org/D20571
llvm-svn: 270855
|