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

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
« src/IceOperand.h ('K') | « 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: --verbose=inst --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: entry: // LoopNestDepth = 0
25 ; CHECK: loop0: // LoopNestDepth = 1
26 ; CHECK: loop1: // LoopNestDepth = 1
27 ; CHECK: out: // LoopNestDepth = 0
28 ; CHECK-LABEL: Before RMW
29
30 define void @test_single_loop_with_continue(i32 %a32, i32 %b32) {
31 entry:
32 %a = trunc i32 %a32 to i1
33 %b = trunc i32 %b32 to i1
34 br label %loop0
35
36 loop0: ; <-+
37 br label %loop1 ; |
38 loop1: ; |
39 br i1 %a, label %loop0, label %loop2 ; --+
40 loop2: ; |
41 br i1 %b, label %loop0, label %out ; --+
42
43 out:
44 ret void
45 }
46
47 ; CHECK-LABEL: After loop nest depth analysis
48 ; CHECK: entry: // LoopNestDepth = 0
49 ; CHECK: loop0: // LoopNestDepth = 1
50 ; CHECK: loop1: // LoopNestDepth = 1
51 ; CHECK: loop2: // LoopNestDepth = 1
52 ; CHECK: out: // LoopNestDepth = 0
53 ; CHECK-LABEL: Before RMW
54
55 define void @test_multiple_exits(i32 %a32, i32 %b32) {
56 entry:
57 %a = trunc i32 %a32 to i1
58 %b = trunc i32 %b32 to i1
59 br label %loop0
60
61 loop0: ; <-+
62 br label %loop1 ; |
63 loop1: ; |
64 br i1 %a, label %loop2, label %out ; --+-+
65 loop2: ; | |
66 br i1 %b, label %loop0, label %out ; --+ |
67 ; |
68 out: ; <---+
69 ret void
70 }
71
72 ; CHECK-LABEL: After loop nest depth analysis
73 ; CHECK: entry: // LoopNestDepth = 0
74 ; CHECK: loop0: // LoopNestDepth = 1
75 ; CHECK: loop1: // LoopNestDepth = 1
76 ; CHECK: loop2: // LoopNestDepth = 1
77 ; CHECK: out: // LoopNestDepth = 0
78 ; CHECK-LABEL: Before RMW
79
80 define void @test_two_nested_loops(i32 %a32, i32 %b32) {
81 entry:
82 %a = trunc i32 %a32 to i1
83 %b = trunc i32 %b32 to i1
84 br label %loop0_0
85
86 loop0_0: ; <---+
87 br label %loop1_0 ; |
88 loop1_0: ; <-+ |
89 br label %loop1_1 ; | |
90 loop1_1: ; | |
91 br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
92 loop0_1: ; |
93 br i1 %b, label %loop0_0, label %out ; ----+
94
95 out:
96 ret void
97 }
98
99 ; CHECK-LABEL: After loop nest depth analysis
100 ; CHECK: entry: // LoopNestDepth = 0
101 ; CHECK: loop0_0: // LoopNestDepth = 1
102 ; CHECK: loop1_0: // LoopNestDepth = 2
103 ; CHECK: loop1_1: // LoopNestDepth = 2
104 ; CHECK: loop0_1: // LoopNestDepth = 1
105 ; CHECK: out: // LoopNestDepth = 0
106 ; CHECK-LABEL: Before RMW
107
108 define void @test_two_nested_loops_with_continue(i32 %a32, i32 %b32, i32 %c32) {
109 entry:
110 %a = trunc i32 %a32 to i1
111 %b = trunc i32 %b32 to i1
112 %c = trunc i32 %c32 to i1
113 br label %loop0_0
114
115 loop0_0: ; <---+
116 br label %loop1_0 ; |
117 loop1_0: ; <-+ |
118 br label %loop1_1 ; | |
119 loop1_1: ; | |
120 br i1 %a, label %loop1_0, label %loop1_2 ; --+ |
121 loop1_2: ; | |
122 br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
123 loop0_1: ; |
124 br i1 %b, label %loop0_0, label %out ; ----+
125
126 out:
127 ret void
128 }
129
130 ; CHECK-LABEL: After loop nest depth analysis
131 ; CHECK: entry: // LoopNestDepth = 0
132 ; CHECK: loop0_0: // LoopNestDepth = 1
133 ; CHECK: loop1_0: // LoopNestDepth = 2
134 ; CHECK: loop1_1: // LoopNestDepth = 2
135 ; CHECK: loop1_2: // LoopNestDepth = 2
136 ; CHECK: loop0_1: // LoopNestDepth = 1
137 ; CHECK: out: // LoopNestDepth = 0
138 ; CHECK-LABEL: Before RMW
139
140 define void @test_multiple_nested_loops(i32 %a32, i32 %b32) {
141 entry:
142 %a = trunc i32 %a32 to i1
143 %b = trunc i32 %b32 to i1
144 br label %loop0_0
145
146 loop0_0: ; <---+
147 br label %loop1_0 ; |
148 loop1_0: ; <-+ |
149 br label %loop1_1 ; | |
150 loop1_1: ; | |
151 br i1 %a, label %loop1_0, label %loop0_1 ; --+ |
152 loop0_1: ; |
153 br label %loop2_0 ; |
154 loop2_0: ; <-+ |
155 br label %loop2_1 ; | |
156 loop2_1: ; | |
157 br i1 %a, label %loop2_0, label %loop0_2 ; --+ |
158 loop0_2: ; |
159 br i1 %b, label %loop0_0, label %out ; ----+
160
161 out:
162 ret void
163 }
164
165 ; CHECK-LABEL: After loop nest depth analysis
166 ; CHECK: entry: // LoopNestDepth = 0
167 ; CHECK: loop0_0: // LoopNestDepth = 1
168 ; CHECK: loop1_0: // LoopNestDepth = 2
169 ; CHECK: loop1_1: // LoopNestDepth = 2
170 ; CHECK: loop0_1: // LoopNestDepth = 1
171 ; CHECK: loop2_0: // LoopNestDepth = 2
172 ; CHECK: loop2_1: // LoopNestDepth = 2
173 ; CHECK: loop0_2: // LoopNestDepth = 1
174 ; CHECK: out: // LoopNestDepth = 0
175 ; CHECK-LABEL: Before RMW
176
177 define void @test_three_nested_loops(i32 %a32, i32 %b32, i32 %c32) {
178 entry:
179 %a = trunc i32 %a32 to i1
180 %b = trunc i32 %b32 to i1
181 %c = trunc i32 %c32 to i1
182 br label %loop0_0
183
184 loop0_0: ; <-----+
185 br label %loop1_0 ; |
186 loop1_0: ; <---+ |
187 br label %loop2_0 ; | |
188 loop2_0: ; <-+ | |
189 br label %loop2_1 ; | | |
190 loop2_1: ; | | |
191 br i1 %a, label %loop2_0, label %loop1_1 ; --+ | |
192 loop1_1: ; | |
193 br i1 %b, label %loop1_0, label %loop0_1 ; ----+ |
194 loop0_1: ; |
195 br i1 %c, label %loop0_0, label %out ; ------+
196
197 out:
198 ret void
199 }
200
201 ; CHECK-LABEL: After loop nest depth analysis
202 ; CHECK: entry: // LoopNestDepth = 0
203 ; CHECK: loop0_0: // LoopNestDepth = 1
204 ; CHECK: loop1_0: // LoopNestDepth = 2
205 ; CHECK: loop2_0: // LoopNestDepth = 3
206 ; CHECK: loop2_1: // LoopNestDepth = 3
207 ; CHECK: loop1_1: // LoopNestDepth = 2
208 ; CHECK: loop0_1: // LoopNestDepth = 1
209 ; CHECK: out: // LoopNestDepth = 0
210 ; CHECK-LABEL: Before RMW
211
212 define void @test_diamond(i32 %a32) {
213 entry:
214 %a = trunc i32 %a32 to i1
215 br i1 %a, label %left, label %right
216
217 left:
218 br label %out
219
220 right:
221 br label %out
222
223 out:
224 ret void
225 }
226
227 ; CHECK-LABEL: After loop nest depth analysis
228 ; CHECK: entry: // LoopNestDepth = 0
229 ; CHECK: left: // LoopNestDepth = 0
230 ; CHECK: right: // LoopNestDepth = 0
231 ; CHECK: out: // LoopNestDepth = 0
232 ; CHECK-LABEL: Before RMW
OLDNEW
« src/IceOperand.h ('K') | « src/IceUtils.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698