llvm.org GIT mirror llvm / 7bcc388
PR8200: The MMX unpack instructions were no longer selected. Reverted the parts that caused this to happen. git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_28@115298 91177308-0d34-0410-b5e6-96231b3b80d8 Bill Wendling 8 years ago
1 changed file(s) with 4 addition(s) and 11 deletion(s). Raw diff Collapse all Expand all
54135413 return getMOVL(DAG, dl, VT, V2, V1);
54145414 }
54155415
5416 if (X86::isUNPCKLMask(SVOp))
5416 if (X86::isUNPCKL_v_undef_Mask(SVOp) || X86::isUNPCKLMask(SVOp))
54175417 return (isMMX) ?
54185418 Op : getTargetShuffleNode(getUNPCKLOpcode(VT), dl, VT, V1, V2, DAG);
54195419
5420 if (X86::isUNPCKHMask(SVOp))
5420 if (X86::isUNPCKH_v_undef_Mask(SVOp) || X86::isUNPCKHMask(SVOp))
54215421 return (isMMX) ?
54225422 Op : getTargetShuffleNode(getUNPCKHOpcode(VT), dl, VT, V1, V2, DAG);
54235423
54425442 SDValue NewOp = CommuteVectorShuffle(SVOp, DAG);
54435443 ShuffleVectorSDNode *NewSVOp = cast(NewOp);
54445444
5445 if (X86::isUNPCKLMask(NewSVOp))
5445 if (X86::isUNPCKL_v_undef_Mask(NewSVOp) || X86::isUNPCKLMask(NewSVOp))
54465446 return (isMMX) ?
54475447 NewOp : getTargetShuffleNode(getUNPCKLOpcode(VT), dl, VT, V2, V1, DAG);
54485448
5449 if (X86::isUNPCKHMask(NewSVOp))
5449 if (X86::isUNPCKH_v_undef_Mask(NewSVOp) || X86::isUNPCKHMask(NewSVOp))
54505450 return (isMMX) ?
54515451 NewOp : getTargetShuffleNode(getUNPCKHOpcode(VT), dl, VT, V2, V1, DAG);
54525452 }
54925492 return getTargetShuffleNode(X86ISD::SHUFPD, dl, VT, V1, V2,
54935493 TargetMask, DAG);
54945494 }
5495
5496 if (X86::isUNPCKL_v_undef_Mask(SVOp))
5497 if (VT != MVT::v2i64 && VT != MVT::v2f64)
5498 return getTargetShuffleNode(getUNPCKLOpcode(VT), dl, VT, V1, V1, DAG);
5499 if (X86::isUNPCKH_v_undef_Mask(SVOp))
5500 if (VT != MVT::v2i64 && VT != MVT::v2f64)
5501 return getTargetShuffleNode(getUNPCKHOpcode(VT), dl, VT, V1, V1, DAG);
55025495
55035496 // Handle v8i16 specifically since SSE can do byte extraction and insertion.
55045497 if (VT == MVT::v8i16) {