[ConstraintElim] Add support for decomposing gep nuw (#118639)
[llvm-project.git] / llvm / test / Transforms / SCCP / int-phis.ll
blobd2641952d7f326f49319449ac44ed184c2886f67
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=sccp -S | FileCheck %s
4 declare void @use(i1)
6 define void @read_dmatrix() #0 {
7 ; CHECK-LABEL: @read_dmatrix(
8 ; CHECK-NEXT:  entry:
9 ; CHECK-NEXT:    [[HEIGHT:%.*]] = alloca i32, align 4
10 ; CHECK-NEXT:    br label [[FOR_COND:%.*]]
11 ; CHECK:       for.cond:
12 ; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[HEIGHT]], align 4
13 ; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 0, [[TMP0]]
14 ; CHECK-NEXT:    br i1 [[CMP]], label [[FOR_COND6:%.*]], label [[FOR_END16:%.*]]
15 ; CHECK:       for.cond6:
16 ; CHECK-NEXT:    br label [[FOR_COND]]
17 ; CHECK:       for.end16:
18 ; CHECK-NEXT:    ret void
20 entry:
21   %height = alloca i32, align 4
22   br label %for.cond
24 for.cond:                                         ; preds = %for.cond6, %entry
25   %j.0 = phi i32 [ undef, %entry ], [ 0, %for.cond6 ]
26   %0 = load i32, ptr %height, align 4
27   %cmp = icmp slt i32 0, %0
28   br i1 %cmp, label %for.cond6, label %for.end16
30 for.cond6:                                        ; preds = %for.cond
31   br label %for.cond
33 for.end16:                                        ; preds = %for.cond
34   %sub21 = sub nsw i32 %j.0, 1
35   ret void
38 declare i1 @cond()
40 define void @emptyTT() #0 {
41 ; CHECK-LABEL: @emptyTT(
42 ; CHECK-NEXT:  entry:
43 ; CHECK-NEXT:    br label [[FOR_COND:%.*]]
44 ; CHECK:       for.cond:
45 ; CHECK-NEXT:    [[C:%.*]] = call i1 @cond()
46 ; CHECK-NEXT:    br i1 [[C]], label [[FOR_COND]], label [[EXIT:%.*]]
47 ; CHECK:       exit:
48 ; CHECK-NEXT:    ret void
50 entry:
51   br label %for.cond
53 for.cond:                                         ; preds = %for.cond, %entry
54   %.compoundliteral.sroa.0.0 = phi i64 [ undef, %entry ], [ 0, %for.cond ]
55   %bf.clear = and i64 %.compoundliteral.sroa.0.0, -67108864
56   %c = call i1 @cond()
57   br i1 %c, label %for.cond, label %exit
59 exit:
60   ret void