[llvm] 8184b56 - [InstCombine] Add additional tests for dead phi cycles (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 25 01:47:15 PST 2023
Author: Nikita Popov
Date: 2023-01-25T10:47:07+01:00
New Revision: 8184b563a42dafad2dc589914456028bd228429a
URL: https://github.com/llvm/llvm-project/commit/8184b563a42dafad2dc589914456028bd228429a
DIFF: https://github.com/llvm/llvm-project/commit/8184b563a42dafad2dc589914456028bd228429a.diff
LOG: [InstCombine] Add additional tests for dead phi cycles (NFC)
Added:
Modified:
llvm/test/Transforms/InstCombine/phi.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/InstCombine/phi.ll b/llvm/test/Transforms/InstCombine/phi.ll
index 521bb4aff25c3..bd0e649254adf 100644
--- a/llvm/test/Transforms/InstCombine/phi.ll
+++ b/llvm/test/Transforms/InstCombine/phi.ll
@@ -133,12 +133,12 @@ BB2:
ret i32 %B
}
-define i32 @test7(i32 %A, i1 %b) {
-; CHECK-LABEL: @test7(
+define i32 @test_dead_cycle(i32 %A, i1 %cond) {
+; CHECK-LABEL: @test_dead_cycle(
; CHECK-NEXT: BB0:
; CHECK-NEXT: br label [[LOOP:%.*]]
; CHECK: Loop:
-; CHECK-NEXT: br i1 [[B:%.*]], label [[LOOP]], label [[EXIT:%.*]]
+; CHECK-NEXT: br i1 [[COND:%.*]], label [[LOOP]], label [[EXIT:%.*]]
; CHECK: Exit:
; CHECK-NEXT: ret i32 0
;
@@ -146,10 +146,59 @@ BB0:
br label %Loop
Loop: ; preds = %Loop, %BB0
- ; PHI is dead.
%B = phi i32 [ %A, %BB0 ], [ %C, %Loop ]
%C = add i32 %B, 123
- br i1 %b, label %Loop, label %Exit
+ br i1 %cond, label %Loop, label %Exit
+
+Exit: ; preds = %Loop
+ ret i32 0
+}
+
+define i32 @test_dead_cycle_two_insts(i32 %A, i1 %cond) {
+; CHECK-LABEL: @test_dead_cycle_two_insts(
+; CHECK-NEXT: BB0:
+; CHECK-NEXT: br label [[LOOP:%.*]]
+; CHECK: Loop:
+; CHECK-NEXT: [[B:%.*]] = phi i32 [ [[A:%.*]], [[BB0:%.*]] ], [ [[D:%.*]], [[LOOP]] ]
+; CHECK-NEXT: [[C:%.*]] = add i32 [[B]], 123
+; CHECK-NEXT: [[D]] = lshr i32 [[C]], 1
+; CHECK-NEXT: br i1 [[COND:%.*]], label [[LOOP]], label [[EXIT:%.*]]
+; CHECK: Exit:
+; CHECK-NEXT: ret i32 0
+;
+BB0:
+ br label %Loop
+
+Loop: ; preds = %Loop, %BB0
+ %B = phi i32 [ %A, %BB0 ], [ %D, %Loop ]
+ %C = add i32 %B, 123
+ %D = lshr i32 %C, 1
+ br i1 %cond, label %Loop, label %Exit
+
+Exit: ; preds = %Loop
+ ret i32 0
+}
+
+declare i32 @llvm.uadd.sat.i32(i32, i32)
+
+define i32 @test_dead_cycle_intrin(i32 %A, i1 %cond) {
+; CHECK-LABEL: @test_dead_cycle_intrin(
+; CHECK-NEXT: BB0:
+; CHECK-NEXT: br label [[LOOP:%.*]]
+; CHECK: Loop:
+; CHECK-NEXT: [[B:%.*]] = phi i32 [ [[A:%.*]], [[BB0:%.*]] ], [ [[C:%.*]], [[LOOP]] ]
+; CHECK-NEXT: [[C]] = call i32 @llvm.uadd.sat.i32(i32 [[B]], i32 123)
+; CHECK-NEXT: br i1 [[COND:%.*]], label [[LOOP]], label [[EXIT:%.*]]
+; CHECK: Exit:
+; CHECK-NEXT: ret i32 0
+;
+BB0:
+ br label %Loop
+
+Loop: ; preds = %Loop, %BB0
+ %B = phi i32 [ %A, %BB0 ], [ %C, %Loop ]
+ %C = call i32 @llvm.uadd.sat.i32(i32 %B, i32 123)
+ br i1 %cond, label %Loop, label %Exit
Exit: ; preds = %Loop
ret i32 0
@@ -330,8 +379,8 @@ define void @test13(i1 %cond, i32 %V1, double %Vald) {
; CHECK: two:
; CHECK-NEXT: br label [[END]]
; CHECK: end:
-; CHECK-NEXT: [[TMP0:%.*]] = phi double [ 0.000000e+00, [[ENTRY:%.*]] ], [ [[VALD:%.*]], [[TWO]] ]
-; CHECK-NEXT: call void @test13f(double [[TMP0]], i32 [[V1:%.*]])
+; CHECK-NEXT: [[T31:%.*]] = phi double [ 0.000000e+00, [[ENTRY:%.*]] ], [ [[VALD:%.*]], [[TWO]] ]
+; CHECK-NEXT: call void @test13f(double [[T31]], i32 [[V1:%.*]])
; CHECK-NEXT: ret void
;
entry:
More information about the llvm-commits
mailing list