skia2/tests/sksl/runtime/LoopInt.skvm
John Stiles 059d34594e Optimize SkVM bit-clears.
SkVM has a `bit_clear` opcode dedicated to the operation `x & ~y`, but
the optimizer was not smart enough to combine a bit-and with a bit-not
and replace it with a bit-clear. Now, it can.

Change-Id: Ida5345c3def0a4bf7afa08bb7f7835e1e2e37677
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/524225
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Arman Uguray <armansito@google.com>
2022-03-24 21:04:23 +00:00

839 lines
27 KiB
Plaintext

$0 = colorRed (float4 : slot 1/4, L3)
$1 = colorRed (float4 : slot 2/4, L3)
$2 = colorRed (float4 : slot 3/4, L3)
$3 = colorRed (float4 : slot 4/4, L3)
$4 = colorGreen (float4 : slot 1/4, L3)
$5 = colorGreen (float4 : slot 2/4, L3)
$6 = colorGreen (float4 : slot 3/4, L3)
$7 = colorGreen (float4 : slot 4/4, L3)
$8 = kZero (int, L6)
$9 = kTen (int, L15)
$10 = [main].result (float4 : slot 1/4, L106)
$11 = [main].result (float4 : slot 2/4, L106)
$12 = [main].result (float4 : slot 3/4, L106)
$13 = [main].result (float4 : slot 4/4, L106)
$14 = pos (float2 : slot 1/2, L106)
$15 = pos (float2 : slot 2/2, L106)
$16 = five (int, L107)
$17 = [return_loop].result (int, L7)
$18 = five (int, L7)
$19 = i (int, L8)
$20 = [continue_loop].result (int, L16)
$21 = five (int, L16)
$22 = sum (int, L17)
$23 = i (int, L18)
$24 = [break_loop].result (int, L26)
$25 = five (int, L26)
$26 = sum (int, L27)
$27 = kOne (int, L28)
$28 = i (int, L29)
$29 = [loop_operator_le].result (bool, L36)
$30 = result (int4 : slot 1/4, L41)
$31 = result (int4 : slot 2/4, L41)
$32 = result (int4 : slot 3/4, L41)
$33 = result (int4 : slot 4/4, L41)
$34 = i (int, L42)
$35 = [loop_operator_lt].result (bool, L48)
$36 = result (int4 : slot 1/4, L53)
$37 = result (int4 : slot 2/4, L53)
$38 = result (int4 : slot 3/4, L53)
$39 = result (int4 : slot 4/4, L53)
$40 = i (int, L54)
$41 = [loop_operator_ge].result (bool, L60)
$42 = result (int4 : slot 1/4, L65)
$43 = result (int4 : slot 2/4, L65)
$44 = result (int4 : slot 3/4, L65)
$45 = result (int4 : slot 4/4, L65)
$46 = i (int, L66)
$47 = [loop_operator_gt].result (bool, L72)
$48 = result (int4 : slot 1/4, L77)
$49 = result (int4 : slot 2/4, L77)
$50 = result (int4 : slot 3/4, L77)
$51 = result (int4 : slot 4/4, L77)
$52 = i (int, L78)
$53 = [loop_operator_eq].result (bool, L95)
$54 = result (int4 : slot 1/4, L99)
$55 = result (int4 : slot 2/4, L99)
$56 = result (int4 : slot 3/4, L99)
$57 = result (int4 : slot 4/4, L99)
$58 = i (int, L100)
$59 = [loop_operator_ne].result (bool, L84)
$60 = result (int4 : slot 1/4, L88)
$61 = result (int4 : slot 2/4, L88)
$62 = result (int4 : slot 3/4, L88)
$63 = result (int4 : slot 4/4, L88)
$64 = i (int, L89)
F0 = half4 main(float2 pos)
F1 = int return_loop(int five)
F2 = int continue_loop(int five)
F3 = int break_loop(int five)
F4 = bool loop_operator_le()
F5 = bool loop_operator_lt()
F6 = bool loop_operator_ge()
F7 = bool loop_operator_gt()
F8 = bool loop_operator_eq()
F9 = bool loop_operator_ne()
34 registers, 760 instructions:
0 r0 = uniform32 ptr0 0
1 r1 = uniform32 ptr0 4
2 r2 = uniform32 ptr0 8
3 r3 = uniform32 ptr0 C
4 r4 = uniform32 ptr0 10
5 r5 = uniform32 ptr0 14
6 r6 = uniform32 ptr0 18
7 r7 = uniform32 ptr0 1C
8 r8 = uniform32 ptr0 20
9 r9 = splat 0 (0)
10 r10 = splat FFFFFFFF (nan)
11 r11 = splat 3F000000 (0.5)
12 r12 = eq_f32 r0 r11
13 r13 = splat A (1.4012985e-44)
14 r14 = splat 5 (7.0064923e-45)
15 r15 = splat 1 (1.4012985e-45)
16 r16 = splat 2 (2.8025969e-45)
17 r17 = splat 3 (4.2038954e-45)
18 r18 = splat 4 (5.6051939e-45)
19 r19 = splat 6 (8.4077908e-45)
20 r20 = splat 7 (9.8090893e-45)
21 r21 = splat 8 (1.1210388e-44)
22 r22 = splat 9 (1.2611686e-44)
23 r23 = splat 23 (4.9045446e-44)
24 r24 = splat F (2.1019477e-44)
loop:
25 r25 = index
26 r26 = eq_f32 r25 r11
27 r26 = bit_and r26 r12
28 trace_var 0 r26 r26 $0 = r1
29 trace_var 0 r26 r26 $1 = r2
30 trace_var 0 r26 r26 $2 = r3
31 trace_var 0 r26 r26 $3 = r4
32 trace_var 0 r26 r26 $4 = r5
33 trace_var 0 r26 r26 $5 = r6
34 trace_var 0 r26 r26 $6 = r7
35 trace_var 0 r26 r26 $7 = r8
36 trace_var 0 r26 r26 $8 = r9
37 trace_var 0 r26 r26 $9 = r13
38 trace_enter 0 r26 r26 F0
39 trace_var 0 r26 r26 $14 = r25
40 trace_var 0 r26 r26 $15 = r0
41 trace_scope 0 r26 r26 1
42 trace_line 0 r26 r26 L107
43 r25 = min_f32 r25 r8
44 r25 = max_f32 r6 r25
45 r25 = trunc r25
46 r25 = mul_i32 r25 r14
47 trace_var 0 r26 r26 $16 = r25
48 trace_line 0 r26 r26 L111
49 trace_enter 0 r26 r26 F1
50 trace_var 0 r26 r26 $18 = r25
51 trace_scope 0 r26 r26 1
52 trace_line 0 r26 r26 L8
53 trace_scope 0 r26 r26 1
54 trace_var 0 r26 r26 $19 = r9
55 trace_scope 0 r26 r26 1
56 trace_line 0 r26 r26 L9
57 r27 = eq_i32 r25 r9
58 trace_scope 0 r27 r26 1
59 trace_line 0 r27 r26 L9
60 trace_var 0 r27 r26 $17 = r9
61 trace_scope 0 r27 r26 -1
62 trace_scope 0 r26 r26 -1
63 r28 = bit_xor r27 r10
64 trace_line 0 r28 r26 L8
65 trace_var 0 r28 r26 $19 = r15
66 trace_scope 0 r28 r26 1
67 trace_line 0 r28 r26 L9
68 r29 = eq_i32 r25 r15
69 r29 = bit_clear r29 r27
70 trace_scope 0 r29 r26 1
71 trace_line 0 r29 r26 L9
72 r30 = bit_and r29 r15
73 trace_var 0 r29 r26 $17 = r30
74 r27 = bit_or r27 r29
75 trace_scope 0 r29 r26 -1
76 trace_scope 0 r28 r26 -1
77 r28 = bit_xor r27 r10
78 trace_line 0 r28 r26 L8
79 trace_var 0 r28 r26 $19 = r16
80 trace_scope 0 r28 r26 1
81 trace_line 0 r28 r26 L9
82 r29 = eq_i32 r25 r16
83 r29 = bit_clear r29 r27
84 trace_scope 0 r29 r26 1
85 trace_line 0 r29 r26 L9
86 r30 = select r29 r16 r30
87 trace_var 0 r29 r26 $17 = r30
88 r27 = bit_or r27 r29
89 trace_scope 0 r29 r26 -1
90 trace_scope 0 r28 r26 -1
91 r28 = bit_xor r27 r10
92 trace_line 0 r28 r26 L8
93 trace_var 0 r28 r26 $19 = r17
94 trace_scope 0 r28 r26 1
95 trace_line 0 r28 r26 L9
96 r29 = eq_i32 r25 r17
97 r29 = bit_clear r29 r27
98 trace_scope 0 r29 r26 1
99 trace_line 0 r29 r26 L9
100 r30 = select r29 r17 r30
101 trace_var 0 r29 r26 $17 = r30
102 r27 = bit_or r27 r29
103 trace_scope 0 r29 r26 -1
104 trace_scope 0 r28 r26 -1
105 r28 = bit_xor r27 r10
106 trace_line 0 r28 r26 L8
107 trace_var 0 r28 r26 $19 = r18
108 trace_scope 0 r28 r26 1
109 trace_line 0 r28 r26 L9
110 r29 = eq_i32 r25 r18
111 r29 = bit_clear r29 r27
112 trace_scope 0 r29 r26 1
113 trace_line 0 r29 r26 L9
114 r30 = select r29 r18 r30
115 trace_var 0 r29 r26 $17 = r30
116 r27 = bit_or r27 r29
117 trace_scope 0 r29 r26 -1
118 trace_scope 0 r28 r26 -1
119 r28 = bit_xor r27 r10
120 trace_line 0 r28 r26 L8
121 trace_var 0 r28 r26 $19 = r14
122 trace_scope 0 r28 r26 1
123 trace_line 0 r28 r26 L9
124 r29 = eq_i32 r25 r14
125 r29 = bit_clear r29 r27
126 trace_scope 0 r29 r26 1
127 trace_line 0 r29 r26 L9
128 r30 = select r29 r14 r30
129 trace_var 0 r29 r26 $17 = r30
130 r27 = bit_or r27 r29
131 trace_scope 0 r29 r26 -1
132 trace_scope 0 r28 r26 -1
133 r28 = bit_xor r27 r10
134 trace_line 0 r28 r26 L8
135 trace_var 0 r28 r26 $19 = r19
136 trace_scope 0 r28 r26 1
137 trace_line 0 r28 r26 L9
138 r29 = eq_i32 r25 r19
139 r29 = bit_clear r29 r27
140 trace_scope 0 r29 r26 1
141 trace_line 0 r29 r26 L9
142 r30 = select r29 r19 r30
143 trace_var 0 r29 r26 $17 = r30
144 r27 = bit_or r27 r29
145 trace_scope 0 r29 r26 -1
146 trace_scope 0 r28 r26 -1
147 r28 = bit_xor r27 r10
148 trace_line 0 r28 r26 L8
149 trace_var 0 r28 r26 $19 = r20
150 trace_scope 0 r28 r26 1
151 trace_line 0 r28 r26 L9
152 r29 = eq_i32 r25 r20
153 r29 = bit_clear r29 r27
154 trace_scope 0 r29 r26 1
155 trace_line 0 r29 r26 L9
156 r30 = select r29 r20 r30
157 trace_var 0 r29 r26 $17 = r30
158 r27 = bit_or r27 r29
159 trace_scope 0 r29 r26 -1
160 trace_scope 0 r28 r26 -1
161 r28 = bit_xor r27 r10
162 trace_line 0 r28 r26 L8
163 trace_var 0 r28 r26 $19 = r21
164 trace_scope 0 r28 r26 1
165 trace_line 0 r28 r26 L9
166 r29 = eq_i32 r25 r21
167 r29 = bit_clear r29 r27
168 trace_scope 0 r29 r26 1
169 trace_line 0 r29 r26 L9
170 r30 = select r29 r21 r30
171 trace_var 0 r29 r26 $17 = r30
172 r27 = bit_or r27 r29
173 trace_scope 0 r29 r26 -1
174 trace_scope 0 r28 r26 -1
175 r28 = bit_xor r27 r10
176 trace_line 0 r28 r26 L8
177 trace_var 0 r28 r26 $19 = r22
178 trace_scope 0 r28 r26 1
179 trace_line 0 r28 r26 L9
180 r29 = eq_i32 r25 r22
181 r29 = bit_clear r29 r27
182 trace_scope 0 r29 r26 1
183 trace_line 0 r29 r26 L9
184 r30 = select r29 r22 r30
185 trace_var 0 r29 r26 $17 = r30
186 r27 = bit_or r27 r29
187 trace_scope 0 r29 r26 -1
188 trace_scope 0 r28 r26 -1
189 r27 = bit_xor r27 r10
190 trace_line 0 r27 r26 L8
191 trace_scope 0 r26 r26 -1
192 trace_line 0 r27 r26 L11
193 r30 = bit_clear r30 r27
194 trace_var 0 r27 r26 $17 = r30
195 trace_scope 0 r26 r26 -1
196 trace_exit 0 r26 r26 F1
197 r30 = eq_i32 r30 r14
198 trace_enter 0 r30 r26 F2
199 trace_var 0 r30 r26 $21 = r25
200 trace_scope 0 r30 r26 1
201 trace_line 0 r30 r26 L17
202 trace_var 0 r30 r26 $22 = r9
203 trace_line 0 r30 r26 L18
204 trace_scope 0 r30 r26 1
205 trace_var 0 r30 r26 $23 = r9
206 trace_scope 0 r30 r26 1
207 trace_line 0 r30 r26 L19
208 r27 = gt_i32 r25 r9
209 r27 = bit_and r30 r27
210 trace_scope 0 r27 r26 1
211 trace_line 0 r27 r26 L19
212 r28 = bit_xor r27 r10
213 trace_scope 0 r27 r26 -1
214 r29 = bit_clear r30 r27
215 trace_line 0 r29 r26 L20
216 trace_scope 0 r30 r26 -1
217 r28 = bit_or r27 r28
218 r27 = bit_and r30 r28
219 trace_line 0 r27 r26 L18
220 trace_var 0 r27 r26 $23 = r15
221 trace_scope 0 r27 r26 1
222 trace_line 0 r27 r26 L19
223 r29 = gt_i32 r25 r15
224 r29 = bit_and r30 r29
225 r29 = bit_and r28 r29
226 trace_scope 0 r29 r26 1
227 trace_line 0 r29 r26 L19
228 r28 = bit_clear r28 r29
229 trace_scope 0 r29 r26 -1
230 r31 = bit_and r30 r28
231 trace_line 0 r31 r26 L20
232 r32 = bit_and r31 r15
233 trace_var 0 r31 r26 $22 = r32
234 trace_scope 0 r27 r26 -1
235 r28 = bit_or r29 r28
236 r29 = bit_and r30 r28
237 trace_line 0 r29 r26 L18
238 trace_var 0 r29 r26 $23 = r16
239 trace_scope 0 r29 r26 1
240 trace_line 0 r29 r26 L19
241 r27 = gt_i32 r25 r16
242 r27 = bit_and r30 r27
243 r27 = bit_and r28 r27
244 trace_scope 0 r27 r26 1
245 trace_line 0 r27 r26 L19
246 r28 = bit_clear r28 r27
247 trace_scope 0 r27 r26 -1
248 r31 = bit_and r30 r28
249 trace_line 0 r31 r26 L20
250 r33 = add_i32 r32 r16
251 r32 = select r31 r33 r32
252 trace_var 0 r31 r26 $22 = r32
253 trace_scope 0 r29 r26 -1
254 r28 = bit_or r27 r28
255 r27 = bit_and r30 r28
256 trace_line 0 r27 r26 L18
257 trace_var 0 r27 r26 $23 = r17
258 trace_scope 0 r27 r26 1
259 trace_line 0 r27 r26 L19
260 r29 = gt_i32 r25 r17
261 r29 = bit_and r30 r29
262 r29 = bit_and r28 r29
263 trace_scope 0 r29 r26 1
264 trace_line 0 r29 r26 L19
265 r28 = bit_clear r28 r29
266 trace_scope 0 r29 r26 -1
267 r31 = bit_and r30 r28
268 trace_line 0 r31 r26 L20
269 r33 = add_i32 r32 r17
270 r32 = select r31 r33 r32
271 trace_var 0 r31 r26 $22 = r32
272 trace_scope 0 r27 r26 -1
273 r28 = bit_or r29 r28
274 r29 = bit_and r30 r28
275 trace_line 0 r29 r26 L18
276 trace_var 0 r29 r26 $23 = r18
277 trace_scope 0 r29 r26 1
278 trace_line 0 r29 r26 L19
279 r27 = gt_i32 r25 r18
280 r27 = bit_and r30 r27
281 r27 = bit_and r28 r27
282 trace_scope 0 r27 r26 1
283 trace_line 0 r27 r26 L19
284 r28 = bit_clear r28 r27
285 trace_scope 0 r27 r26 -1
286 r31 = bit_and r30 r28
287 trace_line 0 r31 r26 L20
288 r33 = add_i32 r32 r18
289 r32 = select r31 r33 r32
290 trace_var 0 r31 r26 $22 = r32
291 trace_scope 0 r29 r26 -1
292 r28 = bit_or r27 r28
293 r27 = bit_and r30 r28
294 trace_line 0 r27 r26 L18
295 trace_var 0 r27 r26 $23 = r14
296 trace_scope 0 r27 r26 1
297 trace_line 0 r27 r26 L19
298 r29 = gt_i32 r25 r14
299 r29 = bit_and r30 r29
300 r29 = bit_and r28 r29
301 trace_scope 0 r29 r26 1
302 trace_line 0 r29 r26 L19
303 r28 = bit_clear r28 r29
304 trace_scope 0 r29 r26 -1
305 r31 = bit_and r30 r28
306 trace_line 0 r31 r26 L20
307 r33 = add_i32 r32 r14
308 r32 = select r31 r33 r32
309 trace_var 0 r31 r26 $22 = r32
310 trace_scope 0 r27 r26 -1
311 r28 = bit_or r29 r28
312 r29 = bit_and r30 r28
313 trace_line 0 r29 r26 L18
314 trace_var 0 r29 r26 $23 = r19
315 trace_scope 0 r29 r26 1
316 trace_line 0 r29 r26 L19
317 r27 = gt_i32 r25 r19
318 r27 = bit_and r30 r27
319 r27 = bit_and r28 r27
320 trace_scope 0 r27 r26 1
321 trace_line 0 r27 r26 L19
322 r28 = bit_clear r28 r27
323 trace_scope 0 r27 r26 -1
324 r31 = bit_and r30 r28
325 trace_line 0 r31 r26 L20
326 r33 = add_i32 r32 r19
327 r32 = select r31 r33 r32
328 trace_var 0 r31 r26 $22 = r32
329 trace_scope 0 r29 r26 -1
330 r28 = bit_or r27 r28
331 r27 = bit_and r30 r28
332 trace_line 0 r27 r26 L18
333 trace_var 0 r27 r26 $23 = r20
334 trace_scope 0 r27 r26 1
335 trace_line 0 r27 r26 L19
336 r29 = gt_i32 r25 r20
337 r29 = bit_and r30 r29
338 r29 = bit_and r28 r29
339 trace_scope 0 r29 r26 1
340 trace_line 0 r29 r26 L19
341 r28 = bit_clear r28 r29
342 trace_scope 0 r29 r26 -1
343 r31 = bit_and r30 r28
344 trace_line 0 r31 r26 L20
345 r33 = add_i32 r32 r20
346 r32 = select r31 r33 r32
347 trace_var 0 r31 r26 $22 = r32
348 trace_scope 0 r27 r26 -1
349 r28 = bit_or r29 r28
350 r29 = bit_and r30 r28
351 trace_line 0 r29 r26 L18
352 trace_var 0 r29 r26 $23 = r21
353 trace_scope 0 r29 r26 1
354 trace_line 0 r29 r26 L19
355 r27 = gt_i32 r25 r21
356 r27 = bit_and r30 r27
357 r27 = bit_and r28 r27
358 trace_scope 0 r27 r26 1
359 trace_line 0 r27 r26 L19
360 r28 = bit_clear r28 r27
361 trace_scope 0 r27 r26 -1
362 r31 = bit_and r30 r28
363 trace_line 0 r31 r26 L20
364 r33 = add_i32 r32 r21
365 r32 = select r31 r33 r32
366 trace_var 0 r31 r26 $22 = r32
367 trace_scope 0 r29 r26 -1
368 r28 = bit_or r27 r28
369 r27 = bit_and r30 r28
370 trace_line 0 r27 r26 L18
371 trace_var 0 r27 r26 $23 = r22
372 trace_scope 0 r27 r26 1
373 trace_line 0 r27 r26 L19
374 r25 = gt_i32 r25 r22
375 r25 = bit_and r30 r25
376 r25 = bit_and r28 r25
377 trace_scope 0 r25 r26 1
378 trace_line 0 r25 r26 L19
379 r28 = bit_clear r28 r25
380 trace_scope 0 r25 r26 -1
381 r29 = bit_and r30 r28
382 trace_line 0 r29 r26 L20
383 r31 = add_i32 r32 r22
384 r32 = select r29 r31 r32
385 trace_var 0 r29 r26 $22 = r32
386 trace_scope 0 r27 r26 -1
387 r28 = bit_or r25 r28
388 r28 = bit_and r30 r28
389 trace_line 0 r28 r26 L18
390 trace_scope 0 r30 r26 -1
391 trace_line 0 r30 r26 L22
392 r32 = bit_and r30 r32
393 trace_var 0 r30 r26 $20 = r32
394 trace_scope 0 r30 r26 -1
395 trace_exit 0 r30 r26 F2
396 r32 = eq_i32 r32 r23
397 r32 = bit_and r30 r32
398 trace_enter 0 r32 r26 F3
399 trace_var 0 r32 r26 $25 = r14
400 trace_scope 0 r32 r26 1
401 trace_line 0 r32 r26 L27
402 trace_var 0 r32 r26 $26 = r9
403 trace_line 0 r32 r26 L28
404 trace_var 0 r32 r26 $27 = r15
405 trace_line 0 r32 r26 L29
406 trace_scope 0 r32 r26 1
407 trace_var 0 r32 r26 $28 = r9
408 trace_scope 0 r32 r26 1
409 trace_line 0 r32 r26 L30
410 trace_line 0 r32 r26 L31
411 trace_scope 0 r32 r26 -1
412 trace_line 0 r32 r26 L29
413 trace_var 0 r32 r26 $28 = r15
414 trace_scope 0 r32 r26 1
415 trace_line 0 r32 r26 L30
416 trace_line 0 r32 r26 L31
417 r30 = bit_and r32 r15
418 trace_var 0 r32 r26 $26 = r30
419 trace_scope 0 r32 r26 -1
420 trace_line 0 r32 r26 L29
421 trace_var 0 r32 r26 $28 = r16
422 trace_scope 0 r32 r26 1
423 trace_line 0 r32 r26 L30
424 trace_line 0 r32 r26 L31
425 r28 = add_i32 r30 r16
426 r30 = select r32 r28 r30
427 trace_var 0 r32 r26 $26 = r30
428 trace_scope 0 r32 r26 -1
429 trace_line 0 r32 r26 L29
430 trace_var 0 r32 r26 $28 = r17
431 trace_scope 0 r32 r26 1
432 trace_line 0 r32 r26 L30
433 trace_line 0 r32 r26 L31
434 r28 = add_i32 r30 r17
435 r30 = select r32 r28 r30
436 trace_var 0 r32 r26 $26 = r30
437 trace_scope 0 r32 r26 -1
438 trace_line 0 r32 r26 L29
439 trace_var 0 r32 r26 $28 = r18
440 trace_scope 0 r32 r26 1
441 trace_line 0 r32 r26 L30
442 trace_line 0 r32 r26 L31
443 r28 = add_i32 r30 r18
444 r30 = select r32 r28 r30
445 trace_var 0 r32 r26 $26 = r30
446 trace_scope 0 r32 r26 -1
447 trace_line 0 r32 r26 L29
448 trace_var 0 r32 r26 $28 = r14
449 trace_scope 0 r32 r26 1
450 trace_line 0 r32 r26 L30
451 trace_line 0 r32 r26 L31
452 r28 = add_i32 r30 r14
453 r30 = select r32 r28 r30
454 trace_var 0 r32 r26 $26 = r30
455 trace_scope 0 r32 r26 -1
456 trace_line 0 r32 r26 L29
457 trace_var 0 r32 r26 $28 = r19
458 trace_scope 0 r32 r26 1
459 trace_line 0 r32 r26 L30
460 trace_scope 0 r32 r26 1
461 trace_line 0 r32 r26 L30
462 trace_scope 0 r32 r26 -1
463 trace_scope 0 r32 r26 -1
464 trace_scope 0 r32 r26 -1
465 trace_line 0 r32 r26 L33
466 r30 = bit_and r32 r30
467 trace_var 0 r32 r26 $24 = r30
468 trace_scope 0 r32 r26 -1
469 trace_exit 0 r32 r26 F3
470 r30 = eq_i32 r30 r24
471 r30 = bit_and r32 r30
472 trace_enter 0 r30 r26 F4
473 trace_scope 0 r30 r26 1
474 trace_line 0 r30 r26 L38
475 trace_line 0 r30 r26 L39
476 trace_line 0 r30 r26 L41
477 trace_var 0 r30 r26 $30 = r22
478 trace_var 0 r30 r26 $31 = r22
479 trace_var 0 r30 r26 $32 = r22
480 trace_var 0 r30 r26 $33 = r22
481 trace_line 0 r30 r26 L42
482 trace_scope 0 r30 r26 1
483 trace_var 0 r30 r26 $34 = r15
484 trace_scope 0 r30 r26 1
485 trace_line 0 r30 r26 L43
486 r32 = select r30 r15 r22
487 trace_var 0 r30 r26 $33 = r32
488 trace_scope 0 r30 r26 -1
489 trace_line 0 r30 r26 L42
490 trace_var 0 r30 r26 $34 = r16
491 trace_scope 0 r30 r26 1
492 trace_line 0 r30 r26 L43
493 r28 = select r30 r32 r22
494 trace_var 0 r30 r26 $32 = r28
495 r32 = select r30 r16 r32
496 trace_var 0 r30 r26 $33 = r32
497 trace_scope 0 r30 r26 -1
498 trace_line 0 r30 r26 L42
499 trace_var 0 r30 r26 $34 = r17
500 trace_scope 0 r30 r26 1
501 trace_line 0 r30 r26 L43
502 r25 = select r30 r28 r22
503 trace_var 0 r30 r26 $31 = r25
504 r28 = select r30 r32 r28
505 trace_var 0 r30 r26 $32 = r28
506 r32 = select r30 r17 r32
507 trace_var 0 r30 r26 $33 = r32
508 trace_scope 0 r30 r26 -1
509 trace_line 0 r30 r26 L42
510 trace_scope 0 r30 r26 -1
511 trace_line 0 r30 r26 L45
512 r25 = eq_i32 r25 r15
513 r28 = eq_i32 r28 r16
514 r32 = eq_i32 r32 r17
515 r28 = bit_and r25 r28
516 r28 = bit_and r32 r28
517 r28 = bit_and r30 r28
518 trace_var 0 r30 r26 $29 = r28
519 trace_scope 0 r30 r26 -1
520 trace_exit 0 r30 r26 F4
521 r28 = bit_and r30 r28
522 trace_enter 0 r28 r26 F5
523 trace_scope 0 r28 r26 1
524 trace_line 0 r28 r26 L50
525 trace_line 0 r28 r26 L51
526 trace_line 0 r28 r26 L53
527 trace_var 0 r28 r26 $36 = r22
528 trace_var 0 r28 r26 $37 = r22
529 trace_var 0 r28 r26 $38 = r22
530 trace_var 0 r28 r26 $39 = r22
531 trace_line 0 r28 r26 L54
532 trace_scope 0 r28 r26 1
533 trace_var 0 r28 r26 $40 = r15
534 trace_scope 0 r28 r26 1
535 trace_line 0 r28 r26 L55
536 r30 = select r28 r15 r22
537 trace_var 0 r28 r26 $39 = r30
538 trace_scope 0 r28 r26 -1
539 trace_line 0 r28 r26 L54
540 trace_var 0 r28 r26 $40 = r16
541 trace_scope 0 r28 r26 1
542 trace_line 0 r28 r26 L55
543 r32 = select r28 r30 r22
544 trace_var 0 r28 r26 $38 = r32
545 r30 = select r28 r16 r30
546 trace_var 0 r28 r26 $39 = r30
547 trace_scope 0 r28 r26 -1
548 trace_line 0 r28 r26 L54
549 trace_var 0 r28 r26 $40 = r17
550 trace_scope 0 r28 r26 1
551 trace_line 0 r28 r26 L55
552 r25 = select r28 r32 r22
553 trace_var 0 r28 r26 $37 = r25
554 r32 = select r28 r30 r32
555 trace_var 0 r28 r26 $38 = r32
556 r30 = select r28 r17 r30
557 trace_var 0 r28 r26 $39 = r30
558 trace_scope 0 r28 r26 -1
559 trace_line 0 r28 r26 L54
560 trace_scope 0 r28 r26 -1
561 trace_line 0 r28 r26 L57
562 r25 = eq_i32 r25 r15
563 r32 = eq_i32 r32 r16
564 r30 = eq_i32 r30 r17
565 r32 = bit_and r25 r32
566 r32 = bit_and r30 r32
567 r32 = bit_and r28 r32
568 trace_var 0 r28 r26 $35 = r32
569 trace_scope 0 r28 r26 -1
570 trace_exit 0 r28 r26 F5
571 r32 = bit_and r28 r32
572 trace_enter 0 r32 r26 F6
573 trace_scope 0 r32 r26 1
574 trace_line 0 r32 r26 L62
575 trace_line 0 r32 r26 L63
576 trace_line 0 r32 r26 L65
577 trace_var 0 r32 r26 $42 = r22
578 trace_var 0 r32 r26 $43 = r22
579 trace_var 0 r32 r26 $44 = r22
580 trace_var 0 r32 r26 $45 = r22
581 trace_line 0 r32 r26 L66
582 trace_scope 0 r32 r26 1
583 trace_var 0 r32 r26 $46 = r17
584 trace_scope 0 r32 r26 1
585 trace_line 0 r32 r26 L67
586 r28 = select r32 r17 r22
587 trace_var 0 r32 r26 $45 = r28
588 trace_scope 0 r32 r26 -1
589 trace_line 0 r32 r26 L66
590 trace_var 0 r32 r26 $46 = r16
591 trace_scope 0 r32 r26 1
592 trace_line 0 r32 r26 L67
593 r30 = select r32 r28 r22
594 trace_var 0 r32 r26 $44 = r30
595 r28 = select r32 r16 r28
596 trace_var 0 r32 r26 $45 = r28
597 trace_scope 0 r32 r26 -1
598 trace_line 0 r32 r26 L66
599 trace_var 0 r32 r26 $46 = r15
600 trace_scope 0 r32 r26 1
601 trace_line 0 r32 r26 L67
602 r25 = select r32 r30 r22
603 trace_var 0 r32 r26 $43 = r25
604 r30 = select r32 r28 r30
605 trace_var 0 r32 r26 $44 = r30
606 r28 = select r32 r15 r28
607 trace_var 0 r32 r26 $45 = r28
608 trace_scope 0 r32 r26 -1
609 trace_line 0 r32 r26 L66
610 trace_scope 0 r32 r26 -1
611 trace_line 0 r32 r26 L69
612 r25 = eq_i32 r25 r17
613 r30 = eq_i32 r30 r16
614 r28 = eq_i32 r28 r15
615 r30 = bit_and r25 r30
616 r30 = bit_and r28 r30
617 r30 = bit_and r32 r30
618 trace_var 0 r32 r26 $41 = r30
619 trace_scope 0 r32 r26 -1
620 trace_exit 0 r32 r26 F6
621 r30 = bit_and r32 r30
622 trace_enter 0 r30 r26 F7
623 trace_scope 0 r30 r26 1
624 trace_line 0 r30 r26 L74
625 trace_line 0 r30 r26 L75
626 trace_line 0 r30 r26 L77
627 trace_var 0 r30 r26 $48 = r22
628 trace_var 0 r30 r26 $49 = r22
629 trace_var 0 r30 r26 $50 = r22
630 trace_var 0 r30 r26 $51 = r22
631 trace_line 0 r30 r26 L78
632 trace_scope 0 r30 r26 1
633 trace_var 0 r30 r26 $52 = r17
634 trace_scope 0 r30 r26 1
635 trace_line 0 r30 r26 L79
636 r32 = select r30 r17 r22
637 trace_var 0 r30 r26 $51 = r32
638 trace_scope 0 r30 r26 -1
639 trace_line 0 r30 r26 L78
640 trace_var 0 r30 r26 $52 = r16
641 trace_scope 0 r30 r26 1
642 trace_line 0 r30 r26 L79
643 r28 = select r30 r32 r22
644 trace_var 0 r30 r26 $50 = r28
645 r32 = select r30 r16 r32
646 trace_var 0 r30 r26 $51 = r32
647 trace_scope 0 r30 r26 -1
648 trace_line 0 r30 r26 L78
649 trace_var 0 r30 r26 $52 = r15
650 trace_scope 0 r30 r26 1
651 trace_line 0 r30 r26 L79
652 r25 = select r30 r28 r22
653 trace_var 0 r30 r26 $49 = r25
654 r28 = select r30 r32 r28
655 trace_var 0 r30 r26 $50 = r28
656 r32 = select r30 r15 r32
657 trace_var 0 r30 r26 $51 = r32
658 trace_scope 0 r30 r26 -1
659 trace_line 0 r30 r26 L78
660 trace_scope 0 r30 r26 -1
661 trace_line 0 r30 r26 L81
662 r25 = eq_i32 r25 r17
663 r28 = eq_i32 r28 r16
664 r32 = eq_i32 r32 r15
665 r28 = bit_and r25 r28
666 r28 = bit_and r32 r28
667 r28 = bit_and r30 r28
668 trace_var 0 r30 r26 $47 = r28
669 trace_scope 0 r30 r26 -1
670 trace_exit 0 r30 r26 F7
671 r28 = bit_and r30 r28
672 trace_enter 0 r28 r26 F8
673 trace_scope 0 r28 r26 1
674 trace_line 0 r28 r26 L97
675 trace_line 0 r28 r26 L99
676 trace_var 0 r28 r26 $54 = r22
677 trace_var 0 r28 r26 $55 = r22
678 trace_var 0 r28 r26 $56 = r22
679 trace_var 0 r28 r26 $57 = r22
680 trace_line 0 r28 r26 L100
681 trace_scope 0 r28 r26 1
682 trace_var 0 r28 r26 $58 = r15
683 trace_scope 0 r28 r26 1
684 trace_line 0 r28 r26 L101
685 r30 = select r28 r15 r22
686 trace_var 0 r28 r26 $57 = r30
687 trace_scope 0 r28 r26 -1
688 trace_line 0 r28 r26 L100
689 trace_scope 0 r28 r26 -1
690 trace_line 0 r28 r26 L103
691 r30 = eq_i32 r30 r15
692 r30 = bit_and r28 r30
693 trace_var 0 r28 r26 $53 = r30
694 trace_scope 0 r28 r26 -1
695 trace_exit 0 r28 r26 F8
696 r30 = bit_and r28 r30
697 trace_enter 0 r30 r26 F9
698 trace_scope 0 r30 r26 1
699 trace_line 0 r30 r26 L86
700 trace_line 0 r30 r26 L88
701 trace_var 0 r30 r26 $60 = r22
702 trace_var 0 r30 r26 $61 = r22
703 trace_var 0 r30 r26 $62 = r22
704 trace_var 0 r30 r26 $63 = r22
705 trace_line 0 r30 r26 L89
706 trace_scope 0 r30 r26 1
707 trace_var 0 r30 r26 $64 = r15
708 trace_scope 0 r30 r26 1
709 trace_line 0 r30 r26 L90
710 r28 = select r30 r15 r22
711 trace_var 0 r30 r26 $63 = r28
712 trace_scope 0 r30 r26 -1
713 trace_line 0 r30 r26 L89
714 trace_var 0 r30 r26 $64 = r16
715 trace_scope 0 r30 r26 1
716 trace_line 0 r30 r26 L90
717 r32 = select r30 r28 r22
718 trace_var 0 r30 r26 $62 = r32
719 r28 = select r30 r16 r28
720 trace_var 0 r30 r26 $63 = r28
721 trace_scope 0 r30 r26 -1
722 trace_line 0 r30 r26 L89
723 trace_var 0 r30 r26 $64 = r17
724 trace_scope 0 r30 r26 1
725 trace_line 0 r30 r26 L90
726 r25 = select r30 r32 r22
727 trace_var 0 r30 r26 $61 = r25
728 r32 = select r30 r28 r32
729 trace_var 0 r30 r26 $62 = r32
730 r28 = select r30 r17 r28
731 trace_var 0 r30 r26 $63 = r28
732 trace_scope 0 r30 r26 -1
733 trace_line 0 r30 r26 L89
734 trace_scope 0 r30 r26 -1
735 trace_line 0 r30 r26 L92
736 r25 = eq_i32 r25 r15
737 r32 = eq_i32 r32 r16
738 r28 = eq_i32 r28 r17
739 r32 = bit_and r25 r32
740 r32 = bit_and r28 r32
741 r32 = bit_and r30 r32
742 trace_var 0 r30 r26 $59 = r32
743 trace_scope 0 r30 r26 -1
744 trace_exit 0 r30 r26 F9
745 r32 = bit_and r30 r32
746 r30 = select r32 r5 r1
747 r28 = select r32 r6 r2
748 r25 = select r32 r7 r3
749 r32 = select r32 r8 r4
750 trace_var 0 r26 r26 $10 = r30
751 trace_var 0 r26 r26 $11 = r28
752 trace_var 0 r26 r26 $12 = r25
753 trace_var 0 r26 r26 $13 = r32
754 trace_scope 0 r26 r26 -1
755 trace_exit 0 r26 r26 F0
756 store32 ptr1 r30
757 store32 ptr2 r28
758 store32 ptr3 r25
759 store32 ptr4 r32