<div dir="ltr">Test case added in r298959</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div>
<br><div class="gmail_quote">On Tue, Mar 28, 2017 at 4:20 PM, Craig Topper 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: ctopper<br>
Date: Tue Mar 28 18:20:37 2017<br>
New Revision: 298957<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=298957&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=298957&view=rev</a><br>
Log:<br>
[AVX-512] Punt on fast-isel of truncates to i1 when AVX512 is enabled.<br>
<br>
We should be masking the value and emitting a register copy like we do in non-fast isel. Instead we were just updating the value map and emitting nothing.<br>
<br>
After r298928 we started seeing cases where we would create a copy from GR8 to GR32 because the source register in a VK1 to GR32 copy was replaced by the GR8 going into a truncate.<br>
<br>
This fixes PR32451.<br>
<br>
<br>
Modified:<br>
    llvm/trunk/lib/Target/X86/<wbr>X86FastISel.cpp<br>
<br>
Modified: llvm/trunk/lib/Target/X86/<wbr>X86FastISel.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FastISel.cpp?rev=298957&r1=298956&r2=298957&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/Target/<wbr>X86/X86FastISel.cpp?rev=<wbr>298957&r1=298956&r2=298957&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Target/X86/<wbr>X86FastISel.cpp (original)<br>
+++ llvm/trunk/lib/Target/X86/<wbr>X86FastISel.cpp Tue Mar 28 18:20:37 2017<br>
@@ -2512,7 +2512,8 @@ bool X86FastISel::X86SelectTrunc(<wbr>const I<br>
   EVT DstVT = TLI.getValueType(DL, I->getType());<br>
<br>
   // This code only handles truncation to byte.<br>
-  if (DstVT != MVT::i8 && DstVT != MVT::i1)<br>
+  // TODO: Support truncate to i1 with AVX512.<br>
+  if (DstVT != MVT::i8 && (DstVT != MVT::i1 || Subtarget->hasAVX512()))<br>
     return false;<br>
   if (!TLI.isTypeLegal(SrcVT))<br>
     return false;<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>