diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp
--- a/llvm/lib/CodeGen/CodeGenPrepare.cpp
+++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp
@@ -6959,7 +6959,7 @@
   // whereas scalable vectors would have to be shifted by
   // <2log(vscale) + number of bits> in order to store the
   // low/high parts. Bailing out for now.
-  if (StoreType->isVectorTy() && cast<VectorType>(StoreType)->isScalable())
+  if (isa<ScalableVectorType>(StoreType))
     return false;
 
   if (!DL.typeSizeEqualsStoreSize(StoreType) ||
diff --git a/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp b/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
--- a/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
@@ -161,7 +161,7 @@
 
           // Scalable vectors may need a special StackID to distinguish
           // them from other (fixed size) stack objects.
-          if (Ty->isVectorTy() && cast<VectorType>(Ty)->isScalable())
+          if (isa<ScalableVectorType>(Ty))
             MF->getFrameInfo().setStackID(FrameIndex,
                                           TFI->getStackIDForScalableVectors());
 
diff --git a/llvm/lib/CodeGen/ValueTypes.cpp b/llvm/lib/CodeGen/ValueTypes.cpp
--- a/llvm/lib/CodeGen/ValueTypes.cpp
+++ b/llvm/lib/CodeGen/ValueTypes.cpp
@@ -103,11 +103,11 @@
 }
 
 bool EVT::isExtendedFixedLengthVector() const {
-  return isExtendedVector() && !cast<VectorType>(LLVMTy)->isScalable();
+  return isExtendedVector() && isa<FixedVectorType>(LLVMTy);
 }
 
 bool EVT::isExtendedScalableVector() const {
-  return isExtendedVector() && cast<VectorType>(LLVMTy)->isScalable();
+  return isExtendedVector() && isa<ScalableVectorType>(LLVMTy);
 }
 
 EVT EVT::getExtendedVectorElementType() const {
diff --git a/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp b/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
--- a/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
+++ b/llvm/unittests/CodeGen/ScalableVectorMVTsTest.cpp
@@ -114,7 +114,7 @@
 
   Type *Ty = Enxv4f64.getTypeForEVT(Ctx);
   VectorType *ScV4Float64Ty = cast<VectorType>(Ty);
-  ASSERT_TRUE(ScV4Float64Ty->isScalable());
+  ASSERT_TRUE(isa<ScalableVectorType>(ScV4Float64Ty));
   ASSERT_EQ(Enxv4f64.getVectorElementCount(), ScV4Float64Ty->getElementCount());
   ASSERT_EQ(Enxv4f64.getScalarType().getTypeForEVT(Ctx),
             ScV4Float64Ty->getElementType());