annotate llvm/test/Transforms/IndVarSimplify/exit-count-select.ll @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents c4bab56944e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
236
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
2 ; RUN: opt < %s -passes=indvars -S | FileCheck %s
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
3
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
4 define i32 @logical_and_2ops(i32 %n, i32 %m) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
5 ; CHECK-LABEL: @logical_and_2ops(
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
6 ; CHECK-NEXT: entry:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
7 ; CHECK-NEXT: [[TMP0:%.*]] = freeze i32 [[M:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
8 ; CHECK-NEXT: br label [[LOOP:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
9 ; CHECK: loop:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
10 ; CHECK-NEXT: br i1 false, label [[LOOP]], label [[EXIT:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
11 ; CHECK: exit:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
12 ; CHECK-NEXT: [[UMIN:%.*]] = call i32 @llvm.umin.i32(i32 [[TMP0]], i32 [[N:%.*]])
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
13 ; CHECK-NEXT: ret i32 [[UMIN]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
14 ;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
15 entry:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
16 br label %loop
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
17 loop:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
18 %i = phi i32 [0, %entry], [%i.next, %loop]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
19 %i.next = add i32 %i, 1
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
20 %cond_p0 = icmp ult i32 %i, %n
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
21 %cond_p1 = icmp ult i32 %i, %m
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
22 %cond = select i1 %cond_p0, i1 %cond_p1, i1 false
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
23 br i1 %cond, label %loop, label %exit
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
24 exit:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
25 ret i32 %i
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
26 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
27
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
28 define i32 @logical_or_2ops(i32 %n, i32 %m) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
29 ; CHECK-LABEL: @logical_or_2ops(
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
30 ; CHECK-NEXT: entry:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
31 ; CHECK-NEXT: [[TMP0:%.*]] = freeze i32 [[M:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
32 ; CHECK-NEXT: br label [[LOOP:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
33 ; CHECK: loop:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
34 ; CHECK-NEXT: br i1 true, label [[EXIT:%.*]], label [[LOOP]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
35 ; CHECK: exit:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
36 ; CHECK-NEXT: [[UMIN:%.*]] = call i32 @llvm.umin.i32(i32 [[TMP0]], i32 [[N:%.*]])
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
37 ; CHECK-NEXT: ret i32 [[UMIN]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
38 ;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
39 entry:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
40 br label %loop
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
41 loop:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
42 %i = phi i32 [0, %entry], [%i.next, %loop]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
43 %i.next = add i32 %i, 1
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
44 %cond_p0 = icmp uge i32 %i, %n
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
45 %cond_p1 = icmp uge i32 %i, %m
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
46 %cond = select i1 %cond_p0, i1 true, i1 %cond_p1
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
47 br i1 %cond, label %exit, label %loop
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
48 exit:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
49 ret i32 %i
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
50 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
51
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
52 define i32 @logical_and_3ops(i32 %n, i32 %m, i32 %k) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
53 ; CHECK-LABEL: @logical_and_3ops(
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
54 ; CHECK-NEXT: entry:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
55 ; CHECK-NEXT: [[TMP0:%.*]] = freeze i32 [[K:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
56 ; CHECK-NEXT: [[TMP1:%.*]] = freeze i32 [[M:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
57 ; CHECK-NEXT: [[UMIN:%.*]] = call i32 @llvm.umin.i32(i32 [[TMP0]], i32 [[TMP1]])
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
58 ; CHECK-NEXT: br label [[LOOP:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
59 ; CHECK: loop:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
60 ; CHECK-NEXT: br i1 false, label [[LOOP]], label [[EXIT:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
61 ; CHECK: exit:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
62 ; CHECK-NEXT: [[UMIN1:%.*]] = call i32 @llvm.umin.i32(i32 [[UMIN]], i32 [[N:%.*]])
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
63 ; CHECK-NEXT: ret i32 [[UMIN1]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
64 ;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
65 entry:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
66 br label %loop
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
67 loop:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
68 %i = phi i32 [0, %entry], [%i.next, %loop]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
69 %i.next = add i32 %i, 1
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
70 %cond_p0 = icmp ult i32 %i, %n
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
71 %cond_p1 = icmp ult i32 %i, %m
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
72 %cond_p2 = icmp ult i32 %i, %k
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
73 %cond_p3 = select i1 %cond_p0, i1 %cond_p1, i1 false
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
74 %cond = select i1 %cond_p3, i1 %cond_p2, i1 false
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
75 br i1 %cond, label %loop, label %exit
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
76 exit:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
77 ret i32 %i
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
78 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
79
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
80 define i32 @logical_or_3ops(i32 %n, i32 %m, i32 %k) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
81 ; CHECK-LABEL: @logical_or_3ops(
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
82 ; CHECK-NEXT: entry:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
83 ; CHECK-NEXT: [[TMP0:%.*]] = freeze i32 [[K:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
84 ; CHECK-NEXT: [[TMP1:%.*]] = freeze i32 [[M:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
85 ; CHECK-NEXT: [[UMIN:%.*]] = call i32 @llvm.umin.i32(i32 [[TMP0]], i32 [[TMP1]])
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
86 ; CHECK-NEXT: br label [[LOOP:%.*]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
87 ; CHECK: loop:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
88 ; CHECK-NEXT: br i1 true, label [[EXIT:%.*]], label [[LOOP]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
89 ; CHECK: exit:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
90 ; CHECK-NEXT: [[UMIN1:%.*]] = call i32 @llvm.umin.i32(i32 [[UMIN]], i32 [[N:%.*]])
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
91 ; CHECK-NEXT: ret i32 [[UMIN1]]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
92 ;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
93 entry:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
94 br label %loop
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
95 loop:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
96 %i = phi i32 [0, %entry], [%i.next, %loop]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
97 %i.next = add i32 %i, 1
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
98 %cond_p0 = icmp uge i32 %i, %n
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
99 %cond_p1 = icmp uge i32 %i, %m
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
100 %cond_p2 = icmp uge i32 %i, %k
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
101 %cond_p3 = select i1 %cond_p0, i1 true, i1 %cond_p1
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
102 %cond = select i1 %cond_p3, i1 true, i1 %cond_p2
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
103 br i1 %cond, label %exit, label %loop
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
104 exit:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
105 ret i32 %i
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
106 }