mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-28 06:00:30 +00:00
[Clang] New loop pragma vectorize_predicate
This adds a new vectorize predication loop hint: #pragma clang loop vectorize_predicate(enable) that can be used to indicate to the vectoriser that all (load/store) instructions should be predicated (masked). This allows, for example, folding of the remainder loop into the main loop. This patch will be followed up with D64916 and D65197. The former is a refactoring in the loopvectorizer and the groundwork to make tail loop folding a more general concept, and in the latter the actual tail loop folding transformation will be implemented. Differential Revision: https://reviews.llvm.org/D64744 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@366989 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8a53c05b3f
commit
3c372e3b77
@ -5423,6 +5423,21 @@ is a bit. If the bit operand value is 1 vectorization is enabled. A value of
|
||||
!0 = !{!"llvm.loop.vectorize.enable", i1 0}
|
||||
!1 = !{!"llvm.loop.vectorize.enable", i1 1}
|
||||
|
||||
'``llvm.loop.vectorize.predicate.enable``' Metadata
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This metadata selectively enables or disables creating predicated instructions
|
||||
for the loop, which can enable folding of the scalar epilogue loop into the
|
||||
main loop. The first operand is the string
|
||||
``llvm.loop.vectorize.predicate.enable`` and the second operand is a bit. If
|
||||
the bit operand value is 1 vectorization is enabled. A value of 0 disables
|
||||
vectorization:
|
||||
|
||||
.. code-block:: llvm
|
||||
|
||||
!0 = !{!"llvm.loop.vectorize.predicate.enable", i1 0}
|
||||
!1 = !{!"llvm.loop.vectorize.predicate.enable", i1 1}
|
||||
|
||||
'``llvm.loop.vectorize.width``' Metadata
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user