[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