Skip to content
Snippets Groups Projects
Commit 34cca175 authored by Elena Demikhovsky's avatar Elena Demikhovsky
Browse files

Shortened code in shuffle masks

llvm-svn: 149493
parent c97434ec
No related branches found
No related tags found
No related merge requests found
...@@ -12941,25 +12941,17 @@ SDValue X86TargetLowering::PerformTruncateCombine(SDNode *N, SelectionDAG &DAG, ...@@ -12941,25 +12941,17 @@ SDValue X86TargetLowering::PerformTruncateCombine(SDNode *N, SelectionDAG &DAG,
OpHi = DAG.getNode(ISD::BITCAST, dl, MVT::v4i32, OpHi); OpHi = DAG.getNode(ISD::BITCAST, dl, MVT::v4i32, OpHi);
   
// PSHUFD // PSHUFD
SmallVector<int,4> ShufMask1; int ShufMask1[] = {0, 2, 0, 0};
ShufMask1.push_back(0);
ShufMask1.push_back(2);
ShufMask1.push_back(0);
ShufMask1.push_back(0);
   
OpLo = DAG.getVectorShuffle(VT, dl, OpLo, DAG.getUNDEF(VT), OpLo = DAG.getVectorShuffle(VT, dl, OpLo, DAG.getUNDEF(VT),
ShufMask1.data()); ShufMask1);
OpHi = DAG.getVectorShuffle(VT, dl, OpHi, DAG.getUNDEF(VT), OpHi = DAG.getVectorShuffle(VT, dl, OpHi, DAG.getUNDEF(VT),
ShufMask1.data()); ShufMask1);
   
// MOVLHPS // MOVLHPS
SmallVector<int,4> ShufMask2; int ShufMask2[] = {0, 1, 4, 5};
ShufMask2.push_back(0);
ShufMask2.push_back(1);
ShufMask2.push_back(4);
ShufMask2.push_back(5);
   
return DAG.getVectorShuffle(VT, dl, OpLo, OpHi, ShufMask2.data()); return DAG.getVectorShuffle(VT, dl, OpLo, OpHi, ShufMask2);
} }
if ((VT == MVT::v8i16) && (OpVT == MVT::v8i32)) { if ((VT == MVT::v8i16) && (OpVT == MVT::v8i32)) {
   
...@@ -12973,38 +12965,24 @@ SDValue X86TargetLowering::PerformTruncateCombine(SDNode *N, SelectionDAG &DAG, ...@@ -12973,38 +12965,24 @@ SDValue X86TargetLowering::PerformTruncateCombine(SDNode *N, SelectionDAG &DAG,
OpHi = DAG.getNode(ISD::BITCAST, dl, MVT::v16i8, OpHi); OpHi = DAG.getNode(ISD::BITCAST, dl, MVT::v16i8, OpHi);
   
// PSHUFB // PSHUFB
SmallVector<int,16> ShufMask1; int ShufMask1[] = {0, 1, 4, 5, 8, 9, 12, 13,
ShufMask1.push_back(0x0); -1, -1, -1, -1, -1, -1, -1, -1};
ShufMask1.push_back(0x1);
ShufMask1.push_back(0x4);
ShufMask1.push_back(0x5);
ShufMask1.push_back(0x8);
ShufMask1.push_back(0x9);
ShufMask1.push_back(0xc);
ShufMask1.push_back(0xd);
for (unsigned i=0; i<8; ++i)
ShufMask1.push_back(-1);
   
OpLo = DAG.getVectorShuffle(MVT::v16i8, dl, OpLo, OpLo = DAG.getVectorShuffle(MVT::v16i8, dl, OpLo,
DAG.getUNDEF(MVT::v16i8), DAG.getUNDEF(MVT::v16i8),
ShufMask1.data()); ShufMask1);
OpHi = DAG.getVectorShuffle(MVT::v16i8, dl, OpHi, OpHi = DAG.getVectorShuffle(MVT::v16i8, dl, OpHi,
DAG.getUNDEF(MVT::v16i8), DAG.getUNDEF(MVT::v16i8),
ShufMask1.data()); ShufMask1);
   
OpLo = DAG.getNode(ISD::BITCAST, dl, MVT::v4i32, OpLo); OpLo = DAG.getNode(ISD::BITCAST, dl, MVT::v4i32, OpLo);
OpHi = DAG.getNode(ISD::BITCAST, dl, MVT::v4i32, OpHi); OpHi = DAG.getNode(ISD::BITCAST, dl, MVT::v4i32, OpHi);
   
// MOVLHPS // MOVLHPS
SmallVector<int,4> ShufMask2; int ShufMask2[] = {0, 1, 4, 5};
ShufMask2.push_back(0);
ShufMask2.push_back(1);
ShufMask2.push_back(4);
ShufMask2.push_back(5);
   
SDValue res = DAG.getVectorShuffle(MVT::v4i32, dl, OpLo, OpHi, ShufMask2.data()); SDValue res = DAG.getVectorShuffle(MVT::v4i32, dl, OpLo, OpHi, ShufMask2);
return DAG.getNode(ISD::BITCAST, dl, MVT::v8i16, res); return DAG.getNode(ISD::BITCAST, dl, MVT::v8i16, res);
} }
   
return SDValue(); return SDValue();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment