Unfortunately the policy is such that the current version of LLVM must be able to read a bitcode or IR text file generated by any released version of LLVM/clang from 3.0 till now. This is why the AutoUpgrade.cpp file exists and it keeps growing and its only going to get worse.<span></span><div><br></div><div>Hopefully with the discussion about the version number for the release after 3.9 we end up with a time based compatibility policy. This will allow us to remove the auto upgrade code over time, but it will take many years before we can remove auto upgrade being added now.<br><div></div><div><br>On Monday, July 4, 2016, Demikhovsky, Elena <<a href="mailto:elena.demikhovsky@intel.com">elena.demikhovsky@intel.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><a name="m_3624424636256965448__MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">I think that AVX-512 intrinsic handled in Clang should be removed from AutoUpgrade.<u></u><u></u></span></a></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">If we decide to replace a call to llvm-backend intrinsic with generating LLVM IR directly from clang, we can remove llvm-backend intrinsic at all.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Otherwise we’ll need to duplicate support in FE and BE for all AVX-512 intrinsics.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal" style="margin-left:36.0pt">
<u></u><span style="font-family:"Calibri",sans-serif;color:#2f5496"><span>-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><u></u><span dir="LTR"></span><b><i><span style="color:#2f5496"> Elena<u></u><u></u></span></i></b></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #e1e1e1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><a name="m_3624424636256965448______replyseparator"></a><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Craig Topper [mailto:<a href="javascript:_e(%7B%7D,'cvml','craig.topper@gmail.com');" target="_blank">craig.topper@gmail.com</a>]
<br>
<b>Sent:</b> Monday, July 04, 2016 21:53<br>
<b>To:</b> Breger, Igor <<a href="javascript:_e(%7B%7D,'cvml','igor.breger@intel.com');" target="_blank">igor.breger@intel.com</a>><br>
<b>Cc:</b> Eric Christopher via cfe-commits <<a href="javascript:_e(%7B%7D,'cvml','cfe-commits@lists.llvm.org');" target="_blank">cfe-commits@lists.llvm.org</a>>; Demikhovsky, Elena <<a href="javascript:_e(%7B%7D,'cvml','elena.demikhovsky@intel.com');" target="_blank">elena.demikhovsky@intel.com</a>><br>
<b>Subject:</b> Re: r274110 - [AVX512] Zero extend cmp intrinsic return value.<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">We have to keep the autoupgrade code due to the requirement that we need to be able to load bitcode files from previous versions of llvm. Though the intrinsic autograde code is starting to become large.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><br clear="all">
<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">~Craig<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">On Mon, Jul 4, 2016 at 2:55 AM, Breger, Igor <<a href="javascript:_e(%7B%7D,'cvml','igor.breger@intel.com');" target="_blank">igor.breger@intel.com</a>> wrote:<u></u><u></u></p>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Segoe UI",sans-serif;color:black;background:white">Thanks for working on this!</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Segoe UI",sans-serif;color:black;background:white"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Segoe UI",sans-serif;color:black;background:white">Regards,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Segoe UI",sans-serif;color:black;background:white">Igor</span><u></u><u></u></p>
<p class="MsoNormal"><a name="m_3624424636256965448_m_-717358221494432307__MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span></a><u></u><u></u></p>
<p class="MsoNormal"><a name="m_3624424636256965448_m_-717358221494432307______replyseparato"></a><b><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif">
 Craig Topper [mailto:<a href="javascript:_e(%7B%7D,'cvml','craig.topper@gmail.com');" target="_blank">craig.topper@gmail.com</a>]
<br>
<b>Sent:</b> Monday, July 04, 2016 10:20<br>
<b>To:</b> Breger, Igor<br>
<b>Cc:</b> Eric Christopher via cfe-commits; Demikhovsky, Elena; Ouriel, Boaz</span><u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><b>Subject:</b> Re: r274110 - [AVX512] Zero extend cmp intrinsic return value.<u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal">I've modified the indices we use for the zero vector in r274484. This gives better codegen as it now looks like a concat to the backend. So now we just end up emitting unnecessary
 kshiftlw/kshiftrw pairs instead of converting to a wider vector op and back.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><br clear="all">
<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">~Craig<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal">On Sun, Jul 3, 2016 at 1:32 PM, Craig Topper <<a href="javascript:_e(%7B%7D,'cvml','craig.topper@gmail.com');" target="_blank">craig.topper@gmail.com</a>> wrote:<u></u><u></u></p>
<div>
<p class="MsoNormal">Also should we change the AutoUpgrade code for the cmp intrinsics in the backend to also use zero instead of undef?<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888"><br clear="all">
</span><u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="color:#888888">~Craig</span><u></u><u></u></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal">On Sun, Jul 3, 2016 at 12:11 AM, Breger, Igor <<a href="javascript:_e(%7B%7D,'cvml','igor.breger@intel.com');" target="_blank">igor.breger@intel.com</a>> wrote:<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Hello Craig,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Thanks a lot for pointing it out to me.  I familiar with this problem,  we are planning  to improve
 CodeGen to handle with this case in near future.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Regards,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">Igor</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><a name="m_3624424636256965448_m_-717358221494432307_m_-367466466113487"></a><b><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma",sans-serif">
 Craig Topper [mailto:<a href="javascript:_e(%7B%7D,'cvml','craig.topper@gmail.com');" target="_blank">craig.topper@gmail.com</a>]
<br>
<b>Sent:</b> Saturday, July 02, 2016 08:46<br>
<b>To:</b> Breger, Igor; Eric Christopher via cfe-commits<br>
<b>Subject:</b> Re: r274110 - [AVX512] Zero extend cmp intrinsic return value.</span><u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal">This change codgens to something really awful now. Can you take a look?<u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">            .section            __TEXT,__text,regular,pure_instructions<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .section            __TEXT,__literal8,8byte_literals<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .p2align           3<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">LCPI0_0:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .quad   -1<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .section            __TEXT,__const<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .p2align           6<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">LCPI0_1:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .quad   0<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .quad   1<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .quad   2<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .quad   3<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .quad   8<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .quad   8<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .quad   8<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .quad   8<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .section            __TEXT,__text,regular,pure_instructions<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .globl   _test_mm_cmpeq_epu32_mask<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            .p2align           4, 0x90<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">_test_mm_cmpeq_epu32_mask:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            vpcmpeqd       %xmm1, %xmm0, %k1<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            vpbroadcastq   LCPI0_0(%rip), %zmm0 {%k1} {z}<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            vpxord %zmm1, %zmm1, %zmm1<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            vmovdqa64     LCPI0_1(%rip), %zmm2<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            vpermt2q         %zmm1, %zmm2, %zmm0<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            vpsllq   $63, %zmm0, %zmm0<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            vptestmq         %zmm0, %zmm0, %k0<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            kmovw            %k0, %eax<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">            retq<u></u><u></u></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><br clear="all">
<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">~Craig<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal">On Wed, Jun 29, 2016 at 1:14 AM, Igor Breger via cfe-commits <<a href="javascript:_e(%7B%7D,'cvml','cfe-commits@lists.llvm.org');" target="_blank">cfe-commits@lists.llvm.org</a>> wrote:<u></u><u></u></p>
<p class="MsoNormal">Author: ibreger<br>
Date: Wed Jun 29 03:14:17 2016<br>
New Revision: 274110<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=274110&view=rev" target="_blank">
http://llvm.org/viewvc/llvm-project?rev=274110&view=rev</a><br>
Log:<br>
[AVX512]  Zero extend cmp intrinsic return value.<br>
<br>
Differential Revision: <a href="http://reviews.llvm.org/D21746" target="_blank">http://reviews.llvm.org/D21746</a><br>
<br>
Modified:<br>
    cfe/trunk/lib/CodeGen/CGBuiltin.cpp<br>
    cfe/trunk/test/CodeGen/avx512vl-builtins.c<br>
<br>
Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=274110&r1=274109&r2=274110&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=274110&r1=274109&r2=274110&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Wed Jun 29 03:14:17 2016<br>
@@ -6460,8 +6460,8 @@ static Value *EmitX86MaskedCompare(CodeG<br>
       Indices[i] = i;<br>
     for (unsigned i = NumElts; i != 8; ++i)<br>
       Indices[i] = NumElts;<br>
-    Cmp = CGF.Builder.CreateShuffleVector(Cmp, UndefValue::get(Cmp->getType()),<br>
-                                          Indices);<br>
+    Cmp = CGF.Builder.CreateShuffleVector(<br>
+        Cmp, llvm::Constant::getNullValue(Cmp->getType()), Indices);<br>
   }<br>
   return CGF.Builder.CreateBitCast(Cmp,<br>
                                    IntegerType::get(CGF.getLLVMContext(),<br>
<br>
Modified: cfe/trunk/test/CodeGen/avx512vl-builtins.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vl-builtins.c?rev=274110&r1=274109&r2=274110&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vl-builtins.c?rev=274110&r1=274109&r2=274110&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/CodeGen/avx512vl-builtins.c (original)<br>
+++ cfe/trunk/test/CodeGen/avx512vl-builtins.c Wed Jun 29 03:14:17 2016<br>
@@ -8,6 +8,7 @@<br>
 __mmask8 test_mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) {<br>
   // CHECK-LABEL: @test_mm_cmpeq_epu32_mask<br>
   // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}<br>
+  // CHECK: shufflevector <4 x i1> %{{.*}}, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 4, i32 4, i32 4><br>
   return (__mmask8)_mm_cmpeq_epu32_mask(__a, __b);<br>
 }<br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="javascript:_e(%7B%7D,'cvml','cfe-commits@lists.llvm.org');" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><u></u><u></u></p>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
<p>---------------------------------------------------------------------<br>
Intel Israel (74) Limited<u></u><u></u></p>
<p>This e-mail and any attachments may contain confidential material for<br>
the sole use of the intended recipient(s). Any review or distribution<br>
by others is strictly prohibited. If you are not the intended<br>
recipient, please contact the sender and delete all copies.<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
</div>
<div>
<div>
<p>---------------------------------------------------------------------<br>
Intel Israel (74) Limited<u></u><u></u></p>
<p>This e-mail and any attachments may contain confidential material for<br>
the sole use of the intended recipient(s). Any review or distribution<br>
by others is strictly prohibited. If you are not the intended<br>
recipient, please contact the sender and delete all copies.<u></u><u></u></p>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>
<p>---------------------------------------------------------------------<br>
Intel Israel (74) Limited</p>

<p>This e-mail and any attachments may contain confidential material for<br>
the sole use of the intended recipient(s). Any review or distribution<br>
by others is strictly prohibited. If you are not the intended<br>
recipient, please contact the sender and delete all copies.</p></div>

</blockquote></div></div><br><br>-- <br>~Craig<br>