From 3b7f3d012bcdabf9314d0d3f4744c7594bfa55a7 Mon Sep 17 00:00:00 2001 From: Christopher Tetreault Date: Mon, 4 May 2020 08:29:08 -0700 Subject: [PATCH] [SVE] Remove invalid usage of getNumElements in Instructions Summary: Remove invalid usage of VectorType::getNumElements in ShuffleVectorInst::isValidOperands identified by test case llvm::Analysis/ConstantFolding/vscale-shufflevector.ll. The tested conditions hold for both fixed width and scalable vectors; use getElementCount(). Reviewers: efriedma, sdesmalen, c-rhodes, spatel Reviewed By: sdesmalen Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D79212 --- llvm/lib/IR/Instructions.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/IR/Instructions.cpp b/llvm/lib/IR/Instructions.cpp index cccbd51..d9cda0f 100644 --- a/llvm/lib/IR/Instructions.cpp +++ b/llvm/lib/IR/Instructions.cpp @@ -1916,11 +1916,11 @@ void ShuffleVectorInst::commute() { bool ShuffleVectorInst::isValidOperands(const Value *V1, const Value *V2, ArrayRef Mask) { // V1 and V2 must be vectors of the same type. - if (!V1->getType()->isVectorTy() || V1->getType() != V2->getType()) + if (!isa(V1->getType()) || V1->getType() != V2->getType()) return false; // Make sure the mask elements make sense. - int V1Size = cast(V1->getType())->getNumElements(); + int V1Size = cast(V1->getType())->getElementCount().Min; for (int Elem : Mask) if (Elem != UndefMaskElem && Elem >= V1Size * 2) return false; -- 2.7.4