[X86] Don't limit splitVector helper to simple types.
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 3 May 2020 11:27:14 +0000 (12:27 +0100)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 3 May 2020 11:27:37 +0000 (12:27 +0100)
It can handle EVT just as well (and so can the extractSubVector calls).

llvm/lib/Target/X86/X86ISelLowering.cpp

index 3db6a91..b3c1a75 100644 (file)
@@ -5751,13 +5751,14 @@ static bool collectConcatOps(SDNode *N, SmallVectorImpl<SDValue> &Ops) {
 
 static std::pair<SDValue, SDValue> splitVector(SDValue Op, SelectionDAG &DAG,
                                                const SDLoc &dl) {
-  MVT VT = Op.getSimpleValueType();
+  EVT VT = Op.getValueType();
   unsigned NumElems = VT.getVectorNumElements();
   unsigned SizeInBits = VT.getSizeInBits();
+  assert((NumElems % 2) == 0 && (SizeInBits % 2) == 0 &&
+         "Can't split odd sized vector");
 
   SDValue Lo = extractSubVector(Op, 0, DAG, dl, SizeInBits / 2);
   SDValue Hi = extractSubVector(Op, NumElems / 2, DAG, dl, SizeInBits / 2);
-
   return std::make_pair(Lo, Hi);
 }