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

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

Issue 2138443002: Subzero: Loop Invariant Code Motion (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Address comments Created 4 years, 5 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 | « tests_lit/llvm2ice_tests/licm.ll ('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
1 ; Test the the loop nest depth is correctly calculated for basic blocks. 1 ; Test the the loop nest depth is correctly calculated for basic blocks.
2 2
3 ; REQUIRES: allow_dump 3 ; REQUIRES: allow_dump
4 4
5 ; Single threaded so that the dumps used for checking happen in order. 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 \ 6 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 --verbose=loop \
7 ; RUN: -log=%t --threads=0 && FileCheck %s < %t 7 ; RUN: -log=%t --threads=0 && FileCheck %s < %t
8 8
9 define internal void @test_single_loop(i32 %a32) { 9 define internal void @test_single_loop(i32 %a32) {
10 entry: 10 entry:
11 %a = trunc i32 %a32 to i1 11 %a = trunc i32 %a32 to i1
12 br label %loop0 12 br label %loop0
13 13
14 loop0: ; <-+ 14 loop0: ; <-+
15 br label %loop1 ; | 15 br label %loop1 ; |
16 loop1: ; | 16 loop1: ; |
17 br i1 %a, label %loop0, label %out ; --+ 17 br i1 %a, label %loop0, label %out ; --+
18 18
19 out: 19 out:
20 ret void 20 ret void
21 } 21 }
22 22
23 ; CHECK-LABEL: After loop nest depth analysis 23 ; CHECK-LABEL: After loop analysis
24 ; CHECK-NEXT: entry: 24 ; CHECK-NEXT: entry:
25 ; CHECK-NEXT: LoopNestDepth = 0 25 ; CHECK-NEXT: LoopNestDepth = 0
26 ; CHECK-NEXT: loop0: 26 ; CHECK-NEXT: loop0:
27 ; CHECK-NEXT: LoopNestDepth = 1 27 ; CHECK-NEXT: LoopNestDepth = 1
28 ; CHECK-NEXT: loop1: 28 ; CHECK-NEXT: loop1:
29 ; CHECK-NEXT: LoopNestDepth = 1 29 ; CHECK-NEXT: LoopNestDepth = 1
30 ; CHECK-NEXT: out: 30 ; CHECK-NEXT: out:
31 ; CHECK-NEXT: LoopNestDepth = 0 31 ; CHECK-NEXT: LoopNestDepth = 0
32 ; CHECK-LABEL: Before RMW 32 ; CHECK-LABEL: Before RMW
33 33
34 define internal void @test_single_loop_with_continue(i32 %a32, i32 %b32) { 34 define internal void @test_single_loop_with_continue(i32 %a32, i32 %b32) {
35 entry: 35 entry:
36 %a = trunc i32 %a32 to i1 36 %a = trunc i32 %a32 to i1
37 %b = trunc i32 %b32 to i1 37 %b = trunc i32 %b32 to i1
38 br label %loop0 38 br label %loop0
39 39
40 loop0: ; <-+ 40 loop0: ; <-+
41 br label %loop1 ; | 41 br label %loop1 ; |
42 loop1: ; | 42 loop1: ; |
43 br i1 %a, label %loop0, label %loop2 ; --+ 43 br i1 %a, label %loop0, label %loop2 ; --+
44 loop2: ; | 44 loop2: ; |
45 br i1 %b, label %loop0, label %out ; --+ 45 br i1 %b, label %loop0, label %out ; --+
46 46
47 out: 47 out:
48 ret void 48 ret void
49 } 49 }
50 50
51 ; CHECK-LABEL: After loop nest depth analysis 51 ; CHECK-LABEL: After loop analysis
52 ; CHECK-NEXT: entry: 52 ; CHECK-NEXT: entry:
53 ; CHECK-NEXT: LoopNestDepth = 0 53 ; CHECK-NEXT: LoopNestDepth = 0
54 ; CHECK-NEXT: loop0: 54 ; CHECK-NEXT: loop0:
55 ; CHECK-NEXT: LoopNestDepth = 1 55 ; CHECK-NEXT: LoopNestDepth = 1
56 ; CHECK-NEXT: loop1: 56 ; CHECK-NEXT: loop1:
57 ; CHECK-NEXT: LoopNestDepth = 1 57 ; CHECK-NEXT: LoopNestDepth = 1
58 ; CHECK-NEXT: loop2: 58 ; CHECK-NEXT: loop2:
59 ; CHECK-NEXT: LoopNestDepth = 1 59 ; CHECK-NEXT: LoopNestDepth = 1
60 ; CHECK-NEXT: out: 60 ; CHECK-NEXT: out:
61 ; CHECK-NEXT: LoopNestDepth = 0 61 ; CHECK-NEXT: LoopNestDepth = 0
62 ; CHECK-LABEL: Before RMW 62 ; CHECK-LABEL: Before RMW
63 63
64 define internal void @test_multiple_exits(i32 %a32, i32 %b32) { 64 define internal void @test_multiple_exits(i32 %a32, i32 %b32) {
65 entry: 65 entry:
66 %a = trunc i32 %a32 to i1 66 %a = trunc i32 %a32 to i1
67 %b = trunc i32 %b32 to i1 67 %b = trunc i32 %b32 to i1
68 br label %loop0 68 br label %loop0
69 69
70 loop0: ; <-+ 70 loop0: ; <-+
71 br label %loop1 ; | 71 br label %loop1 ; |
72 loop1: ; | 72 loop1: ; |
73 br i1 %a, label %loop2, label %out ; --+-+ 73 br i1 %a, label %loop2, label %out ; --+-+
74 loop2: ; | | 74 loop2: ; | |
75 br i1 %b, label %loop0, label %out ; --+ | 75 br i1 %b, label %loop0, label %out ; --+ |
76 ; | 76 ; |
77 out: ; <---+ 77 out: ; <---+
78 ret void 78 ret void
79 } 79 }
80 80
81 ; CHECK-LABEL: After loop nest depth analysis 81 ; CHECK-LABEL: After loop analysis
82 ; CHECK-NEXT: entry: 82 ; CHECK-NEXT: entry:
83 ; CHECK-NEXT: LoopNestDepth = 0 83 ; CHECK-NEXT: LoopNestDepth = 0
84 ; CHECK-NEXT: loop0: 84 ; CHECK-NEXT: loop0:
85 ; CHECK-NEXT: LoopNestDepth = 1 85 ; CHECK-NEXT: LoopNestDepth = 1
86 ; CHECK-NEXT: loop1: 86 ; CHECK-NEXT: loop1:
87 ; CHECK-NEXT: LoopNestDepth = 1 87 ; CHECK-NEXT: LoopNestDepth = 1
88 ; CHECK-NEXT: loop2: 88 ; CHECK-NEXT: loop2:
89 ; CHECK-NEXT: LoopNestDepth = 1 89 ; CHECK-NEXT: LoopNestDepth = 1
90 ; CHECK-NEXT: out: 90 ; CHECK-NEXT: out:
91 ; CHECK-NEXT: LoopNestDepth = 0 91 ; CHECK-NEXT: LoopNestDepth = 0
(...skipping 11 matching lines...) Expand all
103 br label %loop1_1 ; | | 103 br label %loop1_1 ; | |
104 loop1_1: ; | | 104 loop1_1: ; | |
105 br i1 %a, label %loop1_0, label %loop0_1 ; --+ | 105 br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
106 loop0_1: ; | 106 loop0_1: ; |
107 br i1 %b, label %loop0_0, label %out ; ----+ 107 br i1 %b, label %loop0_0, label %out ; ----+
108 108
109 out: 109 out:
110 ret void 110 ret void
111 } 111 }
112 112
113 ; CHECK-LABEL: After loop nest depth analysis 113 ; CHECK-LABEL: After loop analysis
114 ; CHECK-NEXT: entry: 114 ; CHECK-NEXT: entry:
115 ; CHECK-NEXT: LoopNestDepth = 0 115 ; CHECK-NEXT: LoopNestDepth = 0
116 ; CHECK-NEXT: loop0_0: 116 ; CHECK-NEXT: loop0_0:
117 ; CHECK-NEXT: LoopNestDepth = 1 117 ; CHECK-NEXT: LoopNestDepth = 1
118 ; CHECK-NEXT: loop1_0: 118 ; CHECK-NEXT: loop1_0:
119 ; CHECK-NEXT: LoopNestDepth = 2 119 ; CHECK-NEXT: LoopNestDepth = 2
120 ; CHECK-NEXT: loop1_1: 120 ; CHECK-NEXT: loop1_1:
121 ; CHECK-NEXT: LoopNestDepth = 2 121 ; CHECK-NEXT: LoopNestDepth = 2
122 ; CHECK-NEXT: loop0_1: 122 ; CHECK-NEXT: loop0_1:
123 ; CHECK-NEXT: LoopNestDepth = 1 123 ; CHECK-NEXT: LoopNestDepth = 1
(...skipping 17 matching lines...) Expand all
141 br i1 %a, label %loop1_0, label %loop1_2 ; --+ | 141 br i1 %a, label %loop1_0, label %loop1_2 ; --+ |
142 loop1_2: ; | | 142 loop1_2: ; | |
143 br i1 %a, label %loop1_0, label %loop0_1 ; --+ | 143 br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
144 loop0_1: ; | 144 loop0_1: ; |
145 br i1 %b, label %loop0_0, label %out ; ----+ 145 br i1 %b, label %loop0_0, label %out ; ----+
146 146
147 out: 147 out:
148 ret void 148 ret void
149 } 149 }
150 150
151 ; CHECK-LABEL: After loop nest depth analysis 151 ; CHECK-LABEL: After loop analysis
152 ; CHECK-NEXT: entry: 152 ; CHECK-NEXT: entry:
153 ; CHECK-NEXT: LoopNestDepth = 0 153 ; CHECK-NEXT: LoopNestDepth = 0
154 ; CHECK-NEXT: loop0_0: 154 ; CHECK-NEXT: loop0_0:
155 ; CHECK-NEXT: LoopNestDepth = 1 155 ; CHECK-NEXT: LoopNestDepth = 1
156 ; CHECK-NEXT: loop1_0: 156 ; CHECK-NEXT: loop1_0:
157 ; CHECK-NEXT: LoopNestDepth = 2 157 ; CHECK-NEXT: LoopNestDepth = 2
158 ; CHECK-NEXT: loop1_1: 158 ; CHECK-NEXT: loop1_1:
159 ; CHECK-NEXT: LoopNestDepth = 2 159 ; CHECK-NEXT: LoopNestDepth = 2
160 ; CHECK-NEXT: loop1_2: 160 ; CHECK-NEXT: loop1_2:
161 ; CHECK-NEXT: LoopNestDepth = 2 161 ; CHECK-NEXT: LoopNestDepth = 2
(...skipping 21 matching lines...) Expand all
183 br label %loop2_1 ; | | 183 br label %loop2_1 ; | |
184 loop2_1: ; | | 184 loop2_1: ; | |
185 br i1 %a, label %loop2_0, label %loop0_2 ; --+ | 185 br i1 %a, label %loop2_0, label %loop0_2 ; --+ |
186 loop0_2: ; | 186 loop0_2: ; |
187 br i1 %b, label %loop0_0, label %out ; ----+ 187 br i1 %b, label %loop0_0, label %out ; ----+
188 188
189 out: 189 out:
190 ret void 190 ret void
191 } 191 }
192 192
193 ; CHECK-LABEL: After loop nest depth analysis 193 ; CHECK-LABEL: After loop analysis
194 ; CHECK-NEXT: entry: 194 ; CHECK-NEXT: entry:
195 ; CHECK-NEXT: LoopNestDepth = 0 195 ; CHECK-NEXT: LoopNestDepth = 0
196 ; CHECK-NEXT: loop0_0: 196 ; CHECK-NEXT: loop0_0:
197 ; CHECK-NEXT: LoopNestDepth = 1 197 ; CHECK-NEXT: LoopNestDepth = 1
198 ; CHECK-NEXT: loop1_0: 198 ; CHECK-NEXT: loop1_0:
199 ; CHECK-NEXT: LoopNestDepth = 2 199 ; CHECK-NEXT: LoopNestDepth = 2
200 ; CHECK-NEXT: loop1_1: 200 ; CHECK-NEXT: loop1_1:
201 ; CHECK-NEXT: LoopNestDepth = 2 201 ; CHECK-NEXT: LoopNestDepth = 2
202 ; CHECK-NEXT: loop0_1: 202 ; CHECK-NEXT: loop0_1:
203 ; CHECK-NEXT: LoopNestDepth = 1 203 ; CHECK-NEXT: LoopNestDepth = 1
(...skipping 24 matching lines...) Expand all
228 br i1 %a, label %loop2_0, label %loop1_1 ; --+ | | 228 br i1 %a, label %loop2_0, label %loop1_1 ; --+ | |
229 loop1_1: ; | | 229 loop1_1: ; | |
230 br i1 %b, label %loop1_0, label %loop0_1 ; ----+ | 230 br i1 %b, label %loop1_0, label %loop0_1 ; ----+ |
231 loop0_1: ; | 231 loop0_1: ; |
232 br i1 %c, label %loop0_0, label %out ; ------+ 232 br i1 %c, label %loop0_0, label %out ; ------+
233 233
234 out: 234 out:
235 ret void 235 ret void
236 } 236 }
237 237
238 ; CHECK-LABEL: After loop nest depth analysis 238 ; CHECK-LABEL: After loop analysis
239 ; CHECK-NEXT: entry: 239 ; CHECK-NEXT: entry:
240 ; CHECK-NEXT: LoopNestDepth = 0 240 ; CHECK-NEXT: LoopNestDepth = 0
241 ; CHECK-NEXT: loop0_0: 241 ; CHECK-NEXT: loop0_0:
242 ; CHECK-NEXT: LoopNestDepth = 1 242 ; CHECK-NEXT: LoopNestDepth = 1
243 ; CHECK-NEXT: loop1_0: 243 ; CHECK-NEXT: loop1_0:
244 ; CHECK-NEXT: LoopNestDepth = 2 244 ; CHECK-NEXT: LoopNestDepth = 2
245 ; CHECK-NEXT: loop2_0: 245 ; CHECK-NEXT: loop2_0:
246 ; CHECK-NEXT: LoopNestDepth = 3 246 ; CHECK-NEXT: LoopNestDepth = 3
247 ; CHECK-NEXT: loop2_1: 247 ; CHECK-NEXT: loop2_1:
248 ; CHECK-NEXT: LoopNestDepth = 3 248 ; CHECK-NEXT: LoopNestDepth = 3
(...skipping 13 matching lines...) Expand all
262 left: 262 left:
263 br label %out 263 br label %out
264 264
265 right: 265 right:
266 br label %out 266 br label %out
267 267
268 out: 268 out:
269 ret void 269 ret void
270 } 270 }
271 271
272 ; CHECK-LABEL: After loop nest depth analysis 272 ; CHECK-LABEL: After loop analysis
273 ; CHECK-NEXT: entry: 273 ; CHECK-NEXT: entry:
274 ; CHECK-NEXT: LoopNestDepth = 0 274 ; CHECK-NEXT: LoopNestDepth = 0
275 ; CHECK-NEXT: left: 275 ; CHECK-NEXT: left:
276 ; CHECK-NEXT: LoopNestDepth = 0 276 ; CHECK-NEXT: LoopNestDepth = 0
277 ; CHECK-NEXT: right: 277 ; CHECK-NEXT: right:
278 ; CHECK-NEXT: LoopNestDepth = 0 278 ; CHECK-NEXT: LoopNestDepth = 0
279 ; CHECK-NEXT: out: 279 ; CHECK-NEXT: out:
280 ; CHECK-NEXT: LoopNestDepth = 0 280 ; CHECK-NEXT: LoopNestDepth = 0
281 ; CHECK-LABEL: Before RMW 281 ; CHECK-LABEL: Before RMW
282 282
283 define internal void @test_single_block_loop(i32 %count) { 283 define internal void @test_single_block_loop(i32 %count) {
284 entry: 284 entry:
285 br label %body 285 br label %body
286 body: 286 body:
287 ; %i = phi i32 [ 0, %entry ], [ %inc, %body ] 287 ; %i = phi i32 [ 0, %entry ], [ %inc, %body ]
288 ; A normal loop would have a phi instruction like above for the induction 288 ; A normal loop would have a phi instruction like above for the induction
289 ; variable, but that may introduce new basic blocks due to phi edge splitting, 289 ; variable, but that may introduce new basic blocks due to phi edge splitting,
290 ; so we use an alternative definition for %i to make the test more clear. 290 ; so we use an alternative definition for %i to make the test more clear.
291 %i = add i32 %count, 1 291 %i = add i32 %count, 1
292 %inc = add i32 %i, 1 292 %inc = add i32 %i, 1
293 %cmp = icmp slt i32 %inc, %count 293 %cmp = icmp slt i32 %inc, %count
294 br i1 %cmp, label %body, label %exit 294 br i1 %cmp, label %body, label %exit
295 exit: 295 exit:
296 ret void 296 ret void
297 } 297 }
298 298
299 ; CHECK-LABEL: After loop nest depth analysis 299 ; CHECK-LABEL: After loop analysis
300 ; CHECK-NEXT: entry: 300 ; CHECK-NEXT: entry:
301 ; CHECK-NEXT: LoopNestDepth = 0 301 ; CHECK-NEXT: LoopNestDepth = 0
302 ; CHECK-NEXT: body: 302 ; CHECK-NEXT: body:
303 ; CHECK-NEXT: LoopNestDepth = 1 303 ; CHECK-NEXT: LoopNestDepth = 1
304 ; CHECK-NEXT: exit: 304 ; CHECK-NEXT: exit:
305 ; CHECK-NEXT: LoopNestDepth = 0 305 ; CHECK-NEXT: LoopNestDepth = 0
306 ; CHECK-LABEL: Before RMW 306 ; CHECK-LABEL: Before RMW
OLDNEW
« no previous file with comments | « tests_lit/llvm2ice_tests/licm.ll ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698