OSDN Git Service

[SelectionDAG] Tidyup mask creation. NFCI.
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 27 Jul 2017 15:08:53 +0000 (15:08 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 27 Jul 2017 15:08:53 +0000 (15:08 +0000)
Assign all concat elements to UNDEF and then just replace the first element, instead of copying everything individually.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309277 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp

index d41054b..395fa39 100644 (file)
@@ -3021,12 +3021,9 @@ SDValue DAGTypeLegalizer::convertMask(SDValue InMask, EVT MaskVT,
   } else if (CurrMaskNumEls < ToMaskVT.getVectorNumElements()) {
     unsigned NumSubVecs = (ToMaskVT.getVectorNumElements() / CurrMaskNumEls);
     EVT SubVT = Mask->getValueType(0);
-    SmallVector<SDValue, 16> SubConcatOps(NumSubVecs);
-    SubConcatOps[0] = Mask;
-    for (unsigned i = 1; i < NumSubVecs; ++i)
-      SubConcatOps[i] = DAG.getUNDEF(SubVT);
-    Mask =
-        DAG.getNode(ISD::CONCAT_VECTORS, SDLoc(Mask), ToMaskVT, SubConcatOps);
+    SmallVector<SDValue, 16> SubOps(NumSubVecs, DAG.getUNDEF(SubVT));
+    SubOps[0] = Mask;
+    Mask = DAG.getNode(ISD::CONCAT_VECTORS, SDLoc(Mask), ToMaskVT, SubOps);
   }
 
   assert((Mask->getValueType(0) == ToMaskVT) &&