annotate polly/test/ScopInfo/cfg_consequences.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: 150
diff changeset
1 ; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s
150
anatofuz
parents:
diff changeset
2 ;
anatofuz
parents:
diff changeset
3 ; void consequences(int *A, int bool_cond, int lhs, int rhs) {
anatofuz
parents:
diff changeset
4 ;
anatofuz
parents:
diff changeset
5 ; BC: *A = 0;
anatofuz
parents:
diff changeset
6 ; if (bool_cond)
anatofuz
parents:
diff changeset
7 ; S_BC: *A = 0;
anatofuz
parents:
diff changeset
8 ; M_BC: *A = 0;
anatofuz
parents:
diff changeset
9 ;
anatofuz
parents:
diff changeset
10 ; NEG_BC: *A = 0;
anatofuz
parents:
diff changeset
11 ; if (!bool_cond)
anatofuz
parents:
diff changeset
12 ; S_NEG_BC: *A = 0;
anatofuz
parents:
diff changeset
13 ; M_NEG_BC: *A = 0;
anatofuz
parents:
diff changeset
14 ;
anatofuz
parents:
diff changeset
15 ; SLT: *A = 0;
anatofuz
parents:
diff changeset
16 ; if (lhs < rhs)
anatofuz
parents:
diff changeset
17 ; S_SLT: *A = 0;
anatofuz
parents:
diff changeset
18 ; M_SLT: *A = 0;
anatofuz
parents:
diff changeset
19 ;
anatofuz
parents:
diff changeset
20 ; SLE: *A = 0;
anatofuz
parents:
diff changeset
21 ; if (lhs <= rhs)
anatofuz
parents:
diff changeset
22 ; S_SLE: *A = 0;
anatofuz
parents:
diff changeset
23 ; M_SLE: *A = 0;
anatofuz
parents:
diff changeset
24 ;
anatofuz
parents:
diff changeset
25 ; SGT: *A = 0;
anatofuz
parents:
diff changeset
26 ; if (lhs > rhs)
anatofuz
parents:
diff changeset
27 ; S_SGT: *A = 0;
anatofuz
parents:
diff changeset
28 ; M_SGT: *A = 0;
anatofuz
parents:
diff changeset
29 ;
anatofuz
parents:
diff changeset
30 ; SGE: *A = 0;
anatofuz
parents:
diff changeset
31 ; if (lhs >= rhs)
anatofuz
parents:
diff changeset
32 ; S_SGE: *A = 0;
anatofuz
parents:
diff changeset
33 ; M_SGE: *A = 0;
anatofuz
parents:
diff changeset
34 ;
anatofuz
parents:
diff changeset
35 ; EQ: *A = 0;
anatofuz
parents:
diff changeset
36 ; if (lhs == rhs)
anatofuz
parents:
diff changeset
37 ; S_EQ: *A = 0;
anatofuz
parents:
diff changeset
38 ; M_EQ: *A = 0;
anatofuz
parents:
diff changeset
39 ;
anatofuz
parents:
diff changeset
40 ; NEQ: *A = 0;
anatofuz
parents:
diff changeset
41 ; if (lhs != rhs)
anatofuz
parents:
diff changeset
42 ; S_NEQ: *A = 0;
anatofuz
parents:
diff changeset
43 ; M_NEQ: *A = 0;
anatofuz
parents:
diff changeset
44 ;
anatofuz
parents:
diff changeset
45 ; }
anatofuz
parents:
diff changeset
46 ; CHECK: Statements {
anatofuz
parents:
diff changeset
47 ; CHECK-NEXT: Stmt_BC
anatofuz
parents:
diff changeset
48 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
49 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_BC[] };
anatofuz
parents:
diff changeset
50 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
51 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_BC[] -> [0] };
anatofuz
parents:
diff changeset
52 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
53 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_BC[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
54 ; CHECK-NEXT: Stmt_S_BC
anatofuz
parents:
diff changeset
55 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
56 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_BC[] : bool_cond < 0 or bool_cond > 0 };
anatofuz
parents:
diff changeset
57 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
58 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_BC[] -> [1] : bool_cond < 0 or bool_cond > 0 };
anatofuz
parents:
diff changeset
59 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
60 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_BC[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
61 ; CHECK-NEXT: Stmt_M_BC
anatofuz
parents:
diff changeset
62 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
63 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_BC[] };
anatofuz
parents:
diff changeset
64 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
65 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_BC[] -> [2] };
anatofuz
parents:
diff changeset
66 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
67 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_BC[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
68 ; CHECK-NEXT: Stmt_NEG_BC
anatofuz
parents:
diff changeset
69 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
70 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_NEG_BC[] };
anatofuz
parents:
diff changeset
71 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
72 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_NEG_BC[] -> [3] };
anatofuz
parents:
diff changeset
73 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
74 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_NEG_BC[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
75 ; CHECK-NEXT: Stmt_S_NEG_BC
anatofuz
parents:
diff changeset
76 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
77 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_NEG_BC[] : bool_cond = 0 };
anatofuz
parents:
diff changeset
78 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
79 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_NEG_BC[] -> [4] };
anatofuz
parents:
diff changeset
80 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
81 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_NEG_BC[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
82 ; CHECK-NEXT: Stmt_M_NEG_BC
anatofuz
parents:
diff changeset
83 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
84 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_NEG_BC[] };
anatofuz
parents:
diff changeset
85 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
86 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_NEG_BC[] -> [5] };
anatofuz
parents:
diff changeset
87 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
88 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_NEG_BC[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
89 ; CHECK-NEXT: Stmt_SLT
anatofuz
parents:
diff changeset
90 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
91 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SLT[] };
anatofuz
parents:
diff changeset
92 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
93 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SLT[] -> [6] };
anatofuz
parents:
diff changeset
94 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
95 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SLT[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
96 ; CHECK-NEXT: Stmt_S_SLT
anatofuz
parents:
diff changeset
97 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
98 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SLT[] : rhs > lhs };
anatofuz
parents:
diff changeset
99 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
100 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SLT[] -> [7] };
anatofuz
parents:
diff changeset
101 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
102 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SLT[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
103 ; CHECK-NEXT: Stmt_M_SLT
anatofuz
parents:
diff changeset
104 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
105 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SLT[] };
anatofuz
parents:
diff changeset
106 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
107 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SLT[] -> [8] };
anatofuz
parents:
diff changeset
108 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
109 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SLT[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
110 ; CHECK-NEXT: Stmt_SLE
anatofuz
parents:
diff changeset
111 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
112 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SLE[] };
anatofuz
parents:
diff changeset
113 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
114 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SLE[] -> [9] };
anatofuz
parents:
diff changeset
115 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
116 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SLE[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
117 ; CHECK-NEXT: Stmt_S_SLE
anatofuz
parents:
diff changeset
118 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
119 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SLE[] : rhs >= lhs };
anatofuz
parents:
diff changeset
120 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
121 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SLE[] -> [10] };
anatofuz
parents:
diff changeset
122 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
123 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SLE[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
124 ; CHECK-NEXT: Stmt_M_SLE
anatofuz
parents:
diff changeset
125 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
126 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SLE[] };
anatofuz
parents:
diff changeset
127 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
128 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SLE[] -> [11] };
anatofuz
parents:
diff changeset
129 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
130 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SLE[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
131 ; CHECK-NEXT: Stmt_SGT
anatofuz
parents:
diff changeset
132 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
133 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SGT[] };
anatofuz
parents:
diff changeset
134 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
135 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SGT[] -> [12] };
anatofuz
parents:
diff changeset
136 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
137 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SGT[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
138 ; CHECK-NEXT: Stmt_S_SGT
anatofuz
parents:
diff changeset
139 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
140 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SGT[] : rhs < lhs };
anatofuz
parents:
diff changeset
141 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
142 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SGT[] -> [13] };
anatofuz
parents:
diff changeset
143 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
144 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SGT[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
145 ; CHECK-NEXT: Stmt_M_SGT
anatofuz
parents:
diff changeset
146 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
147 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SGT[] };
anatofuz
parents:
diff changeset
148 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
149 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SGT[] -> [14] };
anatofuz
parents:
diff changeset
150 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
151 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SGT[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
152 ; CHECK-NEXT: Stmt_SGE
anatofuz
parents:
diff changeset
153 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
154 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SGE[] };
anatofuz
parents:
diff changeset
155 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
156 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SGE[] -> [15] };
anatofuz
parents:
diff changeset
157 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
158 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_SGE[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
159 ; CHECK-NEXT: Stmt_S_SGE
anatofuz
parents:
diff changeset
160 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
161 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SGE[] : rhs <= lhs };
anatofuz
parents:
diff changeset
162 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
163 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SGE[] -> [16] };
anatofuz
parents:
diff changeset
164 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
165 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_SGE[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
166 ; CHECK-NEXT: Stmt_M_SGE
anatofuz
parents:
diff changeset
167 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
168 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SGE[] };
anatofuz
parents:
diff changeset
169 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
170 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SGE[] -> [17] };
anatofuz
parents:
diff changeset
171 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
172 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_SGE[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
173 ; CHECK-NEXT: Stmt_EQ
anatofuz
parents:
diff changeset
174 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
175 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_EQ[] };
anatofuz
parents:
diff changeset
176 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
177 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_EQ[] -> [18] };
anatofuz
parents:
diff changeset
178 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
179 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_EQ[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
180 ; CHECK-NEXT: Stmt_S_EQ
anatofuz
parents:
diff changeset
181 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
182 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_EQ[] : rhs = lhs };
anatofuz
parents:
diff changeset
183 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
184 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_EQ[] -> [19] };
anatofuz
parents:
diff changeset
185 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
186 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_EQ[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
187 ; CHECK-NEXT: Stmt_M_EQ
anatofuz
parents:
diff changeset
188 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
189 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_EQ[] };
anatofuz
parents:
diff changeset
190 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
191 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_EQ[] -> [20] };
anatofuz
parents:
diff changeset
192 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
193 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_EQ[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
194 ; CHECK-NEXT: Stmt_NEQ
anatofuz
parents:
diff changeset
195 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
196 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_NEQ[] };
anatofuz
parents:
diff changeset
197 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
198 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_NEQ[] -> [21] };
anatofuz
parents:
diff changeset
199 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
200 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_NEQ[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
201 ; CHECK-NEXT: Stmt_S_NEQ
anatofuz
parents:
diff changeset
202 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
203 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_NEQ[] : rhs > lhs or rhs < lhs };
anatofuz
parents:
diff changeset
204 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
205 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_NEQ[] -> [22] : rhs > lhs or rhs < lhs };
anatofuz
parents:
diff changeset
206 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
207 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_S_NEQ[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
208 ; CHECK-NEXT: Stmt_M_NEQ
anatofuz
parents:
diff changeset
209 ; CHECK-NEXT: Domain :=
anatofuz
parents:
diff changeset
210 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_NEQ[] };
anatofuz
parents:
diff changeset
211 ; CHECK-NEXT: Schedule :=
anatofuz
parents:
diff changeset
212 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_NEQ[] -> [23] };
anatofuz
parents:
diff changeset
213 ; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
anatofuz
parents:
diff changeset
214 ; CHECK-NEXT: [bool_cond, lhs, rhs] -> { Stmt_M_NEQ[] -> MemRef_A[0] };
anatofuz
parents:
diff changeset
215 ; CHECK-NEXT: }
anatofuz
parents:
diff changeset
216 ;
anatofuz
parents:
diff changeset
217 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
anatofuz
parents:
diff changeset
218
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
219 define void @consequences(ptr %A, i32 %bool_cond, i32 %lhs, i32 %rhs) {
150
anatofuz
parents:
diff changeset
220 entry:
anatofuz
parents:
diff changeset
221 br label %BC
anatofuz
parents:
diff changeset
222
anatofuz
parents:
diff changeset
223 BC: ; preds = %entry
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
224 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
225 %tobool = icmp eq i32 %bool_cond, 0
anatofuz
parents:
diff changeset
226 br i1 %tobool, label %M_BC, label %S_BC
anatofuz
parents:
diff changeset
227
anatofuz
parents:
diff changeset
228 S_BC: ; preds = %if.then
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
229 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
230 br label %M_BC
anatofuz
parents:
diff changeset
231
anatofuz
parents:
diff changeset
232 M_BC: ; preds = %BC, %S_BC
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
233 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
234 br label %NEG_BC
anatofuz
parents:
diff changeset
235
anatofuz
parents:
diff changeset
236 NEG_BC: ; preds = %if.end
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
237 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
238 %tobool1 = icmp eq i32 %bool_cond, 0
anatofuz
parents:
diff changeset
239 br i1 %tobool1, label %S_NEG_BC, label %M_NEG_BC
anatofuz
parents:
diff changeset
240
anatofuz
parents:
diff changeset
241 S_NEG_BC: ; preds = %if.then.2
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
242 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
243 br label %M_NEG_BC
anatofuz
parents:
diff changeset
244
anatofuz
parents:
diff changeset
245 M_NEG_BC: ; preds = %NEG_BC, %S_NEG_BC
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
246 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
247 br label %SLT
anatofuz
parents:
diff changeset
248
anatofuz
parents:
diff changeset
249 SLT: ; preds = %if.end.3
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
250 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
251 %cmp = icmp slt i32 %lhs, %rhs
anatofuz
parents:
diff changeset
252 br i1 %cmp, label %S_SLT, label %M_SLT
anatofuz
parents:
diff changeset
253
anatofuz
parents:
diff changeset
254 S_SLT: ; preds = %if.then.4
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
255 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
256 br label %M_SLT
anatofuz
parents:
diff changeset
257
anatofuz
parents:
diff changeset
258 M_SLT: ; preds = %S_SLT, %SLT
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
259 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
260 br label %SLE
anatofuz
parents:
diff changeset
261
anatofuz
parents:
diff changeset
262 SLE: ; preds = %if.end.5
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
263 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
264 %cmp6 = icmp sgt i32 %lhs, %rhs
anatofuz
parents:
diff changeset
265 br i1 %cmp6, label %M_SLE, label %S_SLE
anatofuz
parents:
diff changeset
266
anatofuz
parents:
diff changeset
267 S_SLE: ; preds = %if.then.7
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
268 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
269 br label %M_SLE
anatofuz
parents:
diff changeset
270
anatofuz
parents:
diff changeset
271 M_SLE: ; preds = %SLE, %S_SLE
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
272 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
273 br label %SGT
anatofuz
parents:
diff changeset
274
anatofuz
parents:
diff changeset
275 SGT: ; preds = %if.end.8
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
276 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
277 %cmp9 = icmp sgt i32 %lhs, %rhs
anatofuz
parents:
diff changeset
278 br i1 %cmp9, label %S_SGT, label %M_SGT
anatofuz
parents:
diff changeset
279
anatofuz
parents:
diff changeset
280 S_SGT: ; preds = %if.then.10
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
281 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
282 br label %M_SGT
anatofuz
parents:
diff changeset
283
anatofuz
parents:
diff changeset
284 M_SGT: ; preds = %S_SGT, %SGT
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
285 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
286 br label %SGE
anatofuz
parents:
diff changeset
287
anatofuz
parents:
diff changeset
288 SGE: ; preds = %if.end.11
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
289 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
290 %cmp12 = icmp slt i32 %lhs, %rhs
anatofuz
parents:
diff changeset
291 br i1 %cmp12, label %M_SGE, label %S_SGE
anatofuz
parents:
diff changeset
292
anatofuz
parents:
diff changeset
293 S_SGE: ; preds = %if.then.13
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
294 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
295 br label %M_SGE
anatofuz
parents:
diff changeset
296
anatofuz
parents:
diff changeset
297 M_SGE: ; preds = %SGE, %S_SGE
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
298 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
299 br label %EQ
anatofuz
parents:
diff changeset
300
anatofuz
parents:
diff changeset
301 EQ: ; preds = %if.end.14
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
302 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
303 %cmp15 = icmp eq i32 %lhs, %rhs
anatofuz
parents:
diff changeset
304 br i1 %cmp15, label %S_EQ, label %M_EQ
anatofuz
parents:
diff changeset
305
anatofuz
parents:
diff changeset
306 S_EQ: ; preds = %if.then.16
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
307 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
308 br label %M_EQ
anatofuz
parents:
diff changeset
309
anatofuz
parents:
diff changeset
310 M_EQ: ; preds = %S_EQ, %EQ
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
311 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
312 br label %NEQ
anatofuz
parents:
diff changeset
313
anatofuz
parents:
diff changeset
314 NEQ: ; preds = %if.end.17
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
315 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
316 %cmp18 = icmp eq i32 %lhs, %rhs
anatofuz
parents:
diff changeset
317 br i1 %cmp18, label %M_NEQ, label %S_NEQ
anatofuz
parents:
diff changeset
318
anatofuz
parents:
diff changeset
319 S_NEQ: ; preds = %if.then.19
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
320 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
321 br label %M_NEQ
anatofuz
parents:
diff changeset
322
anatofuz
parents:
diff changeset
323 M_NEQ: ; preds = %NEQ, %S_NEQ
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
324 store i32 0, ptr %A, align 4
150
anatofuz
parents:
diff changeset
325 br label %exit
anatofuz
parents:
diff changeset
326
anatofuz
parents:
diff changeset
327 exit:
anatofuz
parents:
diff changeset
328 ret void
anatofuz
parents:
diff changeset
329 }