From 7e30ef77f6749695e79a8e43a1d1780ef57a52d2 Mon Sep 17 00:00:00 2001 From: David Sherwood Date: Thu, 11 Jun 2020 07:47:23 +0100 Subject: [PATCH] [CodeGen] Fix warnings in getVectorTypeBreakdown Added NextPowerOf2() routine to TypeSize and rewritten the code in getVectorTypeBreakdown to avoid warnings being generated. Differential Revision: https://reviews.llvm.org/D81578 --- llvm/include/llvm/Support/TypeSize.h | 4 ++++ llvm/lib/CodeGen/TargetLoweringBase.cpp | 12 ++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/llvm/include/llvm/Support/TypeSize.h b/llvm/include/llvm/Support/TypeSize.h index 05295f4..76564c4 100644 --- a/llvm/include/llvm/Support/TypeSize.h +++ b/llvm/include/llvm/Support/TypeSize.h @@ -229,6 +229,10 @@ public: TypeSize operator/(int64_t RHS) const { return { MinSize / RHS, IsScalable }; } + + TypeSize NextPowerOf2() const { + return TypeSize(llvm::NextPowerOf2(MinSize), IsScalable); + } }; /// Returns a TypeSize with a known minimum size that is the next integer diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp index 6ec6498..c822092 100644 --- a/llvm/lib/CodeGen/TargetLoweringBase.cpp +++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp @@ -1474,14 +1474,14 @@ unsigned TargetLoweringBase::getVectorTypeBreakdown(LLVMContext &Context, EVT VT MVT DestVT = getRegisterType(Context, NewVT); RegisterVT = DestVT; - unsigned NewVTSize = NewVT.getSizeInBits(); - // Convert sizes such as i33 to i64. - if (!isPowerOf2_32(NewVTSize)) - NewVTSize = NextPowerOf2(NewVTSize); - - if (EVT(DestVT).bitsLT(NewVT)) // Value is expanded, e.g. i64 -> i16. + if (EVT(DestVT).bitsLT(NewVT)) { // Value is expanded, e.g. i64 -> i16. + TypeSize NewVTSize = NewVT.getSizeInBits(); + // Convert sizes such as i33 to i64. + if (!isPowerOf2_32(NewVTSize.getKnownMinSize())) + NewVTSize = NewVTSize.NextPowerOf2(); return NumVectorRegs*(NewVTSize/DestVT.getSizeInBits()); + } // Otherwise, promotion or legal types use the same number of registers as // the vector decimated to the appropriate level. -- 2.7.4