for (int i = 0, e = NumElts / 2; i < e; ++i) {
ShuffleMask.push_back(2 * i + 1);
ShuffleMask.push_back(2 * i + 1);
- }
-}
-
-void DecodePSLLDQMask(MVT VT, unsigned Imm, SmallVectorImpl<int> &ShuffleMask) {
- unsigned VectorSizeInBits = VT.getSizeInBits();
- unsigned NumElts = VectorSizeInBits / 8;
+ }\r
+}\r
+\r
+void DecodeMOVDDUPMask(MVT VT, SmallVectorImpl<int> &ShuffleMask) {\r
+ unsigned VectorSizeInBits = VT.getSizeInBits();\r
+ unsigned ScalarSizeInBits = VT.getScalarSizeInBits();\r
+ unsigned NumElts = VT.getVectorNumElements();\r
+ unsigned NumLanes = VectorSizeInBits / 128;\r
+ unsigned NumLaneElts = NumElts / NumLanes;\r
+ unsigned NumLaneSubElts = 64 / ScalarSizeInBits;\r
+\r
+ for (unsigned l = 0; l < NumElts; l += NumLaneElts)\r
+ for (unsigned i = 0; i < NumLaneElts; i += NumLaneSubElts)\r
+ for (unsigned s = 0; s != NumLaneSubElts; s++)\r
+ ShuffleMask.push_back(l + s);\r
+}\r
+\r
+void DecodePSLLDQMask(MVT VT, unsigned Imm, SmallVectorImpl<int> &ShuffleMask) {\r
+ unsigned VectorSizeInBits = VT.getSizeInBits();\r
+ unsigned NumElts = VectorSizeInBits / 8;\r
unsigned NumLanes = VectorSizeInBits / 128;
unsigned NumLaneElts = NumElts / NumLanes;