[PATCH] D77396: [LangRef] update text for shufflevector

Sanjay Patel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 3 07:30:03 PDT 2020


spatel created this revision.
spatel added reviewers: efriedma, simoll, huihuiz, sdesmalen.
Herald added a subscriber: mcrosier.
spatel added a reviewer: ctetreau.

D72467 <https://reviews.llvm.org/D72467> updated the shufflevector instruction to include a constant mask rather than a mask operand. The LangRef text was vague enough to still make sense, but it would be better to update here too, so there's no confusion about valid mask values. The text here is mostly copied from the documentation code comments for "class ShuffleVectorInst".


https://reviews.llvm.org/D77396

Files:
  llvm/docs/LangRef.rst


Index: llvm/docs/LangRef.rst
===================================================================
--- llvm/docs/LangRef.rst
+++ llvm/docs/LangRef.rst
@@ -8688,27 +8688,24 @@
 """"""""""
 
 The first two operands of a '``shufflevector``' instruction are vectors
-with the same type. The third argument is a shuffle mask whose element
-type is always 'i32'. The result of the instruction is a vector whose
-length is the same as the shuffle mask and whose element type is the
-same as the element type of the first two operands.
-
-The shuffle mask operand is required to be a constant vector with either
-constant integer or undef values.
+with the same type. The third argument is a shuffle mask vector constant
+whose element type is always ``i32``. The result of the instruction is a
+vector whose length is the same as the shuffle mask and whose element
+type is the same as the element type of the first two operands.
 
 Semantics:
 """"""""""
 
 The elements of the two input vectors are numbered from left to right
-across both of the vectors. The shuffle mask operand specifies, for each
-element of the result vector, which element of the two input vectors the
-result element gets.
-
-If the shuffle mask is undef, the result vector is undef. If any element
-of the mask operand is undef, that element of the result is undef. If the
-shuffle mask selects an undef element from one of the input vectors, the
-resulting element is undef. An undef mask element prevents a poisoned
-vector element from propagating.
+across both of the vectors. For each element of the result vector, the
+shuffle mask selects an element from one of the input vectors to copy
+to the result. Non-negative elements in the mask represent an index
+into the concatenated pair of input vectors. ``UndefMaskElem`` (-1)
+in the mask vector specifies that the result element is undefined
+If the shuffle mask is undefined, the result vector is undefined. If
+the shuffle mask selects an undefined element from one of the input
+vectors, the resulting element is undefined. An undefined mask element
+prevents a poisoned vector element from propagating.
 
 For scalable vectors, the only valid mask values at present are
 ``zeroinitializer`` and ``undef``, since we cannot write all indices as


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77396.254792.patch
Type: text/x-patch
Size: 2273 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200403/cc58747f/attachment.bin>


More information about the llvm-commits mailing list