[llvm] r310794 - [AVX512] Correct isExtractSubvectorCheap so that it will return the correct answers for extracting 128-bits from a 512-bit vector and for mask registers.

Sean Silva via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 13 13:11:27 PDT 2017


On Sun, Aug 13, 2017 at 10:40 AM, Craig Topper via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: ctopper
> Date: Sun Aug 13 10:40:02 2017
> New Revision: 310794
>
> URL: http://llvm.org/viewvc/llvm-project?rev=310794&view=rev
> Log:
> [AVX512] Correct isExtractSubvectorCheap so that it will return the
> correct answers for extracting 128-bits from a 512-bit vector and for mask
> registers.
>
> Previously it would not return true for extracting either of the upper
> quarters of a 512-bit registers.
>
> For mask registers we support extracting anything from index 0. And
> otherwise we only support extracting the upper half of a register.
>
> Differential Revision: https://reviews.llvm.org/D36638
>
> Modified:
>     llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>
> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/
> X86/X86ISelLowering.cpp?rev=310794&r1=310793&r2=310794&view=diff
> ============================================================
> ==================
> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Sun Aug 13 10:40:02 2017
> @@ -4579,7 +4579,13 @@ bool X86TargetLowering::isExtractSubvect
>    if (!isOperationLegalOrCustom(ISD::EXTRACT_SUBVECTOR, ResVT))
>      return false;
>
> -  return (Index == 0 || Index == ResVT.getVectorNumElements());
> +  // Mask vectors support all subregister combinations and operations that
> +  // extract half of vector.
> +  if (ResVT.getVectorElementType() == MVT::i1)
> +    return Index = 0 || ((ResVT.getSizeInBits() == SrcVT.getSizeInBits()
> * 2) &&
> +                         (Index == ResVT.getVectorNumElements()));
>


Is this supposed to be `Index == 0`?

I'm getting this warning (`gcc version 5.4.0 20160609 (Ubuntu
5.4.0-6ubuntu1~16.04.4) `):

/home/sean/pg/llvm/llvm/lib/Target/X86/X86ISelLowering.cpp: In member
function ‘virtual bool
llvm::X86TargetLowering::isExtractSubvectorCheap(llvm::EVT, llvm::EVT,
unsigned int) const’:
/home/sean/pg/llvm/llvm/lib/Target/X86/X86ISelLowering.cpp:4586:65:
warning: suggest parentheses around assignment used as truth value
[-Wparentheses]
                          (Index == ResVT.getVectorNumElements()));
                                                                 ^


-- Sean Silva


> +
> +  return (Index % ResVT.getVectorNumElements()) == 0;
>  }
>
>  bool X86TargetLowering::isCheapToSpeculateCttz() const {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170813/3c9aad33/attachment.html>


More information about the llvm-commits mailing list