<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    The change is currently dormant - an imminent commit will enable
    domain crossing and update tests accordingly.<br>
    <br>
    <div class="moz-cite-prefix">On 19/02/2017 17:05, Craig Topper
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAF7ks-NPTk_KdRQ3khwJAZTQ-Vmwnig1e77kKEns35Ev7vkxgw@mail.gmail.com"
      type="cite">
      <div>Test cases?</div>
      <div><br>
        <div class="gmail_quote">
          <div>On Sun, Feb 19, 2017 at 7:27 AM Simon Pilgrim via
            llvm-commits <<a moz-do-not-send="true"
              href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>>
            wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">Author:
            rksimon<br class="gmail_msg">
            Date: Sun Feb 19 09:15:40 2017<br class="gmail_msg">
            New Revision: 295606<br class="gmail_msg">
            <br class="gmail_msg">
            URL: <a moz-do-not-send="true"
              href="http://llvm.org/viewvc/llvm-project?rev=295606&view=rev"
              rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=295606&view=rev</a><br
              class="gmail_msg">
            Log:<br class="gmail_msg">
            [X86][SSE] Generalize INSERTPS/SHUFPS/SHUFPD combines across
            domains.<br class="gmail_msg">
            <br class="gmail_msg">
            Relax the INSERTPS/SHUFPS/SHUFPD combines to support integer
            inputs if permitted.<br class="gmail_msg">
            <br class="gmail_msg">
            Modified:<br class="gmail_msg">
                llvm/trunk/lib/Target/X86/X86ISelLowering.cpp<br
              class="gmail_msg">
            <br class="gmail_msg">
            Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp<br
              class="gmail_msg">
            URL: <a moz-do-not-send="true"
href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=295606&r1=295605&r2=295606&view=diff"
              rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=295606&r1=295605&r2=295606&view=diff</a><br
              class="gmail_msg">
==============================================================================<br
              class="gmail_msg">
            --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)<br
              class="gmail_msg">
            +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Sun Feb 19
            09:15:40 2017<br class="gmail_msg">
            @@ -12235,7 +12235,7 @@ static bool
            matchVectorShuffleWithSHUFPD<br class="gmail_msg">
                                                      unsigned
            &ShuffleImm,<br class="gmail_msg">
                                                     
            ArrayRef<int> Mask) {<br class="gmail_msg">
               int NumElts = VT.getVectorNumElements();<br
              class="gmail_msg">
            -  assert(VT.getScalarType() == MVT::f64 &&<br
              class="gmail_msg">
            +  assert(VT.getScalarSizeInBits() == 64 &&<br
              class="gmail_msg">
                      (NumElts == 2 || NumElts == 4 || NumElts == 8)
            &&<br class="gmail_msg">
                      "Unexpected data type for VSHUFPD");<br
              class="gmail_msg">
            <br class="gmail_msg">
            @@ -12271,6 +12271,9 @@ static bool
            matchVectorShuffleWithSHUFPD<br class="gmail_msg">
             static SDValue lowerVectorShuffleWithSHUFPD(const SDLoc
            &DL, MVT VT,<br class="gmail_msg">
                                                       
             ArrayRef<int> Mask, SDValue V1,<br class="gmail_msg">
                                                         SDValue V2,
            SelectionDAG &DAG) {<br class="gmail_msg">
            +  assert((VT == MVT::v2f64 || VT == MVT::v4f64 || VT ==
            MVT::v8f64)&&<br class="gmail_msg">
            +         "Unexpected data type for VSHUFPD");<br
              class="gmail_msg">
            +<br class="gmail_msg">
               unsigned Immediate = 0;<br class="gmail_msg">
               if (!matchVectorShuffleWithSHUFPD(VT, V1, V2, Immediate,
            Mask))<br class="gmail_msg">
                 return SDValue();<br class="gmail_msg">
            @@ -26691,13 +26694,15 @@ static bool
            matchBinaryVectorShuffle(MVT<br class="gmail_msg">
             }<br class="gmail_msg">
            <br class="gmail_msg">
             static bool matchBinaryPermuteVectorShuffle(MVT MaskVT,
            ArrayRef<int> Mask,<br class="gmail_msg">
            -                                            bool
            AllowIntDomain, SDValue &V1,<br class="gmail_msg">
            -                                            SDValue
            &V2, SDLoc &DL,<br class="gmail_msg">
            +                                            bool
            AllowFloatDomain,<br class="gmail_msg">
            +                                            bool
            AllowIntDomain,<br class="gmail_msg">
            +                                            SDValue
            &V1, SDValue &V2, SDLoc &DL,<br
              class="gmail_msg">
                                                         SelectionDAG
            &DAG,<br class="gmail_msg">
                                                         const
            X86Subtarget &Subtarget,<br class="gmail_msg">
                                                         unsigned
            &Shuffle, MVT &ShuffleVT,<br class="gmail_msg">
                                                         unsigned
            &PermuteImm) {<br class="gmail_msg">
               unsigned NumMaskElts = Mask.size();<br class="gmail_msg">
            +  unsigned EltSizeInBits = MaskVT.getScalarSizeInBits();<br
              class="gmail_msg">
            <br class="gmail_msg">
               // Attempt to match against PALIGNR byte rotate.<br
              class="gmail_msg">
               if (AllowIntDomain && ((MaskVT.is128BitVector()
            && Subtarget.hasSSSE3()) ||<br class="gmail_msg">
            @@ -26777,7 +26782,8 @@ static bool
            matchBinaryPermuteVectorShuf<br class="gmail_msg">
               }<br class="gmail_msg">
            <br class="gmail_msg">
               // Attempt to combine to INSERTPS.<br class="gmail_msg">
            -  if (Subtarget.hasSSE41() && MaskVT == MVT::v4f32)
            {<br class="gmail_msg">
            +  if (AllowFloatDomain && EltSizeInBits == 32
            && Subtarget.hasSSE41() &&<br
              class="gmail_msg">
            +      MaskVT.is128BitVector()) {<br class="gmail_msg">
                 SmallBitVector Zeroable(4, false);<br class="gmail_msg">
                 for (unsigned i = 0; i != NumMaskElts; ++i)<br
              class="gmail_msg">
                   if (Mask[i] < 0)<br class="gmail_msg">
            @@ -26792,20 +26798,22 @@ static bool
            matchBinaryPermuteVectorShuf<br class="gmail_msg">
               }<br class="gmail_msg">
            <br class="gmail_msg">
               // Attempt to combine to SHUFPD.<br class="gmail_msg">
            -  if ((MaskVT == MVT::v2f64 && Subtarget.hasSSE2())
            ||<br class="gmail_msg">
            -      (MaskVT == MVT::v4f64 && Subtarget.hasAVX())
            ||<br class="gmail_msg">
            -      (MaskVT == MVT::v8f64 &&
            Subtarget.hasAVX512())) {<br class="gmail_msg">
            +  if (AllowFloatDomain && EltSizeInBits == 64
            &&<br class="gmail_msg">
            +      ((MaskVT.is128BitVector() &&
            Subtarget.hasSSE2()) ||<br class="gmail_msg">
            +       (MaskVT.is256BitVector() &&
            Subtarget.hasAVX()) ||<br class="gmail_msg">
            +       (MaskVT.is512BitVector() &&
            Subtarget.hasAVX512()))) {<br class="gmail_msg">
                 if (matchVectorShuffleWithSHUFPD(MaskVT, V1, V2,
            PermuteImm, Mask)) {<br class="gmail_msg">
                   Shuffle = X86ISD::SHUFP;<br class="gmail_msg">
            -      ShuffleVT = MaskVT;<br class="gmail_msg">
            +      ShuffleVT = MVT::getVectorVT(MVT::f64,
            MaskVT.getSizeInBits() / 64);<br class="gmail_msg">
                   return true;<br class="gmail_msg">
                 }<br class="gmail_msg">
               }<br class="gmail_msg">
            <br class="gmail_msg">
               // Attempt to combine to SHUFPS.<br class="gmail_msg">
            -  if ((MaskVT == MVT::v4f32 && Subtarget.hasSSE1())
            ||<br class="gmail_msg">
            -      (MaskVT == MVT::v8f32 && Subtarget.hasAVX())
            ||<br class="gmail_msg">
            -      (MaskVT == MVT::v16f32 &&
            Subtarget.hasAVX512())) {<br class="gmail_msg">
            +  if (AllowFloatDomain && EltSizeInBits == 32
            &&<br class="gmail_msg">
            +      ((MaskVT.is128BitVector() &&
            Subtarget.hasSSE1()) ||<br class="gmail_msg">
            +       (MaskVT.is256BitVector() &&
            Subtarget.hasAVX()) ||<br class="gmail_msg">
            +       (MaskVT.is512BitVector() &&
            Subtarget.hasAVX512()))) {<br class="gmail_msg">
                 SmallVector<int, 4> RepeatedMask;<br
              class="gmail_msg">
                 if (isRepeatedTargetShuffleMask(128, MaskVT, Mask,
            RepeatedMask)) {<br class="gmail_msg">
                   // Match each half of the repeated mask, to determine
            if its just<br class="gmail_msg">
            @@ -26841,7 +26849,7 @@ static bool
            matchBinaryPermuteVectorShuf<br class="gmail_msg">
                     V1 = Lo;<br class="gmail_msg">
                     V2 = Hi;<br class="gmail_msg">
                     Shuffle = X86ISD::SHUFP;<br class="gmail_msg">
            -        ShuffleVT = MaskVT;<br class="gmail_msg">
            +        ShuffleVT = MVT::getVectorVT(MVT::f32,
            MaskVT.getSizeInBits() / 32);<br class="gmail_msg">
                     PermuteImm = getV4X86ShuffleImm(ShufMask);<br
              class="gmail_msg">
                     return true;<br class="gmail_msg">
                   }<br class="gmail_msg">
            @@ -27035,8 +27043,9 @@ static bool
            combineX86ShuffleChain(Array<br class="gmail_msg">
                 return true;<br class="gmail_msg">
               }<br class="gmail_msg">
            <br class="gmail_msg">
            -  if (matchBinaryPermuteVectorShuffle(MaskVT, Mask,
            AllowIntDomain, V1, V2, DL,<br class="gmail_msg">
            -                                      DAG, Subtarget,
            Shuffle, ShuffleVT,<br class="gmail_msg">
            +  if (matchBinaryPermuteVectorShuffle(MaskVT, Mask,
            AllowFloatDomain,<br class="gmail_msg">
            +                                      AllowIntDomain, V1,
            V2, DL, DAG,<br class="gmail_msg">
            +                                      Subtarget, Shuffle,
            ShuffleVT,<br class="gmail_msg">
                                                   PermuteImm)) {<br
              class="gmail_msg">
                 if (Depth == 1 && Root.getOpcode() == Shuffle)<br
              class="gmail_msg">
                   return false; // Nothing to do!<br class="gmail_msg">
            <br class="gmail_msg">
            <br class="gmail_msg">
            _______________________________________________<br
              class="gmail_msg">
            llvm-commits mailing list<br class="gmail_msg">
            <a moz-do-not-send="true"
              href="mailto:llvm-commits@lists.llvm.org"
              class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br
              class="gmail_msg">
            <a moz-do-not-send="true"
              href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits"
              rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br
              class="gmail_msg">
          </blockquote>
        </div>
      </div>
      <div dir="ltr">-- <br>
      </div>
      <div data-smartmail="gmail_signature">~Craig</div>
    </blockquote>
    <br>
  </body>
</html>