<div dir="ltr"><div>Hi Zvi, </div><div><br></div>I think this commit, or one of the two related adjacent ones, may have caused: <a href="https://bugs.llvm.org//show_bug.cgi?id=32872">https://bugs.llvm.org//show_bug.cgi?id=32872</a><div><br></div><div>I'm getting vector shuffle weirdness involving undefs.</div><div><br></div><div>- Andrew</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 29, 2017 at 11:06 PM, Zvi Rackover via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: zvi<br>
Date: Sun Apr 30 01:06:26 2017<br>
New Revision: 301764<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=301764&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=301764&view=rev</a><br>
Log:<br>
InstructionSimplify: Simplify a shuffle with a undef mask to undef<br>
<br>
Summary:<br>
Following the discussion in pr32486, adding the simplification:<br>
 shuffle %x, %y, undef -> undef<br>
<br>
Reviewers: spatel, RKSimon, andreadb, davide<br>
<br>
Reviewed By: spatel<br>
<br>
Subscribers: jroelofs, davide, llvm-commits<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D32293" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D32293</a><br>
<br>
Modified:<br>
    llvm/trunk/lib/Analysis/<wbr>InstructionSimplify.cpp<br>
    llvm/trunk/test/Transforms/<wbr>InstSimplify/shufflevector.ll<br>
<br>
Modified: llvm/trunk/lib/Analysis/<wbr>InstructionSimplify.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/InstructionSimplify.cpp?rev=301764&r1=301763&r2=301764&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Analysis/InstructionSimplify.<wbr>cpp?rev=301764&r1=301763&r2=<wbr>301764&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Analysis/<wbr>InstructionSimplify.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/<wbr>InstructionSimplify.cpp Sun Apr 30 01:06:26 2017<br>
@@ -4049,6 +4049,9 @@ static Value *foldIdentityShuffles(int D<br>
 static Value *SimplifyShuffleVectorInst(<wbr>Value *Op0, Value *Op1, Constant *Mask,<br>
                                         Type *RetTy, const SimplifyQuery &Q,<br>
                                         unsigned MaxRecurse) {<br>
+  if (isa<UndefValue>(Mask))<br>
+    return UndefValue::get(RetTy);<br>
+<br>
   Type *InVecTy = Op0->getType();<br>
   unsigned MaskNumElts = Mask->getType()-><wbr>getVectorNumElements();<br>
   unsigned InVecNumElts = InVecTy->getVectorNumElements(<wbr>);<br>
<br>
Modified: llvm/trunk/test/Transforms/<wbr>InstSimplify/shufflevector.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstSimplify/shufflevector.ll?rev=301764&r1=301763&r2=301764&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Transforms/InstSimplify/<wbr>shufflevector.ll?rev=301764&<wbr>r1=301763&r2=301764&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/Transforms/<wbr>InstSimplify/shufflevector.ll (original)<br>
+++ llvm/trunk/test/Transforms/<wbr>InstSimplify/shufflevector.ll Sun Apr 30 01:06:26 2017<br>
@@ -118,6 +118,14 @@ define <4 x i32> @undef_mask(<4 x i32> %<br>
   ret <4 x i32> %shuf<br>
 }<br>
<br>
+define <4 x i32> @undef_mask_1(<4 x i32> %x, <4 x i32> %y) {<br>
+; CHECK-LABEL: @undef_mask_1(<br>
+; CHECK-NEXT:    ret <4 x i32> undef<br>
+;<br>
+  %shuf = shufflevector <4 x i32> %x, <4 x i32> %y, <4 x i32> undef<br>
+  ret <4 x i32> %shuf<br>
+}<br>
+<br>
 define <4 x i32> @identity_mask_0(<4 x i32> %x) {<br>
 ; CHECK-LABEL: @identity_mask_0(<br>
 ; CHECK-NEXT:    ret <4 x i32> [[X:%.*]]<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>