xref: /aosp_15_r20/external/llvm/test/Analysis/ScalarEvolution/constant_condition.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine i32 @branch_true(i32 %x, i32 %y) {
4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: Classifying expressions for: @branch_true
5*9880d681SAndroid Build Coastguard Worker entry:
6*9880d681SAndroid Build Coastguard Worker  br i1 true, label %add, label %merge
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker add:
9*9880d681SAndroid Build Coastguard Worker  %sum = add i32 %x, %y
10*9880d681SAndroid Build Coastguard Worker  br label %merge
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker merge:
13*9880d681SAndroid Build Coastguard Worker  %v = phi i32 [ %sum, %add ], [ %x, %entry ]
14*9880d681SAndroid Build Coastguard Worker; CHECK:  %v = phi i32 [ %sum, %add ], [ %x, %entry ]
15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  -->  (%x + %y) U: full-set S: full-set
16*9880d681SAndroid Build Coastguard Worker  ret i32 %v
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine i32 @branch_false(i32 %x, i32 %y) {
20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: Classifying expressions for: @branch_false
21*9880d681SAndroid Build Coastguard Worker entry:
22*9880d681SAndroid Build Coastguard Worker  br i1 false, label %add, label %merge
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker add:
25*9880d681SAndroid Build Coastguard Worker  %sum = add i32 %x, %y
26*9880d681SAndroid Build Coastguard Worker  br label %merge
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker merge:
29*9880d681SAndroid Build Coastguard Worker  %v = phi i32 [ %sum, %add ], [ %x, %entry ]
30*9880d681SAndroid Build Coastguard Worker; CHECK:  %v = phi i32 [ %sum, %add ], [ %x, %entry ]
31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  -->  %x U: full-set S: full-set
32*9880d681SAndroid Build Coastguard Worker  ret i32 %v
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerdefine i32 @select_true(i32 %x, i32 %y) {
36*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: Classifying expressions for: @select_true
37*9880d681SAndroid Build Coastguard Worker entry:
38*9880d681SAndroid Build Coastguard Worker %v = select i1 true, i32 %x, i32 %y
39*9880d681SAndroid Build Coastguard Worker; CHECK:  %v = select i1 true, i32 %x, i32 %y
40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  -->  %x U: full-set S: full-set
41*9880d681SAndroid Build Coastguard Worker  ret i32 %v
42*9880d681SAndroid Build Coastguard Worker}
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Workerdefine i32 @select_false(i32 %x, i32 %y) {
45*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: Classifying expressions for: @select_false
46*9880d681SAndroid Build Coastguard Worker entry:
47*9880d681SAndroid Build Coastguard Worker %v = select i1 false, i32 %x, i32 %y
48*9880d681SAndroid Build Coastguard Worker; CHECK:  %v = select i1 false, i32 %x, i32 %y
49*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  -->  %y U: full-set S: full-set
50*9880d681SAndroid Build Coastguard Worker  ret i32 %v
51*9880d681SAndroid Build Coastguard Worker}
52