GlobalISel: Fix handling of vectors of pointers in clamp{Min,Max}NumElements
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Thu, 31 Jan 2019 18:01:49 +0000 (18:01 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Thu, 31 Jan 2019 18:01:49 +0000 (18:01 +0000)
This avoids hitting the assert added in r352636 in a future commit.

llvm-svn: 352777

llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h

index 393af15..17acfc2 100644 (file)
@@ -712,7 +712,7 @@ public:
         [=](const LegalityQuery &Query) {
           LLT VecTy = Query.Types[TypeIdx];
           return std::make_pair(
-              TypeIdx, LLT::vector(MinElements, VecTy.getScalarSizeInBits()));
+              TypeIdx, LLT::vector(MinElements, VecTy.getElementType()));
         });
   }
   /// Limit the number of elements in EltTy vectors to at most MaxElements.
@@ -729,10 +729,8 @@ public:
         },
         [=](const LegalityQuery &Query) {
           LLT VecTy = Query.Types[TypeIdx];
-          if (MaxElements == 1)
-            return std::make_pair(TypeIdx, VecTy.getElementType());
-          return std::make_pair(
-              TypeIdx, LLT::vector(MaxElements, VecTy.getScalarSizeInBits()));
+          LLT NewTy = LLT::scalarOrVector(MaxElements, VecTy.getElementType());
+          return std::make_pair(TypeIdx, NewTy);
         });
   }
   /// Limit the number of elements for the given vectors to at least MinTy's