| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 277535
|
| |
|
|
| |
llvm-svn: 277528
|
| |
|
|
|
|
|
|
|
|
| |
info.
Also added test case to verify IR changes done by NVPTXGenericToNVVM pass.
Differential Revision: https://reviews.llvm.org/D22837
llvm-svn: 277520
|
| |
|
|
|
|
|
|
|
|
|
|
| |
We were relying on the misleadingly-names $status result to actually be the
status. Actually it's just a scratch register that may or may not be valid (and
is the inverse of the real ststus anyway). Success can be determined by
comparing the value loaded against the one we wanted to see for "cmpxchg
strong" loops like this.
Should fix PR28819.
llvm-svn: 277513
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Two types of stores are possible in pixel shaders: stores to memory that are
explicitly requested at the API level, and stores that are an implementation
detail of register spilling or lowering of arrays.
For the first kind of store, we must ensure that helper pixels have no effect
and hence WQM must be disabled. The second kind of store must always be
executed, because the written value may be loaded again in a way that is
relevant for helper pixels as well -- and there are no externally visible
effects anyway.
This is a candidate for the 3.9 release branch.
Reviewers: arsenm, tstellarAMD, mareko
Subscribers: arsenm, kzhuravl, llvm-commits
Differential Revision: https://reviews.llvm.org/D22675
llvm-svn: 277504
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
There are cases where uniform branch conditions are computed in VGPRs, and
we didn't correctly mark those as WQM.
The stray change in basic-branch.ll is because invoking the LiveIntervals
analysis leads to the detection of a dead register that would otherwise not
be seen at -O0.
This is a candidate for the 3.9 branch, as it fixes a possible hang.
Reviewers: arsenm, tstellarAMD, mareko
Subscribers: arsenm, llvm-commits, kzhuravl
Differential Revision: https://reviews.llvm.org/D22673
llvm-svn: 277500
|
| |
|
|
|
|
|
|
|
| |
Identify patterns where the address is aligned to an 8-byte boundary,
but both the base address and the constant offset are both proper
multiples of 4. In such cases, extract Base+4 into a separate instruc-
tion, and use S2_storerd_io, instead of using S4_storerd_rr.
llvm-svn: 277497
|
| |
|
|
| |
llvm-svn: 277496
|
| |
|
|
|
|
|
| |
- Implement getOptimalMemOpType.
- Check BaseOffset in isLegalAddressingMode.
llvm-svn: 277494
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Recommitting after fixing overaggressive fastpath return in parsing.
Fix intel syntax special case identifier operands that refer to a constant
(e.g. .set <ID> n) to be interpreted as immediate not memory in parsing.
Associated commit to fix clang test commited shortly.
Reviewers: rnk
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D22585
llvm-svn: 277489
|
| |
|
|
|
|
|
|
|
|
| |
We currently use and test these, and select most of them. Mark them
as legal even though we don't go through the full ir->asm flow yet.
This doesn't currently have standalone tests, but the verifier will
soon learn to check that the regbankselect/select tests are legal.
llvm-svn: 277471
|
| |
|
|
| |
llvm-svn: 277467
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added (sra (shl x, 16), 16) to the sext_16_node PatLeaf for ARM to
simplify some pattern matching. This has allowed several patterns
for smul* and smla* to be removed as well as making it easier to add
the matching for the corresponding instructions for Thumb2 targets.
Also added two Pat classes that are predicated on Thumb2 with the
hasDSP flag and UseMulOps flags. Updated the smul codegen test with
the wider range of patterns plus the ThumbV6 and ThumbV6T2 targets.
Differential Revision: https://reviews.llvm.org/D22908
llvm-svn: 277450
|
| |
|
|
|
|
| |
expression of assert(). It has side effects.
llvm-svn: 277448
|
| |
|
|
|
|
|
|
|
|
|
| |
These changes update the schedule model for the P5600 and includes the
rest of the MSA and MIPS32R5 instruction sets.
Reviewers: dsanders, vkalintris
Differential Revision: https://reviews.llvm.org/D21835
llvm-svn: 277441
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Commit 276701 requires that targets have the DSP extensions to use
certain saturating instructions. This requires some corrections.
For ARM ISA the instructions in question are available in all v6*
architectures.
For Thumb2, the instructions in question are available from v6T2.
SSAT and USAT are part of the base architecture while SSAT16 and
USAT16 require the DSP extensions.
Reviewers: rengolin
Subscribers: aemerson, rengolin, samparker, llvm-commits
Differential Revision: https://reviews.llvm.org/D23010
llvm-svn: 277439
|
| |
|
|
|
|
|
|
| |
dataWidth check.
Differential Revision: http://reviews.llvm.org/D23055
llvm-svn: 277435
|
| |
|
|
| |
llvm-svn: 277434
|
| |
|
|
| |
llvm-svn: 277431
|
| |
|
|
|
|
| |
Move some logic into TII.
llvm-svn: 277430
|
| |
|
|
|
|
|
| |
Not all blocks have terminators. I'm not sure how this wasn't
crashing before.
llvm-svn: 277427
|
| |
|
|
|
|
| |
adding itineraries to all of the instructions that use the avx512_fp_binop_p class.
llvm-svn: 277422
|
| |
|
|
|
|
| |
instructions to match SSE/AVX.
llvm-svn: 277421
|
| |
|
|
| |
llvm-svn: 277416
|
| |
|
|
|
|
| |
This caused PR28805. Adding a regression test.
llvm-svn: 277402
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: This patch implements CFI for WebAssembly. It modifies the
LowerTypeTest pass to pre-assign table indexes to functions that are
called indirectly, and lowers type checks to test against the
appropriate table indexes. It also modifies the WebAssembly backend to
support a special ".indidx" assembly directive that propagates the table
index assignments out to the linker.
Patch by Dominic Chen
Differential Revision: https://reviews.llvm.org/D21768
llvm-svn: 277398
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: This patch includes asm.js-style exception handling support for
WebAssembly. The WebAssembly MVP does not have any support for
unwinding or non-local control flow. In order to support C++ exceptions,
emscripten currently uses JavaScript exceptions along with some support
code (written in JavaScript) that is bundled by emscripten with the
generated code.
This scheme lowers exception-related instructions for wasm such that
wasm modules can be compatible with emscripten's existing scheme and
share the support code.
Patch by Heejin Ahn
Differential Revision: https://reviews.llvm.org/D22958
llvm-svn: 277391
|
| |
|
|
| |
llvm-svn: 277383
|
| |
|
|
| |
llvm-svn: 277374
|
| |
|
|
| |
llvm-svn: 277372
|
| |
|
|
| |
llvm-svn: 277370
|
| |
|
|
| |
llvm-svn: 277364
|
| |
|
|
|
|
| |
There were a few cases introduced with the modulo scheduler.
llvm-svn: 277358
|
| |
|
|
|
|
|
|
|
| |
Scavenging slots were only reserved when pseudo-instruction expansion in
frame lowering created new virtual registers. It is possible to still
need a scavenging slot even if no virtual registers were created, in cases
where the stack is large enough to overflow instruction offsets.
llvm-svn: 277355
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Allocating an AFGR64 shadows two GPR32's instead of just one.
This fixes an LNT regression detected by our internal buildbots.
Reviewers: sdardis
Subscribers: dsanders, sdardis, llvm-commits
Differential Revision: https://reviews.llvm.org/D23012
llvm-svn: 277348
|
| |
|
|
|
|
| |
Differential revision: https://reviews.llvm.org/D22522
llvm-svn: 277344
|
| |
|
|
|
|
| |
Similar to the regular shift instructions, SHLD/SHRD only use the bottom bits of the shift value
llvm-svn: 277341
|
| |
|
|
| |
llvm-svn: 277333
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The branch relaxation pass is computing the wrong offsets because it assumes
TLSDESC_CALLSEQ eats up 4 bytes, when in fact it is lowered to an instruction
sequence taking up 16 bytes. This can become a problem in huge files with lots
of TLS accesses, as it may slowly move branch targets out of the range computed
by the branch relaxation pass.
Fixes PR24234 https://llvm.org/bugs/show_bug.cgi?id=24234
Differential Revision: https://reviews.llvm.org/D22870
llvm-svn: 277331
|
| |
|
|
|
|
| |
preventing VMOVDQU32/VMOVDQA32 from being recognized. Fix a bug in the code that stops execution dependency fix from turning operations on 32-bit integer element types into operations on 64-bit integer element types.
llvm-svn: 277327
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D19475
llvm-svn: 277323
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Initialize all AArch64-specific passes in the TargetMachine so they can be run
by llc. This can lead to conflicts in opt with some command line options that
share the same name as the pass, so I took this opportunity to do some cleanups:
* rename all relevant command line options from "aarch64-blah" to
"aarch64-enable-blah" and update the tests accordingly
* run clang-format on their declarations
* move all these declarations to a common place (the TargetMachine) as opposed
to having them scattered around (AArch64BranchRelaxation and
AArch64AddressTypePromotion were the only offenders)
llvm-svn: 277322
|
| |
|
|
|
|
|
|
| |
FR32X/FR64X if AVX512 is supported and VR128X/VR256X if VLX is supported.
Had to update a stack folding test to clobber the other 16 registers since this now made them get used instead of spilling.
llvm-svn: 277321
|
| |
|
|
|
|
| |
if AVX512(for FR32X/FR64) or VLX(for VR128X/VR256) is supported. This is a minimal requirement to be able to allocate all 32 registers.
llvm-svn: 277319
|
| |
|
|
|
|
| |
getLoadStoreRegOpcode. No functional change intended.
llvm-svn: 277318
|
| |
|
|
|
|
| |
classes instead of manually listing individual classes.
llvm-svn: 277306
|
| |
|
|
|
|
| |
getLoadStoreRegOpcode if VLX is supported.
llvm-svn: 277305
|
| |
|
|
|
|
| |
pass and update tests.
llvm-svn: 277304
|
| |
|
|
|
|
| |
switch. No functional change intended.
llvm-svn: 277303
|
| |
|
|
|
|
| |
regular switch which already tried to handle it, but was unreachable. This has the added benefit of enabling aligned loads/stores if the stack is aligned.
llvm-svn: 277302
|