[llvm] [VPlan] Support struct return types for widen intrinsics (NFC). (PR #165218)
Benjamin Maxwell via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 4 04:09:16 PST 2025
================
@@ -1802,8 +1811,20 @@ static InstructionCost getCostForIntrinsics(Intrinsic::ID ID,
Arguments.push_back(V);
}
- Type *ScalarRetTy = Ctx.Types.inferScalarType(&R);
- Type *RetTy = VF.isVector() ? toVectorizedTy(ScalarRetTy, VF) : ScalarRetTy;
+ Type *RetTy = Ctx.Types.inferScalarType(&R);
+
+ if (VF.isVector() && RetTy->isStructTy()) {
+ auto *StructTy = cast<StructType>(RetTy);
+ SmallVector<Type *> Tys;
+ for (unsigned I = 0, E = StructTy->getNumElements(); I != E; ++I) {
+ Type *ElementTy = StructTy->getStructElementType(I);
+ if (!isVectorIntrinsicWithStructReturnScalarAtField(ID, I))
+ ElementTy = toVectorizedTy(ElementTy, VF);
+ Tys.push_back(ElementTy);
+ }
+ RetTy = StructType::get(StructTy->getContext(), Tys);
+ } else if (VF.isVector())
----------------
MacDue wrote:
Duplicate code (which is why this should be handled by the helper).
https://github.com/llvm/llvm-project/pull/165218
More information about the llvm-commits
mailing list