summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2019-05-01 11:29:36 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2019-05-01 11:29:36 +0000
commit37c2419cc7697a5fc95b4633757a5cbff4f11c95 (patch)
tree23b9af3e1d6e82bcb443611bdb7cdbfcdb234dcf /llvm/lib
parentccbe567f464b31b48e5681b0011ed51765466974 (diff)
downloadbcm5719-llvm-37c2419cc7697a5fc95b4633757a5cbff4f11c95.tar.gz
bcm5719-llvm-37c2419cc7697a5fc95b4633757a5cbff4f11c95.zip
[X86][SSE] Add X86ISD::PACKSS\PACKUS to SimplifyDemandedVectorEltsForTargetNode vector splitting
llvm-svn: 359673
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 11dda00c9ab..27897ddb4d7 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -33410,15 +33410,21 @@ bool X86TargetLowering::SimplifyDemandedVectorEltsForTargetNode(
case X86ISD::PSHUFB:
case X86ISD::UNPCKL:
case X86ISD::UNPCKH:
+ // Saturated Packs.
+ case X86ISD::PACKSS:
+ case X86ISD::PACKUS:
// Horizontal Ops.
case X86ISD::HADD:
case X86ISD::HSUB:
case X86ISD::FHADD:
case X86ISD::FHSUB: {
SDLoc DL(Op);
+ MVT ExtVT = VT.getSimpleVT();
+ ExtVT = MVT::getVectorVT(ExtVT.getScalarType(),
+ 128 / ExtVT.getScalarSizeInBits());
SDValue Ext0 = extract128BitVector(Op.getOperand(0), 0, TLO.DAG, DL);
SDValue Ext1 = extract128BitVector(Op.getOperand(1), 0, TLO.DAG, DL);
- SDValue ExtOp = TLO.DAG.getNode(Opc, DL, Ext0.getValueType(), Ext0, Ext1);
+ SDValue ExtOp = TLO.DAG.getNode(Opc, DL, ExtVT, Ext0, Ext1);
SDValue UndefVec = TLO.DAG.getUNDEF(VT);
SDValue Insert = insert128BitVector(UndefVec, ExtOp, 0, TLO.DAG, DL);
return TLO.CombineTo(Op, Insert);
OpenPOWER on IntegriCloud