| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
This was accepting GFX9 instructions on VI.
llvm-svn: 295557
|
| |
|
|
| |
llvm-svn: 295555
|
| |
|
|
| |
llvm-svn: 295554
|
| |
|
|
|
|
| |
legacy unmasked intrinsics and select instructions.
llvm-svn: 295543
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D29792
llvm-svn: 295539
|
| |
|
|
| |
llvm-svn: 295535
|
| |
|
|
|
|
|
|
|
|
|
| |
When promoting the Load of a Store-Load pair to a COPY all kill flags
between the store and the load need to be cleared.
rdar://30402435
Differential Revision: https://reviews.llvm.org/D30110
llvm-svn: 295512
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Newer ppc supports unaligned memory access, it reduces the cost of unaligned memory access significantly. This patch handles this case in PPCTTIImpl::getMemoryOpCost.
This patch fixes pr31492.
Differential Revision: https://reviews.llvm.org/D28630
This is resubmit of r292680, which was reverted by r293092. The internal application failures were actually caused by a source code bug.
llvm-svn: 295506
|
| |
|
|
|
|
| |
Reapply r295371 with a fix for the Windows bot failures.
llvm-svn: 295504
|
| |
|
|
| |
llvm-svn: 295502
|
| |
|
|
|
|
| |
Fixes PRPR31309
llvm-svn: 295492
|
| |
|
|
| |
llvm-svn: 295489
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: jmolloy, t.p.northover
Reviewed By: t.p.northover
Subscribers: t.p.northover, aemerson, rengolin, llvm-commits
Differential Revision: https://reviews.llvm.org/D30097
llvm-svn: 295478
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This set of patches adds support for Cavium ThunderX ARM64 processors:
* ThunderX
* ThunderX T81
* ThunderX T83
* ThunderX T88
Patch by Stefan Teleman
Differential Revision: https://reviews.llvm.org/D28891
llvm-svn: 295475
|
| |
|
|
|
|
|
|
|
|
|
| |
Removed the HasT2ExtractPack feature and replaced its references
with HasDSP. This then allows the Thumb2 extend instructions to be
selected for ARMv8M +dsp. These instruction descriptions have also
been refactored and more target tests have been added for their isel.
Differential Revision: https://reviews.llvm.org/D29623
llvm-svn: 295452
|
| |
|
|
|
|
|
| |
Return invalid opcodes when some of the helpers in the instruction selection
pass can't handle a given combination.
llvm-svn: 295446
|
| |
|
|
|
|
|
|
| |
Add some asserts to make sure we're using the mappings that we think we're
using. This is to keep us from accidentally breaking functionality while moving
to TableGen'erated mappings.
llvm-svn: 295441
|
| |
|
|
|
|
|
|
| |
Start using the Subtarget to make decisions about what's legal. In particular,
we only mark floating point operations as legal if we have VFP2, which is
something we should've done from the very start.
llvm-svn: 295439
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit r295371.
It broke windows bots:
http://bb.pgr.jp/builders/ninja-clang-i686-msc19-R/builds/11402/steps/test-llvm/logs/stdio
llvm-svn: 295402
|
| |
|
|
| |
llvm-svn: 295373
|
| |
|
|
|
|
| |
All the cool targets are doing it...
llvm-svn: 295371
|
| |
|
|
| |
llvm-svn: 295366
|
| |
|
|
| |
llvm-svn: 295359
|
| |
|
|
| |
llvm-svn: 295358
|
| |
|
|
|
|
|
|
|
|
| |
functions (PR26302)"
The original commit was reverted in r283329 due to a miscompile in
Chromium. That turned out to be the same issue as PR31257, which was
fixed in r295262.
llvm-svn: 295357
|
| |
|
|
|
|
|
|
|
|
| |
Defining nodes should not alias with one another, while clobbering
nodes can. When pushing defs on stacks, push clobbers first, link
non-clobbering defs, then push the defs.
The data flow in a statement is now: uses -> clobbers -> defs.
llvm-svn: 295356
|
| |
|
|
|
|
| |
Remove the duplicate from DFG and make some members of PRI private.
llvm-svn: 295351
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
supports SSE
The existing code always saves the xmm registers for 64-bit targets even if the
target doesn't support SSE (which is common for kernels). Thus, the compiler
inserts movaps instructions which lead to CPU exceptions when an interrupt
handler is invoked.
This commit fixes this bug by returning a register set without xmm registers
from getCalleeSavedRegs and getCallPreservedMask for such targets.
Patch by Philipp Oppermann.
Differential Revision: https://reviews.llvm.org/D29959
llvm-svn: 295347
|
| |
|
|
|
|
|
|
|
|
|
| |
Regression test neon-diagnostics.s needed changing because it now
produces a more specific diagnostic about the immediate ranges. One
change in the expected error message is not obvious, but there multiple
candidate and it happens to pick the immediate diagnostic.
Differential Revision: https://reviews.llvm.org/D29939
llvm-svn: 295331
|
| |
|
|
|
|
| |
for now.
llvm-svn: 295327
|
| |
|
|
| |
llvm-svn: 295326
|
| |
|
|
| |
llvm-svn: 295321
|
| |
|
|
|
|
|
|
| |
Since they're only used for passing around double precision floating point
values into the general purpose registers, we'll lower them to VMOVDRR and
VMOVRRD.
llvm-svn: 295310
|
| |
|
|
|
|
| |
Just use VADDD if available, bail out if not.
llvm-svn: 295309
|
| |
|
|
| |
llvm-svn: 295308
|
| |
|
|
|
|
|
| |
Support G_SEQUENCE and G_EXTRACT as needed for passing double precision floating
point values in the soft-fp float mode.
llvm-svn: 295306
|
| |
|
|
|
|
|
| |
Also add mappings for single and double precision FP, and use them for G_FADD
and G_LOAD.
llvm-svn: 295302
|
| |
|
|
|
|
|
|
| |
For now we just mark them as legal all the time and let the other passes bail
out if they can't handle it. In the future, we'll want to move more of the
brains into the legalizer.
llvm-svn: 295300
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the hard float calling convention, we just use the D registers.
For the soft-fp calling convention, we use the R registers and move values
to/from the D registers by means of G_SEQUENCE/G_EXTRACT. While doing so, we
make sure to honor the endianness of the target, since the CCAssignFn doesn't do
that for us.
For pure soft float targets, we still bail out because we don't support the
libcalls yet.
llvm-svn: 295295
|
| |
|
|
|
|
|
|
| |
intrinsics with select instructions. For 512-bit add new unmasked intrinsics.
The new 512-bit unmasked intrinsics will make it easy to handle these with the SSE/AVX intrinsics in InstCombine where we currently have a TODO.
llvm-svn: 295290
|
| |
|
|
| |
llvm-svn: 295270
|
| |
|
|
|
|
| |
Update test uses with expansion in terms of new intrinsics.
llvm-svn: 295269
|
| |
|
|
|
|
|
|
|
|
|
| |
This reverts r294348, which removed support for conditional tail calls
due to the PR above. It fixes the PR by marking live registers as
implicitly used and defined by the now predicated tailcall. This is
similar to how IfConversion predicates instructions.
Differential Revision: https://reviews.llvm.org/D29856
llvm-svn: 295262
|
| |
|
|
|
|
|
|
| |
Uses a Custom implementation because the slot sizes being a multiple of the
pointer size isn't really universal, even for the architectures that do have a
simple "void *" va_list.
llvm-svn: 295255
|
| |
|
|
| |
llvm-svn: 295247
|
| |
|
|
| |
llvm-svn: 295244
|
| |
|
|
|
|
| |
Also use a more refined condition.
llvm-svn: 295239
|
| |
|
|
|
|
| |
Minor performance speedup - if any call to getShuffleScalarElt fails to get a result, don't both calling for the remaining elements as EltsFromConsecutiveLoads will fail anyhow.
llvm-svn: 295235
|
| |
|
|
|
|
|
|
|
|
|
| |
am_ldrlit diverged from am_brcond in r207105, but kept the OtherVT
operand type. It made sense for branch targets, as those are
represented as MVT::Other in SDAG. But loads operate on pointers.
This shouldn't have an observable effect on any in-tree code, but helps
make the patterns consistent for external users.
llvm-svn: 295229
|
| |
|
|
|
|
|
|
| |
shuffle combining
Only do this for integer types currently - floats types (in particular insertps) load folding often fails with this.
llvm-svn: 295208
|