Home | History | Annotate | Download | only in X86

Lines Matching refs:SVOp

3288   ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
3289 EVT VT = SVOp->getValueType(0);
3298 if (SVOp->getMaskElt(i) < 0)
3302 unsigned Elt = SVOp->getMaskElt(i) % HalfSize;
3354 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
3355 EVT VT = SVOp->getValueType(0);
3364 if (SVOp->getMaskElt(i) < 0)
3366 int Elt = SVOp->getMaskElt(i) % HalfSize;
3733 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
3734 EVT VT = SVOp->getValueType(0);
3740 if (SVOp->getMaskElt(i) > 0) {
3741 FstHalf = SVOp->getMaskElt(i)/HalfSize;
3746 if (SVOp->getMaskElt(i) > 0) {
3747 SndHalf = SVOp->getMaskElt(i)/HalfSize;
3829 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
3830 EVT VT = SVOp->getValueType(0);
3843 int MaskElt = SVOp->getMaskElt(i+(l*LaneSize));
3858 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
3859 EVT VT = SVOp->getValueType(0);
3868 int MaskElt = SVOp->getMaskElt(i);
4043 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
4044 int NumOperands = SVOp->getValueType(0).getVectorNumElements();
4049 int Val = SVOp->getMaskElt(NumOperands-i-1);
4062 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
4066 int Val = SVOp->getMaskElt(i);
4078 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
4082 int Val = SVOp->getMaskElt(i);
4094 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
4101 Val = SVOp->getMaskElt(i);
4154 static SDValue CommuteVectorShuffle(ShuffleVectorSDNode *SVOp,
4156 EVT VT = SVOp->getValueType(0);
4161 int idx = SVOp->getMaskElt(i);
4169 return DAG.getVectorShuffle(VT, SVOp->getDebugLoc(), SVOp->getOperand(1),
4170 SVOp->getOperand(0), &MaskVec[0]);
4346 static SDValue NormalizeMask(ShuffleVectorSDNode *SVOp, SelectionDAG &DAG) {
4347 EVT VT = SVOp->getValueType(0);
4352 SVOp->getMask(MaskVec);
4361 return DAG.getVectorShuffle(VT, SVOp->getDebugLoc(), SVOp->getOperand(0),
4362 SVOp->getOperand(1), &MaskVec[0]);
4363 return SDValue(SVOp, 0);
4695 bool isShuffleMaskConsecutive(ShuffleVectorSDNode *SVOp, int MaskI, int MaskE,
4701 int Idx = SVOp->getMaskElt(i);
4722 static bool isVectorShiftRight(ShuffleVectorSDNode *SVOp, SelectionDAG &DAG,
4724 unsigned NumElems = SVOp->getValueType(0).getVectorNumElements();
4725 unsigned NumZeros = getNumOfConsecutiveZeros(SVOp, NumElems,
4739 if (!isShuffleMaskConsecutive(SVOp,
4749 ShVal = SVOp->getOperand(OpSrc);
4755 static bool isVectorShiftLeft(ShuffleVectorSDNode *SVOp, SelectionDAG &DAG,
4757 unsigned NumElems = SVOp->getValueType(0).getVectorNumElements();
4758 unsigned NumZeros = getNumOfConsecutiveZeros(SVOp, NumElems,
4772 if (!isShuffleMaskConsecutive(SVOp,
4782 ShVal = SVOp->getOperand(OpSrc);
4788 static bool isVectorShift(ShuffleVectorSDNode *SVOp, SelectionDAG &DAG,
4792 if (SVOp->getValueType(0).getSizeInBits() > 128)
4795 if (isVectorShiftLeft(SVOp, DAG, isLeft, ShVal, ShAmt) ||
4796 isVectorShiftRight(SVOp, DAG, isLeft, ShVal, ShAmt))
5433 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(Op);
5434 SDValue V1 = SVOp->getOperand(0);
5435 SDValue V2 = SVOp->getOperand(1);
5436 DebugLoc dl = SVOp->getDebugLoc();
5447 int EltIdx = SVOp->getMaskElt(i);
5695 SDValue LowerVECTOR_SHUFFLEv16i8(ShuffleVectorSDNode *SVOp,
5698 SDValue V1 = SVOp->getOperand(0);
5699 SDValue V2 = SVOp->getOperand(1);
5700 DebugLoc dl = SVOp->getDebugLoc();
5702 SVOp->getMask(MaskVals);
5843 SDValue RewriteAsNarrowerShuffle(ShuffleVectorSDNode *SVOp,
5845 EVT VT = SVOp->getValueType(0);
5846 SDValue V1 = SVOp->getOperand(0);
5847 SDValue V2 = SVOp->getOperand(1);
5864 int EltIdx = SVOp->getMaskElt(i+j);
5920 static bool areShuffleHalvesWithinDisjointLanes(ShuffleVectorSDNode *SVOp) {
5921 EVT VT = SVOp->getValueType(0);
5925 SVOp->getMask(M);
5948 LowerVECTOR_SHUFFLE_256(ShuffleVectorSDNode *SVOp, SelectionDAG &DAG) {
5949 if (areShuffleHalvesWithinDisjointLanes(SVOp)) {
5954 DebugLoc dl = SVOp->getDebugLoc();
5955 EVT VT = SVOp->getValueType(0);
5963 int Elt = SVOp->getMaskElt(i);
5964 if (SVOp->getMaskElt(i) < 0)
5971 int Elt = SVOp->getMaskElt(i);
5972 if (SVOp->getMaskElt(i) < 0)
5980 SDValue V1 = Extract128BitVector(SVOp->getOperand(FstVecOpNum),
5982 SDValue V2 = Extract128BitVector(SVOp->getOperand(SndVecOpNum),
5988 int Elt = SVOp->getMaskElt(i);
5992 int Elt = SVOp->getMaskElt(i);
6013 LowerVECTOR_SHUFFLE_128v4(ShuffleVectorSDNode *SVOp, SelectionDAG &DAG) {
6014 SDValue V1 = SVOp->getOperand(0);
6015 SDValue V2 = SVOp->getOperand(1);
6016 DebugLoc dl = SVOp->getDebugLoc();
6017 EVT VT = SVOp->getValueType(0);
6025 SVOp->getMask(PermMask);
6200 ShuffleVectorSDNode *SVOp = dyn_cast<ShuffleVectorSDNode>(V);
6229 int Idx = (Elt > NumElems) ? -1 : SVOp->getMaskElt(Elt);
6364 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(Op);
6374 if (NumElems == 2 || !X86::isMOVLMask(SVOp))
6383 X86::getShuffleSHUFImmediate(SVOp), DAG);
6488 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(Op);
6494 if (isZeroShuffle(SVOp))
6498 if (SVOp->isSplat()) {
6518 return PromoteSplat(SVOp, DAG);
6524 SDValue NewOp = RewriteAsNarrowerShuffle(SVOp, DAG, dl);
6532 SDValue NewOp = RewriteAsNarrowerShuffle(SVOp, DAG, dl);
6539 SDValue NewOp = RewriteAsNarrowerShuffle(SVOp, DAG, dl);
6550 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(Op);
6592 if (OptForSize && X86::isUNPCKL_v_undef_Mask(SVOp))
6594 if (OptForSize && X86::isUNPCKH_v_undef_Mask(SVOp))
6597 if (X86::isMOVDDUPMask(SVOp) &&
6602 if (X86::isMOVHLPS_v_undef_Mask(SVOp))
6606 if (HasXMMInt && X86::isUNPCKHMask(SVOp) && V2IsUndef &&
6610 if (X86::isPSHUFDMask(SVOp)) {
6614 if (X86::isMOVDDUPMask(SVOp) && ((VT == MVT::v4f32 || VT == MVT::v2i64)))
6617 unsigned TargetMask = X86::getShuffleSHUFImmediate(SVOp);
6631 isVectorShift(SVOp, DAG, isLeft, ShVal, ShAmt);
6640 if (X86::isMOVLMask(SVOp)) {
6645 if (!X86::isMOVLPMask(SVOp)) {
6655 if (X86::isMOVLHPSMask(SVOp) && !X86::isUNPCKLMask(SVOp))
6658 if (X86::isMOVHLPSMask(SVOp))
6661 if (X86::isMOVSHDUPMask(SVOp, Subtarget))
6664 if (X86::isMOVSLDUPMask(SVOp, Subtarget))
6667 if (X86::isMOVLPMask(SVOp))
6670 if (ShouldXformToMOVHLPS(SVOp) ||
6671 ShouldXformToMOVLP(V1.getNode(), V2.getNode(), SVOp))
6672 return CommuteVectorShuffle(SVOp, DAG);
6689 Op = CommuteVectorShuffle(SVOp, DAG);
6690 SVOp = cast<ShuffleVectorSDNode>(Op);
6691 V1 = SVOp->getOperand(0);
6692 V2 = SVOp->getOperand(1);
6698 if (isCommutedMOVL(SVOp, V2IsSplat, V2IsUndef)) {
6708 if (X86::isUNPCKLMask(SVOp))
6711 if (X86::isUNPCKHMask(SVOp))
6718 SDValue NewMask = NormalizeMask(SVOp, DAG);
6720 if (NSVOp != SVOp) {
6732 SDValue NewOp = CommuteVectorShuffle(SVOp, DAG);
6743 if (V2.getOpcode() != ISD::UNDEF && isCommutedSHUFP(SVOp))
6744 return CommuteVectorShuffle(SVOp, DAG);
6750 SVOp->getMask(M);
6754 X86::getShufflePALIGNRImmediate(SVOp),
6758 SVOp->getSplatIndex() == 0 && V2IsUndef) {
6767 X86::getShufflePSHUFHWImmediate(SVOp),
6772 X86::getShufflePSHUFLWImmediate(SVOp),
6777 SVOp), DAG);
6779 if (X86::isUNPCKL_v_undef_Mask(SVOp))
6781 if (X86::isUNPCKH_v_undef_Mask(SVOp))
6790 if (isMOVDDUPYMask(SVOp, Subtarget))
6796 getShuffleVPERMILPSImmediate(SVOp), DAG);
6801 getShuffleVPERMILPDImmediate(SVOp), DAG);
6806 getShuffleVPERM2F128Immediate(SVOp), DAG);
6811 getShuffleVSHUFPSYImmediate(SVOp), DAG);
6816 getShuffleVSHUFPDYImmediate(SVOp), DAG);
6832 SDValue NewOp = LowerVECTOR_SHUFFLEv16i8(SVOp, DAG, *this);
6840 return LowerVECTOR_SHUFFLE_128v4(SVOp, DAG);
6844 return LowerVECTOR_SHUFFLE_256(SVOp, DAG);
12389 static bool isShuffleHigh128VectorInsertLow(ShuffleVectorSDNode *SVOp) {
12390 EVT VT = SVOp->getValueType(0);
12395 if (!isUndefOrEqual(SVOp->getMaskElt(i), j) ||
12396 SVOp->getMaskElt(j) >= 0)
12405 static bool isShuffleLow128VectorInsertHigh(ShuffleVectorSDNode *SVOp) {
12406 EVT VT = SVOp->getValueType(0);
12411 if (!isUndefOrEqual(SVOp->getMaskElt(i), j) ||
12412 SVOp->getMaskElt(j) >= 0)
12422 ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(N);
12423 SDValue V1 = SVOp->getOperand(0);
12424 SDValue V2 = SVOp->getOperand(1);
12425 EVT VT = SVOp->getValueType(0);
12452 if (!isUndefOrEqual(SVOp->getMaskElt(i), i) ||
12453 !isUndefOrEqual(SVOp->getMaskElt(i+NumElems/2), NumElems))
12469 if (isShuffleHigh128VectorInsertLow(SVOp)) {
12478 if (isShuffleLow128VectorInsertHigh(SVOp)) {