[llvm] [VPlan] Unroll VPReplicateRecipe by VF. (PR #142433)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 19 03:35:35 PDT 2025
================
@@ -608,6 +608,35 @@ Value *VPInstruction::generate(VPTransformState &State) {
return Builder.CreateVectorSplat(
State.VF, State.get(getOperand(0), /*IsScalar*/ true), "broadcast");
}
+ case VPInstruction::BuildStructVector: {
+ // For struct types, we need to build a new 'wide' struct type, where each
+ // element is widened.
+ auto *StructTy =
+ cast<StructType>(State.TypeAnalysis.inferScalarType(getOperand(0)));
+ auto NumOfElements = ElementCount::getFixed(getNumOperands());
+ Value *Res = PoisonValue::get(toVectorizedTy(StructTy, NumOfElements));
+ assert(NumOfElements.getKnownMinValue() == StructTy->getNumElements() &&
+ "number of operands must match number of elements in StructTy");
----------------
ayalz wrote:
By "number of elements in StructTy", does StructTy->getNumElements() refer to the number of fields in StructTy or the number of elements in each of these fields. Tests seem to have two fields and VF=2.
https://github.com/llvm/llvm-project/pull/142433
More information about the llvm-commits
mailing list