From 3c372e3b77efc0403ffd066c3fa59ca9a1566baa Mon Sep 17 00:00:00 2001 From: Sjoerd Meijer Date: Thu, 25 Jul 2019 07:33:13 +0000 Subject: [PATCH] [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 --- docs/LangRef.rst | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/LangRef.rst b/docs/LangRef.rst index f3b28029936..9a8643bef8b 100644 --- a/docs/LangRef.rst +++ b/docs/LangRef.rst @@ -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 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- 2.40.0