[clang] [clang] Limit alignment for emitted vectors (PR #98629)
Mariya Podchishchaeva via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 15 00:47:06 PDT 2024
================
@@ -133,6 +133,7 @@ struct TransferrableTargetInfo {
unsigned short SuitableAlign;
unsigned short NewAlign;
unsigned MaxVectorAlign;
----------------
Fznamznon wrote:
`MaxVectorAlign` is set for x86 targets. I can use it as a limit as well, but note that this patch also makes indirect return value if size of the argument exceeds the limit. So, some changes can be caused to the current behavior and test changes like in for exampe `CodeGen/X86/x86-vec-i128.c`:
```
define{{.*}} <4 x i64> @test_v32u128(ptr noundef byval(<4 x i64>) align 32 %{{.*}}, ptr noundef byval(<2 x i128>) align 32 %{{.*}})
note: possible intended match here
define dso_local void @test_v32u128(ptr dead_on_unwind noalias writable sret(<4 x i64>) align 32 %agg.result, ptr noundef byval(<4 x i64>) align 32 %0, ptr noundef byval(<2 x i128>) align 32 %1)
``
If that is correct, I can use `MaxVectorAlign` for sure.
https://github.com/llvm/llvm-project/pull/98629
More information about the cfe-commits
mailing list