[PATCH] D72467: Remove "mask" operand from shufflevector.

Christopher Tetreault via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jan 23 08:43:14 PST 2020


ctetreau added inline comments.


================
Comment at: llvm/include/llvm/IR/IRBuilder.h:2544
+    SmallVector<int, 16> IntMask;
+    ShuffleVectorInst::getShuffleMask(cast<Constant>(Mask), IntMask);
+    return CreateShuffleVector(V1, V2, IntMask, Name);
----------------
spatel wrote:
> Add an assert that Mask isa<Constant> ?
cast<T> already does this assert.


================
Comment at: llvm/include/llvm/IR/IRBuilder.h:2551
+    SmallVector<int, 16> IntMask;
+    IntMask.assign(Mask.begin(), Mask.end());
+    return CreateShuffleVector(V1, V2, IntMask, Name);
----------------
[0 .. uint32_MAX] is wider than [0 .. int_MAX]. Assert the values are in range somehow?


================
Comment at: llvm/include/llvm/IR/Instructions.h:1985-1986
 ///
+/// The shuffle mask operand specifies, for each element of the result vector,
+/// which element of the two input vectors the result element gets. The
+/// shuffle mask is represented as an array of integers. Positive integers
----------------
spatel wrote:
> This reads awkwardly to me (if you agree, we can update the LangRef too). 
> How about:
> "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) specifies that the result element is undefined."
I also found the wording of the description of shufflevector in the language ref confusing. Since this description seems to be related I thought it worth mentioning.

It's unclear to me how the values specify vector inputs. I assume for two vectors <4 x 18>, that the mask <3, 4, 5, 6> takes the last element of the first vector, and the first three elements of the second vector, but this isn't explicitly stated anywhere.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72467/new/

https://reviews.llvm.org/D72467





More information about the cfe-commits mailing list