[llvm] [LICM] Promote conditional, loop-invariant memory accesses to scalars with intrinsic (PR #93999)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri May 31 14:26:51 PDT 2024


================
@@ -0,0 +1,22 @@
+; RUN: opt -S -passes=lower-conditional-store < %s | FileCheck %s
+define void @foo(ptr %p, i64 %val, i1 %cond) {
+  call void @llvm.conditional.store.i64.p0(i64 %val, ptr %p, i32 4, i1 %cond)
+  call void @llvm.conditional.store.i64.p0(i64 %val, ptr %p, i32 4, i1 %cond)
+  ret void
+} 
+
+declare void @llvm.conditional.store.i64.p0(i64, ptr nocapture, i32 immarg, i1)
+
+; CHECK: define void @foo(ptr %p, i64 %val, i1 %cond) {
+; CHECK:   br i1 %cond, label %1, label %2
+; CHECK: 1: 
+; CHECK:   store i64 %val, ptr %p, align 4
+; CHECK:   br label %2
+; CHECK: 2:
+; CHECK:   br i1 %cond, label %3, label %4
+; CHECK: 3:
+; CHECK:   store i64 %val, ptr %p, align 4
+; CHECK:   br label %4
+; CHECK: 4:
+; CHECK:   ret void
+; CHECK: }
----------------
arsenm wrote:

Missing newline 

https://github.com/llvm/llvm-project/pull/93999


More information about the llvm-commits mailing list