[llvm] [SROA] Prevent load atomic vector from being generated (PR #112432)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Sun Oct 20 15:30:43 PDT 2024
================
@@ -51,3 +51,20 @@ define ptr @atomic_vector_ptr() {
%ret = load atomic volatile ptr, ptr %indirect acquire, align 4
ret ptr %ret
}
+
+define i32 @atomic_2vector_int() {
+; CHECK-LABEL: define i32 @atomic_2vector_int() {
+; CHECK-NEXT: [[VAL_SROA_0:%.*]] = alloca i32, align 8
+; CHECK-NEXT: store i32 undef, ptr [[VAL_SROA_0]], align 8
+; CHECK-NEXT: [[VAL_SROA_0_0_VAL_SROA_0_0_RET:%.*]] = load atomic volatile i32, ptr [[VAL_SROA_0]] acquire, align 4
+; CHECK-NEXT: ret i32 [[VAL_SROA_0_0_VAL_SROA_0_0_RET]]
+;
+ %src = alloca <2 x i32>
+ %val = alloca <2 x i32>
+ %direct = alloca ptr
+ call void @llvm.memcpy.p0.p0.i64(ptr %val, ptr %src, i64 4, i1 false)
+ store ptr %val, ptr %direct
+ %indirect = load ptr, ptr %direct
+ %ret = load atomic volatile i32, ptr %indirect acquire, align 4
+ ret i32 %ret
+}
----------------
arsenm wrote:
Add test for the non-byte illegal case?
https://github.com/llvm/llvm-project/pull/112432
More information about the llvm-commits
mailing list