[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