[all-commits] [llvm/llvm-project] f88ef1: [LV] Teach LoopVectorizationLegality about struct ...

Benjamin Maxwell via All-commits all-commits at lists.llvm.org
Thu Jan 9 01:27:50 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: f88ef1bd1bd6ea27237d2abd03b8955e550f97c1
      https://github.com/llvm/llvm-project/commit/f88ef1bd1bd6ea27237d2abd03b8955e550f97c1
  Author: Benjamin Maxwell <benjamin.maxwell at arm.com>
  Date:   2025-01-09 (Thu, 09 Jan 2025)

  Changed paths:
    M llvm/include/llvm/IR/VectorTypeUtils.h
    M llvm/include/llvm/Transforms/Vectorize/LoopVectorizationLegality.h
    M llvm/lib/IR/VectorTypeUtils.cpp
    M llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    A llvm/test/Transforms/LoopVectorize/AArch64/scalable-struct-return.ll
    A llvm/test/Transforms/LoopVectorize/struct-return.ll

  Log Message:
  -----------
  [LV] Teach LoopVectorizationLegality about struct vector calls (#119221)

This is a split-off from #109833 and only adds code relating to checking
if a struct-returning call can be vectorized.

This initial patch only allows the case where all users of the struct
return are `extractvalue` operations that can be widened.

```
%call = tail call { float, float } @foo(float %in_val)
%extract_a = extractvalue { float, float } %call, 0
%extract_b = extractvalue { float, float } %call, 1
```

Note: The tests require the VFABI changes from #119000 to pass.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list