[PATCH] D70641: [LangRef] make per-element poison behavior explicit
Sanjay Patel via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 4 12:35:30 PST 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rGead0d77409b8: [LangRef] make per-element poison behavior explicit (authored by spatel).
Changed prior to commit:
https://reviews.llvm.org/D70641?vs=230793&id=232191#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D70641/new/
https://reviews.llvm.org/D70641
Files:
llvm/docs/LangRef.rst
Index: llvm/docs/LangRef.rst
===================================================================
--- llvm/docs/LangRef.rst
+++ llvm/docs/LangRef.rst
@@ -3334,6 +3334,9 @@
be different if the terminator had transferred control to a different
successor.
- Dependence is transitive.
+- Vector elements may be independently poisoned. Therefore, transforms
+ on instructions such as shufflevector must be careful to propagate
+ poison across values or elements only as allowed by the original code.
An instruction that *depends* on a poison value, produces a poison value
itself. A poison value may be relaxed into an
@@ -8448,10 +8451,13 @@
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.
+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.
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: D70641.232191.patch
Type: text/x-patch
Size: 1640 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191204/7bde7a15/attachment.bin>
More information about the llvm-commits
mailing list