<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">The registers are not always zmm, they might be xmm/ymm as well.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Same for the K masks, not always exists.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">That’s why we thought the best way is to check the prefix.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">-Asaf<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></a></p>
<p class="MsoNormal"><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"> Eric Christopher [mailto:echristo@gmail.com]
<br>
<b>Sent:</b> Thursday, July 02, 2015 00:56<br>
<b>To:</b> Badouh, Asaf; llvm-commits@cs.uiuc.edu; Demikhovsky, Elena<br>
<b>Subject:</b> Re: [llvm] r239806 - [AVX512] add integer min/max intrinsics support.<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Sun, Jun 21, 2015 at 4:28 AM Badouh, Asaf <<a href="mailto:asaf.badouh@intel.com">asaf.badouh@intel.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hey Eric,<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">That part of the test is not new, it just moved from other part of the file.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Anyway (ElenaD & I) agree, it will be better to keep the encoding part out of these tests.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">But we think we should keep the prefix of the encoding to make sure it’s generate AVX512 code. E.g:
<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">+ ; CHECK: vpmaxsq {{.*}}encoding: [0x62<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">is that ok with you?<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Can't you just check the register here or whether or not the k mask exists? (I mean, for this instruction in particular it's always going to be avx512 so not an issue, but the general idea applies).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I guess if it's not deducible otherwise, sure, but I find it hard to believe it's completely unknowable from text.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">-eric<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">-Asaf<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><a name="msg-f:1504587132581731956__MailEndCompos"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span></a><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><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"> Eric Christopher [mailto:<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>]
<br>
<b>Sent:</b> Friday, June 19, 2015 03:55<br>
<b>To:</b> Badouh, Asaf; <a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">
llvm-commits@cs.uiuc.edu</a>; Demikhovsky, Elena<br>
<b>Subject:</b> Re: [llvm] r239806 - [AVX512] add integer min/max intrinsics support.</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hi Asaf,<o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I have a question here:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><br>
+<br>
+define <8 x i64> @test_vpmaxq(<8 x i64> %a0, <8 x i64> %a1) {<br>
+  ; CHECK: vpmaxsq {{.*}}encoding: [0x62,0xf2,0xfd,0x48,0x3d,0xc1]<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Why are you checking the encoding of instructions in the CodeGen tests? This sort of thing belongs in the MC tests for the instructions. It looks like there are already encoding
 tests so I'm not sure what you're attempting to check here? You don't appear to be checking the actual operands to the instruction.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">-eric<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">+  %res = call <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64> %a0, <8 x i64> %a1,<br>
+                    <8 x i64>zeroinitializer, i8 -1)<br>
+  ret <8 x i64> %res<br>
+}<br>
+declare <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)<br>
+<br>
+define <16 x i32> @test_vpminud(<16 x i32> %a0, <16 x i32> %a1) {<br>
+  ; CHECK: vpminud {{.*}}encoding: [0x62,0xf2,0x7d,0x48,0x3b,0xc1]<br>
+  %res = call <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32> %a0, <16 x i32> %a1,<br>
+                    <16 x i32>zeroinitializer, i16 -1)<br>
+  ret <16 x i32> %res<br>
+}<br>
+declare <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)<br>
+<br>
+define <16 x i32> @test_vpmaxsd(<16 x i32> %a0, <16 x i32> %a1) {<br>
+  ; CHECK: vpmaxsd {{.*}}encoding: [0x62,0xf2,0x7d,0x48,0x3d,0xc1]<br>
+  %res = call <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32> %a0, <16 x i32> %a1,<br>
+                    <16 x i32>zeroinitializer, i16 -1)<br>
+  ret <16 x i32> %res<br>
+}<br>
+declare <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_d_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsd %zmm<br>
+; CHECK: {%k1}<br>
+define <16 x i32>@test_int_x86_avx512_mask_pmaxs_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {<br>
+  %res = call <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)<br>
+  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmaxs.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)<br>
+  %res2 = add <16 x i32> %res, %res1<br>
+  ret <16 x i32> %res2<br>
+}<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_q_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsq %zmm<br>
+; CHECK: {%k1}<br>
+define <8 x i64>@test_int_x86_avx512_mask_pmaxs_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {<br>
+  %res = call <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)<br>
+  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmaxs.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)<br>
+  %res2 = add <8 x i64> %res, %res1<br>
+  ret <8 x i64> %res2<br>
+}<br>
+<br>
+declare <16 x i32> @llvm.x86.avx512.mask.pmaxu.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_d_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxud %zmm<br>
+; CHECK: {%k1}<br>
+define <16 x i32>@test_int_x86_avx512_mask_pmaxu_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {<br>
+  %res = call <16 x i32> @llvm.x86.avx512.mask.pmaxu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)<br>
+  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmaxu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)<br>
+  %res2 = add <16 x i32> %res, %res1<br>
+  ret <16 x i32> %res2<br>
+}<br>
+<br>
+declare <8 x i64> @llvm.x86.avx512.mask.pmaxu.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_q_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxuq %zmm<br>
+; CHECK: {%k1}<br>
+define <8 x i64>@test_int_x86_avx512_mask_pmaxu_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {<br>
+  %res = call <8 x i64> @llvm.x86.avx512.mask.pmaxu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)<br>
+  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmaxu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)<br>
+  %res2 = add <8 x i64> %res, %res1<br>
+  ret <8 x i64> %res2<br>
+}<br>
+<br>
+declare <16 x i32> @llvm.x86.avx512.mask.pmins.d.512(<16 x i32>, <16 x i32>, <16 x i32>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_d_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsd %zmm<br>
+; CHECK: {%k1}<br>
+define <16 x i32>@test_int_x86_avx512_mask_pmins_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {<br>
+  %res = call <16 x i32> @llvm.x86.avx512.mask.pmins.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)<br>
+  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmins.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)<br>
+  %res2 = add <16 x i32> %res, %res1<br>
+  ret <16 x i32> %res2<br>
+}<br>
+<br>
+declare <8 x i64> @llvm.x86.avx512.mask.pmins.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_q_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsq %zmm<br>
+; CHECK: {%k1}<br>
+define <8 x i64>@test_int_x86_avx512_mask_pmins_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {<br>
+  %res = call <8 x i64> @llvm.x86.avx512.mask.pmins.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)<br>
+  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pmins.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)<br>
+  %res2 = add <8 x i64> %res, %res1<br>
+  ret <8 x i64> %res2<br>
+}<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_d_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminud %zmm<br>
+; CHECK: {%k1}<br>
+define <16 x i32>@test_int_x86_avx512_mask_pminu_d_512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3) {<br>
+  %res = call <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 %x3)<br>
+  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pminu.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i16 -1)<br>
+  %res2 = add <16 x i32> %res, %res1<br>
+  ret <16 x i32> %res2<br>
+}<br>
+<br>
+declare <8 x i64> @llvm.x86.avx512.mask.pminu.q.512(<8 x i64>, <8 x i64>, <8 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_q_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminuq %zmm<br>
+; CHECK: {%k1}<br>
+define <8 x i64>@test_int_x86_avx512_mask_pminu_q_512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3) {<br>
+  %res = call <8 x i64> @llvm.x86.avx512.mask.pminu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 %x3)<br>
+  %res1 = call <8 x i64> @llvm.x86.avx512.mask.pminu.q.512(<8 x i64> %x0, <8 x i64> %x1, <8 x i64> %x2, i8 -1)<br>
+  %res2 = add <8 x i64> %res, %res1<br>
+  ret <8 x i64> %res2<br>
+}<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/avx512bw-intrinsics.ll<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_CodeGen_X86_avx512bw-2Dintrinsics.ll-3Frev-3D239806-26r1-3D239805-26r2-3D239806-26view-3Ddiff&d=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=7MtILbhcD8RI4NJBsNYAb1LGtfSfmdiKGJgzJdfE270&s=6lZJks4gRoZvl3DrXP0Ydz0NSbUtQRy-s6UMM7AYqSY&e=" target="_blank">
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512bw-intrinsics.ll?rev=239806&r1=239805&r2=239806&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/X86/avx512bw-intrinsics.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/avx512bw-intrinsics.ll Tue Jun 16 03:39:27 2015<br>
@@ -788,3 +788,107 @@ define <32 x i16> @test_mask_subs_epu16_<br>
 }<br>
<br>
 declare <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)<br>
+<br>
+declare <64 x i8> @llvm.x86.avx512.mask.pmaxs.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_b_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsb %zmm<br>
+; CHECK: {%k1}<br>
+define <64 x i8>@test_int_x86_avx512_mask_pmaxs_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {<br>
+  %res = call <64 x i8> @llvm.x86.avx512.mask.pmaxs.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3)<br>
+  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pmaxs.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1)<br>
+  %res2 = add <64 x i8> %res, %res1<br>
+  ret <64 x i8> %res2<br>
+}<br>
+<br>
+declare <32 x i16> @llvm.x86.avx512.mask.pmaxs.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_w_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsw %zmm<br>
+; CHECK: {%k1}<br>
+define <32 x i16>@test_int_x86_avx512_mask_pmaxs_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {<br>
+  %res = call <32 x i16> @llvm.x86.avx512.mask.pmaxs.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)<br>
+  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmaxs.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)<br>
+  %res2 = add <32 x i16> %res, %res1<br>
+  ret <32 x i16> %res2<br>
+}<br>
+<br>
+declare <64 x i8> @llvm.x86.avx512.mask.pmaxu.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_b_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxub %zmm<br>
+; CHECK: {%k1}<br>
+define <64 x i8>@test_int_x86_avx512_mask_pmaxu_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {<br>
+  %res = call <64 x i8> @llvm.x86.avx512.mask.pmaxu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3)<br>
+  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pmaxu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1)<br>
+  %res2 = add <64 x i8> %res, %res1<br>
+  ret <64 x i8> %res2<br>
+}<br>
+<br>
+declare <32 x i16> @llvm.x86.avx512.mask.pmaxu.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_w_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxuw %zmm<br>
+; CHECK: {%k1}<br>
+define <32 x i16>@test_int_x86_avx512_mask_pmaxu_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {<br>
+  %res = call <32 x i16> @llvm.x86.avx512.mask.pmaxu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)<br>
+  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmaxu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)<br>
+  %res2 = add <32 x i16> %res, %res1<br>
+  ret <32 x i16> %res2<br>
+}<br>
+<br>
+declare <64 x i8> @llvm.x86.avx512.mask.pmins.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_b_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsb %zmm<br>
+; CHECK: {%k1}<br>
+define <64 x i8>@test_int_x86_avx512_mask_pmins_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {<br>
+  %res = call <64 x i8> @llvm.x86.avx512.mask.pmins.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3)<br>
+  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pmins.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1)<br>
+  %res2 = add <64 x i8> %res, %res1<br>
+  ret <64 x i8> %res2<br>
+}<br>
+<br>
+declare <32 x i16> @llvm.x86.avx512.mask.pmins.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_w_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsw %zmm<br>
+; CHECK: {%k1}<br>
+define <32 x i16>@test_int_x86_avx512_mask_pmins_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {<br>
+  %res = call <32 x i16> @llvm.x86.avx512.mask.pmins.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)<br>
+  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmins.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)<br>
+  %res2 = add <32 x i16> %res, %res1<br>
+  ret <32 x i16> %res2<br>
+}<br>
+<br>
+declare <64 x i8> @llvm.x86.avx512.mask.pminu.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_b_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminub %zmm<br>
+; CHECK: {%k1}<br>
+define <64 x i8>@test_int_x86_avx512_mask_pminu_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {<br>
+  %res = call <64 x i8> @llvm.x86.avx512.mask.pminu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3)<br>
+  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pminu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1)<br>
+  %res2 = add <64 x i8> %res, %res1<br>
+  ret <64 x i8> %res2<br>
+}<br>
+<br>
+declare <32 x i16> @llvm.x86.avx512.mask.pminu.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_w_512<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminuw %zmm<br>
+; CHECK: {%k1}<br>
+define <32 x i16>@test_int_x86_avx512_mask_pminu_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {<br>
+  %res = call <32 x i16> @llvm.x86.avx512.mask.pminu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)<br>
+  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pminu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)<br>
+  %res2 = add <32 x i16> %res, %res1<br>
+  ret <32 x i16> %res2<br>
+}<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/avx512bwvl-intrinsics.ll<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_CodeGen_X86_avx512bwvl-2Dintrinsics.ll-3Frev-3D239806-26r1-3D239805-26r2-3D239806-26view-3Ddiff&d=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=7MtILbhcD8RI4NJBsNYAb1LGtfSfmdiKGJgzJdfE270&s=j3b54sevjt8Z2ncr2oTofl-r2HoRXF1guTVcXGiUvrk&e=" target="_blank">
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512bwvl-intrinsics.ll?rev=239806&r1=239805&r2=239806&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/X86/avx512bwvl-intrinsics.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/avx512bwvl-intrinsics.ll Tue Jun 16 03:39:27 2015<br>
@@ -2667,4 +2667,212 @@ define <32 x i8> @test_mask_subs_epu8_rm<br>
   ret <32 x i8> %res<br>
 }<br>
<br>
-declare <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)<br>
\ No newline at end of file<br>
+declare <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)<br>
+<br>
+declare <16 x i8> @llvm.x86.avx512.mask.pmaxs.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_b_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsb %xmm<br>
+; CHECK: {%k1}<br>
+define <16 x i8>@test_int_x86_avx512_mask_pmaxs_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask) {<br>
+  %res = call <16 x i8> @llvm.x86.avx512.mask.pmaxs.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2 ,i16 %mask)<br>
+  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmaxs.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> zeroinitializer, i16 %mask)<br>
+  %res2 = add <16 x i8> %res, %res1<br>
+  ret <16 x i8> %res2<br>
+}<br>
+<br>
+declare <32 x i8> @llvm.x86.avx512.mask.pmaxs.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_b_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsb %ymm<br>
+; CHECK: {%k1}<br>
+define <32 x i8>@test_int_x86_avx512_mask_pmaxs_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) {<br>
+  %res = call <32 x i8> @llvm.x86.avx512.mask.pmaxs.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3)<br>
+  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmaxs.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1)<br>
+  %res2 = add <32 x i8> %res, %res1<br>
+  ret <32 x i8> %res2<br>
+}<br>
+<br>
+declare <8 x i16> @llvm.x86.avx512.mask.pmaxs.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_w_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsw %xmm<br>
+; CHECK: {%k1}<br>
+define <8 x i16>@test_int_x86_avx512_mask_pmaxs_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {<br>
+  %res = call <8 x i16> @llvm.x86.avx512.mask.pmaxs.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)<br>
+  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmaxs.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)<br>
+  %res2 = add <8 x i16> %res, %res1<br>
+  ret <8 x i16> %res2<br>
+}<br>
+<br>
+declare <16 x i16> @llvm.x86.avx512.mask.pmaxs.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_w_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsw %ymm<br>
+; CHECK: {%k1}<br>
+define <16 x i16>@test_int_x86_avx512_mask_pmaxs_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask) {<br>
+  %res = call <16 x i16> @llvm.x86.avx512.mask.pmaxs.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask)<br>
+  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmaxs.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %mask)<br>
+  %res2 = add <16 x i16> %res, %res1<br>
+  ret <16 x i16> %res2<br>
+}<br>
+<br>
+declare <16 x i8> @llvm.x86.avx512.mask.pmaxu.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_b_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxub %xmm<br>
+; CHECK: {%k1}<br>
+define <16 x i8>@test_int_x86_avx512_mask_pmaxu_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2,i16 %mask) {<br>
+  %res = call <16 x i8> @llvm.x86.avx512.mask.pmaxu.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask)<br>
+  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmaxu.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> zeroinitializer, i16 %mask)<br>
+  %res2 = add <16 x i8> %res, %res1<br>
+  ret <16 x i8> %res2<br>
+}<br>
+<br>
+declare <32 x i8> @llvm.x86.avx512.mask.pmaxu.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_b_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxub %ymm<br>
+; CHECK: {%k1}<br>
+define <32 x i8>@test_int_x86_avx512_mask_pmaxu_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) {<br>
+  %res = call <32 x i8> @llvm.x86.avx512.mask.pmaxu.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3)<br>
+  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmaxu.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1)<br>
+  %res2 = add <32 x i8> %res, %res1<br>
+  ret <32 x i8> %res2<br>
+}<br>
+<br>
+declare <8 x i16> @llvm.x86.avx512.mask.pmaxu.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_w_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxuw %xmm<br>
+; CHECK: {%k1}<br>
+define <8 x i16>@test_int_x86_avx512_mask_pmaxu_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {<br>
+  %res = call <8 x i16> @llvm.x86.avx512.mask.pmaxu.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)<br>
+  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmaxu.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)<br>
+  %res2 = add <8 x i16> %res, %res1<br>
+  ret <8 x i16> %res2<br>
+}<br>
+<br>
+declare <16 x i16> @llvm.x86.avx512.mask.pmaxu.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_w_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxuw %ymm<br>
+; CHECK: {%k1}<br>
+define <16 x i16>@test_int_x86_avx512_mask_pmaxu_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask) {<br>
+  %res = call <16 x i16> @llvm.x86.avx512.mask.pmaxu.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask)<br>
+  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmaxu.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %mask)<br>
+  %res2 = add <16 x i16> %res, %res1<br>
+  ret <16 x i16> %res2<br>
+}<br>
+<br>
+declare <16 x i8> @llvm.x86.avx512.mask.pmins.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_b_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsb %xmm<br>
+; CHECK: {%k1}<br>
+define <16 x i8>@test_int_x86_avx512_mask_pmins_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask) {<br>
+  %res = call <16 x i8> @llvm.x86.avx512.mask.pmins.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask)<br>
+  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmins.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> zeroinitializer, i16 %mask)<br>
+  %res2 = add <16 x i8> %res, %res1<br>
+  ret <16 x i8> %res2<br>
+}<br>
+<br>
+declare <32 x i8> @llvm.x86.avx512.mask.pmins.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_b_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsb %ymm<br>
+; CHECK: {%k1}<br>
+define <32 x i8>@test_int_x86_avx512_mask_pmins_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) {<br>
+  %res = call <32 x i8> @llvm.x86.avx512.mask.pmins.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3)<br>
+  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmins.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1)<br>
+  %res2 = add <32 x i8> %res, %res1<br>
+  ret <32 x i8> %res2<br>
+}<br>
+<br>
+declare <8 x i16> @llvm.x86.avx512.mask.pmins.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_w_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsw %xmm<br>
+; CHECK: {%k1}<br>
+define <8 x i16>@test_int_x86_avx512_mask_pmins_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {<br>
+  %res = call <8 x i16> @llvm.x86.avx512.mask.pmins.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)<br>
+  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmins.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)<br>
+  %res2 = add <8 x i16> %res, %res1<br>
+  ret <8 x i16> %res2<br>
+}<br>
+<br>
+declare <16 x i16> @llvm.x86.avx512.mask.pmins.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_w_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsw %ymm<br>
+; CHECK: {%k1}<br>
+define <16 x i16>@test_int_x86_avx512_mask_pmins_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask) {<br>
+  %res = call <16 x i16> @llvm.x86.avx512.mask.pmins.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask)<br>
+  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmins.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %mask)<br>
+  %res2 = add <16 x i16> %res, %res1<br>
+  ret <16 x i16> %res2<br>
+}<br>
+<br>
+declare <16 x i8> @llvm.x86.avx512.mask.pminu.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_b_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminub %xmm<br>
+; CHECK: {%k1}<br>
+define <16 x i8>@test_int_x86_avx512_mask_pminu_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask) {<br>
+  %res = call <16 x i8> @llvm.x86.avx512.mask.pminu.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask)<br>
+  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pminu.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> zeroinitializer, i16 %mask)<br>
+  %res2 = add <16 x i8> %res, %res1<br>
+  ret <16 x i8> %res2<br>
+}<br>
+<br>
+declare <32 x i8> @llvm.x86.avx512.mask.pminu.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_b_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminub %ymm<br>
+; CHECK: {%k1}<br>
+define <32 x i8>@test_int_x86_avx512_mask_pminu_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) {<br>
+  %res = call <32 x i8> @llvm.x86.avx512.mask.pminu.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3)<br>
+  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pminu.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1)<br>
+  %res2 = add <32 x i8> %res, %res1<br>
+  ret <32 x i8> %res2<br>
+}<br>
+<br>
+declare <8 x i16> @llvm.x86.avx512.mask.pminu.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_w_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminuw %xmm<br>
+; CHECK: {%k1}<br>
+define <8 x i16>@test_int_x86_avx512_mask_pminu_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {<br>
+  %res = call <8 x i16> @llvm.x86.avx512.mask.pminu.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)<br>
+  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pminu.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)<br>
+  %res2 = add <8 x i16> %res, %res1<br>
+  ret <8 x i16> %res2<br>
+}<br>
+<br>
+declare <16 x i16> @llvm.x86.avx512.mask.pminu.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_w_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminuw %ymm<br>
+; CHECK: {%k1}<br>
+define <16 x i16>@test_int_x86_avx512_mask_pminu_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask) {<br>
+  %res = call <16 x i16> @llvm.x86.avx512.mask.pminu.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask)<br>
+  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pminu.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %mask)<br>
+  %res2 = add <16 x i16> %res, %res1<br>
+  ret <16 x i16> %res2<br>
+}<br>
<br>
Modified: llvm/trunk/test/CodeGen/X86/avx512vl-intrinsics.ll<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_test_CodeGen_X86_avx512vl-2Dintrinsics.ll-3Frev-3D239806-26r1-3D239805-26r2-3D239806-26view-3Ddiff&d=AwMGaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=7MtILbhcD8RI4NJBsNYAb1LGtfSfmdiKGJgzJdfE270&s=bKDsKjHwYLbIJczSQYdL_ek7T1B_7rUpA1wmGoI2Jo4&e=" target="_blank">
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512vl-intrinsics.ll?rev=239806&r1=239805&r2=239806&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/test/CodeGen/X86/avx512vl-intrinsics.ll (original)<br>
+++ llvm/trunk/test/CodeGen/X86/avx512vl-intrinsics.ll Tue Jun 16 03:39:27 2015<br>
@@ -2586,4 +2586,212 @@ define <8 x float> @test_getexp_ps_256(<<br>
   %res = call <8 x float> @llvm.x86.avx512.mask.getexp.ps.256(<8 x float> %a0, <8 x float> zeroinitializer, i8 -1)<br>
   ret <8 x float> %res<br>
 }<br>
-declare <8 x float> @llvm.x86.avx512.mask.getexp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone<br>
\ No newline at end of file<br>
+declare <8 x float> @llvm.x86.avx512.mask.getexp.ps.256(<8 x float>, <8 x float>, i8) nounwind readnone<br>
+<br>
+declare <4 x i32> @llvm.x86.avx512.mask.pmaxs.d.128(<4 x i32>, <4 x i32>, <4 x i32>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_d_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsd %xmm<br>
+; CHECK: {%k1}<br>
+define <4 x i32>@test_int_x86_avx512_mask_pmaxs_d_128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2, i8 %mask) {<br>
+  %res = call <4 x i32> @llvm.x86.avx512.mask.pmaxs.d.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2 ,i8 %mask)<br>
+  %res1 = call <4 x i32> @llvm.x86.avx512.mask.pmaxs.d.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> zeroinitializer, i8 %mask)<br>
+  %res2 = add <4 x i32> %res, %res1<br>
+  ret <4 x i32> %res2<br>
+}<br>
+<br>
+declare <8 x i32> @llvm.x86.avx512.mask.pmaxs.d.256(<8 x i32>, <8 x i32>, <8 x i32>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_d_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsd %ymm<br>
+; CHECK: {%k1}<br>
+define <8 x i32>@test_int_x86_avx512_mask_pmaxs_d_256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 %x3) {<br>
+  %res = call <8 x i32> @llvm.x86.avx512.mask.pmaxs.d.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 %x3)<br>
+  %res1 = call <8 x i32> @llvm.x86.avx512.mask.pmaxs.d.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 -1)<br>
+  %res2 = add <8 x i32> %res, %res1<br>
+  ret <8 x i32> %res2<br>
+}<br>
+<br>
+declare <2 x i64> @llvm.x86.avx512.mask.pmaxs.q.128(<2 x i64>, <2 x i64>, <2 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_q_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsq %xmm<br>
+; CHECK: {%k1}<br>
+define <2 x i64>@test_int_x86_avx512_mask_pmaxs_q_128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3) {<br>
+  %res = call <2 x i64> @llvm.x86.avx512.mask.pmaxs.q.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3)<br>
+  %res1 = call <2 x i64> @llvm.x86.avx512.mask.pmaxs.q.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 -1)<br>
+  %res2 = add <2 x i64> %res, %res1<br>
+  ret <2 x i64> %res2<br>
+}<br>
+<br>
+declare <4 x i64> @llvm.x86.avx512.mask.pmaxs.q.256(<4 x i64>, <4 x i64>, <4 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxs_q_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxsq %ymm<br>
+; CHECK: {%k1}<br>
+define <4 x i64>@test_int_x86_avx512_mask_pmaxs_q_256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %mask) {<br>
+  %res = call <4 x i64> @llvm.x86.avx512.mask.pmaxs.q.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %mask)<br>
+  %res1 = call <4 x i64> @llvm.x86.avx512.mask.pmaxs.q.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %mask)<br>
+  %res2 = add <4 x i64> %res, %res1<br>
+  ret <4 x i64> %res2<br>
+}<br>
+<br>
+declare <4 x i32> @llvm.x86.avx512.mask.pmaxu.d.128(<4 x i32>, <4 x i32>, <4 x i32>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_d_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxud %xmm<br>
+; CHECK: {%k1}<br>
+define <4 x i32>@test_int_x86_avx512_mask_pmaxu_d_128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2,i8 %mask) {<br>
+  %res = call <4 x i32> @llvm.x86.avx512.mask.pmaxu.d.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2, i8 %mask)<br>
+  %res1 = call <4 x i32> @llvm.x86.avx512.mask.pmaxu.d.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> zeroinitializer, i8 %mask)<br>
+  %res2 = add <4 x i32> %res, %res1<br>
+  ret <4 x i32> %res2<br>
+}<br>
+<br>
+declare <8 x i32> @llvm.x86.avx512.mask.pmaxu.d.256(<8 x i32>, <8 x i32>, <8 x i32>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_d_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxud %ymm<br>
+; CHECK: {%k1}<br>
+define <8 x i32>@test_int_x86_avx512_mask_pmaxu_d_256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 %x3) {<br>
+  %res = call <8 x i32> @llvm.x86.avx512.mask.pmaxu.d.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 %x3)<br>
+  %res1 = call <8 x i32> @llvm.x86.avx512.mask.pmaxu.d.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 -1)<br>
+  %res2 = add <8 x i32> %res, %res1<br>
+  ret <8 x i32> %res2<br>
+}<br>
+<br>
+declare <2 x i64> @llvm.x86.avx512.mask.pmaxu.q.128(<2 x i64>, <2 x i64>, <2 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_q_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxuq %xmm<br>
+; CHECK: {%k1}<br>
+define <2 x i64>@test_int_x86_avx512_mask_pmaxu_q_128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3) {<br>
+  %res = call <2 x i64> @llvm.x86.avx512.mask.pmaxu.q.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3)<br>
+  %res1 = call <2 x i64> @llvm.x86.avx512.mask.pmaxu.q.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 -1)<br>
+  %res2 = add <2 x i64> %res, %res1<br>
+  ret <2 x i64> %res2<br>
+}<br>
+<br>
+declare <4 x i64> @llvm.x86.avx512.mask.pmaxu.q.256(<4 x i64>, <4 x i64>, <4 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmaxu_q_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpmaxuq %ymm<br>
+; CHECK: {%k1}<br>
+define <4 x i64>@test_int_x86_avx512_mask_pmaxu_q_256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %mask) {<br>
+  %res = call <4 x i64> @llvm.x86.avx512.mask.pmaxu.q.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %mask)<br>
+  %res1 = call <4 x i64> @llvm.x86.avx512.mask.pmaxu.q.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %mask)<br>
+  %res2 = add <4 x i64> %res, %res1<br>
+  ret <4 x i64> %res2<br>
+}<br>
+<br>
+declare <4 x i32> @llvm.x86.avx512.mask.pmins.d.128(<4 x i32>, <4 x i32>, <4 x i32>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_d_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsd %xmm<br>
+; CHECK: {%k1}<br>
+define <4 x i32>@test_int_x86_avx512_mask_pmins_d_128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2, i8 %mask) {<br>
+  %res = call <4 x i32> @llvm.x86.avx512.mask.pmins.d.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2, i8 %mask)<br>
+  %res1 = call <4 x i32> @llvm.x86.avx512.mask.pmins.d.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> zeroinitializer, i8 %mask)<br>
+  %res2 = add <4 x i32> %res, %res1<br>
+  ret <4 x i32> %res2<br>
+}<br>
+<br>
+declare <8 x i32> @llvm.x86.avx512.mask.pmins.d.256(<8 x i32>, <8 x i32>, <8 x i32>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_d_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsd %ymm<br>
+; CHECK: {%k1}<br>
+define <8 x i32>@test_int_x86_avx512_mask_pmins_d_256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 %x3) {<br>
+  %res = call <8 x i32> @llvm.x86.avx512.mask.pmins.d.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 %x3)<br>
+  %res1 = call <8 x i32> @llvm.x86.avx512.mask.pmins.d.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 -1)<br>
+  %res2 = add <8 x i32> %res, %res1<br>
+  ret <8 x i32> %res2<br>
+}<br>
+<br>
+declare <2 x i64> @llvm.x86.avx512.mask.pmins.q.128(<2 x i64>, <2 x i64>, <2 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_q_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsq %xmm<br>
+; CHECK: {%k1}<br>
+define <2 x i64>@test_int_x86_avx512_mask_pmins_q_128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3) {<br>
+  %res = call <2 x i64> @llvm.x86.avx512.mask.pmins.q.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3)<br>
+  %res1 = call <2 x i64> @llvm.x86.avx512.mask.pmins.q.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 -1)<br>
+  %res2 = add <2 x i64> %res, %res1<br>
+  ret <2 x i64> %res2<br>
+}<br>
+<br>
+declare <4 x i64> @llvm.x86.avx512.mask.pmins.q.256(<4 x i64>, <4 x i64>, <4 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pmins_q_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminsq %ymm<br>
+; CHECK: {%k1}<br>
+define <4 x i64>@test_int_x86_avx512_mask_pmins_q_256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %mask) {<br>
+  %res = call <4 x i64> @llvm.x86.avx512.mask.pmins.q.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %mask)<br>
+  %res1 = call <4 x i64> @llvm.x86.avx512.mask.pmins.q.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %mask)<br>
+  %res2 = add <4 x i64> %res, %res1<br>
+  ret <4 x i64> %res2<br>
+}<br>
+<br>
+declare <4 x i32> @llvm.x86.avx512.mask.pminu.d.128(<4 x i32>, <4 x i32>, <4 x i32>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_d_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminud %xmm<br>
+; CHECK: {%k1}<br>
+define <4 x i32>@test_int_x86_avx512_mask_pminu_d_128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2, i8 %mask) {<br>
+  %res = call <4 x i32> @llvm.x86.avx512.mask.pminu.d.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2, i8 %mask)<br>
+  %res1 = call <4 x i32> @llvm.x86.avx512.mask.pminu.d.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> zeroinitializer, i8 %mask)<br>
+  %res2 = add <4 x i32> %res, %res1<br>
+  ret <4 x i32> %res2<br>
+}<br>
+<br>
+declare <8 x i32> @llvm.x86.avx512.mask.pminu.d.256(<8 x i32>, <8 x i32>, <8 x i32>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_d_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminud %ymm<br>
+; CHECK: {%k1}<br>
+define <8 x i32>@test_int_x86_avx512_mask_pminu_d_256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 %x3) {<br>
+  %res = call <8 x i32> @llvm.x86.avx512.mask.pminu.d.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 %x3)<br>
+  %res1 = call <8 x i32> @llvm.x86.avx512.mask.pminu.d.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2, i8 -1)<br>
+  %res2 = add <8 x i32> %res, %res1<br>
+  ret <8 x i32> %res2<br>
+}<br>
+<br>
+declare <2 x i64> @llvm.x86.avx512.mask.pminu.q.128(<2 x i64>, <2 x i64>, <2 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_q_128<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminuq %xmm<br>
+; CHECK: {%k1}<br>
+define <2 x i64>@test_int_x86_avx512_mask_pminu_q_128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3) {<br>
+  %res = call <2 x i64> @llvm.x86.avx512.mask.pminu.q.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 %x3)<br>
+  %res1 = call <2 x i64> @llvm.x86.avx512.mask.pminu.q.128(<2 x i64> %x0, <2 x i64> %x1, <2 x i64> %x2, i8 -1)<br>
+  %res2 = add <2 x i64> %res, %res1<br>
+  ret <2 x i64> %res2<br>
+}<br>
+<br>
+declare <4 x i64> @llvm.x86.avx512.mask.pminu.q.256(<4 x i64>, <4 x i64>, <4 x i64>, i8)<br>
+<br>
+; CHECK-LABEL: @test_int_x86_avx512_mask_pminu_q_256<br>
+; CHECK-NOT: call<br>
+; CHECK: vpminuq %ymm<br>
+; CHECK: {%k1}<br>
+define <4 x i64>@test_int_x86_avx512_mask_pminu_q_256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %mask) {<br>
+  %res = call <4 x i64> @llvm.x86.avx512.mask.pminu.q.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> %x2, i8 %mask)<br>
+  %res1 = call <4 x i64> @llvm.x86.avx512.mask.pminu.q.256(<4 x i64> %x0, <4 x i64> %x1, <4 x i64> zeroinitializer, i8 %mask)<br>
+  %res2 = add <4 x i64> %res, %res1<br>
+  ret <4 x i64> %res2<br>
+}<br>
\ No newline at end of file<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</div>
</div>
<div>
<p>---------------------------------------------------------------------<br>
Intel Israel (74) Limited<o:p></o:p></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.<o:p></o:p></p>
</div>
</blockquote>
</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></body>
</html>