llvm.org GIT mirror llvm / 4c827f5
Emit target specific nodes for isSHUFPMask git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113048 91177308-0d34-0410-b5e6-96231b3b80d8 Bruno Cardoso Lopes 9 years ago
1 changed file(s) with 10 addition(s) and 1 deletion(s). Raw diff Collapse all Expand all
54705470 // FIXME: pshufb, blends, shifts.
54715471 if (VT.getVectorNumElements() == 2 ||
54725472 ShuffleVectorSDNode::isSplatMask(&M[0], VT) ||
5473 isSHUFPMask(M, VT) ||
54745473 isPSHUFHWMask(M, VT) ||
54755474 isPSHUFLWMask(M, VT) ||
54765475 isPALIGNRMask(M, VT, Subtarget->hasSSSE3()))
54775476 return Op;
5477
5478 if (isSHUFPMask(M, VT)) {
5479 unsigned TargetMask = X86::getShuffleSHUFImmediate(SVOp);
5480 if (VT == MVT::v4f32 || VT == MVT::v4i32)
5481 return getTargetShuffleNode(X86ISD::SHUFPS, dl, VT, V1, V2,
5482 TargetMask, DAG);
5483 if (VT == MVT::v2f64 || VT == MVT::v2i64)
5484 return getTargetShuffleNode(X86ISD::SHUFPD, dl, VT, V1, V2,
5485 TargetMask, DAG);
5486 }
54785487
54795488 if (X86::isUNPCKL_v_undef_Mask(SVOp))
54805489 if (VT != MVT::v2i64 && VT != MVT::v2f64)