| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 295681
|
| |
|
|
|
|
|
| |
We've already checked that the loop is in simplify form before, but a
little paranoia never hurt anyone.
llvm-svn: 295680
|
| |
|
|
| |
llvm-svn: 295678
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This lets one add aliasing stores to the updater.
(i'm next going to move the creation/etc functions to the updater)
Reviewers: george.burgess.iv
Subscribers: llvm-commits, Prazek
Differential Revision: https://reviews.llvm.org/D30154
llvm-svn: 295677
|
| |
|
|
| |
llvm-svn: 295676
|
| |
|
|
|
|
|
| |
DenseMap::lookup returns copy of the value in the map. Returning the
address of the temporary return value will cause use-after-free.
llvm-svn: 295675
|
| |
|
|
|
|
| |
broadcast loads where the passthru operand is not operand 0.
llvm-svn: 295673
|
| |
|
|
|
|
|
|
| |
Pull out repeated code for extraction index operand and source vector value type.
Use isNullConstant helper to check for zero extraction index.
llvm-svn: 295670
|
| |
|
|
|
|
| |
target
llvm-svn: 295669
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MachineOperand expr. NFC
Summary:
Each OperandPredicateMatcher shouldn't need to know how to generate the expression
to reference a MachineOperand. The OperandMatcher should provide it.
In addition to separating responsibilities, this also lays some groundwork for
decoupling source patterns from destination patterns to allow invented operands
or operands provided by GlobalISel's equivalent to the ComplexPattern<> class.
Depends on D29709
Reviewers: t.p.northover, ab, rovka, qcolombet, aditya_nandakumar
Reviewed By: ab
Subscribers: dberris, kristof.beyls, llvm-commits, igorb
Differential Revision: https://reviews.llvm.org/D29710
llvm-svn: 295668
|
| |
|
|
| |
llvm-svn: 295666
|
| |
|
|
| |
llvm-svn: 295665
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There used to be a check in the IRTranslator that prevented us from having to
deal with atomic loads/stores. That check has been removed in r294993 and the
AArch64 backend was updated accordingly. This commit does the same thing for the
ARM backend.
In general, in the ARM backend we introduce fences during the atomic expand
pass, so we don't have to worry about atomics, *except* for the 32-bit ARMv8
target, which handles atomics more like AArch64. Since we don't want to worry
about that yet, just bail out of instruction selection if we find any atomic
loads.
llvm-svn: 295662
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
In the near future the rules will be sorted between these two steps to
ensure that more important rules are not prevented by less important ones.
Reviewers: t.p.northover, ab, rovka, qcolombet, aditya_nandakumar
Reviewed By: ab
Subscribers: dberris, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D29709
llvm-svn: 295661
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Its more profitable to go through memory (1 cycles throughput)
than using VMOVD + VPERMV/PSHUFB sequence ( 2/3 cycles throughput) to implement EXTRACT_VECTOR_ELT with variable index.
IACA tool was used to get performace estimation (https://software.intel.com/en-us/articles/intel-architecture-code-analyzer)
For example for var_shuffle_v16i8_v16i8_xxxxxxxxxxxxxxxx_i8 test from vector-shuffle-variable-128.ll I get 26 cycles vs 79 cycles.
Removing the VINSERT node, we don't need it any more.
Differential Revision: https://reviews.llvm.org/D29690
llvm-svn: 295660
|
| |
|
|
| |
llvm-svn: 295657
|
| |
|
|
|
|
|
|
| |
Use v8i64 ASHR instructions if we don't have VLX.
Differential Revision: https://reviews.llvm.org/D28537
llvm-svn: 295656
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This file was missed in the commit for Cortex-M23 and Cortex-M33
support. See https://reviews.llvm.org/D29073?id=85814 .
Reviewers: rengolin, javed.absar, samparker
Reviewed By: samparker
Subscribers: llvm-commits, aemerson
Differential Revision: https://reviews.llvm.org/D30162
llvm-svn: 295655
|
| |
|
|
| |
llvm-svn: 295653
|
| |
|
|
|
|
| |
Thanks to Mikael Holmén for the initial test case
llvm-svn: 295652
|
| |
|
|
|
|
|
|
|
| |
Use tablegen to autogenerate isBranchtarget helper functions. This is a cleanup
that removes almost identical functions that differ only in a few constants.
Differential Revision: https://reviews.llvm.org/D30160
llvm-svn: 295649
|
| |
|
|
| |
llvm-svn: 295648
|
| |
|
|
|
|
| |
I missed updating them since I just ran check-llvm (with examples) in r295645.
llvm-svn: 295646
|
| |
|
|
|
|
| |
r295636.
llvm-svn: 295645
|
| |
|
|
|
|
|
|
|
|
|
| |
all AVX instructions with the new value.
Add WIG value to all of AVX instructions which ignore the W-bit in their encoding, instead of giving them the default value of 0.
This patch is needed for a follow up work on EVEX2VEX pass (replacing EVEX encoded instructions with their corresponding VEX version when possible).
Differential Revision: https://reviews.llvm.org/D29876
llvm-svn: 295643
|
| |
|
|
|
|
| |
Initial value of V is sett nullptr, as it is not used.
llvm-svn: 295642
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: mkuper
Subscribers: llvm-commits, mzolotukhin
Differential Revision: https://reviews.llvm.org/D30103
llvm-svn: 295641
|
| |
|
|
|
|
| |
passthru isn't operand 0.
llvm-svn: 295640
|
| |
|
|
|
|
| |
load when the passthru op isn't operand 0.
llvm-svn: 295639
|
| |
|
|
|
|
| |
patterns.
llvm-svn: 295638
|
| |
|
|
|
|
| |
easier to spot bad swizzling.
llvm-svn: 295637
|
| |
|
|
|
|
|
|
|
|
| |
The current ObjectLinkingLayer (now RTDyldObjectLinkingLayer) links objects
in-process using MCJIT's RuntimeDyld class. In the near future I hope to add new
object linking layers (e.g. a remote linking layer that links objects in the JIT
target process, rather than the client), so I'm renaming this class to be more
descriptive.
llvm-svn: 295636
|
| |
|
|
|
|
| |
that aren't in operand 2.
llvm-svn: 295634
|
| |
|
|
|
|
|
|
| |
less than the operation size.
An earlier commit already did this for the register form.
llvm-svn: 295626
|
| |
|
|
|
|
| |
instructions when operation reads/writes memory.
llvm-svn: 295625
|
| |
|
|
|
|
| |
Other than this, we consistently use lower case.
llvm-svn: 295623
|
| |
|
|
|
|
| |
patterns already increases their priority.
llvm-svn: 295619
|
| |
|
|
| |
llvm-svn: 295618
|
| |
|
|
| |
llvm-svn: 295617
|
| |
|
|
|
|
| |
new patterns to enable isel to fold the loads on it own.
llvm-svn: 295616
|
| |
|
|
| |
llvm-svn: 295615
|
| |
|
|
|
|
|
|
| |
Replaces existing approach that could only search BUILD_VECTOR nodes.
Requires getTargetConstantBitsFromNode to discriminate cases with all/partial UNDEF bits in each element - this should also be useful when we get around to supporting getTargetShuffleMaskIndices with UNDEF elements.
llvm-svn: 295613
|
| |
|
|
|
|
|
|
| |
operand is not operand 0.
This uses a SDNodeXForm to swizzle the appropriate immediate bits to allow this to be matched.
llvm-svn: 295612
|
| |
|
|
|
|
| |
select is used to force the passthru operand to be not operand 0.
llvm-svn: 295611
|
| |
|
|
|
|
|
|
|
|
| |
combine depths.
As discussed on D27692, this permits another domain to be used to combine a shuffle at high depths.
We currently set the required depth at 4 or more combined shuffles, this is probably too high for most targets but is a good starting point and already helps avoid a number of costly variable shuffles.
llvm-svn: 295608
|
| |
|
|
| |
llvm-svn: 295607
|
| |
|
|
|
|
| |
Relax the INSERTPS/SHUFPS/SHUFPD combines to support integer inputs if permitted.
llvm-svn: 295606
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D30096
llvm-svn: 295605
|
| |
|
|
|
|
|
|
| |
Add the infrastructure to flag whether float and/or int domains are permitable.
A future patch will enable domain crossing based off shuffle depth and the value types of the source vectors.
llvm-svn: 295604
|
| |
|
|
| |
llvm-svn: 295603
|