diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-02-17 12:36:56 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-02-17 12:36:56 +0000 |
commit | d6beac3b765a664b807370a999a0f1693f57792a (patch) | |
tree | 973c38c0edfa3946a5523ddef19c63694cc432c7 /llvm/lib/CodeGen | |
parent | e4d40f9b7d6b48a04c2b34039fe702f88a45b4d7 (diff) | |
download | bcm5719-llvm-d6beac3b765a664b807370a999a0f1693f57792a.tar.gz bcm5719-llvm-d6beac3b765a664b807370a999a0f1693f57792a.zip |
[DAGCombiner] Remove simplifyShuffleMask - now handled more generally by SimplifyDemandedVectorElts.
llvm-svn: 325429
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index f3860fec4ac..995fa449bef 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -15591,37 +15591,6 @@ SDValue DAGCombiner::visitEXTRACT_SUBVECTOR(SDNode* N) { return SDValue(); } -static SDValue simplifyShuffleMask(ShuffleVectorSDNode *SVN, SDValue N0, - SDValue N1, SelectionDAG &DAG) { - auto isUndefElt = [](SDValue V, int Idx) { - // TODO - handle more cases as required. - if (V.getOpcode() == ISD::BUILD_VECTOR) - return V.getOperand(Idx).isUndef(); - if (V.getOpcode() == ISD::SCALAR_TO_VECTOR) - return (Idx != 0) || V.getOperand(0).isUndef(); - return false; - }; - - EVT VT = SVN->getValueType(0); - unsigned NumElts = VT.getVectorNumElements(); - - bool Changed = false; - SmallVector<int, 8> NewMask; - for (unsigned i = 0; i != NumElts; ++i) { - int Idx = SVN->getMaskElt(i); - if ((0 <= Idx && Idx < (int)NumElts && isUndefElt(N0, Idx)) || - ((int)NumElts < Idx && isUndefElt(N1, Idx - NumElts))) { - Changed = true; - Idx = -1; - } - NewMask.push_back(Idx); - } - if (Changed) - return DAG.getVectorShuffle(VT, SDLoc(SVN), N0, N1, NewMask); - - return SDValue(); -} - // Tries to turn a shuffle of two CONCAT_VECTORS into a single concat, // or turn a shuffle of a single concat into simpler shuffle then concat. static SDValue partitionShuffleOfConcats(SDNode *N, SelectionDAG &DAG) { @@ -16064,10 +16033,6 @@ SDValue DAGCombiner::visitVECTOR_SHUFFLE(SDNode *N) { return DAG.getVectorShuffle(VT, SDLoc(N), N0, N1, NewMask); } - // Simplify shuffle mask if a referenced element is UNDEF. - if (SDValue V = simplifyShuffleMask(SVN, N0, N1, DAG)) - return V; - if (SDValue InsElt = replaceShuffleOfInsert(SVN, DAG)) return InsElt; |