|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
| #
309f1e4a |
| 16-Nov-2021 |
David Green <[email protected]> |
[ARM] Add datalayout to costmodel tests. NFC
This adds a sensible datalayout to the ARM cost model tests, to prevent the costs reported being incorrect for the size of pointers.
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1 |
|
| #
28fc1738 |
| 09-Nov-2020 |
Simon Pilgrim <[email protected]> |
[LoopVectorize] Remove unused check-prefixes
|
|
Revision tags: llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
| #
064981f0 |
| 28-Aug-2020 |
Anna Welker <[email protected]> |
[ARM][MVE] Enable MVE gathers and scatters by default
Enable MVE gather/scatters by default, which requires some minor adaptations in some tests.
Differential revision: https://reviews.llvm.org/D86
[ARM][MVE] Enable MVE gathers and scatters by default
Enable MVE gather/scatters by default, which requires some minor adaptations in some tests.
Differential revision: https://reviews.llvm.org/D86776
show more ...
|
| #
bda8fbe2 |
| 26-Aug-2020 |
Sjoerd Meijer <[email protected]> |
[LV] Fallback strategies if tail-folding fails
This implements 2 different vectorisation fallback strategies if tail-folding fails: 1) don't vectorise at all, or 2) vectorise using a scalar epilogue
[LV] Fallback strategies if tail-folding fails
This implements 2 different vectorisation fallback strategies if tail-folding fails: 1) don't vectorise at all, or 2) vectorise using a scalar epilogue. This can be controlled with option -prefer-predicate-over-epilogue, that has been changed to take a numeric value corresponding to the tail-folding preference and preferred fallback.
Patch by: Pierre van Houtryve, Sjoerd Meijer.
Differential Revision: https://reviews.llvm.org/D79783
show more ...
|
| #
ae366479 |
| 25-Aug-2020 |
Sjoerd Meijer <[email protected]> |
[LV] get.active.lane.mask consuming tripcount instead of backedge-taken count
This adapts LV to the new semantics of get.active.lane.mask as discussed in D86147, which means that the LV now emits in
[LV] get.active.lane.mask consuming tripcount instead of backedge-taken count
This adapts LV to the new semantics of get.active.lane.mask as discussed in D86147, which means that the LV now emits intrinsic get.active.lane.mask with the loop tripcount instead of the backedge-taken count as its second argument. The motivation for this is described in D86147.
Differential Revision: https://reviews.llvm.org/D86304
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1 |
|
| #
7ebc6bed |
| 17-Jul-2020 |
Sjoerd Meijer <[email protected]> |
[ARM][MVE] Reorg of the LV tail-folding tests
It was getting difficult to see which test was in which file, so this reorganises the test files so that now all filenames start with tail-folding-* fol
[ARM][MVE] Reorg of the LV tail-folding tests
It was getting difficult to see which test was in which file, so this reorganises the test files so that now all filenames start with tail-folding-* followed by a more descriptive name what that group of tests check.
show more ...
|
|
Revision tags: llvmorg-12-init |
|
| #
595270ae |
| 13-Jul-2020 |
Sjoerd Meijer <[email protected]> |
[ARM][MVE] Refactor option -disable-mve-tail-predication
This refactors option -disable-mve-tail-predication to take different arguments so that we have 1 option to control tail-predication rather t
[ARM][MVE] Refactor option -disable-mve-tail-predication
This refactors option -disable-mve-tail-predication to take different arguments so that we have 1 option to control tail-predication rather than several different ones.
This is also a prep step for D82953, in which we want to reject reductions unless that is requested with this option.
Differential Revision: https://reviews.llvm.org/D83133
show more ...
|
|
Revision tags: llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3 |
|
| #
146dad00 |
| 06-Jul-2020 |
David Green <[email protected]> |
[ARM] MVE FP16 cost adjustments
This adjusts the MVE fp16 cost model, similar to how we already do for integer casts. It uses the base cost of 1 per cvt for most fp extend / truncates, but adjusts i
[ARM] MVE FP16 cost adjustments
This adjusts the MVE fp16 cost model, similar to how we already do for integer casts. It uses the base cost of 1 per cvt for most fp extend / truncates, but adjusts it for loads and stores where we know that a extending load has been used to get the load into the correct lane, and only an MVE VCVTB is then needed.
Differential Revision: https://reviews.llvm.org/D81813
show more ...
|
| #
55227f85 |
| 06-Jul-2020 |
David Green <[email protected]> |
[ARM] Use BaseT::getMemoryOpCost for getMemoryOpCost
This alters getMemoryOpCost to use the Base TargetTransformInfo version that includes some additional checks for whether extending loads are lega
[ARM] Use BaseT::getMemoryOpCost for getMemoryOpCost
This alters getMemoryOpCost to use the Base TargetTransformInfo version that includes some additional checks for whether extending loads are legal. This will generally have the effect of making <2 x ..> and some <4 x ..> loads/stores more expensive, which in turn should help favour larger vector factors.
Notably it alters the cost of a <4 x half>, which with the current codegen will be expensive if it is not extended.
Differential Revision: https://reviews.llvm.org/D82456
show more ...
|
|
Revision tags: llvmorg-10.0.1-rc2 |
|
| #
e345d547 |
| 17-Jun-2020 |
Sjoerd Meijer <[email protected]> |
Recommit "[LV] Emit @llvm.get.active.lane.mask for tail-folded loops"
Fixed ARM regression test.
Please see the original commit message rG47650451738c for details.
|
| #
d4e183f6 |
| 17-Jun-2020 |
Sjoerd Meijer <[email protected]> |
Revert "[LV] Emit @llvm.get.active.mask for tail-folded loops"
This reverts commit 47650451738c821993c763356854b560a0f9f550 while I investigate the build bot failures.
|
| #
47650451 |
| 10-Jun-2020 |
Sjoerd Meijer <[email protected]> |
[LV] Emit @llvm.get.active.mask for tail-folded loops
This emits new IR intrinsic @llvm.get.active.mask for tail-folded vectorised loops if the intrinsic is supported by the backend, which is checke
[LV] Emit @llvm.get.active.mask for tail-folded loops
This emits new IR intrinsic @llvm.get.active.mask for tail-folded vectorised loops if the intrinsic is supported by the backend, which is checked by querying TargetTransform hook emitGetActiveLaneMask.
This intrinsic creates a mask representing active and inactive vector lanes, which is used by the masked load/store instructions that are created for tail-folded loops. The semantics of @llvm.get.active.mask are described here in LangRef:
https://llvm.org/docs/LangRef.html#llvm-get-active-lane-mask-intrinsics
This intrinsic is also used to provide a hint to the backend. That is, the second argument of the intrinsic represents the back-edge taken count of the loop. For MVE, for example, we use that to set up tail-predication, which is a new form of predication in MVE for vector loops that implicitely predicates the last vector loop iteration by implicitely setting active/inactive lanes, i.e. the tail loop is predicated. In order to set up a tail-predicated vector loop, we need to know the number of data elements processed by the vector loop, which corresponds the the tripcount of the scalar loop, which we can now reconstruct using @llvm.get.active.mask.
Differential Revision: https://reviews.llvm.org/D79100
show more ...
|
|
Revision tags: llvmorg-10.0.1-rc1 |
|
| #
7c5d2bec |
| 02-Apr-2020 |
Jonathan Roelofs <[email protected]> |
[llvm] Fix missing FileCheck directive colons
https://reviews.llvm.org/D77352
|
|
Revision tags: llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2, llvmorg-10.0.0-rc1, llvmorg-11-init, llvmorg-9.0.1, llvmorg-9.0.1-rc3 |
|
| #
b1aba037 |
| 08-Dec-2019 |
David Green <[email protected]> |
[ARM] Enable MVE masked loads and stores
With the extra optimisations we have done, these should now be fine to enable by default. Which is what this patch does.
Differential Revision: https://revi
[ARM] Enable MVE masked loads and stores
With the extra optimisations we have done, these should now be fine to enable by default. Which is what this patch does.
Differential Revision: https://reviews.llvm.org/D70968
show more ...
|
|
Revision tags: llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1 |
|
| #
901cd3b3 |
| 21-Nov-2019 |
Sjoerd Meijer <[email protected]> |
[LV] PreferPredicateOverEpilog respecting option
Follow-up of cb47b8783: don't query TTI->preferPredicateOverEpilogue when option -prefer-predicate-over-epilog is set to false, i.e. when we prefer n
[LV] PreferPredicateOverEpilog respecting option
Follow-up of cb47b8783: don't query TTI->preferPredicateOverEpilogue when option -prefer-predicate-over-epilog is set to false, i.e. when we prefer not to predicate the loop.
Differential Revision: https://reviews.llvm.org/D70382
show more ...
|
| #
71327707 |
| 15-Nov-2019 |
Sjoerd Meijer <[email protected]> |
[ARM][MVE] tail-predication
This is a follow up of d90804d, to also flag fmcp instructions as instructions that we do not support in tail-predicated vector loops.
Differential Revision: https://rev
[ARM][MVE] tail-predication
This is a follow up of d90804d, to also flag fmcp instructions as instructions that we do not support in tail-predicated vector loops.
Differential Revision: https://reviews.llvm.org/D70295
show more ...
|
| #
cb47b878 |
| 14-Nov-2019 |
Sjoerd Meijer <[email protected]> |
[LV] PreferPredicateOverEpilog respecting predicate loop hint
The vectoriser queries TTI->preferPredicateOverEpilogue to determine if tail-folding is preferred for a loop, but it was not respecting
[LV] PreferPredicateOverEpilog respecting predicate loop hint
The vectoriser queries TTI->preferPredicateOverEpilogue to determine if tail-folding is preferred for a loop, but it was not respecting loop hint 'predicate' that can disable this, which has now been added. This showed that we were incorrectly initialising loop hint 'vectorize.predicate.enable' with 0 (i.e. FK_Disabled) but this should have been FK_Undefined, which has been fixed.
Differential Revision: https://reviews.llvm.org/D70125
show more ...
|
| #
d90804d2 |
| 13-Nov-2019 |
Sjoerd Meijer <[email protected]> |
[ARM][MVE] canTailPredicateLoop
This implements TTI hook 'preferPredicateOverEpilogue' for MVE. This is a first version and it operates on single block loops only. With this change, the vectoriser
[ARM][MVE] canTailPredicateLoop
This implements TTI hook 'preferPredicateOverEpilogue' for MVE. This is a first version and it operates on single block loops only. With this change, the vectoriser will now determine if tail-folding scalar remainder loops is possible/desired, which is the first step to generate MVE tail-predicated vector loops.
This is disabled by default for now. I.e,, this is depends on option -disable-mve-tail-predication, which is off by default.
I will follow up on this soon with a patch for the vectoriser to respect loop hint 'vectorize.predicate.enable'. I.e., with this loop hint set to Disabled, we don't want to tail-fold and we shouldn't query this TTI hook, which is done in D70125.
Differential Revision: https://reviews.llvm.org/D69845
show more ...
|
| #
6c2a4f5f |
| 06-Nov-2019 |
Sjoerd Meijer <[email protected]> |
[TTI][LV] preferPredicateOverEpilogue
We have two ways to steer creating a predicated vector body over creating a scalar epilogue. To force this, we have 1) a command line option and 2) a pragma ava
[TTI][LV] preferPredicateOverEpilogue
We have two ways to steer creating a predicated vector body over creating a scalar epilogue. To force this, we have 1) a command line option and 2) a pragma available. This adds a third: a target hook to TargetTransformInfo that can be queried whether predication is preferred or not, which allows the vectoriser to make the decision without forcing it.
While this change behaves as a non-functional change for now, it shows the required TTI plumbing, usage of this new hook in the vectoriser, and the beginning of an ARM MVE implementation. I will follow up on this with: - a complete MVE implementation, see D69845. - a patch to disable this, i.e. we should respect "vector_predicate(disable)" and its corresponding loophint.
Differential Revision: https://reviews.llvm.org/D69040
show more ...
|