llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-x86 Author: Rahul Joshi (jurahul) <details> <summary>Changes</summary> `getTruncated` and `getExtended` are too generic names, so rename them as follows: * `getTruncatedType` -> `getHalfWidthType` * `getExtendedType` -> `getDoubleWidthType` * `getTruncatedElementVectorType` -> `getHalfWidthElementVectorType` * `getExtendedElementVectorType` -> `getDoubleWidthElementVectorType` These new names convey the semantics more precisely. --- Patch is 24.51 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/196528.diff 15 Files Affected: - (modified) clang/lib/CodeGen/TargetBuiltins/ARM.cpp (+7-7) - (modified) llvm/include/llvm/IR/DerivedTypes.h (+23-21) - (modified) llvm/include/llvm/IR/Type.h (+2-2) - (modified) llvm/include/llvm/SandboxIR/Type.h (+12-10) - (modified) llvm/lib/Analysis/LoopCacheAnalysis.cpp (+1-1) - (modified) llvm/lib/IR/Intrinsics.cpp (+4-4) - (modified) llvm/lib/SandboxIR/Type.cpp (+5-5) - (modified) llvm/lib/Target/AArch64/AArch64ISelLowering.cpp (+1-1) - (modified) llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp (+1-1) - (modified) llvm/lib/Target/X86/X86TargetTransformInfo.cpp (+1-1) - (modified) llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp (+1-1) - (modified) llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp (+1-1) - (modified) llvm/lib/Transforms/Vectorize/VectorCombine.cpp (+1-1) - (modified) llvm/unittests/IR/VectorTypesTest.cpp (+4-4) - (modified) llvm/unittests/SandboxIR/TypesTest.cpp (+10-9) ``````````diff diff --git a/clang/lib/CodeGen/TargetBuiltins/ARM.cpp b/clang/lib/CodeGen/TargetBuiltins/ARM.cpp index 8bfacc5580bd6..8d237f51ed0b0 100644 --- a/clang/lib/CodeGen/TargetBuiltins/ARM.cpp +++ b/clang/lib/CodeGen/TargetBuiltins/ARM.cpp @@ -1256,7 +1256,7 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( } case NEON::BI__builtin_neon_vaddhn_v: { llvm::FixedVectorType *SrcTy = - llvm::FixedVectorType::getExtendedElementVectorType(VTy); + llvm::FixedVectorType::getDoubleWidthElementVectorType(VTy); // %sum = add <4 x i32> %lhs, %rhs Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy); @@ -1455,7 +1455,7 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Tys), Ops, NameHint); } case NEON::BI__builtin_neon_vcvtx_f32_v: { - llvm::Type *Tys[2] = { VTy->getTruncatedElementVectorType(VTy), Ty}; + llvm::Type *Tys[2] = {VTy->getHalfWidthElementVectorType(VTy), Ty}; return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Tys), Ops, NameHint); } @@ -1541,7 +1541,7 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( } case NEON::BI__builtin_neon_vmovl_v: { llvm::FixedVectorType *DTy = - llvm::FixedVectorType::getTruncatedElementVectorType(VTy); + llvm::FixedVectorType::getHalfWidthElementVectorType(VTy); Ops[0] = Builder.CreateBitCast(Ops[0], DTy); if (Usgn) return Builder.CreateZExt(Ops[0], Ty, "vmovl"); @@ -1549,7 +1549,7 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( } case NEON::BI__builtin_neon_vmovn_v: { llvm::FixedVectorType *QTy = - llvm::FixedVectorType::getExtendedElementVectorType(VTy); + llvm::FixedVectorType::getDoubleWidthElementVectorType(VTy); Ops[0] = Builder.CreateBitCast(Ops[0], QTy); return Builder.CreateTrunc(Ops[0], Ty, "vmovn"); } @@ -1652,7 +1652,7 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( "vshl_n"); case NEON::BI__builtin_neon_vshll_n_v: { llvm::FixedVectorType *SrcTy = - llvm::FixedVectorType::getTruncatedElementVectorType(VTy); + llvm::FixedVectorType::getHalfWidthElementVectorType(VTy); Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy); if (Usgn) Ops[0] = Builder.CreateZExt(Ops[0], VTy); @@ -1663,7 +1663,7 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( } case NEON::BI__builtin_neon_vshrn_n_v: { llvm::FixedVectorType *SrcTy = - llvm::FixedVectorType::getExtendedElementVectorType(VTy); + llvm::FixedVectorType::getDoubleWidthElementVectorType(VTy); Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy); Ops[1] = EmitNeonShiftVector(Ops[1], SrcTy, false); if (Usgn) @@ -1728,7 +1728,7 @@ Value *CodeGenFunction::EmitCommonNeonBuiltinExpr( } case NEON::BI__builtin_neon_vsubhn_v: { llvm::FixedVectorType *SrcTy = - llvm::FixedVectorType::getExtendedElementVectorType(VTy); + llvm::FixedVectorType::getDoubleWidthElementVectorType(VTy); // %sum = add <4 x i32> %lhs, %rhs Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy); diff --git a/llvm/include/llvm/IR/DerivedTypes.h b/llvm/include/llvm/IR/DerivedTypes.h index 0c686cc5c32d7..ebe7964efc161 100644 --- a/llvm/include/llvm/IR/DerivedTypes.h +++ b/llvm/include/llvm/IR/DerivedTypes.h @@ -66,12 +66,12 @@ class IntegerType : public Type { LLVM_ABI static IntegerType *get(LLVMContext &C, unsigned NumBits); /// Returns type twice as wide the input type. - IntegerType *getExtendedType() const { + IntegerType *getDoubleWidthType() const { return Type::getIntNTy(getContext(), 2 * getBitWidth()); } /// Returns type half as wide the input type. - IntegerType *getTruncatedType() const { + IntegerType *getHalfWidthType() const { unsigned BitWidth = getBitWidth(); assert((BitWidth & 1) == 0 && "Cannot truncate integer type with odd bit-width"); @@ -540,16 +540,16 @@ class VectorType : public Type { /// This static method is like getInteger except that the element types are /// twice as wide as the elements in the input type. - static VectorType *getExtendedElementVectorType(VectorType *VTy) { + static VectorType *getDoubleWidthElementVectorType(VectorType *VTy) { assert(VTy->isIntOrIntVectorTy() && "VTy expected to be a vector of ints."); auto *EltTy = cast<IntegerType>(VTy->getElementType()); - return VectorType::get(EltTy->getExtendedType(), VTy->getElementCount()); + return VectorType::get(EltTy->getDoubleWidthType(), VTy->getElementCount()); } // This static method gets a VectorType with the same number of elements as // the input type, and the element type is an integer or float type which // is half as wide as the elements in the input type. - static VectorType *getTruncatedElementVectorType(VectorType *VTy) { + static VectorType *getHalfWidthElementVectorType(VectorType *VTy) { Type *EltTy = VTy->getElementType(); if (EltTy->isFloatingPointTy()) { switch (EltTy->getTypeID()) { @@ -563,7 +563,7 @@ class VectorType : public Type { llvm_unreachable("Cannot create narrower fp vector element type"); } } else { - EltTy = cast<IntegerType>(EltTy)->getTruncatedType(); + EltTy = cast<IntegerType>(EltTy)->getHalfWidthType(); } return VectorType::get(EltTy, VTy->getElementCount()); } @@ -574,7 +574,7 @@ class VectorType : public Type { static VectorType *getSubdividedVectorType(VectorType *VTy, int NumSubdivs) { for (int i = 0; i < NumSubdivs; ++i) { VTy = VectorType::getDoubleElementsVectorType(VTy); - VTy = VectorType::getTruncatedElementVectorType(VTy); + VTy = VectorType::getHalfWidthElementVectorType(VTy); } return VTy; } @@ -655,13 +655,15 @@ class FixedVectorType : public VectorType { return cast<FixedVectorType>(VectorType::getInteger(VTy)); } - static FixedVectorType *getExtendedElementVectorType(FixedVectorType *VTy) { - return cast<FixedVectorType>(VectorType::getExtendedElementVectorType(VTy)); + static FixedVectorType * + getDoubleWidthElementVectorType(FixedVectorType *VTy) { + return cast<FixedVectorType>( + VectorType::getDoubleWidthElementVectorType(VTy)); } - static FixedVectorType *getTruncatedElementVectorType(FixedVectorType *VTy) { + static FixedVectorType *getHalfWidthElementVectorType(FixedVectorType *VTy) { return cast<FixedVectorType>( - VectorType::getTruncatedElementVectorType(VTy)); + VectorType::getHalfWidthElementVectorType(VTy)); } static FixedVectorType *getSubdividedVectorType(FixedVectorType *VTy, @@ -705,15 +707,15 @@ class ScalableVectorType : public VectorType { } static ScalableVectorType * - getExtendedElementVectorType(ScalableVectorType *VTy) { + getDoubleWidthElementVectorType(ScalableVectorType *VTy) { return cast<ScalableVectorType>( - VectorType::getExtendedElementVectorType(VTy)); + VectorType::getDoubleWidthElementVectorType(VTy)); } static ScalableVectorType * - getTruncatedElementVectorType(ScalableVectorType *VTy) { + getHalfWidthElementVectorType(ScalableVectorType *VTy) { return cast<ScalableVectorType>( - VectorType::getTruncatedElementVectorType(VTy)); + VectorType::getHalfWidthElementVectorType(VTy)); } static ScalableVectorType *getSubdividedVectorType(ScalableVectorType *VTy, @@ -795,24 +797,24 @@ class PointerType : public Type { } }; -Type *Type::getExtendedType() const { +Type *Type::getDoubleWidthType() const { assert( isIntOrIntVectorTy() && "Original type expected to be a vector of integers or a scalar integer."); if (auto *VTy = dyn_cast<VectorType>(this)) - return VectorType::getExtendedElementVectorType( + return VectorType::getDoubleWidthElementVectorType( const_cast<VectorType *>(VTy)); - return cast<IntegerType>(this)->getExtendedType(); + return cast<IntegerType>(this)->getDoubleWidthType(); } -Type *Type::getTruncatedType() const { +Type *Type::getHalfWidthType() const { assert( isIntOrIntVectorTy() && "Original type expected to be a vector of integers or a scalar integer."); if (auto *VTy = dyn_cast<VectorType>(this)) - return VectorType::getTruncatedElementVectorType( + return VectorType::getHalfWidthElementVectorType( const_cast<VectorType *>(VTy)); - return cast<IntegerType>(this)->getTruncatedType(); + return cast<IntegerType>(this)->getHalfWidthType(); } Type *Type::getWithNewType(Type *EltTy) const { diff --git a/llvm/include/llvm/IR/Type.h b/llvm/include/llvm/IR/Type.h index 7d40e5dac9463..4444733c4422d 100644 --- a/llvm/include/llvm/IR/Type.h +++ b/llvm/include/llvm/IR/Type.h @@ -442,11 +442,11 @@ class Type { /// Given scalar/vector integer type, returns a type with elements twice as /// wide as in the original type. For vectors, preserves element count. - LLVM_ABI inline Type *getExtendedType() const; + LLVM_ABI inline Type *getDoubleWidthType() const; /// Given scalar/vector integer type, returns a type with elements half as /// wide as in the original type. For vectors, preserves element count. - LLVM_ABI inline Type *getTruncatedType() const; + LLVM_ABI inline Type *getHalfWidthType() const; /// Get the address space of this pointer or pointer vector type. LLVM_ABI inline unsigned getPointerAddressSpace() const; diff --git a/llvm/include/llvm/SandboxIR/Type.h b/llvm/include/llvm/SandboxIR/Type.h index 9059c9661650b..e60d45703ab87 100644 --- a/llvm/include/llvm/SandboxIR/Type.h +++ b/llvm/include/llvm/SandboxIR/Type.h @@ -346,8 +346,8 @@ class VectorType : public Type { return cast<llvm::VectorType>(LLVMTy)->getElementCount(); } LLVM_ABI static VectorType *getInteger(VectorType *VTy); - LLVM_ABI static VectorType *getExtendedElementVectorType(VectorType *VTy); - LLVM_ABI static VectorType *getTruncatedElementVectorType(VectorType *VTy); + LLVM_ABI static VectorType *getDoubleWidthElementVectorType(VectorType *VTy); + LLVM_ABI static VectorType *getHalfWidthElementVectorType(VectorType *VTy); LLVM_ABI static VectorType *getSubdividedVectorType(VectorType *VTy, int NumSubdivs); LLVM_ABI static VectorType *getHalfElementsVectorType(VectorType *VTy); @@ -371,13 +371,15 @@ class FixedVectorType : public VectorType { return cast<FixedVectorType>(VectorType::getInteger(VTy)); } - static FixedVectorType *getExtendedElementVectorType(FixedVectorType *VTy) { - return cast<FixedVectorType>(VectorType::getExtendedElementVectorType(VTy)); + static FixedVectorType * + getDoubleWidthElementVectorType(FixedVectorType *VTy) { + return cast<FixedVectorType>( + VectorType::getDoubleWidthElementVectorType(VTy)); } - static FixedVectorType *getTruncatedElementVectorType(FixedVectorType *VTy) { + static FixedVectorType *getHalfWidthElementVectorType(FixedVectorType *VTy) { return cast<FixedVectorType>( - VectorType::getTruncatedElementVectorType(VTy)); + VectorType::getHalfWidthElementVectorType(VTy)); } static FixedVectorType *getSubdividedVectorType(FixedVectorType *VTy, @@ -418,15 +420,15 @@ class ScalableVectorType : public VectorType { } static ScalableVectorType * - getExtendedElementVectorType(ScalableVectorType *VTy) { + getDoubleWidthElementVectorType(ScalableVectorType *VTy) { return cast<ScalableVectorType>( - VectorType::getExtendedElementVectorType(VTy)); + VectorType::getDoubleWidthElementVectorType(VTy)); } static ScalableVectorType * - getTruncatedElementVectorType(ScalableVectorType *VTy) { + getHalfWidthElementVectorType(ScalableVectorType *VTy) { return cast<ScalableVectorType>( - VectorType::getTruncatedElementVectorType(VTy)); + VectorType::getHalfWidthElementVectorType(VTy)); } static ScalableVectorType *getSubdividedVectorType(ScalableVectorType *VTy, diff --git a/llvm/lib/Analysis/LoopCacheAnalysis.cpp b/llvm/lib/Analysis/LoopCacheAnalysis.cpp index be4dfde85e8da..9b8d0c1811f3f 100644 --- a/llvm/lib/Analysis/LoopCacheAnalysis.cpp +++ b/llvm/lib/Analysis/LoopCacheAnalysis.cpp @@ -329,7 +329,7 @@ CacheCostTy IndexedReference::computeRefCost(const Loop &L, computeTripCount(*AR->getLoop(), *Sizes.back(), SE); Type *WiderType = SE.getWiderType(RefCost->getType(), TripCount->getType()); // For the multiplication result to fit, request a type twice as wide. - WiderType = WiderType->getExtendedType(); + WiderType = WiderType->getDoubleWidthType(); RefCost = SE.getMulExpr(SE.getNoopOrZeroExtend(RefCost, WiderType), SE.getNoopOrZeroExtend(TripCount, WiderType)); } diff --git a/llvm/lib/IR/Intrinsics.cpp b/llvm/lib/IR/Intrinsics.cpp index ff57d335c9a13..ea141cf186842 100644 --- a/llvm/lib/IR/Intrinsics.cpp +++ b/llvm/lib/IR/Intrinsics.cpp @@ -555,9 +555,9 @@ static Type *DecodeFixedType(ArrayRef<Intrinsic::IITDescriptor> &Infos, case IITDescriptor::VecOfAnyPtrsToElt: return OverloadTys[D.getOverloadIndex()]; case IITDescriptor::Extend: - return OverloadTys[D.getOverloadIndex()]->getExtendedType(); + return OverloadTys[D.getOverloadIndex()]->getDoubleWidthType(); case IITDescriptor::Trunc: - return OverloadTys[D.getOverloadIndex()]->getTruncatedType(); + return OverloadTys[D.getOverloadIndex()]->getHalfWidthType(); case IITDescriptor::Subdivide2: case IITDescriptor::Subdivide4: { Type *Ty = OverloadTys[D.getOverloadIndex()]; @@ -948,7 +948,7 @@ matchIntrinsicType(Type *Ty, ArrayRef<Intrinsic::IITDescriptor> &Infos, if (D.getOverloadIndex() >= OverloadTys.size()) return IsDeferredCheck || DeferCheck(Ty); - Type *NewTy = OverloadTys[D.getOverloadIndex()]->getExtendedType(); + Type *NewTy = OverloadTys[D.getOverloadIndex()]->getDoubleWidthType(); return Ty != NewTy; } case IITDescriptor::Trunc: { @@ -956,7 +956,7 @@ matchIntrinsicType(Type *Ty, ArrayRef<Intrinsic::IITDescriptor> &Infos, if (D.getOverloadIndex() >= OverloadTys.size()) return IsDeferredCheck || DeferCheck(Ty); - Type *NewTy = OverloadTys[D.getOverloadIndex()]->getTruncatedType(); + Type *NewTy = OverloadTys[D.getOverloadIndex()]->getHalfWidthType(); return Ty != NewTy; } case IITDescriptor::OneNthEltsVec: { diff --git a/llvm/lib/SandboxIR/Type.cpp b/llvm/lib/SandboxIR/Type.cpp index 4ae678f6673e5..1cac531e11f49 100644 --- a/llvm/lib/SandboxIR/Type.cpp +++ b/llvm/lib/SandboxIR/Type.cpp @@ -80,14 +80,14 @@ VectorType *VectorType::getInteger(VectorType *VTy) { return cast<VectorType>(VTy->getContext().getType( llvm::VectorType::getInteger(cast<llvm::VectorType>(VTy->LLVMTy)))); } -VectorType *VectorType::getExtendedElementVectorType(VectorType *VTy) { - return cast<VectorType>( - VTy->getContext().getType(llvm::VectorType::getExtendedElementVectorType( +VectorType *VectorType::getDoubleWidthElementVectorType(VectorType *VTy) { + return cast<VectorType>(VTy->getContext().getType( + llvm::VectorType::getDoubleWidthElementVectorType( cast<llvm::VectorType>(VTy->LLVMTy)))); } -VectorType *VectorType::getTruncatedElementVectorType(VectorType *VTy) { +VectorType *VectorType::getHalfWidthElementVectorType(VectorType *VTy) { return cast<VectorType>( - VTy->getContext().getType(llvm::VectorType::getTruncatedElementVectorType( + VTy->getContext().getType(llvm::VectorType::getHalfWidthElementVectorType( cast<llvm::VectorType>(VTy->LLVMTy)))); } VectorType *VectorType::getSubdividedVectorType(VectorType *VTy, diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp index b53605e917e2b..9dd549b29c614 100644 --- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp +++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp @@ -18232,7 +18232,7 @@ bool AArch64TargetLowering::optimizeExtendOrTruncateConversion( return false; auto *TruncDstType = - cast<FixedVectorType>(VectorType::getTruncatedElementVectorType(DstTy)); + cast<FixedVectorType>(VectorType::getHalfWidthElementVectorType(DstTy)); // If the ZExt can be lowered to a single ZExt to the next power-of-2 and // the remaining ZExt folded into the user, don't use tbl lowering. auto SrcWidth = SrcTy->getElementType()->getScalarSizeInBits(); diff --git a/llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp b/llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp index 932b4a416a8d3..60d68ebd285ea 100644 --- a/llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp +++ b/llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp @@ -532,7 +532,7 @@ static Value *simplifyX86pmulh(IntrinsicInst &II, // Extend to twice the width and multiply. auto Cast = IsSigned ? Instruction::CastOps::SExt : Instruction::CastOps::ZExt; - auto *ExtTy = FixedVectorType::getExtendedElementVectorType(ArgTy); + auto *ExtTy = FixedVectorType::getDoubleWidthElementVectorType(ArgTy); Value *LHS = Builder.CreateCast(Cast, Arg0, ExtTy); Value *RHS = Builder.CreateCast(Cast, Arg1, ExtTy); Value *Mul = Builder.CreateMul(LHS, RHS); diff --git a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp index 1bc0ff397e476..92f2ff3c225ee 100644 --- a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp +++ b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp @@ -260,7 +260,7 @@ InstructionCost X86TTIImpl::getArithmeticInstrCost( if (Opcode == Instruction::Mul && Ty->isVectorTy() && Ty->getPrimitiveSizeInBits() <= 64 && Ty->getScalarSizeInBits() == 8) { Type *WideVecTy = - VectorType::getExtendedElementVectorType(cast<VectorType>(Ty)); + VectorType::getDoubleWidthElementVectorType(cast<VectorType>(Ty)); return getCastInstrCost(Instruction::ZExt, WideVecTy, Ty, TargetTransformInfo::CastContextHint::None, CostKind) + diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp index 05508d84c036b..460d0fec9563e 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp @@ -1008,7 +1008,7 @@ Instruction *InstCombinerImpl::visitTrunc(TruncInst &Trunc) { // vectorization factors. if (auto *DestITy = dyn_cast<IntegerType>(DestTy)) { if (DestWidth * 2 < SrcWidth) { - auto *NewDestTy = DestITy->getExtendedType(); + auto *NewDestTy = DestITy->getDoubleWidthType(); if (shouldChangeType(SrcTy, NewDestTy) && TypeEvaluationHelper::canEvaluateTruncated(Src, NewDestTy, *this, &Trunc)) { diff --git a/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp b/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp index 3547a79df1355..d016011507d71 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp @@ -213,7 +213,7 @@ dropRedundantMaskingOfLeftShiftInput(BinaryOperator *OuterShift, // The mask must be computed in a type twice as wide to ensure // that no bits are lost if the sum-of-shifts is wider than the base type. - Type *ExtendedTy = WidestTy->getExtendedType(); + Type *ExtendedTy = WidestTy->getDoubleWidthType(); Value *MaskShAmt; diff --git a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp index 5ba344ea9a808..8b6f6614501a7 100644 --- a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp +++ b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp @@ -5512,7 +5512,7 @@ bool VectorCombine::foldInterleaveIntrinsics(Instruction &I) { auto *VTy = cast<VectorType>(cast<IntrinsicInst>(I).getArgOperand(0)->getType()); - auto *ExtVTy = VectorType::getExtendedElementVectorType(VTy); + auto *ExtVTy = VectorType::getDoubleWidthElementVectorType(VTy); unsigned Width = VTy->getElementType()->getIntegerBitWidth(); // Just in case the cost of interleave2 intrinsic and bitcast are both diff --git a/llvm/unittests/IR/VectorTypesTest.cpp b/llvm/unittests/IR/VectorTypesTest.cpp index 0b0787a11c418..7984000e121ff 100644 --- a/llvm/unittests/IR/VectorTypesTest.cpp +++ b/llvm/unittests/IR/VectorTyp... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/196528 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
