diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-08-10 18:10:29 +0000 | 
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-08-10 18:10:29 +0000 | 
| commit | 675c257a325ff6ddb9f31c0623a47e5b9d82c384 (patch) | |
| tree | 10716a5524ee125458dcb518d6f49a118f392947 | |
| parent | ca37f0f990068c5e511b8d4808b099a7a57459b5 (diff) | |
| download | bcm5719-llvm-675c257a325ff6ddb9f31c0623a47e5b9d82c384.tar.gz bcm5719-llvm-675c257a325ff6ddb9f31c0623a47e5b9d82c384.zip | |
[X86][SSE] Dropped blend(insertps(x,y),zero) combine - this is now handled by target shuffle chain combining
llvm-svn: 278260
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 38 | 
1 files changed, 0 insertions, 38 deletions
| diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 34ea605fe73..43a5b1b1978 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -25959,44 +25959,6 @@ static SDValue combineTargetShuffle(SDValue N, SelectionDAG &DAG,            return DAG.getNode(X86ISD::BLENDI, DL, VT, V1, V0, NewMask);          } -    // Attempt to merge blend(insertps(x,y),zero). -    if (V0.getOpcode() == X86ISD::INSERTPS || -        V1.getOpcode() == X86ISD::INSERTPS) { -      assert(VT == MVT::v4f32 && "INSERTPS ValueType must be MVT::v4f32"); - -      // Determine which elements are known to be zero. -      SmallVector<int, 8> TargetMask; -      SmallVector<SDValue, 2> BlendOps; -      if (!setTargetShuffleZeroElements(N, TargetMask, BlendOps)) -        return SDValue(); - -      // Helper function to take inner insertps node and attempt to -      // merge the blend with zero into its zero mask. -      auto MergeInsertPSAndBlend = [&](SDValue V, int Offset) { -        if (V.getOpcode() != X86ISD::INSERTPS) -          return SDValue(); -        SDValue Op0 = V.getOperand(0); -        SDValue Op1 = V.getOperand(1); -        SDValue Op2 = V.getOperand(2); -        unsigned InsertPSMask = cast<ConstantSDNode>(Op2)->getZExtValue(); - -        // Check each element of the blend node's target mask - must either -        // be zeroable (and update the zero mask) or selects the element from -        // the inner insertps node. -        for (int i = 0; i != 4; ++i) -          if (TargetMask[i] < 0) -            InsertPSMask |= (1u << i); -          else if (TargetMask[i] != (i + Offset)) -            return SDValue(); -        return DAG.getNode(X86ISD::INSERTPS, DL, MVT::v4f32, Op0, Op1, -                           DAG.getConstant(InsertPSMask, DL, MVT::i8)); -      }; - -      if (SDValue V = MergeInsertPSAndBlend(V0, 0)) -        return V; -      if (SDValue V = MergeInsertPSAndBlend(V1, 4)) -        return V; -    }      return SDValue();    }    case X86ISD::INSERTPS: { | 

