[llvm] 41a2c66 - [GVN] Precommit tests for convergent calls in GVN/NewGVN
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Fri May 19 08:39:59 PDT 2023
Author: Jay Foad
Date: 2023-05-19T16:39:53+01:00
New Revision: 41a2c66aee9803e2245c7c0838832e6acf55ef79
URL: https://github.com/llvm/llvm-project/commit/41a2c66aee9803e2245c7c0838832e6acf55ef79
DIFF: https://github.com/llvm/llvm-project/commit/41a2c66aee9803e2245c7c0838832e6acf55ef79.diff
LOG: [GVN] Precommit tests for convergent calls in GVN/NewGVN
Added:
llvm/test/Transforms/GVN/convergent.ll
llvm/test/Transforms/NewGVN/convergent.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/Transforms/GVN/convergent.ll b/llvm/test/Transforms/GVN/convergent.ll
new file mode 100644
index 0000000000000..e44e77c59f958
--- /dev/null
+++ b/llvm/test/Transforms/GVN/convergent.ll
@@ -0,0 +1,27 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -S -passes=gvn -o - %s | FileCheck %s
+
+define i32 @foo(i1 %cond) {
+; CHECK-LABEL: @foo(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[V0:%.*]] = call i32 @llvm.convergent()
+; CHECK-NEXT: br i1 [[COND:%.*]], label [[BODY:%.*]], label [[END:%.*]]
+; CHECK: body:
+; CHECK-NEXT: br label [[END]]
+; CHECK: end:
+; CHECK-NEXT: ret i32 [[V0]]
+;
+entry:
+ %v0 = call i32 @llvm.convergent()
+ br i1 %cond, label %body, label %end
+
+body:
+ %v1 = call i32 @llvm.convergent()
+ br label %end
+
+end:
+ %ret = phi i32 [ %v0, %entry ], [ %v1, %body ]
+ ret i32 %ret
+}
+
+declare i32 @llvm.convergent() convergent nounwind readnone willreturn
diff --git a/llvm/test/Transforms/NewGVN/convergent.ll b/llvm/test/Transforms/NewGVN/convergent.ll
new file mode 100644
index 0000000000000..c087e86d6115a
--- /dev/null
+++ b/llvm/test/Transforms/NewGVN/convergent.ll
@@ -0,0 +1,27 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -S -passes=newgvn -o - %s | FileCheck %s
+
+define i32 @foo(i1 %cond) {
+; CHECK-LABEL: @foo(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[V0:%.*]] = call i32 @llvm.convergent()
+; CHECK-NEXT: br i1 [[COND:%.*]], label [[BODY:%.*]], label [[END:%.*]]
+; CHECK: body:
+; CHECK-NEXT: br label [[END]]
+; CHECK: end:
+; CHECK-NEXT: ret i32 [[V0]]
+;
+entry:
+ %v0 = call i32 @llvm.convergent()
+ br i1 %cond, label %body, label %end
+
+body:
+ %v1 = call i32 @llvm.convergent()
+ br label %end
+
+end:
+ %ret = phi i32 [ %v0, %entry ], [ %v1, %body ]
+ ret i32 %ret
+}
+
+declare i32 @llvm.convergent() convergent nounwind readnone willreturn
More information about the llvm-commits
mailing list