<div dir="ltr">What sort of regression? The types in that pattern are only legal in AVX512 so I don't think a non AVX512 could even reach that pattern through isel.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 24, 2016 at 6:43 PM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Could this possibly have any impact on non avx-512 targets? We noticed<br>
a regression with this in, but have not debugged it yet. The odd thing<br>
is that the target cpu (jaguar) doesn't have avx-512.<br>
<br>
Cheers,<br>
Rafael<br>
<br>
<br>
On 21 May 2016 at 20:39, Craig Topper via llvm-commits<br>
<<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Author: ctopper<br>
> Date: Sat May 21 19:39:30 2016<br>
> New Revision: 270344<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=270344&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=270344&view=rev</a><br>
> Log:<br>
> [AVX512] Add a couple patterns to fix some cases where two vector mask inversions could appear in a row.<br>
><br>
> Modified:<br>
>     llvm/trunk/lib/Target/X86/X86InstrAVX512.td<br>
>     llvm/trunk/test/CodeGen/X86/avx512-vec-cmp.ll<br>
><br>
> Modified: llvm/trunk/lib/Target/X86/X86InstrAVX512.td<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrAVX512.td?rev=270344&r1=270343&r2=270344&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrAVX512.td?rev=270344&r1=270343&r2=270344&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Target/X86/X86InstrAVX512.td (original)<br>
> +++ llvm/trunk/lib/Target/X86/X86InstrAVX512.td Sat May 21 19:39:30 2016<br>
> @@ -2761,6 +2761,17 @@ def : Pat<(v16i32 (vselect VK16WM:$mask,<br>
>                             (v16i32 VR512:$src))),<br>
>                    (VMOVDQA32Zrrkz (KNOTWrr VK16WM:$mask), VR512:$src)>;<br>
><br>
> +// These patterns exist to prevent the above patterns from introducing a second<br>
> +// mask inversion when one already exists.<br>
> +def : Pat<(v8i64 (vselect (xor VK8:$mask, (v8i1 immAllOnesV)),<br>
> +                          (bc_v8i64 (v16i32 immAllZerosV)),<br>
> +                          (v8i64 VR512:$src))),<br>
> +                 (VMOVDQA64Zrrkz VK8:$mask, VR512:$src)>;<br>
> +def : Pat<(v16i32 (vselect (xor VK16:$mask, (v16i1 immAllOnesV)),<br>
> +                           (v16i32 immAllZerosV),<br>
> +                           (v16i32 VR512:$src))),<br>
> +                  (VMOVDQA32Zrrkz VK16WM:$mask, VR512:$src)>;<br>
> +<br>
>  // Move Int Doubleword to Packed Double Int<br>
>  //<br>
>  def VMOVDI2PDIZrr : AVX512BI<0x6E, MRMSrcReg, (outs VR128X:$dst), (ins GR32:$src),<br>
><br>
> Modified: llvm/trunk/test/CodeGen/X86/avx512-vec-cmp.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512-vec-cmp.ll?rev=270344&r1=270343&r2=270344&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512-vec-cmp.ll?rev=270344&r1=270343&r2=270344&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/CodeGen/X86/avx512-vec-cmp.ll (original)<br>
> +++ llvm/trunk/test/CodeGen/X86/avx512-vec-cmp.ll Sat May 21 19:39:30 2016<br>
> @@ -279,18 +279,14 @@ define <16 x i32> @test14(<16 x i32>%a,<br>
>  ; KNL-LABEL: test14:<br>
>  ; KNL:       ## BB#0:<br>
>  ; KNL-NEXT:    vpsubd %zmm1, %zmm0, %zmm1<br>
> -; KNL-NEXT:    vpcmpgtd %zmm0, %zmm1, %k0<br>
> -; KNL-NEXT:    knotw %k0, %k0<br>
> -; KNL-NEXT:    knotw %k0, %k1<br>
> +; KNL-NEXT:    vpcmpgtd %zmm0, %zmm1, %k1<br>
>  ; KNL-NEXT:    vmovdqa32 %zmm1, %zmm0 {%k1} {z}<br>
>  ; KNL-NEXT:    retq<br>
>  ;<br>
>  ; SKX-LABEL: test14:<br>
>  ; SKX:       ## BB#0:<br>
>  ; SKX-NEXT:    vpsubd %zmm1, %zmm0, %zmm1<br>
> -; SKX-NEXT:    vpcmpgtd %zmm0, %zmm1, %k0<br>
> -; SKX-NEXT:    knotw %k0, %k0<br>
> -; SKX-NEXT:    knotw %k0, %k1<br>
> +; SKX-NEXT:    vpcmpgtd %zmm0, %zmm1, %k1<br>
>  ; SKX-NEXT:    vmovdqa32 %zmm1, %zmm0 {%k1} {z}<br>
>  ; SKX-NEXT:    retq<br>
>    %sub_r = sub <16 x i32> %a, %b<br>
> @@ -305,18 +301,14 @@ define <8 x i64> @test15(<8 x i64>%a, <8<br>
>  ; KNL-LABEL: test15:<br>
>  ; KNL:       ## BB#0:<br>
>  ; KNL-NEXT:    vpsubq %zmm1, %zmm0, %zmm1<br>
> -; KNL-NEXT:    vpcmpgtq %zmm0, %zmm1, %k0<br>
> -; KNL-NEXT:    knotw %k0, %k0<br>
> -; KNL-NEXT:    knotw %k0, %k1<br>
> +; KNL-NEXT:    vpcmpgtq %zmm0, %zmm1, %k1<br>
>  ; KNL-NEXT:    vmovdqa64 %zmm1, %zmm0 {%k1} {z}<br>
>  ; KNL-NEXT:    retq<br>
>  ;<br>
>  ; SKX-LABEL: test15:<br>
>  ; SKX:       ## BB#0:<br>
>  ; SKX-NEXT:    vpsubq %zmm1, %zmm0, %zmm1<br>
> -; SKX-NEXT:    vpcmpgtq %zmm0, %zmm1, %k0<br>
> -; SKX-NEXT:    knotb %k0, %k0<br>
> -; SKX-NEXT:    knotw %k0, %k1<br>
> +; SKX-NEXT:    vpcmpgtq %zmm0, %zmm1, %k1<br>
>  ; SKX-NEXT:    vmovdqa64 %zmm1, %zmm0 {%k1} {z}<br>
>  ; SKX-NEXT:    retq<br>
>    %sub_r = sub <8 x i64> %a, %b<br>
><br>
><br>
> _______________________________________________<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/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">~Craig</div>
</div>