Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: tests_lit/llvm2ice_tests/loop-nest-depth.ll

Issue 1318553003: Compute the loop nest depth of each CfgNode and weight Variables by it. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/IceUtils.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 ; Test the the loop nest depth is correctly calculated for basic blocks.
2
3 ; REQUIRES: allow_dump
4
5 ; Single threaded so that the dumps used for checking happen in order
6 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 --verbose=loop \
7 ; RUN: --threads=0 | FileCheck %s
8
9 define void @test_single_loop(i32 %a32) {
10 entry:
11 %a = trunc i32 %a32 to i1
12 br label %loop0
13
14 loop0: ; <-+
15 br label %loop1 ; |
16 loop1: ; |
17 br i1 %a, label %loop0, label %out ; --+
18
19 out:
20 ret void
21 }
22
23 ; CHECK-LABEL: After loop nest depth analysis
24 ; CHECK-NEXT: entry:
25 ; CHECK-NEXT: LoopNestDepth = 0
26 ; CHECK-NEXT: loop0:
27 ; CHECK-NEXT: LoopNestDepth = 1
28 ; CHECK-NEXT: loop1:
29 ; CHECK-NEXT: LoopNestDepth = 1
30 ; CHECK-NEXT: out:
31 ; CHECK-NEXT: LoopNestDepth = 0
32 ; CHECK-LABEL: Before RMW
33
34 define void @test_single_loop_with_continue(i32 %a32, i32 %b32) {
35 entry:
36 %a = trunc i32 %a32 to i1
37 %b = trunc i32 %b32 to i1
38 br label %loop0
39
40 loop0: ; <-+
41 br label %loop1 ; |
42 loop1: ; |
43 br i1 %a, label %loop0, label %loop2 ; --+
44 loop2: ; |
45 br i1 %b, label %loop0, label %out ; --+
46
47 out:
48 ret void
49 }
50
51 ; CHECK-LABEL: After loop nest depth analysis
52 ; CHECK-NEXT: entry:
53 ; CHECK-NEXT: LoopNestDepth = 0
54 ; CHECK-NEXT: loop0:
55 ; CHECK-NEXT: LoopNestDepth = 1
56 ; CHECK-NEXT: loop1:
57 ; CHECK-NEXT: LoopNestDepth = 1
58 ; CHECK-NEXT: loop2:
59 ; CHECK-NEXT: LoopNestDepth = 1
60 ; CHECK-NEXT: out:
61 ; CHECK-NEXT: LoopNestDepth = 0
62 ; CHECK-LABEL: Before RMW
63
64 define void @test_multiple_exits(i32 %a32, i32 %b32) {
65 entry:
66 %a = trunc i32 %a32 to i1
67 %b = trunc i32 %b32 to i1
68 br label %loop0
69
70 loop0: ; <-+
71 br label %loop1 ; |
72 loop1: ; |
73 br i1 %a, label %loop2, label %out ; --+-+
74 loop2: ; | |
75 br i1 %b, label %loop0, label %out ; --+ |
76 ; |
77 out: ; <---+
78 ret void
79 }
80
81 ; CHECK-LABEL: After loop nest depth analysis
82 ; CHECK-NEXT: entry:
83 ; CHECK-NEXT: LoopNestDepth = 0
84 ; CHECK-NEXT: loop0:
85 ; CHECK-NEXT: LoopNestDepth = 1
86 ; CHECK-NEXT: loop1:
87 ; CHECK-NEXT: LoopNestDepth = 1
88 ; CHECK-NEXT: loop2:
89 ; CHECK-NEXT: LoopNestDepth = 1
90 ; CHECK-NEXT: out:
91 ; CHECK-NEXT: LoopNestDepth = 0
92 ; CHECK-LABEL: Before RMW
93
94 define void @test_two_nested_loops(i32 %a32, i32 %b32) {
95 entry:
96 %a = trunc i32 %a32 to i1
97 %b = trunc i32 %b32 to i1
98 br label %loop0_0
99
100 loop0_0: ; <---+
101 br label %loop1_0 ; |
102 loop1_0: ; <-+ |
103 br label %loop1_1 ; | |
104 loop1_1: ; | |
105 br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
106 loop0_1: ; |
107 br i1 %b, label %loop0_0, label %out ; ----+
108
109 out:
110 ret void
111 }
112
113 ; CHECK-LABEL: After loop nest depth analysis
114 ; CHECK-NEXT: entry:
115 ; CHECK-NEXT: LoopNestDepth = 0
116 ; CHECK-NEXT: loop0_0:
117 ; CHECK-NEXT: LoopNestDepth = 1
118 ; CHECK-NEXT: loop1_0:
119 ; CHECK-NEXT: LoopNestDepth = 2
120 ; CHECK-NEXT: loop1_1:
121 ; CHECK-NEXT: LoopNestDepth = 2
122 ; CHECK-NEXT: loop0_1:
123 ; CHECK-NEXT: LoopNestDepth = 1
124 ; CHECK-NEXT: out:
125 ; CHECK-NEXT: LoopNestDepth = 0
126 ; CHECK-LABEL: Before RMW
127
128 define void @test_two_nested_loops_with_continue(i32 %a32, i32 %b32, i32 %c32) {
129 entry:
130 %a = trunc i32 %a32 to i1
131 %b = trunc i32 %b32 to i1
132 %c = trunc i32 %c32 to i1
133 br label %loop0_0
134
135 loop0_0: ; <---+
136 br label %loop1_0 ; |
137 loop1_0: ; <-+ |
138 br label %loop1_1 ; | |
139 loop1_1: ; | |
140 br i1 %a, label %loop1_0, label %loop1_2 ; --+ |
141 loop1_2: ; | |
142 br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
143 loop0_1: ; |
144 br i1 %b, label %loop0_0, label %out ; ----+
145
146 out:
147 ret void
148 }
149
150 ; CHECK-LABEL: After loop nest depth analysis
151 ; CHECK-NEXT: entry:
152 ; CHECK-NEXT: LoopNestDepth = 0
153 ; CHECK-NEXT: loop0_0:
154 ; CHECK-NEXT: LoopNestDepth = 1
155 ; CHECK-NEXT: loop1_0:
156 ; CHECK-NEXT: LoopNestDepth = 2
157 ; CHECK-NEXT: loop1_1:
158 ; CHECK-NEXT: LoopNestDepth = 2
159 ; CHECK-NEXT: loop1_2:
160 ; CHECK-NEXT: LoopNestDepth = 2
161 ; CHECK-NEXT: loop0_1:
162 ; CHECK-NEXT: LoopNestDepth = 1
163 ; CHECK-NEXT: out:
164 ; CHECK-NEXT: LoopNestDepth = 0
165 ; CHECK-LABEL: Before RMW
166
167 define void @test_multiple_nested_loops(i32 %a32, i32 %b32) {
168 entry:
169 %a = trunc i32 %a32 to i1
170 %b = trunc i32 %b32 to i1
171 br label %loop0_0
172
173 loop0_0: ; <---+
174 br label %loop1_0 ; |
175 loop1_0: ; <-+ |
176 br label %loop1_1 ; | |
177 loop1_1: ; | |
178 br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
179 loop0_1: ; |
180 br label %loop2_0 ; |
181 loop2_0: ; <-+ |
182 br label %loop2_1 ; | |
183 loop2_1: ; | |
184 br i1 %a, label %loop2_0, label %loop0_2 ; --+ |
185 loop0_2: ; |
186 br i1 %b, label %loop0_0, label %out ; ----+
187
188 out:
189 ret void
190 }
191
192 ; CHECK-LABEL: After loop nest depth analysis
193 ; CHECK-NEXT: entry:
194 ; CHECK-NEXT: LoopNestDepth = 0
195 ; CHECK-NEXT: loop0_0:
196 ; CHECK-NEXT: LoopNestDepth = 1
197 ; CHECK-NEXT: loop1_0:
198 ; CHECK-NEXT: LoopNestDepth = 2
199 ; CHECK-NEXT: loop1_1:
200 ; CHECK-NEXT: LoopNestDepth = 2
201 ; CHECK-NEXT: loop0_1:
202 ; CHECK-NEXT: LoopNestDepth = 1
203 ; CHECK-NEXT: loop2_0:
204 ; CHECK-NEXT: LoopNestDepth = 2
205 ; CHECK-NEXT: loop2_1:
206 ; CHECK-NEXT: LoopNestDepth = 2
207 ; CHECK-NEXT: loop0_2:
208 ; CHECK-NEXT: LoopNestDepth = 1
209 ; CHECK-NEXT: out:
210 ; CHECK-NEXT: LoopNestDepth = 0
211 ; CHECK-LABEL: Before RMW
212
213 define void @test_three_nested_loops(i32 %a32, i32 %b32, i32 %c32) {
214 entry:
215 %a = trunc i32 %a32 to i1
216 %b = trunc i32 %b32 to i1
217 %c = trunc i32 %c32 to i1
218 br label %loop0_0
219
220 loop0_0: ; <-----+
221 br label %loop1_0 ; |
222 loop1_0: ; <---+ |
223 br label %loop2_0 ; | |
224 loop2_0: ; <-+ | |
225 br label %loop2_1 ; | | |
226 loop2_1: ; | | |
227 br i1 %a, label %loop2_0, label %loop1_1 ; --+ | |
228 loop1_1: ; | |
229 br i1 %b, label %loop1_0, label %loop0_1 ; ----+ |
230 loop0_1: ; |
231 br i1 %c, label %loop0_0, label %out ; ------+
232
233 out:
234 ret void
235 }
236
237 ; CHECK-LABEL: After loop nest depth analysis
238 ; CHECK-NEXT: entry:
239 ; CHECK-NEXT: LoopNestDepth = 0
240 ; CHECK-NEXT: loop0_0:
241 ; CHECK-NEXT: LoopNestDepth = 1
242 ; CHECK-NEXT: loop1_0:
243 ; CHECK-NEXT: LoopNestDepth = 2
244 ; CHECK-NEXT: loop2_0:
245 ; CHECK-NEXT: LoopNestDepth = 3
246 ; CHECK-NEXT: loop2_1:
247 ; CHECK-NEXT: LoopNestDepth = 3
248 ; CHECK-NEXT: loop1_1:
249 ; CHECK-NEXT: LoopNestDepth = 2
250 ; CHECK-NEXT: loop0_1:
251 ; CHECK-NEXT: LoopNestDepth = 1
252 ; CHECK-NEXT: out:
253 ; CHECK-NEXT: LoopNestDepth = 0
254 ; CHECK-LABEL: Before RMW
255
256 define void @test_diamond(i32 %a32) {
257 entry:
258 %a = trunc i32 %a32 to i1
259 br i1 %a, label %left, label %right
260
261 left:
262 br label %out
263
264 right:
265 br label %out
266
267 out:
268 ret void
269 }
270
271 ; CHECK-LABEL: After loop nest depth analysis
272 ; CHECK-NEXT: entry:
273 ; CHECK-NEXT: LoopNestDepth = 0
274 ; CHECK-NEXT: left:
275 ; CHECK-NEXT: LoopNestDepth = 0
276 ; CHECK-NEXT: right:
277 ; CHECK-NEXT: LoopNestDepth = 0
278 ; CHECK-NEXT: out:
279 ; CHECK-NEXT: LoopNestDepth = 0
280 ; CHECK-LABEL: Before RMW
OLDNEW
« no previous file with comments | « src/IceUtils.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698