[llvm] [SLP]Initial support for (masked)loads + compress and (masked)interleaved (PR #132099)
Alexander Kornienko via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 16 02:46:43 PDT 2025
alexfh wrote:
> > The assertion failure happens elsewhere, but the issue is triggered by this commit.
>
> #135821 A bug in the AARCH664 codegen
Thanks for proper routing! Unfortunately, this is a distinct problem from the one reported in https://github.com/llvm/llvm-project/pull/134578#issuecomment-2798417089. I'm still trying to figure out, what's happening, and I don't have any good ideas.
In the meantime I reduced the IR that crashes the Clang built with the instrumented profile gathered from Clang running on a number of our internal compilations:
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define void @g(ptr %0) #0 {
call void @f(ptr %0, ptr %0)
ret void
}
define void @f(ptr %0, ptr %1) {
%3 = load i32, ptr %0, align 4
call void @store32(ptr %0, i32 %3)
%4 = getelementptr i8, ptr %0, i64 4
%5 = getelementptr i8, ptr %1, i64 4
%6 = load i32, ptr %5, align 4
call void @store32(ptr %4, i32 %6)
%7 = getelementptr i8, ptr %0, i64 8
%8 = getelementptr i8, ptr %1, i64 8
%9 = load i32, ptr %8, align 4
call void @store32(ptr %7, i32 %9)
%10 = getelementptr i8, ptr %0, i64 12
%11 = getelementptr i8, ptr %1, i64 12
%12 = load i32, ptr %11, align 4
call void @store32(ptr %10, i32 %12)
ret void
}
define void @store32(ptr %0, i32 %1) {
%3 = trunc i32 %1 to i8
store i8 %3, ptr %0, align 1
%4 = lshr i32 %1, 1
%5 = trunc i32 %4 to i8
%6 = getelementptr i8, ptr %0, i64 1
store i8 %5, ptr %6, align 1
%7 = lshr i32 %1, 16
%8 = trunc i32 %7 to i8
%9 = getelementptr i8, ptr %0, i64 2
store i8 %8, ptr %9, align 1
%10 = getelementptr i8, ptr %0, i64 3
store i8 %5, ptr %10, align 1
ret void
}
; uselistorder directives
uselistorder ptr @store32, { 3, 2, 1, 0 }
attributes #0 = { "target-features"="+avx" }
```
(also here: https://gcc.godbolt.org/z/5n4MEEosn)
Any other clang builds I tried (with asan, msan, assertions) don't crash on this IR though.
https://github.com/llvm/llvm-project/pull/132099
More information about the llvm-commits
mailing list