[llvm] ccd35e5 - [SCCP] Add common prefix in test (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 11 05:58:43 PDT 2025
Author: Nikita Popov
Date: 2025-08-11T14:58:36+02:00
New Revision: ccd35e5b2f1438646d11c27eaa475f34681f9cbe
URL: https://github.com/llvm/llvm-project/commit/ccd35e5b2f1438646d11c27eaa475f34681f9cbe
DIFF: https://github.com/llvm/llvm-project/commit/ccd35e5b2f1438646d11c27eaa475f34681f9cbe.diff
LOG: [SCCP] Add common prefix in test (NFC)
Added:
Modified:
llvm/test/Transforms/SCCP/widening.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/SCCP/widening.ll b/llvm/test/Transforms/SCCP/widening.ll
index 8c661bee8f599..2bc583c94b7a7 100644
--- a/llvm/test/Transforms/SCCP/widening.ll
+++ b/llvm/test/Transforms/SCCP/widening.ll
@@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
-; RUN: opt %s -passes=sccp -S | FileCheck --check-prefix=SCCP %s
-; RUN: opt %s -passes=ipsccp -S | FileCheck --check-prefix=IPSCCP %s
+; RUN: opt %s -passes=sccp -S | FileCheck --check-prefixes=CHECK,SCCP %s
+; RUN: opt %s -passes=ipsccp -S | FileCheck --check-prefixes=CHECK,IPSCCP %s
; Test
diff erent widening scenarios.
@@ -8,31 +8,18 @@ declare void @use(i1)
declare i1 @cond()
define void @test_2_incoming_constants(i32 %x) {
-; SCCP-LABEL: @test_2_incoming_constants(
-; SCCP-NEXT: entry:
-; SCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[EXIT:%.*]]
-; SCCP: bb1:
-; SCCP-NEXT: br label [[EXIT]]
-; SCCP: exit:
-; SCCP-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 1, [[BB1]] ]
-; SCCP-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
-; SCCP-NEXT: call void @use(i1 true)
-; SCCP-NEXT: call void @use(i1 false)
-; SCCP-NEXT: ret void
-;
-; IPSCCP-LABEL: @test_2_incoming_constants(
-; IPSCCP-NEXT: entry:
-; IPSCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[EXIT:%.*]]
-; IPSCCP: bb1:
-; IPSCCP-NEXT: br label [[EXIT]]
-; IPSCCP: exit:
-; IPSCCP-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 1, [[BB1]] ]
-; IPSCCP-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
-; IPSCCP-NEXT: call void @use(i1 true)
-; IPSCCP-NEXT: call void @use(i1 false)
-; IPSCCP-NEXT: ret void
+; CHECK-LABEL: @test_2_incoming_constants(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[C_1:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[EXIT:%.*]]
+; CHECK: bb1:
+; CHECK-NEXT: br label [[EXIT]]
+; CHECK: exit:
+; CHECK-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 1, [[BB1]] ]
+; CHECK-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
+; CHECK-NEXT: call void @use(i1 true)
+; CHECK-NEXT: call void @use(i1 false)
+; CHECK-NEXT: ret void
;
entry:
%c.1 = call i1 @cond()
@@ -52,37 +39,21 @@ exit:
}
define void @test_3_incoming_constants(i32 %x) {
-; SCCP-LABEL: @test_3_incoming_constants(
-; SCCP-NEXT: entry:
-; SCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[EXIT:%.*]]
-; SCCP: bb1:
-; SCCP-NEXT: [[C_2:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_2]], label [[BB2:%.*]], label [[EXIT]]
-; SCCP: bb2:
-; SCCP-NEXT: br label [[EXIT]]
-; SCCP: exit:
-; SCCP-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 1, [[BB1]] ], [ 2, [[BB2]] ]
-; SCCP-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
-; SCCP-NEXT: call void @use(i1 true)
-; SCCP-NEXT: call void @use(i1 false)
-; SCCP-NEXT: ret void
-;
-; IPSCCP-LABEL: @test_3_incoming_constants(
-; IPSCCP-NEXT: entry:
-; IPSCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[EXIT:%.*]]
-; IPSCCP: bb1:
-; IPSCCP-NEXT: [[C_2:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_2]], label [[BB2:%.*]], label [[EXIT]]
-; IPSCCP: bb2:
-; IPSCCP-NEXT: br label [[EXIT]]
-; IPSCCP: exit:
-; IPSCCP-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 1, [[BB1]] ], [ 2, [[BB2]] ]
-; IPSCCP-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
-; IPSCCP-NEXT: call void @use(i1 true)
-; IPSCCP-NEXT: call void @use(i1 false)
-; IPSCCP-NEXT: ret void
+; CHECK-LABEL: @test_3_incoming_constants(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[C_1:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[EXIT:%.*]]
+; CHECK: bb1:
+; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_2]], label [[BB2:%.*]], label [[EXIT]]
+; CHECK: bb2:
+; CHECK-NEXT: br label [[EXIT]]
+; CHECK: exit:
+; CHECK-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 1, [[BB1]] ], [ 2, [[BB2]] ]
+; CHECK-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
+; CHECK-NEXT: call void @use(i1 true)
+; CHECK-NEXT: call void @use(i1 false)
+; CHECK-NEXT: ret void
;
entry:
%c.1 = call i1 @cond()
@@ -106,49 +77,27 @@ exit:
}
define void @test_5_incoming_constants(i32 %x) {
-; SCCP-LABEL: @test_5_incoming_constants(
-; SCCP-NEXT: entry:
-; SCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[EXIT:%.*]]
-; SCCP: bb1:
-; SCCP-NEXT: [[C_2:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_2]], label [[BB2:%.*]], label [[EXIT]]
-; SCCP: bb2:
-; SCCP-NEXT: [[C_3:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_3]], label [[BB3:%.*]], label [[EXIT]]
-; SCCP: bb3:
-; SCCP-NEXT: [[C_4:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_4]], label [[BB4:%.*]], label [[EXIT]]
-; SCCP: bb4:
-; SCCP-NEXT: br label [[EXIT]]
-; SCCP: exit:
-; SCCP-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 1, [[BB1]] ], [ 2, [[BB2]] ], [ 3, [[BB3]] ], [ 4, [[BB4]] ]
-; SCCP-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
-; SCCP-NEXT: call void @use(i1 true)
-; SCCP-NEXT: call void @use(i1 false)
-; SCCP-NEXT: ret void
-;
-; IPSCCP-LABEL: @test_5_incoming_constants(
-; IPSCCP-NEXT: entry:
-; IPSCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[EXIT:%.*]]
-; IPSCCP: bb1:
-; IPSCCP-NEXT: [[C_2:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_2]], label [[BB2:%.*]], label [[EXIT]]
-; IPSCCP: bb2:
-; IPSCCP-NEXT: [[C_3:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_3]], label [[BB3:%.*]], label [[EXIT]]
-; IPSCCP: bb3:
-; IPSCCP-NEXT: [[C_4:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_4]], label [[BB4:%.*]], label [[EXIT]]
-; IPSCCP: bb4:
-; IPSCCP-NEXT: br label [[EXIT]]
-; IPSCCP: exit:
-; IPSCCP-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 1, [[BB1]] ], [ 2, [[BB2]] ], [ 3, [[BB3]] ], [ 4, [[BB4]] ]
-; IPSCCP-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
-; IPSCCP-NEXT: call void @use(i1 true)
-; IPSCCP-NEXT: call void @use(i1 false)
-; IPSCCP-NEXT: ret void
+; CHECK-LABEL: @test_5_incoming_constants(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[C_1:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[EXIT:%.*]]
+; CHECK: bb1:
+; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_2]], label [[BB2:%.*]], label [[EXIT]]
+; CHECK: bb2:
+; CHECK-NEXT: [[C_3:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_3]], label [[BB3:%.*]], label [[EXIT]]
+; CHECK: bb3:
+; CHECK-NEXT: [[C_4:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_4]], label [[BB4:%.*]], label [[EXIT]]
+; CHECK: bb4:
+; CHECK-NEXT: br label [[EXIT]]
+; CHECK: exit:
+; CHECK-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ 1, [[BB1]] ], [ 2, [[BB2]] ], [ 3, [[BB3]] ], [ 4, [[BB4]] ]
+; CHECK-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
+; CHECK-NEXT: call void @use(i1 true)
+; CHECK-NEXT: call void @use(i1 false)
+; CHECK-NEXT: ret void
;
entry:
%c.1 = call i1 @cond()
@@ -182,47 +131,26 @@ exit:
; For the rotated_loop_* test cases %p and %a are extended on each iteration.
define void @rotated_loop_2(i32 %x) {
-; SCCP-LABEL: @rotated_loop_2(
-; SCCP-NEXT: entry:
-; SCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_1]], label [[EXIT:%.*]], label [[BB1:%.*]]
-; SCCP: bb1:
-; SCCP-NEXT: [[C_2:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_2]], label [[EXIT]], label [[BB2:%.*]]
-; SCCP: bb2:
-; SCCP-NEXT: [[C_3:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_3]], label [[BB3:%.*]], label [[EXIT]]
-; SCCP: bb3:
-; SCCP-NEXT: br label [[EXIT]]
-; SCCP: exit:
-; SCCP-NEXT: [[P:%.*]] = phi i32 [ 1, [[ENTRY:%.*]] ], [ 3, [[BB1]] ], [ 2, [[BB2]] ], [ 5, [[BB3]] ]
-; SCCP-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
-; SCCP-NEXT: call void @use(i1 true)
-; SCCP-NEXT: call void @use(i1 false)
-; SCCP-NEXT: br label [[EXIT_1:%.*]]
-; SCCP: exit.1:
-; SCCP-NEXT: ret void
-;
-; IPSCCP-LABEL: @rotated_loop_2(
-; IPSCCP-NEXT: entry:
-; IPSCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_1]], label [[EXIT:%.*]], label [[BB1:%.*]]
-; IPSCCP: bb1:
-; IPSCCP-NEXT: [[C_2:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_2]], label [[EXIT]], label [[BB2:%.*]]
-; IPSCCP: bb2:
-; IPSCCP-NEXT: [[C_3:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_3]], label [[BB3:%.*]], label [[EXIT]]
-; IPSCCP: bb3:
-; IPSCCP-NEXT: br label [[EXIT]]
-; IPSCCP: exit:
-; IPSCCP-NEXT: [[P:%.*]] = phi i32 [ 1, [[ENTRY:%.*]] ], [ 3, [[BB1]] ], [ 2, [[BB2]] ], [ 5, [[BB3]] ]
-; IPSCCP-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
-; IPSCCP-NEXT: call void @use(i1 true)
-; IPSCCP-NEXT: call void @use(i1 false)
-; IPSCCP-NEXT: br label [[EXIT_1:%.*]]
-; IPSCCP: exit.1:
-; IPSCCP-NEXT: ret void
+; CHECK-LABEL: @rotated_loop_2(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[C_1:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_1]], label [[EXIT:%.*]], label [[BB1:%.*]]
+; CHECK: bb1:
+; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_2]], label [[EXIT]], label [[BB2:%.*]]
+; CHECK: bb2:
+; CHECK-NEXT: [[C_3:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_3]], label [[BB3:%.*]], label [[EXIT]]
+; CHECK: bb3:
+; CHECK-NEXT: br label [[EXIT]]
+; CHECK: exit:
+; CHECK-NEXT: [[P:%.*]] = phi i32 [ 1, [[ENTRY:%.*]] ], [ 3, [[BB1]] ], [ 2, [[BB2]] ], [ 5, [[BB3]] ]
+; CHECK-NEXT: [[A:%.*]] = add nuw nsw i32 [[P]], 1
+; CHECK-NEXT: call void @use(i1 true)
+; CHECK-NEXT: call void @use(i1 false)
+; CHECK-NEXT: br label [[EXIT_1:%.*]]
+; CHECK: exit.1:
+; CHECK-NEXT: ret void
;
entry:
%c.1 = call i1 @cond()
@@ -254,53 +182,29 @@ exit.1:
}
define void @rotated_loop_3(i32 %x) {
-; SCCP-LABEL: @rotated_loop_3(
-; SCCP-NEXT: entry:
-; SCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_1]], label [[EXIT:%.*]], label [[BB1:%.*]]
-; SCCP: bb1:
-; SCCP-NEXT: [[C_2:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_2]], label [[EXIT]], label [[BB2:%.*]]
-; SCCP: bb2:
-; SCCP-NEXT: [[C_3:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_3]], label [[BB3:%.*]], label [[EXIT]]
-; SCCP: bb3:
-; SCCP-NEXT: br label [[EXIT]]
-; SCCP: exit:
-; SCCP-NEXT: [[P:%.*]] = phi i32 [ 1, [[ENTRY:%.*]] ], [ 3, [[BB1]] ], [ 2, [[BB2]] ], [ 5, [[BB3]] ], [ [[A:%.*]], [[EXIT]] ]
-; SCCP-NEXT: [[A]] = add i32 [[P]], 1
-; SCCP-NEXT: [[T_1:%.*]] = icmp ult i32 [[A]], 20
-; SCCP-NEXT: call void @use(i1 [[T_1]])
-; SCCP-NEXT: [[F_1:%.*]] = icmp ugt i32 [[A]], 10
-; SCCP-NEXT: call void @use(i1 [[F_1]])
-; SCCP-NEXT: [[C_4:%.*]] = icmp ult i32 [[A]], 3
-; SCCP-NEXT: br i1 [[C_4]], label [[EXIT]], label [[EXIT_1:%.*]]
-; SCCP: exit.1:
-; SCCP-NEXT: ret void
-;
-; IPSCCP-LABEL: @rotated_loop_3(
-; IPSCCP-NEXT: entry:
-; IPSCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_1]], label [[EXIT:%.*]], label [[BB1:%.*]]
-; IPSCCP: bb1:
-; IPSCCP-NEXT: [[C_2:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_2]], label [[EXIT]], label [[BB2:%.*]]
-; IPSCCP: bb2:
-; IPSCCP-NEXT: [[C_3:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_3]], label [[BB3:%.*]], label [[EXIT]]
-; IPSCCP: bb3:
-; IPSCCP-NEXT: br label [[EXIT]]
-; IPSCCP: exit:
-; IPSCCP-NEXT: [[P:%.*]] = phi i32 [ 1, [[ENTRY:%.*]] ], [ 3, [[BB1]] ], [ 2, [[BB2]] ], [ 5, [[BB3]] ], [ [[A:%.*]], [[EXIT]] ]
-; IPSCCP-NEXT: [[A]] = add i32 [[P]], 1
-; IPSCCP-NEXT: [[T_1:%.*]] = icmp ult i32 [[A]], 20
-; IPSCCP-NEXT: call void @use(i1 [[T_1]])
-; IPSCCP-NEXT: [[F_1:%.*]] = icmp ugt i32 [[A]], 10
-; IPSCCP-NEXT: call void @use(i1 [[F_1]])
-; IPSCCP-NEXT: [[C_4:%.*]] = icmp ult i32 [[A]], 3
-; IPSCCP-NEXT: br i1 [[C_4]], label [[EXIT]], label [[EXIT_1:%.*]]
-; IPSCCP: exit.1:
-; IPSCCP-NEXT: ret void
+; CHECK-LABEL: @rotated_loop_3(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[C_1:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_1]], label [[EXIT:%.*]], label [[BB1:%.*]]
+; CHECK: bb1:
+; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_2]], label [[EXIT]], label [[BB2:%.*]]
+; CHECK: bb2:
+; CHECK-NEXT: [[C_3:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_3]], label [[BB3:%.*]], label [[EXIT]]
+; CHECK: bb3:
+; CHECK-NEXT: br label [[EXIT]]
+; CHECK: exit:
+; CHECK-NEXT: [[P:%.*]] = phi i32 [ 1, [[ENTRY:%.*]] ], [ 3, [[BB1]] ], [ 2, [[BB2]] ], [ 5, [[BB3]] ], [ [[A:%.*]], [[EXIT]] ]
+; CHECK-NEXT: [[A]] = add i32 [[P]], 1
+; CHECK-NEXT: [[T_1:%.*]] = icmp ult i32 [[A]], 20
+; CHECK-NEXT: call void @use(i1 [[T_1]])
+; CHECK-NEXT: [[F_1:%.*]] = icmp ugt i32 [[A]], 10
+; CHECK-NEXT: call void @use(i1 [[F_1]])
+; CHECK-NEXT: [[C_4:%.*]] = icmp ult i32 [[A]], 3
+; CHECK-NEXT: br i1 [[C_4]], label [[EXIT]], label [[EXIT_1:%.*]]
+; CHECK: exit.1:
+; CHECK-NEXT: ret void
;
entry:
%c.1 = call i1 @cond()
@@ -433,79 +337,42 @@ exit:
; can be used as a widening bound. It does not fully contain the range we get
; from combining it with the information from %tmp12.
define void @foo(ptr %arg, i8 %x) {
-; SCCP-LABEL: @foo(
-; SCCP-NEXT: bb:
-; SCCP-NEXT: [[TMP:%.*]] = zext i8 [[X:%.*]] to i32
-; SCCP-NEXT: [[TMP2:%.*]] = load i64, ptr [[ARG:%.*]], align 8
-; SCCP-NEXT: switch i32 [[TMP]], label [[BB20:%.*]] [
-; SCCP-NEXT: i32 1, label [[BB3:%.*]]
-; SCCP-NEXT: i32 2, label [[BB4:%.*]]
-; SCCP-NEXT: i32 4, label [[BB19:%.*]]
-; SCCP-NEXT: ]
-; SCCP: bb3:
-; SCCP-NEXT: unreachable
-; SCCP: bb4:
-; SCCP-NEXT: [[TMP5:%.*]] = add i64 [[TMP2]], 3
-; SCCP-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], 3
-; SCCP-NEXT: [[TMP7:%.*]] = sub nuw nsw i64 3, [[TMP6]]
-; SCCP-NEXT: [[TMP8:%.*]] = shl nuw nsw i64 [[TMP7]], 1
-; SCCP-NEXT: [[TMP9:%.*]] = trunc nuw nsw i64 [[TMP8]] to i32
-; SCCP-NEXT: [[TMP10:%.*]] = zext nneg i32 [[TMP9]] to i64
-; SCCP-NEXT: br label [[BB11:%.*]]
-; SCCP: bb11:
-; SCCP-NEXT: [[TMP12:%.*]] = phi i64 [ [[TMP10]], [[BB4]] ], [ [[TMP17:%.*]], [[BB18:%.*]] ]
-; SCCP-NEXT: br label [[BB13:%.*]]
-; SCCP: bb13:
-; SCCP-NEXT: [[C_1:%.*]] = icmp eq i64 [[TMP12]], 6
-; SCCP-NEXT: br i1 [[C_1]], label [[BB15:%.*]], label [[BB16:%.*]]
-; SCCP: bb15:
-; SCCP-NEXT: unreachable
-; SCCP: bb16:
-; SCCP-NEXT: [[TMP17]] = add i64 [[TMP12]], 2
-; SCCP-NEXT: br label [[BB18]]
-; SCCP: bb18:
-; SCCP-NEXT: br label [[BB11]]
-; SCCP: bb19:
-; SCCP-NEXT: unreachable
-; SCCP: bb20:
-; SCCP-NEXT: ret void
-;
-; IPSCCP-LABEL: @foo(
-; IPSCCP-NEXT: bb:
-; IPSCCP-NEXT: [[TMP:%.*]] = zext i8 [[X:%.*]] to i32
-; IPSCCP-NEXT: [[TMP2:%.*]] = load i64, ptr [[ARG:%.*]], align 8
-; IPSCCP-NEXT: switch i32 [[TMP]], label [[BB20:%.*]] [
-; IPSCCP-NEXT: i32 1, label [[BB3:%.*]]
-; IPSCCP-NEXT: i32 2, label [[BB4:%.*]]
-; IPSCCP-NEXT: i32 4, label [[BB19:%.*]]
-; IPSCCP-NEXT: ]
-; IPSCCP: bb3:
-; IPSCCP-NEXT: unreachable
-; IPSCCP: bb4:
-; IPSCCP-NEXT: [[TMP5:%.*]] = add i64 [[TMP2]], 3
-; IPSCCP-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], 3
-; IPSCCP-NEXT: [[TMP7:%.*]] = sub nuw nsw i64 3, [[TMP6]]
-; IPSCCP-NEXT: [[TMP8:%.*]] = shl nuw nsw i64 [[TMP7]], 1
-; IPSCCP-NEXT: [[TMP9:%.*]] = trunc nuw nsw i64 [[TMP8]] to i32
-; IPSCCP-NEXT: [[TMP10:%.*]] = zext nneg i32 [[TMP9]] to i64
-; IPSCCP-NEXT: br label [[BB11:%.*]]
-; IPSCCP: bb11:
-; IPSCCP-NEXT: [[TMP12:%.*]] = phi i64 [ [[TMP10]], [[BB4]] ], [ [[TMP17:%.*]], [[BB18:%.*]] ]
-; IPSCCP-NEXT: br label [[BB13:%.*]]
-; IPSCCP: bb13:
-; IPSCCP-NEXT: [[C_1:%.*]] = icmp eq i64 [[TMP12]], 6
-; IPSCCP-NEXT: br i1 [[C_1]], label [[BB15:%.*]], label [[BB16:%.*]]
-; IPSCCP: bb15:
-; IPSCCP-NEXT: unreachable
-; IPSCCP: bb16:
-; IPSCCP-NEXT: [[TMP17]] = add i64 [[TMP12]], 2
-; IPSCCP-NEXT: br label [[BB18]]
-; IPSCCP: bb18:
-; IPSCCP-NEXT: br label [[BB11]]
-; IPSCCP: bb19:
-; IPSCCP-NEXT: unreachable
-; IPSCCP: bb20:
-; IPSCCP-NEXT: ret void
+; CHECK-LABEL: @foo(
+; CHECK-NEXT: bb:
+; CHECK-NEXT: [[TMP:%.*]] = zext i8 [[X:%.*]] to i32
+; CHECK-NEXT: [[TMP2:%.*]] = load i64, ptr [[ARG:%.*]], align 8
+; CHECK-NEXT: switch i32 [[TMP]], label [[BB20:%.*]] [
+; CHECK-NEXT: i32 1, label [[BB3:%.*]]
+; CHECK-NEXT: i32 2, label [[BB4:%.*]]
+; CHECK-NEXT: i32 4, label [[BB19:%.*]]
+; CHECK-NEXT: ]
+; CHECK: bb3:
+; CHECK-NEXT: unreachable
+; CHECK: bb4:
+; CHECK-NEXT: [[TMP5:%.*]] = add i64 [[TMP2]], 3
+; CHECK-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], 3
+; CHECK-NEXT: [[TMP7:%.*]] = sub nuw nsw i64 3, [[TMP6]]
+; CHECK-NEXT: [[TMP8:%.*]] = shl nuw nsw i64 [[TMP7]], 1
+; CHECK-NEXT: [[TMP9:%.*]] = trunc nuw nsw i64 [[TMP8]] to i32
+; CHECK-NEXT: [[TMP10:%.*]] = zext nneg i32 [[TMP9]] to i64
+; CHECK-NEXT: br label [[BB11:%.*]]
+; CHECK: bb11:
+; CHECK-NEXT: [[TMP12:%.*]] = phi i64 [ [[TMP10]], [[BB4]] ], [ [[TMP17:%.*]], [[BB18:%.*]] ]
+; CHECK-NEXT: br label [[BB13:%.*]]
+; CHECK: bb13:
+; CHECK-NEXT: [[C_1:%.*]] = icmp eq i64 [[TMP12]], 6
+; CHECK-NEXT: br i1 [[C_1]], label [[BB15:%.*]], label [[BB16:%.*]]
+; CHECK: bb15:
+; CHECK-NEXT: unreachable
+; CHECK: bb16:
+; CHECK-NEXT: [[TMP17]] = add i64 [[TMP12]], 2
+; CHECK-NEXT: br label [[BB18]]
+; CHECK: bb18:
+; CHECK-NEXT: br label [[BB11]]
+; CHECK: bb19:
+; CHECK-NEXT: unreachable
+; CHECK: bb20:
+; CHECK-NEXT: ret void
;
bb:
%tmp = zext i8 %x to i32
@@ -564,21 +431,13 @@ bb20: ; preds = %bb
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1
define linkonce_odr dereferenceable(1) ptr @spam(ptr %arg, i32 %arg1) align 2 {
-; SCCP-LABEL: @spam(
-; SCCP-NEXT: bb:
-; SCCP-NEXT: [[TMP:%.*]] = getelementptr inbounds nuw [[STRUCT_BAZ_1:%.*]], ptr [[ARG:%.*]], i32 0, i32 3
-; SCCP-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP]], align 8
-; SCCP-NEXT: [[TMP3:%.*]] = sext i32 [[ARG1:%.*]] to i64
-; SCCP-NEXT: [[TMP4:%.*]] = getelementptr inbounds i8, ptr [[TMP2]], i64 [[TMP3]]
-; SCCP-NEXT: ret ptr [[TMP4]]
-;
-; IPSCCP-LABEL: @spam(
-; IPSCCP-NEXT: bb:
-; IPSCCP-NEXT: [[TMP:%.*]] = getelementptr inbounds nuw [[STRUCT_BAZ_1:%.*]], ptr [[ARG:%.*]], i32 0, i32 3
-; IPSCCP-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP]], align 8
-; IPSCCP-NEXT: [[TMP3:%.*]] = sext i32 [[ARG1:%.*]] to i64
-; IPSCCP-NEXT: [[TMP4:%.*]] = getelementptr inbounds i8, ptr [[TMP2]], i64 [[TMP3]]
-; IPSCCP-NEXT: ret ptr [[TMP4]]
+; CHECK-LABEL: @spam(
+; CHECK-NEXT: bb:
+; CHECK-NEXT: [[TMP:%.*]] = getelementptr inbounds nuw [[STRUCT_BAZ_1:%.*]], ptr [[ARG:%.*]], i32 0, i32 3
+; CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[TMP]], align 8
+; CHECK-NEXT: [[TMP3:%.*]] = sext i32 [[ARG1:%.*]] to i64
+; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds i8, ptr [[TMP2]], i64 [[TMP3]]
+; CHECK-NEXT: ret ptr [[TMP4]]
;
bb:
%tmp = getelementptr inbounds %struct.baz.1, ptr %arg, i32 0, i32 3
@@ -848,57 +707,31 @@ bb66: ; preds = %bb60, %bb35
define i32 @loop_with_multiple_euqal_incomings(i32 %N) {
-; SCCP-LABEL: @loop_with_multiple_euqal_incomings(
-; SCCP-NEXT: entry:
-; SCCP-NEXT: br label [[LOOP:%.*]]
-; SCCP: loop:
-; SCCP-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[P_NEXT:%.*]], [[BB3:%.*]] ], [ 0, [[BB4:%.*]] ], [ 0, [[BB5:%.*]] ], [ 0, [[BB6:%.*]] ]
-; SCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[BB2:%.*]]
-; SCCP: bb1:
-; SCCP-NEXT: [[C_2:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_2]], label [[BB3]], label [[BB4]]
-; SCCP: bb2:
-; SCCP-NEXT: [[C_4:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_4]], label [[BB5]], label [[BB6]]
-; SCCP: bb3:
-; SCCP-NEXT: [[P_NEXT]] = add i32 [[P]], 1
-; SCCP-NEXT: br label [[LOOP]]
-; SCCP: bb4:
-; SCCP-NEXT: [[C_3:%.*]] = call i1 @cond()
-; SCCP-NEXT: br i1 [[C_3]], label [[LOOP]], label [[END:%.*]]
-; SCCP: bb5:
-; SCCP-NEXT: br label [[LOOP]]
-; SCCP: bb6:
-; SCCP-NEXT: br label [[LOOP]]
-; SCCP: end:
-; SCCP-NEXT: ret i32 [[P]]
-;
-; IPSCCP-LABEL: @loop_with_multiple_euqal_incomings(
-; IPSCCP-NEXT: entry:
-; IPSCCP-NEXT: br label [[LOOP:%.*]]
-; IPSCCP: loop:
-; IPSCCP-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[P_NEXT:%.*]], [[BB3:%.*]] ], [ 0, [[BB4:%.*]] ], [ 0, [[BB5:%.*]] ], [ 0, [[BB6:%.*]] ]
-; IPSCCP-NEXT: [[C_1:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[BB2:%.*]]
-; IPSCCP: bb1:
-; IPSCCP-NEXT: [[C_2:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_2]], label [[BB3]], label [[BB4]]
-; IPSCCP: bb2:
-; IPSCCP-NEXT: [[C_4:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_4]], label [[BB5]], label [[BB6]]
-; IPSCCP: bb3:
-; IPSCCP-NEXT: [[P_NEXT]] = add i32 [[P]], 1
-; IPSCCP-NEXT: br label [[LOOP]]
-; IPSCCP: bb4:
-; IPSCCP-NEXT: [[C_3:%.*]] = call i1 @cond()
-; IPSCCP-NEXT: br i1 [[C_3]], label [[LOOP]], label [[END:%.*]]
-; IPSCCP: bb5:
-; IPSCCP-NEXT: br label [[LOOP]]
-; IPSCCP: bb6:
-; IPSCCP-NEXT: br label [[LOOP]]
-; IPSCCP: end:
-; IPSCCP-NEXT: ret i32 [[P]]
+; CHECK-LABEL: @loop_with_multiple_euqal_incomings(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: br label [[LOOP:%.*]]
+; CHECK: loop:
+; CHECK-NEXT: [[P:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[P_NEXT:%.*]], [[BB3:%.*]] ], [ 0, [[BB4:%.*]] ], [ 0, [[BB5:%.*]] ], [ 0, [[BB6:%.*]] ]
+; CHECK-NEXT: [[C_1:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_1]], label [[BB1:%.*]], label [[BB2:%.*]]
+; CHECK: bb1:
+; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_2]], label [[BB3]], label [[BB4]]
+; CHECK: bb2:
+; CHECK-NEXT: [[C_4:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_4]], label [[BB5]], label [[BB6]]
+; CHECK: bb3:
+; CHECK-NEXT: [[P_NEXT]] = add i32 [[P]], 1
+; CHECK-NEXT: br label [[LOOP]]
+; CHECK: bb4:
+; CHECK-NEXT: [[C_3:%.*]] = call i1 @cond()
+; CHECK-NEXT: br i1 [[C_3]], label [[LOOP]], label [[END:%.*]]
+; CHECK: bb5:
+; CHECK-NEXT: br label [[LOOP]]
+; CHECK: bb6:
+; CHECK-NEXT: br label [[LOOP]]
+; CHECK: end:
+; CHECK-NEXT: ret i32 [[P]]
;
entry:
br label %loop
More information about the llvm-commits
mailing list