[llvm] [LV] Add initial support for vectorizing literal struct return values (PR #109833)

Benjamin Maxwell via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 5 01:45:47 PST 2024


================
@@ -9607,7 +9624,7 @@ void VPReplicateRecipe::execute(VPTransformState &State) {
             VectorType::get(UI->getType(), State.VF));
         State.set(this, Poison);
       }
-      State.packScalarIntoVectorValue(this, *State.Lane);
+      State.packScalarIntoWideValue(this, *State.Lane);
----------------
MacDue wrote:

I also don't see a use case for the loads/stores of struct types either, as they'll be replaced with scalar loads/stores before vectorization anyway (and can already be handled). I think that holds for most struct types (generally, I don't think you want to keep aggregate types around).

The only use cases I know of (and was working towards) are vector intrinsics and library functions, which return multiple values as a struct of vectors, where this patch seems like a fairly non-intrusive way to make it possible for both intrinsics and calls. 

https://github.com/llvm/llvm-project/pull/109833


More information about the llvm-commits mailing list