| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When constructing global address literals while targeting the RWPI
relocation model. LLVM currently only uses literal pools. If MOVW/MOVT
instructions are available we can use these instead. Beside being more
efficient it allows -arm-execute-only to work with
-relocation-model=RWPI as well.
When we generate MOVW/MOVT for global addresses when targeting the RWPI
relocation model, we need to use base relative relocations. This patch
does the needed plumbing in MC to generate these for MOVW/MOVT.
Differential Revision: https://reviews.llvm.org/D29487
Change-Id: I446786e43a6f5aa9b6a5bb2cd216d60d41c7755d
llvm-svn: 294298
|
| |
|
|
|
|
| |
Exposes some poor codegen with identity shuffle due to bad interaction with insert_subvector(extract_subvector) / concat_subvectors
llvm-svn: 294296
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r294186.
On an internal test, this triggers an out-of-memory error on PPC,
presumably because there is another dagcombine that does the exact
opposite triggering and endless loop consuming more and more memory.
Chandler has started at creating a reduced test case and we'll attach it
as soon as possible.
llvm-svn: 294288
|
| |
|
|
|
|
| |
folding tables.
llvm-svn: 294287
|
| |
|
|
|
|
| |
This adds the masked versions of everything, but the shift by immediate instructions.
llvm-svn: 294286
|
| |
|
|
|
|
|
|
| |
This includes unmasked forms of variable shift and shifting by the lower element of a register.
Still need to do shift by immediate which was not foldable prior to avx512 and all the masked forms.
llvm-svn: 294285
|
| |
|
|
|
|
| |
YMM16-31.
llvm-svn: 294277
|
| |
|
|
| |
llvm-svn: 294276
|
| |
|
|
|
|
|
|
|
|
|
| |
joinReservedPhysReg() can only deal with a liverange in a single basic
block when copying from a vreg into a physreg.
See also rdar://30306405
Differential Revision: https://reviews.llvm.org/D29436
llvm-svn: 294268
|
| |
|
|
|
|
|
|
|
|
|
|
| |
For amdgcn target Clang generates addrspacecast to represent null pointers in private and local address spaces.
In LLVM codegen, the static variable initializer is lowered by virtual function AsmPrinter::lowerConstant which is target generic. Since addrspacecast is target specific, AsmPrinter::lowerConst
This patch overrides AsmPrinter::lowerConstant with AMDGPUAsmPrinter::lowerConstant, which is able to lower the target-specific addrspacecast in the null pointer representation so that -1 is co
Differential Revision: https://reviews.llvm.org/D29284
llvm-svn: 294265
|
| |
|
|
|
|
|
| |
As noted in the comments, we should be able to eliminate cmp ops
in several cases.
llvm-svn: 294263
|
| |
|
|
|
|
| |
Otherwise there aren't any patterns to select them.
llvm-svn: 294261
|
| |
|
|
|
|
| |
Patch by Colin LeMahieu.
llvm-svn: 294258
|
| |
|
|
|
|
| |
multiplications with fastmath (PR31866)
llvm-svn: 294254
|
| |
|
|
|
|
|
|
| |
AArch64 was asserting when it was asked to provide a register-bank of a size it
couldn't deal with (in this case an s128 IMPLICIT_DEF). But we want a robust
fallback path so this isn't allowed.
llvm-svn: 294248
|
| |
|
|
|
|
|
| |
We don't handle all cases yet (see arm64-fallback.ll for an example), but this
is enough to cover most common C++ code so it's a good place to start.
llvm-svn: 294247
|
| |
|
|
|
|
| |
absolute instructions
llvm-svn: 294216
|
| |
|
|
|
|
|
|
|
|
|
| |
When splitting up one store into several in splitStoreSplat we have to
make sure we get the MachinePointerInfo right, otherwise alias
analysis thinks they all store to the same location. This can then
cause invalid scheduling later on.
Differential Revision: https://reviews.llvm.org/D29446
llvm-svn: 294203
|
| |
|
|
|
|
|
|
| |
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D29397
llvm-svn: 294201
|
| |
|
|
|
|
| |
The full codegen is committed for larger multiply, so that won't make the test suite more fragile. However, it'll allow to expose the effects fo various DAG combine.
llvm-svn: 294196
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: As per title.
Reviewers: bkramer, sunfish, lattner, RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29521
llvm-svn: 294188
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Leverage it to transform addc into add.
Reviewers: mkuper, spatel, RKSimon, zvi
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29524
llvm-svn: 294187
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: This is extracted from D29443 .
Reviewers: mkuper, spatel, RKSimon, zvi, bkramer
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29564
llvm-svn: 294186
|
| |
|
|
|
|
| |
This is separated from https://reviews.llvm.org/D29394 review.
llvm-svn: 294185
|
| |
|
|
| |
llvm-svn: 294184
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
being combined.
Currently we only combine shuffle nodes if they have a single user to prevent us from causing code bloat by splitting the shuffles into several different combines.
We don't take into account that in some cases we will already have combined all the users during recursively calling up the shuffle tree.
This patch keeps a list of all the shuffle nodes that have been combined so far and permits combining of further shuffle nodes if all its users are in that list.
Differential Revision: https://reviews.llvm.org/D29399
llvm-svn: 294183
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Support return lowering for i8/i16/i32/i64/float/double, vector type supported for 64bit platform only.
Support argument lowering for float/double types.
Reviewers: t.p.northover, zvi, ab, rovka
Reviewed By: zvi
Subscribers: dberris, kristof.beyls, delena, llvm-commits
Differential Revision: https://reviews.llvm.org/D29261
llvm-svn: 294173
|
| |
|
|
| |
llvm-svn: 294170
|
| |
|
|
| |
llvm-svn: 294169
|
| |
|
|
| |
llvm-svn: 294168
|
| |
|
|
|
|
| |
load folding tables.
llvm-svn: 294163
|
| |
|
|
|
|
| |
Similar to what we already do for zero elt insertion, we can quickly rematerialize 'allbits' vectors so to avoid a unnecessary gpr value and insertion into a vector
llvm-svn: 294162
|
| |
|
|
|
|
| |
folding tables.
llvm-svn: 294153
|
| |
|
|
|
|
| |
load folding tables.
llvm-svn: 294152
|
| |
|
|
|
|
| |
isNonFoldablePartialRegisterLoad to improve load folding of scalar loads.
llvm-svn: 294151
|
| |
|
|
|
|
| |
scalar FMA intrinsics.
llvm-svn: 294150
|
| |
|
|
|
|
| |
avx512vl test file.
llvm-svn: 294149
|
| |
|
|
|
|
| |
Some elements are constant inserted into the source integer vector before conversion.
llvm-svn: 294147
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Authored by Florian Zeitz.
This implements the missing stacksave/stackrestore intrinsics via expansion.
Output of `llc -O0 -march=avr ~/devel/llvm/test/CodeGen/Generic/stacksave-restore.ll` for sanity checking (comments mine):
```
.text
.file ".../llvm/test/CodeGen/Generic/stacksave-restore.ll"
.globl test
.p2align 1
.type test,@function
test: ; @test
; BB#0:
push r28
push r29
in r28, 61
in r29, 62
sbiw r28, 4
in r0, 63
cli
out 62, r29
out 63, r0
out 61, r28
in r18, 61
in r19, 62
mov r20, r22
mov r21, r23
in r30, 61
in r31, 62
lsl r22
rol r23
lsl r22
rol r23
in r26, 61
in r27, 62
sub r26, r22
sbc r27, r23
andi r26, 252
in r0, 63
cli
out 62, r27
out 63, r0
out 61, r26
in r0, 63
cli
out 62, r31
out 63, r0
out 61, r30
in r30, 61
in r31, 62
sub r30, r22
sbc r31, r23
andi r30, 252
in r0, 63
cli
out 62, r31
out 63, r0
out 61, r30
std Y+3, r24 ; 2-byte Folded Spill
std Y+4, r25 ; 2-byte Folded Spill
mov r24, r26
mov r25, r27
in r0, 63
cli
out 62, r19
out 63, r0
out 61, r18
std Y+1, r20 ; 2-byte Folded Spill
std Y+2, r21 ; 2-byte Folded Spill
adiw r28, 4
in r0, 63
cli
out 62, r29
out 63, r0
out 61, r28
pop r29
pop r28
ret
.Lfunc_end0:
.size test, .Lfunc_end0-test
```
Reviewers: dylanmckay
Reviewed By: dylanmckay
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29553
llvm-svn: 294146
|
| |
|
|
|
|
| |
This fixes an assertion error that broke three tests.
llvm-svn: 294140
|
| |
|
|
| |
llvm-svn: 294132
|
| |
|
|
|
|
| |
%xmm0 argument. This makes codegen output more obvious about the %xmm0 usage.
llvm-svn: 294131
|
| |
|
|
|
|
|
|
|
|
|
|
| |
creating a PSHUFB. This will be lowered by regular shuffle lowering to a PSHUFB later.
Similar was already done for several other shuffles in this function.
The test changes are because the old code used explicity zeroing for elements that could have been undef.
While I was here I also changed other shuffle vectors in the same function to use the same input twice instead of creating UNDEF nodes. getVectorShuffle can create the UNDEF for us.
llvm-svn: 294130
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Without this change, the getVR() call would hit an assert since it was
being passed a physical register.
Update the AArch64/ldst-opt.ll test with a case that triggers this
behavior by adding a run with strict-align, which causes an unaligned
STR XZR instruction to be split into byte stores, creating an
EXTRACT_SUBREG of XZR that triggers the original problem.
Reviewers: bogner, qcolombet, MatzeB, atrick
Subscribers: aemerson, mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D29495
llvm-svn: 294129
|
| |
|
|
|
|
| |
As discussed on D26855, check individual cpu targets as part of the investigation into moving more combines to MachineCombiner
llvm-svn: 294128
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: This avoid the need to duplicate all pattern and actually end up exposing some opportunity to optimize existing pattern that did not exists in both directions on an existing test case.
Reviewers: mkuper, spatel, bkramer, RKSimon, zvi
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D29541
llvm-svn: 294125
|
| |
|
|
|
|
|
| |
We would unconditionally call printOperand, even if PrintAsmOperand
already printed the immediate.
llvm-svn: 294121
|
| |
|
|
|
|
| |
vec2, idx1), idx1) -> (blendi vec2, vec1).
llvm-svn: 294112
|
| |
|
|
|
|
| |
Based on similar code for INSERT_VECTOR_ELT.
llvm-svn: 294110
|
| |
|
|
| |
llvm-svn: 294105
|