| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 365658
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This adds support for the most commonly used wide load types:
<8xi32>, <16xi32>, <4xi64>, and <8xi64>
Reviewers: arsenm
Reviewed By: arsenm
Subscribers: hiraditya, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, volkan, Petar.Avramovic, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D57399
llvm-svn: 365586
|
|
|
|
|
|
|
|
|
| |
In SelectionDAG AMDGPU treated these as legal, but this was mostly
because the bitcasts required for FP types were painful. Theoretically
the bitpattern should eventually match to bfi, so don't bother trying
to get the patterns to import.
llvm-svn: 365583
|
|
|
|
| |
llvm-svn: 365575
|
|
|
|
|
|
|
| |
This eliminates some illegal intermediate vectors when operations are
scalarized.
llvm-svn: 365566
|
|
|
|
|
|
|
|
|
|
|
| |
Mostsly these would fail due to trying to use SI with a flat
operation. Implementing global loads with MUBUF is more work than
flat, so these won't be handled in the initial load selection.
Others fail because store of s64 won't initially work, as the current
set of patterns expect everything to be turned into v2i32.
llvm-svn: 365493
|
|
|
|
| |
llvm-svn: 365491
|
|
|
|
| |
llvm-svn: 365488
|
|
|
|
|
|
| |
Account for 64-bit scalar eq/ne when available.
llvm-svn: 365487
|
|
|
|
| |
llvm-svn: 365486
|
|
|
|
| |
llvm-svn: 365484
|
|
|
|
| |
llvm-svn: 365483
|
|
|
|
| |
llvm-svn: 365482
|
|
|
|
| |
llvm-svn: 365093
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
immediate forms.
There are two main issues preventing us from generating immediate form shifts:
1) We have partial SelectionDAG imported support for G_ASHR and G_LSHR shift
immediate forms, but they currently don't work because the amount type is
expected to be an s64 constant, but we only legalize them to have homogenous
types.
To deal with this, first we introduce a custom legalizer to *only* custom legalize
s32 shifts which have a constant operand into a s64.
There is also an additional artifact combiner to fold zexts(g_constant) to a
larger G_CONSTANT if it's legal, a counterpart to the anyext version committed
in an earlier patch.
2) For G_SHL the importer can't cope with the pattern. For this I introduced an
early selection phase in the arm64 selector to select these forms manually
before the tablegen selector pessimizes it to a register-register variant.
Differential Revision: https://reviews.llvm.org/D63910
llvm-svn: 364994
|
|
|
|
| |
llvm-svn: 364933
|
|
|
|
| |
llvm-svn: 364932
|
|
|
|
| |
llvm-svn: 364931
|
|
|
|
|
|
|
|
| |
The register bank for the destination of the sample argument copy was
wrong. We shouldn't be constraining each source to the result register
bank. Allow constraining the original register to the right size.
llvm-svn: 364928
|
|
|
|
|
|
|
| |
Manually select to workaround tablegen emitter emitting checks for
G_CONSTANT.
llvm-svn: 364927
|
|
|
|
|
|
|
| |
The pattern importer is for some reason emitting checks for G_CONSTANT
for the immediate operands.
llvm-svn: 364926
|
|
|
|
|
|
|
|
| |
If the requested source type an be used as a merge source type, create
a merge of merges. This avoids creating large, illegal extensions and
bit-ops directly to the result type.
llvm-svn: 364841
|
|
|
|
| |
llvm-svn: 364836
|
|
|
|
| |
llvm-svn: 364835
|
|
|
|
| |
llvm-svn: 364834
|
|
|
|
|
|
|
|
|
| |
Tests don't cover the masked input path since non-kernel arguments
aren't lowered yet.
Test is copied directly from the existing test, with 2 additions.
llvm-svn: 364833
|
|
|
|
|
|
|
|
| |
Replace the brcond for the 2 cases that act as branches. For now
follow how the current system works, although I think we can
eventually get rid of the pseudos.
llvm-svn: 364832
|
|
|
|
|
|
|
|
|
| |
This needs to be extended to s32, and expanded into cmp+select. This
is relying on the fact that widenScalar happens to leave the
instruction in place, but this isn't a guaranteed property of
LegalizerHelper.
llvm-svn: 364831
|
|
|
|
|
|
|
| |
Use a change observer to apply a register bank to the newly created
intermediate result register.
llvm-svn: 364830
|
|
|
|
| |
llvm-svn: 364828
|
|
|
|
|
|
|
| |
If this is scalar, promote to s32. Use a new observer class to assign
the register bank of newly created registers.
llvm-svn: 364827
|
|
|
|
|
|
|
|
|
| |
The condition register bank must be scc or vcc so that a copy will be
inserted, which will be lowered to a compare.
Currently greedy unnecessarily forces using a VCC select.
llvm-svn: 364825
|
|
|
|
| |
llvm-svn: 364819
|
|
|
|
| |
llvm-svn: 364817
|
|
|
|
| |
llvm-svn: 364811
|
|
|
|
| |
llvm-svn: 364808
|
|
|
|
|
|
|
|
| |
Also works around tablegen defect in selecting add with unused carry,
but if we have to manually select GEP, might as well handle add
manually.
llvm-svn: 364806
|
|
|
|
| |
llvm-svn: 364805
|
|
|
|
|
|
|
|
|
|
|
| |
There are several things broken, but at least emit the right thing for
gfx9.
The import of the pattern with the unused carry out seems to not
work. Needs a special class for clamp, because OperandWithDefaultOps
doesn't really work.
llvm-svn: 364804
|
|
|
|
| |
llvm-svn: 364801
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: arsenm
Reviewed By: arsenm
Subscribers: hiraditya, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, Petar.Avramovic, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D58804
llvm-svn: 364797
|
|
|
|
| |
llvm-svn: 364795
|
|
|
|
| |
llvm-svn: 364789
|
|
|
|
|
|
|
| |
This is easy to handle and avoids legalization artifacts which are
likely to obscure combines.
llvm-svn: 364787
|
|
|
|
| |
llvm-svn: 364786
|
|
|
|
|
|
|
| |
isVCC has the same bug, but isn't used in a context where it can cause
a problem.
llvm-svn: 364784
|
|
|
|
| |
llvm-svn: 364782
|
|
|
|
| |
llvm-svn: 364768
|
|
|
|
| |
llvm-svn: 364767
|
|
|
|
| |
llvm-svn: 364766
|