Allow setting a trace coordinate without a skvm::Builder.

SkRuntimeEffect users will be insulated from skvm and the Builder, so
they won't be able to make an skvm::Coord directly. Replace this with
an SkIPoint, and do the conversion inside the SkVM code generator.

This also removes the requirement of assigning a trace coordinate; if
no trace coordinate is set, (0, 0) will be used.

Change-Id: I97be025d0ea146a86655cc3cdb76726f3bbc2324
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474556
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This commit is contained in:
John Stiles 2021-11-29 15:36:01 -05:00 committed by SkCQ
parent f740bdd7df
commit f57140768e
9 changed files with 468 additions and 478 deletions

View File

@ -383,12 +383,6 @@ ResultCode processCommand(std::vector<SkSL::String>& args) {
return compileProgram(
[&](SkSL::Compiler&, SkSL::Program& program, SkSL::OutputStream& out) {
skvm::Builder builder{skvm::Features{}};
if (debugInfo) {
// Debug traces will only be created if we choose a pixel.
// Set an arbitrary trace pixel of (100, 100).
debugInfo->setTraceCoord(skvm::Coord{builder.splat(100.0f),
builder.splat(100.0f)});
}
if (!SkSL::testingOnly_ProgramToSkVMShader(program, &builder,
debugInfo.get())) {
return false;

View File

@ -353,17 +353,17 @@ void SkVMGenerator::setupGlobals(SkSpan<skvm::Val> uniforms, skvm::Coord device)
// Copy the program source into the debug info so that it will be written in the trace file.
fDebugInfo->setSource(*fProgram.fSource);
// The SkVM blitter generates centered pixel coordinates. (0.5, 1.5, 2.5, 3.5, etc.)
// Add 0.5 to the requested trace coordinate to match this.
skvm::Coord traceCoord = {to_F32(fBuilder->splat(fDebugInfo->fTraceCoord.fX)) + 0.5f,
to_F32(fBuilder->splat(fDebugInfo->fTraceCoord.fY)) + 0.5f};
// If we are debugging, we need to create a trace mask. This will be true when the current
// device coordinates match the requested trace coordinates.
if (fDebugInfo->fTraceCoord) {
// Evaluate each side of '&' explicitly, to guarantee consistent order of evaluation:
skvm::I32 xMask = (device.x == fDebugInfo->fTraceCoord.x),
yMask = (device.y == fDebugInfo->fTraceCoord.y);
fTraceMask = xMask & yMask;
} else {
// No debug coordinates were specified, so tracing will never occur.
fTraceMask = fBuilder->splat(0);
}
// device coordinates match the requested trace coordinates. We calculate each mask
// individually to guarantee consistent order-of-evaluation.
skvm::I32 xMask = (device.x == traceCoord.x),
yMask = (device.y == traceCoord.y);
fTraceMask = xMask & yMask;
}
// Add storage for each global variable (including uniforms) to fSlots, and entries in

View File

@ -14,10 +14,8 @@
namespace SkSL {
void SkVMDebugInfo::setTraceCoord(skvm::Coord coord) {
// The SkVM blitter generates centered pixel coordinates. (0.5, 1.5, 2.5, 3.5, etc.)
// Add 0.5 to the requested trace coordinate to match this.
fTraceCoord = {coord.x + 0.5, coord.y + 0.5};
void SkVMDebugInfo::setTraceCoord(const SkIPoint& coord) {
fTraceCoord = coord;
}
void SkVMDebugInfo::setSource(std::string source) {

View File

@ -8,6 +8,7 @@
#ifndef SKVMDEBUGINFO
#define SKVMDEBUGINFO
#include "include/core/SkPoint.h"
#include "src/core/SkVM.h"
#include "src/sksl/ir/SkSLType.h"
@ -40,10 +41,9 @@ struct SkVMFunctionInfo {
class SkVMDebugInfo {
public:
/**
* Sets the device-coordinate pixel to trace. Callers should set this before compilation.
* If it's not set, the debugger will not emit trace data.
* Sets the device-coordinate pixel to trace. If it's not set, the point at (0, 0) will be used.
*/
void setTraceCoord(skvm::Coord coord);
void setTraceCoord(const SkIPoint& coord);
/** Attaches the SkSL source to be debugged. */
void setSource(std::string source);
@ -55,14 +55,15 @@ public:
/** Write a human-readable dump of the DebugInfo to a .skvm file. */
void dump(SkWStream* o) const;
/** The device-coordinate pixel to trace (controlled by setTraceCoord) */
SkIPoint fTraceCoord = {};
/** A 1:1 mapping of slot numbers to debug information. */
std::vector<SkVMSlotInfo> fSlotInfo;
std::vector<SkVMFunctionInfo> fFuncInfo;
/** The SkSL code, split line-by-line. */
std::vector<std::string> fSource;
skvm::Coord fTraceCoord;
};
} // namespace SkSL

View File

@ -1005,8 +1005,6 @@ int main() {
const SkSL::FunctionDefinition* main = SkSL::Program_GetFunction(*program, "main");
SkSL::SkVMDebugInfo debugInfo;
skvm::Coord zero = {b.splat(0.0f), b.splat(0.0f)};
debugInfo.setTraceCoord(zero);
SkSL::ProgramToSkVM(*program, *main, &b, &debugInfo, /*uniforms=*/{});
skvm::Program p = b.done();
REPORTER_ASSERT(r, p.nargs() == 1);

View File

@ -41,104 +41,104 @@ F3 = float index_by_complex_loop()
F4 = float index_out_of_bounds_checked()
54 registers, 171 instructions:
0 r0 = splat 42C90000 (100.5)
1 r1 = uniform32 ptr0 0
2 r2 = uniform32 ptr0 4
3 r3 = uniform32 ptr0 8
4 r4 = uniform32 ptr0 C
5 r5 = uniform32 ptr0 10
6 r6 = uniform32 ptr0 14
7 r7 = uniform32 ptr0 18
8 r8 = uniform32 ptr0 1C
9 r9 = uniform32 ptr0 20
10 r10 = uniform32 ptr0 24
11 r11 = uniform32 ptr0 28
12 r12 = uniform32 ptr0 2C
13 r13 = uniform32 ptr0 30
14 r14 = uniform32 ptr0 34
15 r15 = uniform32 ptr0 38
16 r16 = uniform32 ptr0 3C
17 r17 = uniform32 ptr0 40
18 r18 = uniform32 ptr0 44
19 r19 = uniform32 ptr0 48
20 r20 = uniform32 ptr0 4C
21 r21 = uniform32 ptr0 50
22 r22 = uniform32 ptr0 54
23 r23 = uniform32 ptr0 58
24 r24 = uniform32 ptr0 5C
25 r25 = uniform32 ptr0 60
26 r26 = uniform32 ptr0 64
27 r27 = uniform32 ptr0 68
28 r28 = uniform32 ptr0 6C
29 r29 = uniform32 ptr0 70
30 r30 = splat 0 (0)
31 r31 = eq_f32 r0 r1
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 = uniform32 ptr0 24
10 r10 = uniform32 ptr0 28
11 r11 = uniform32 ptr0 2C
12 r12 = uniform32 ptr0 30
13 r13 = uniform32 ptr0 34
14 r14 = uniform32 ptr0 38
15 r15 = uniform32 ptr0 3C
16 r16 = uniform32 ptr0 40
17 r17 = uniform32 ptr0 44
18 r18 = uniform32 ptr0 48
19 r19 = uniform32 ptr0 4C
20 r20 = uniform32 ptr0 50
21 r21 = uniform32 ptr0 54
22 r22 = uniform32 ptr0 58
23 r23 = uniform32 ptr0 5C
24 r24 = uniform32 ptr0 60
25 r25 = uniform32 ptr0 64
26 r26 = uniform32 ptr0 68
27 r27 = uniform32 ptr0 6C
28 r28 = uniform32 ptr0 70
29 r29 = splat 0 (0)
30 r30 = splat 3F000000 (0.5)
31 r31 = eq_f32 r0 r30
32 r32 = splat 3 (4.2038954e-45)
33 r33 = splat 2 (2.8025969e-45)
34 r34 = add_f32 r8 r9
34 r34 = add_f32 r7 r8
35 r35 = splat 1 (1.4012985e-45)
36 r36 = add_f32 r7 r34
37 r37 = add_f32 r6 r36
36 r36 = add_f32 r6 r34
37 r37 = add_f32 r5 r36
38 r38 = splat 3F800000 (1)
39 r39 = mul_f32 r10 r10
40 r40 = mul_f32 r12 r39
41 r41 = mul_f32 r13 r40
39 r39 = mul_f32 r9 r9
40 r40 = mul_f32 r11 r39
41 r41 = mul_f32 r12 r40
42 r42 = splat C0133333 (-2.3)
43 r43 = splat 3FB33334 (1.4000001)
44 r44 = sub_f32 r30 r15
44 r44 = sub_f32 r29 r14
45 r45 = splat 40A33334 (5.1000004)
46 r46 = sub_f32 r44 r19
46 r46 = sub_f32 r44 r18
47 r47 = splat 410CCCCD (8.8000002)
48 r48 = sub_f32 r46 r22
48 r48 = sub_f32 r46 r21
49 r49 = splat 41480000 (12.5)
50 r50 = sub_f32 r48 r26
50 r50 = sub_f32 r48 r25
51 r51 = splat 4181999A (16.200001)
loop:
52 r52 = index
53 r53 = eq_f32 r0 r52
53 r53 = eq_f32 r52 r30
54 r53 = bit_and r53 r31
55 trace_var r53 $0 = r2
56 trace_var r53 $1 = r3
57 trace_var r53 $2 = r4
58 trace_var r53 $3 = r5
59 trace_var r53 $4 = r6
60 trace_var r53 $5 = r7
61 trace_var r53 $6 = r8
62 trace_var r53 $7 = r9
63 trace_var r53 $8 = r10
64 trace_var r53 $9 = r11
65 trace_var r53 $10 = r12
66 trace_var r53 $11 = r13
67 trace_var r53 $12 = r14
68 trace_var r53 $13 = r15
69 trace_var r53 $14 = r16
70 trace_var r53 $15 = r17
71 trace_var r53 $16 = r18
72 trace_var r53 $17 = r19
73 trace_var r53 $18 = r20
74 trace_var r53 $19 = r21
75 trace_var r53 $20 = r22
76 trace_var r53 $21 = r23
77 trace_var r53 $22 = r24
78 trace_var r53 $23 = r25
79 trace_var r53 $24 = r26
80 trace_var r53 $25 = r27
81 trace_var r53 $26 = r28
82 trace_var r53 $27 = r29
55 trace_var r53 $0 = r1
56 trace_var r53 $1 = r2
57 trace_var r53 $2 = r3
58 trace_var r53 $3 = r4
59 trace_var r53 $4 = r5
60 trace_var r53 $5 = r6
61 trace_var r53 $6 = r7
62 trace_var r53 $7 = r8
63 trace_var r53 $8 = r9
64 trace_var r53 $9 = r10
65 trace_var r53 $10 = r11
66 trace_var r53 $11 = r12
67 trace_var r53 $12 = r13
68 trace_var r53 $13 = r14
69 trace_var r53 $14 = r15
70 trace_var r53 $15 = r16
71 trace_var r53 $16 = r17
72 trace_var r53 $17 = r18
73 trace_var r53 $18 = r19
74 trace_var r53 $19 = r20
75 trace_var r53 $20 = r21
76 trace_var r53 $21 = r22
77 trace_var r53 $22 = r23
78 trace_var r53 $23 = r24
79 trace_var r53 $24 = r25
80 trace_var r53 $25 = r26
81 trace_var r53 $26 = r27
82 trace_var r53 $27 = r28
83 trace_enter r53 F0
84 trace_var r53 $28 = r52
85 trace_var r53 $29 = r1
85 trace_var r53 $29 = r0
86 trace_line r53 L38
87 trace_enter r53 F1
88 trace_line r53 L5
89 trace_exit r53 F1
90 trace_enter r53 F2
91 trace_line r53 L10
92 trace_var r53 $30 = r30
92 trace_var r53 $30 = r29
93 trace_line r53 L11
94 trace_var r53 $31 = r32
95 trace_line r53 L12
96 trace_var r53 $30 = r9
96 trace_var r53 $30 = r8
97 trace_line r53 L11
98 trace_var r53 $31 = r33
99 trace_line r53 L12
@ -148,7 +148,7 @@ loop:
103 trace_line r53 L12
104 trace_var r53 $30 = r36
105 trace_line r53 L11
106 trace_var r53 $31 = r30
106 trace_var r53 $31 = r29
107 trace_line r53 L12
108 trace_var r53 $30 = r37
109 trace_line r53 L11
@ -158,9 +158,9 @@ loop:
113 trace_line r53 L19
114 trace_var r53 $32 = r38
115 trace_line r53 L20
116 trace_var r53 $33 = r30
116 trace_var r53 $33 = r29
117 trace_line r53 L21
118 trace_var r53 $32 = r10
118 trace_var r53 $32 = r9
119 trace_line r53 L20
120 trace_var r53 $33 = r35
121 trace_line r53 L21
@ -178,7 +178,7 @@ loop:
133 trace_exit r53 F3
134 trace_enter r53 F4
135 trace_line r53 L28
136 trace_var r53 $34 = r30
136 trace_var r53 $34 = r29
137 trace_line r53 L29
138 trace_var r53 $35 = r42
139 trace_line r53 L30
@ -209,7 +209,7 @@ loop:
164 trace_line r53 L34
165 trace_exit r53 F4
166 trace_exit r53 F0
167 store32 ptr1 r2
167 store32 ptr1 r1
168 store32 ptr2 r37
169 store32 ptr3 r41
170 store32 ptr4 r50

View File

@ -65,19 +65,19 @@ F9 = bool loop_operator_eq()
F10 = bool loop_operator_ne()
43 registers, 799 instructions:
0 r0 = splat 42C90000 (100.5)
1 r1 = uniform32 ptr0 0
2 r2 = uniform32 ptr0 4
3 r3 = uniform32 ptr0 8
4 r4 = uniform32 ptr0 C
5 r5 = uniform32 ptr0 10
6 r6 = uniform32 ptr0 14
7 r7 = uniform32 ptr0 18
8 r8 = uniform32 ptr0 1C
9 r9 = uniform32 ptr0 20
10 r10 = splat 0 (0)
11 r11 = splat FFFFFFFF (nan)
12 r12 = eq_f32 r0 r1
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 41200000 (10)
14 r14 = splat 40A00000 (5)
15 r15 = splat 3F800000 (1)
@ -100,36 +100,36 @@ F10 = bool loop_operator_ne()
32 r32 = splat 3CCCCCCD (0.025)
loop:
33 r33 = index
34 r34 = eq_f32 r0 r33
34 r34 = eq_f32 r33 r11
35 r34 = bit_and r34 r12
36 trace_var r34 $0 = r2
37 trace_var r34 $1 = r3
38 trace_var r34 $2 = r4
39 trace_var r34 $3 = r5
40 trace_var r34 $4 = r6
41 trace_var r34 $5 = r7
42 trace_var r34 $6 = r8
43 trace_var r34 $7 = r9
44 trace_var r34 $8 = r10
36 trace_var r34 $0 = r1
37 trace_var r34 $1 = r2
38 trace_var r34 $2 = r3
39 trace_var r34 $3 = r4
40 trace_var r34 $4 = r5
41 trace_var r34 $5 = r6
42 trace_var r34 $6 = r7
43 trace_var r34 $7 = r8
44 trace_var r34 $8 = r9
45 trace_var r34 $9 = r13
46 trace_enter r34 F0
47 trace_var r34 $10 = r33
48 trace_var r34 $11 = r1
48 trace_var r34 $11 = r0
49 trace_line r34 L116
50 r33 = min_f32 r33 r9
51 r33 = max_f32 r7 r33
50 r33 = min_f32 r33 r8
51 r33 = max_f32 r6 r33
52 r33 = mul_f32 r33 r14
53 trace_var r34 $12 = r33
54 trace_line r34 L117
55 trace_enter r34 F1
56 trace_var r34 $13 = r33
57 trace_line r34 L8
58 trace_var r34 $14 = r10
58 trace_var r34 $14 = r9
59 trace_line r34 L9
60 r35 = eq_f32 r10 r33
60 r35 = eq_f32 r9 r33
61 r36 = bit_and r34 r35
62 trace_line r36 L9
63 r36 = bit_xor r11 r35
63 r36 = bit_xor r10 r35
64 r37 = bit_and r34 r36
65 trace_line r37 L8
66 trace_var r37 $14 = r15
@ -140,7 +140,7 @@ loop:
71 trace_line r36 L9
72 r36 = bit_and r15 r37
73 r37 = bit_or r35 r37
74 r35 = bit_xor r11 r37
74 r35 = bit_xor r10 r37
75 r38 = bit_and r34 r35
76 trace_line r38 L8
77 trace_var r38 $14 = r16
@ -151,7 +151,7 @@ loop:
82 trace_line r35 L9
83 r36 = select r38 r16 r36
84 r38 = bit_or r37 r38
85 r37 = bit_xor r11 r38
85 r37 = bit_xor r10 r38
86 r35 = bit_and r34 r37
87 trace_line r35 L8
88 trace_var r35 $14 = r17
@ -162,7 +162,7 @@ loop:
93 trace_line r37 L9
94 r36 = select r35 r17 r36
95 r35 = bit_or r38 r35
96 r38 = bit_xor r11 r35
96 r38 = bit_xor r10 r35
97 r37 = bit_and r34 r38
98 trace_line r37 L8
99 trace_var r37 $14 = r18
@ -173,7 +173,7 @@ loop:
104 trace_line r38 L9
105 r36 = select r37 r18 r36
106 r37 = bit_or r35 r37
107 r35 = bit_xor r11 r37
107 r35 = bit_xor r10 r37
108 r38 = bit_and r34 r35
109 trace_line r38 L8
110 trace_var r38 $14 = r14
@ -184,7 +184,7 @@ loop:
115 trace_line r35 L9
116 r36 = select r38 r14 r36
117 r38 = bit_or r37 r38
118 r37 = bit_xor r11 r38
118 r37 = bit_xor r10 r38
119 r35 = bit_and r34 r37
120 trace_line r35 L8
121 trace_var r35 $14 = r19
@ -195,7 +195,7 @@ loop:
126 trace_line r37 L9
127 r36 = select r35 r19 r36
128 r35 = bit_or r38 r35
129 r38 = bit_xor r11 r35
129 r38 = bit_xor r10 r35
130 r37 = bit_and r34 r38
131 trace_line r37 L8
132 trace_var r37 $14 = r20
@ -206,7 +206,7 @@ loop:
137 trace_line r38 L9
138 r36 = select r37 r20 r36
139 r37 = bit_or r35 r37
140 r35 = bit_xor r11 r37
140 r35 = bit_xor r10 r37
141 r38 = bit_and r34 r35
142 trace_line r38 L8
143 trace_var r38 $14 = r21
@ -217,7 +217,7 @@ loop:
148 trace_line r35 L9
149 r36 = select r38 r21 r36
150 r38 = bit_or r37 r38
151 r37 = bit_xor r11 r38
151 r37 = bit_xor r10 r38
152 r35 = bit_and r34 r37
153 trace_line r35 L8
154 trace_var r35 $14 = r22
@ -228,7 +228,7 @@ loop:
159 trace_line r37 L9
160 r36 = select r35 r22 r36
161 r35 = bit_or r38 r35
162 r35 = bit_xor r11 r35
162 r35 = bit_xor r10 r35
163 r38 = bit_and r34 r35
164 trace_line r38 L8
165 trace_line r38 L11
@ -239,15 +239,15 @@ loop:
170 trace_enter r36 F2
171 trace_var r36 $15 = r33
172 trace_line r36 L17
173 trace_var r36 $16 = r10
173 trace_var r36 $16 = r9
174 trace_line r36 L18
175 trace_var r36 $17 = r10
175 trace_var r36 $17 = r9
176 trace_line r36 L19
177 r38 = gt_f32 r33 r10
177 r38 = gt_f32 r33 r9
178 r38 = bit_and r35 r38
179 r37 = bit_and r34 r38
180 trace_line r37 L19
181 r37 = bit_xor r11 r38
181 r37 = bit_xor r10 r38
182 r39 = bit_and r35 r37
183 r39 = bit_and r34 r39
184 trace_line r39 L20
@ -262,7 +262,7 @@ loop:
193 r38 = bit_and r37 r38
194 r39 = bit_and r34 r38
195 trace_line r39 L19
196 r39 = bit_xor r11 r38
196 r39 = bit_xor r10 r38
197 r39 = bit_and r37 r39
198 r37 = bit_and r35 r39
199 r40 = bit_and r34 r37
@ -280,7 +280,7 @@ loop:
211 r38 = bit_and r39 r38
212 r40 = bit_and r34 r38
213 trace_line r40 L19
214 r40 = bit_xor r11 r38
214 r40 = bit_xor r10 r38
215 r40 = bit_and r39 r40
216 r39 = bit_and r35 r40
217 r41 = bit_and r34 r39
@ -299,7 +299,7 @@ loop:
230 r38 = bit_and r40 r38
231 r41 = bit_and r34 r38
232 trace_line r41 L19
233 r41 = bit_xor r11 r38
233 r41 = bit_xor r10 r38
234 r41 = bit_and r40 r41
235 r40 = bit_and r35 r41
236 r42 = bit_and r34 r40
@ -318,7 +318,7 @@ loop:
249 r38 = bit_and r41 r38
250 r42 = bit_and r34 r38
251 trace_line r42 L19
252 r42 = bit_xor r11 r38
252 r42 = bit_xor r10 r38
253 r42 = bit_and r41 r42
254 r41 = bit_and r35 r42
255 r39 = bit_and r34 r41
@ -337,7 +337,7 @@ loop:
268 r38 = bit_and r42 r38
269 r39 = bit_and r34 r38
270 trace_line r39 L19
271 r39 = bit_xor r11 r38
271 r39 = bit_xor r10 r38
272 r39 = bit_and r42 r39
273 r42 = bit_and r35 r39
274 r40 = bit_and r34 r42
@ -356,7 +356,7 @@ loop:
287 r38 = bit_and r39 r38
288 r40 = bit_and r34 r38
289 trace_line r40 L19
290 r40 = bit_xor r11 r38
290 r40 = bit_xor r10 r38
291 r40 = bit_and r39 r40
292 r39 = bit_and r35 r40
293 r41 = bit_and r34 r39
@ -375,7 +375,7 @@ loop:
306 r38 = bit_and r40 r38
307 r41 = bit_and r34 r38
308 trace_line r41 L19
309 r41 = bit_xor r11 r38
309 r41 = bit_xor r10 r38
310 r41 = bit_and r40 r41
311 r40 = bit_and r35 r41
312 r42 = bit_and r34 r40
@ -394,7 +394,7 @@ loop:
325 r38 = bit_and r41 r38
326 r42 = bit_and r34 r38
327 trace_line r42 L19
328 r42 = bit_xor r11 r38
328 r42 = bit_xor r10 r38
329 r42 = bit_and r41 r42
330 r41 = bit_and r35 r42
331 r39 = bit_and r34 r41
@ -413,7 +413,7 @@ loop:
344 r38 = bit_and r42 r38
345 r39 = bit_and r34 r38
346 trace_line r39 L19
347 r39 = bit_xor r11 r38
347 r39 = bit_xor r10 r38
348 r39 = bit_and r42 r39
349 r42 = bit_and r35 r39
350 r40 = bit_and r34 r42
@ -434,17 +434,17 @@ loop:
365 trace_enter r35 F3
366 trace_var r35 $18 = r33
367 trace_line r35 L27
368 trace_var r35 $19 = r10
368 trace_var r35 $19 = r9
369 trace_line r35 L28
370 trace_var r35 $20 = r15
371 trace_line r35 L29
372 trace_var r35 $21 = r10
372 trace_var r35 $21 = r9
373 trace_line r35 L30
374 r36 = gt_f32 r10 r33
374 r36 = gt_f32 r9 r33
375 r36 = bit_and r37 r36
376 r39 = bit_and r34 r36
377 trace_line r39 L30
378 r36 = bit_xor r11 r36
378 r36 = bit_xor r10 r36
379 r39 = bit_and r37 r36
380 r39 = bit_and r34 r39
381 trace_line r39 L31
@ -456,7 +456,7 @@ loop:
387 r39 = bit_and r36 r39
388 r38 = bit_and r34 r39
389 trace_line r38 L30
390 r39 = bit_xor r11 r39
390 r39 = bit_xor r10 r39
391 r39 = bit_and r36 r39
392 r36 = bit_and r37 r39
393 r38 = bit_and r34 r36
@ -471,7 +471,7 @@ loop:
402 r38 = bit_and r39 r38
403 r40 = bit_and r34 r38
404 trace_line r40 L30
405 r38 = bit_xor r11 r38
405 r38 = bit_xor r10 r38
406 r38 = bit_and r39 r38
407 r39 = bit_and r37 r38
408 r40 = bit_and r34 r39
@ -487,7 +487,7 @@ loop:
418 r40 = bit_and r38 r40
419 r41 = bit_and r34 r40
420 trace_line r41 L30
421 r40 = bit_xor r11 r40
421 r40 = bit_xor r10 r40
422 r40 = bit_and r38 r40
423 r38 = bit_and r37 r40
424 r41 = bit_and r34 r38
@ -503,7 +503,7 @@ loop:
434 r41 = bit_and r40 r41
435 r39 = bit_and r34 r41
436 trace_line r39 L30
437 r41 = bit_xor r11 r41
437 r41 = bit_xor r10 r41
438 r41 = bit_and r40 r41
439 r40 = bit_and r37 r41
440 r39 = bit_and r34 r40
@ -519,7 +519,7 @@ loop:
450 r39 = bit_and r41 r39
451 r38 = bit_and r34 r39
452 trace_line r38 L30
453 r39 = bit_xor r11 r39
453 r39 = bit_xor r10 r39
454 r39 = bit_and r41 r39
455 r41 = bit_and r37 r39
456 r38 = bit_and r34 r41
@ -535,7 +535,7 @@ loop:
466 r38 = bit_and r39 r38
467 r40 = bit_and r34 r38
468 trace_line r40 L30
469 r38 = bit_xor r11 r38
469 r38 = bit_xor r10 r38
470 r38 = bit_and r39 r38
471 r39 = bit_and r37 r38
472 r40 = bit_and r34 r39
@ -551,7 +551,7 @@ loop:
482 r40 = bit_and r38 r40
483 r41 = bit_and r34 r40
484 trace_line r41 L30
485 r40 = bit_xor r11 r40
485 r40 = bit_xor r10 r40
486 r40 = bit_and r38 r40
487 r38 = bit_and r37 r40
488 r41 = bit_and r34 r38
@ -567,7 +567,7 @@ loop:
498 r41 = bit_and r40 r41
499 r39 = bit_and r34 r41
500 trace_line r39 L30
501 r41 = bit_xor r11 r41
501 r41 = bit_xor r10 r41
502 r41 = bit_and r40 r41
503 r40 = bit_and r37 r41
504 r39 = bit_and r34 r40
@ -583,7 +583,7 @@ loop:
514 r33 = bit_and r41 r33
515 r39 = bit_and r34 r33
516 trace_line r39 L30
517 r33 = bit_xor r11 r33
517 r33 = bit_xor r10 r33
518 r33 = bit_and r41 r33
519 r33 = bit_and r37 r33
520 r41 = bit_and r34 r33
@ -600,7 +600,7 @@ loop:
531 r37 = bit_and r34 r36
532 trace_enter r37 F4
533 trace_line r37 L38
534 trace_var r37 $22 = r10
534 trace_var r37 $22 = r9
535 trace_line r37 L39
536 trace_var r37 $23 = r25
537 trace_line r37 L40
@ -856,10 +856,10 @@ loop:
787 r41 = bit_and r37 r41
788 trace_exit r35 F10
789 r41 = bit_and r37 r41
790 r37 = select r41 r6 r2
791 r35 = select r41 r7 r3
792 r36 = select r41 r8 r4
793 r41 = select r41 r9 r5
790 r37 = select r41 r5 r1
791 r35 = select r41 r6 r2
792 r36 = select r41 r7 r3
793 r41 = select r41 r8 r4
794 trace_exit r34 F0
795 store32 ptr1 r37
796 store32 ptr2 r35

View File

@ -62,19 +62,19 @@ F8 = bool loop_operator_eq()
F9 = bool loop_operator_ne()
35 registers, 751 instructions:
0 r0 = splat 42C90000 (100.5)
1 r1 = uniform32 ptr0 0
2 r2 = uniform32 ptr0 4
3 r3 = uniform32 ptr0 8
4 r4 = uniform32 ptr0 C
5 r5 = uniform32 ptr0 10
6 r6 = uniform32 ptr0 14
7 r7 = uniform32 ptr0 18
8 r8 = uniform32 ptr0 1C
9 r9 = uniform32 ptr0 20
10 r10 = splat 0 (0)
11 r11 = splat FFFFFFFF (nan)
12 r12 = eq_f32 r0 r1
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)
@ -89,24 +89,24 @@ F9 = bool loop_operator_ne()
24 r24 = splat F (2.1019477e-44)
loop:
25 r25 = index
26 r26 = eq_f32 r0 r25
26 r26 = eq_f32 r25 r11
27 r26 = bit_and r26 r12
28 trace_var r26 $0 = r2
29 trace_var r26 $1 = r3
30 trace_var r26 $2 = r4
31 trace_var r26 $3 = r5
32 trace_var r26 $4 = r6
33 trace_var r26 $5 = r7
34 trace_var r26 $6 = r8
35 trace_var r26 $7 = r9
36 trace_var r26 $8 = r10
28 trace_var r26 $0 = r1
29 trace_var r26 $1 = r2
30 trace_var r26 $2 = r3
31 trace_var r26 $3 = r4
32 trace_var r26 $4 = r5
33 trace_var r26 $5 = r6
34 trace_var r26 $6 = r7
35 trace_var r26 $7 = r8
36 trace_var r26 $8 = r9
37 trace_var r26 $9 = r13
38 trace_enter r26 F0
39 trace_var r26 $10 = r25
40 trace_var r26 $11 = r1
40 trace_var r26 $11 = r0
41 trace_line r26 L107
42 r25 = min_f32 r25 r9
43 r25 = max_f32 r7 r25
42 r25 = min_f32 r25 r8
43 r25 = max_f32 r6 r25
44 r25 = trunc r25
45 r25 = mul_i32 r25 r14
46 trace_var r26 $12 = r25
@ -114,12 +114,12 @@ loop:
48 trace_enter r26 F1
49 trace_var r26 $13 = r25
50 trace_line r26 L8
51 trace_var r26 $14 = r10
51 trace_var r26 $14 = r9
52 trace_line r26 L9
53 r27 = eq_i32 r10 r25
53 r27 = eq_i32 r9 r25
54 r28 = bit_and r26 r27
55 trace_line r28 L9
56 r28 = bit_xor r11 r27
56 r28 = bit_xor r10 r27
57 r29 = bit_and r26 r28
58 trace_line r29 L8
59 trace_var r29 $14 = r15
@ -130,7 +130,7 @@ loop:
64 trace_line r28 L9
65 r28 = bit_and r15 r29
66 r29 = bit_or r27 r29
67 r27 = bit_xor r11 r29
67 r27 = bit_xor r10 r29
68 r30 = bit_and r26 r27
69 trace_line r30 L8
70 trace_var r30 $14 = r16
@ -141,7 +141,7 @@ loop:
75 trace_line r27 L9
76 r28 = select r30 r16 r28
77 r30 = bit_or r29 r30
78 r29 = bit_xor r11 r30
78 r29 = bit_xor r10 r30
79 r27 = bit_and r26 r29
80 trace_line r27 L8
81 trace_var r27 $14 = r17
@ -152,7 +152,7 @@ loop:
86 trace_line r29 L9
87 r28 = select r27 r17 r28
88 r27 = bit_or r30 r27
89 r30 = bit_xor r11 r27
89 r30 = bit_xor r10 r27
90 r29 = bit_and r26 r30
91 trace_line r29 L8
92 trace_var r29 $14 = r18
@ -163,7 +163,7 @@ loop:
97 trace_line r30 L9
98 r28 = select r29 r18 r28
99 r29 = bit_or r27 r29
100 r27 = bit_xor r11 r29
100 r27 = bit_xor r10 r29
101 r30 = bit_and r26 r27
102 trace_line r30 L8
103 trace_var r30 $14 = r14
@ -174,7 +174,7 @@ loop:
108 trace_line r27 L9
109 r28 = select r30 r14 r28
110 r30 = bit_or r29 r30
111 r29 = bit_xor r11 r30
111 r29 = bit_xor r10 r30
112 r27 = bit_and r26 r29
113 trace_line r27 L8
114 trace_var r27 $14 = r19
@ -185,7 +185,7 @@ loop:
119 trace_line r29 L9
120 r28 = select r27 r19 r28
121 r27 = bit_or r30 r27
122 r30 = bit_xor r11 r27
122 r30 = bit_xor r10 r27
123 r29 = bit_and r26 r30
124 trace_line r29 L8
125 trace_var r29 $14 = r20
@ -196,7 +196,7 @@ loop:
130 trace_line r30 L9
131 r28 = select r29 r20 r28
132 r29 = bit_or r27 r29
133 r27 = bit_xor r11 r29
133 r27 = bit_xor r10 r29
134 r30 = bit_and r26 r27
135 trace_line r30 L8
136 trace_var r30 $14 = r21
@ -207,7 +207,7 @@ loop:
141 trace_line r27 L9
142 r28 = select r30 r21 r28
143 r30 = bit_or r29 r30
144 r29 = bit_xor r11 r30
144 r29 = bit_xor r10 r30
145 r27 = bit_and r26 r29
146 trace_line r27 L8
147 trace_var r27 $14 = r22
@ -218,7 +218,7 @@ loop:
152 trace_line r29 L9
153 r28 = select r27 r22 r28
154 r27 = bit_or r30 r27
155 r27 = bit_xor r11 r27
155 r27 = bit_xor r10 r27
156 r30 = bit_and r26 r27
157 trace_line r30 L8
158 trace_line r30 L11
@ -229,15 +229,15 @@ loop:
163 trace_enter r28 F2
164 trace_var r28 $15 = r25
165 trace_line r28 L17
166 trace_var r28 $16 = r10
166 trace_var r28 $16 = r9
167 trace_line r28 L18
168 trace_var r28 $17 = r10
168 trace_var r28 $17 = r9
169 trace_line r28 L19
170 r30 = gt_i32 r25 r10
170 r30 = gt_i32 r25 r9
171 r30 = bit_and r27 r30
172 r29 = bit_and r26 r30
173 trace_line r29 L19
174 r29 = bit_xor r11 r30
174 r29 = bit_xor r10 r30
175 r31 = bit_and r27 r29
176 r31 = bit_and r26 r31
177 trace_line r31 L20
@ -252,7 +252,7 @@ loop:
186 r30 = bit_and r29 r30
187 r31 = bit_and r26 r30
188 trace_line r31 L19
189 r31 = bit_xor r11 r30
189 r31 = bit_xor r10 r30
190 r31 = bit_and r29 r31
191 r29 = bit_and r27 r31
192 r32 = bit_and r26 r29
@ -270,7 +270,7 @@ loop:
204 r30 = bit_and r31 r30
205 r32 = bit_and r26 r30
206 trace_line r32 L19
207 r32 = bit_xor r11 r30
207 r32 = bit_xor r10 r30
208 r32 = bit_and r31 r32
209 r31 = bit_and r27 r32
210 r33 = bit_and r26 r31
@ -289,7 +289,7 @@ loop:
223 r30 = bit_and r32 r30
224 r33 = bit_and r26 r30
225 trace_line r33 L19
226 r33 = bit_xor r11 r30
226 r33 = bit_xor r10 r30
227 r33 = bit_and r32 r33
228 r32 = bit_and r27 r33
229 r34 = bit_and r26 r32
@ -308,7 +308,7 @@ loop:
242 r30 = bit_and r33 r30
243 r34 = bit_and r26 r30
244 trace_line r34 L19
245 r34 = bit_xor r11 r30
245 r34 = bit_xor r10 r30
246 r34 = bit_and r33 r34
247 r33 = bit_and r27 r34
248 r31 = bit_and r26 r33
@ -327,7 +327,7 @@ loop:
261 r30 = bit_and r34 r30
262 r31 = bit_and r26 r30
263 trace_line r31 L19
264 r31 = bit_xor r11 r30
264 r31 = bit_xor r10 r30
265 r31 = bit_and r34 r31
266 r34 = bit_and r27 r31
267 r32 = bit_and r26 r34
@ -346,7 +346,7 @@ loop:
280 r30 = bit_and r31 r30
281 r32 = bit_and r26 r30
282 trace_line r32 L19
283 r32 = bit_xor r11 r30
283 r32 = bit_xor r10 r30
284 r32 = bit_and r31 r32
285 r31 = bit_and r27 r32
286 r33 = bit_and r26 r31
@ -365,7 +365,7 @@ loop:
299 r30 = bit_and r32 r30
300 r33 = bit_and r26 r30
301 trace_line r33 L19
302 r33 = bit_xor r11 r30
302 r33 = bit_xor r10 r30
303 r33 = bit_and r32 r33
304 r32 = bit_and r27 r33
305 r34 = bit_and r26 r32
@ -384,7 +384,7 @@ loop:
318 r30 = bit_and r33 r30
319 r34 = bit_and r26 r30
320 trace_line r34 L19
321 r34 = bit_xor r11 r30
321 r34 = bit_xor r10 r30
322 r34 = bit_and r33 r34
323 r33 = bit_and r27 r34
324 r31 = bit_and r26 r33
@ -403,7 +403,7 @@ loop:
337 r30 = bit_and r34 r30
338 r31 = bit_and r26 r30
339 trace_line r31 L19
340 r31 = bit_xor r11 r30
340 r31 = bit_xor r10 r30
341 r31 = bit_and r34 r31
342 r34 = bit_and r27 r31
343 r32 = bit_and r26 r34
@ -424,17 +424,17 @@ loop:
358 trace_enter r27 F3
359 trace_var r27 $18 = r25
360 trace_line r27 L27
361 trace_var r27 $19 = r10
361 trace_var r27 $19 = r9
362 trace_line r27 L28
363 trace_var r27 $20 = r15
364 trace_line r27 L29
365 trace_var r27 $21 = r10
365 trace_var r27 $21 = r9
366 trace_line r27 L30
367 r28 = gt_i32 r10 r25
367 r28 = gt_i32 r9 r25
368 r28 = bit_and r29 r28
369 r31 = bit_and r26 r28
370 trace_line r31 L30
371 r28 = bit_xor r11 r28
371 r28 = bit_xor r10 r28
372 r31 = bit_and r29 r28
373 r31 = bit_and r26 r31
374 trace_line r31 L31
@ -446,7 +446,7 @@ loop:
380 r31 = bit_and r28 r31
381 r30 = bit_and r26 r31
382 trace_line r30 L30
383 r31 = bit_xor r11 r31
383 r31 = bit_xor r10 r31
384 r31 = bit_and r28 r31
385 r28 = bit_and r29 r31
386 r30 = bit_and r26 r28
@ -461,7 +461,7 @@ loop:
395 r30 = bit_and r31 r30
396 r32 = bit_and r26 r30
397 trace_line r32 L30
398 r30 = bit_xor r11 r30
398 r30 = bit_xor r10 r30
399 r30 = bit_and r31 r30
400 r31 = bit_and r29 r30
401 r32 = bit_and r26 r31
@ -477,7 +477,7 @@ loop:
411 r32 = bit_and r30 r32
412 r33 = bit_and r26 r32
413 trace_line r33 L30
414 r32 = bit_xor r11 r32
414 r32 = bit_xor r10 r32
415 r32 = bit_and r30 r32
416 r30 = bit_and r29 r32
417 r33 = bit_and r26 r30
@ -493,7 +493,7 @@ loop:
427 r33 = bit_and r32 r33
428 r31 = bit_and r26 r33
429 trace_line r31 L30
430 r33 = bit_xor r11 r33
430 r33 = bit_xor r10 r33
431 r33 = bit_and r32 r33
432 r32 = bit_and r29 r33
433 r31 = bit_and r26 r32
@ -509,7 +509,7 @@ loop:
443 r31 = bit_and r33 r31
444 r30 = bit_and r26 r31
445 trace_line r30 L30
446 r31 = bit_xor r11 r31
446 r31 = bit_xor r10 r31
447 r31 = bit_and r33 r31
448 r33 = bit_and r29 r31
449 r30 = bit_and r26 r33
@ -525,7 +525,7 @@ loop:
459 r30 = bit_and r31 r30
460 r32 = bit_and r26 r30
461 trace_line r32 L30
462 r30 = bit_xor r11 r30
462 r30 = bit_xor r10 r30
463 r30 = bit_and r31 r30
464 r31 = bit_and r29 r30
465 r32 = bit_and r26 r31
@ -541,7 +541,7 @@ loop:
475 r32 = bit_and r30 r32
476 r33 = bit_and r26 r32
477 trace_line r33 L30
478 r32 = bit_xor r11 r32
478 r32 = bit_xor r10 r32
479 r32 = bit_and r30 r32
480 r30 = bit_and r29 r32
481 r33 = bit_and r26 r30
@ -557,7 +557,7 @@ loop:
491 r33 = bit_and r32 r33
492 r31 = bit_and r26 r33
493 trace_line r31 L30
494 r33 = bit_xor r11 r33
494 r33 = bit_xor r10 r33
495 r33 = bit_and r32 r33
496 r32 = bit_and r29 r33
497 r31 = bit_and r26 r32
@ -573,7 +573,7 @@ loop:
507 r25 = bit_and r33 r25
508 r31 = bit_and r26 r25
509 trace_line r31 L30
510 r25 = bit_xor r11 r25
510 r25 = bit_xor r10 r25
511 r25 = bit_and r33 r25
512 r25 = bit_and r29 r25
513 r33 = bit_and r26 r25
@ -805,10 +805,10 @@ loop:
739 r33 = bit_and r27 r33
740 trace_exit r28 F9
741 r33 = bit_and r27 r33
742 r27 = select r33 r6 r2
743 r28 = select r33 r7 r3
744 r29 = select r33 r8 r4
745 r33 = select r33 r9 r5
742 r27 = select r33 r5 r1
743 r28 = select r33 r6 r2
744 r29 = select r33 r7 r3
745 r33 = select r33 r8 r4
746 trace_exit r26 F0
747 store32 ptr1 r27
748 store32 ptr2 r28

View File

@ -144,239 +144,238 @@ F5 = bool highp_param(float value)
F6 = bool mediump_param(half value)
F7 = bool lowp_param(half value)
22 registers, 234 instructions:
0 r0 = splat 3F000000 (0.5)
1 r1 = splat 42C90000 (100.5)
2 r2 = uniform32 ptr0 0
3 r3 = uniform32 ptr0 4
4 r4 = uniform32 ptr0 8
5 r5 = uniform32 ptr0 C
6 r6 = uniform32 ptr0 10
7 r7 = uniform32 ptr0 14
8 r8 = uniform32 ptr0 18
9 r9 = uniform32 ptr0 1C
10 r10 = uniform32 ptr0 20
11 r11 = splat 0 (0)
12 r12 = eq_f32 r1 r2
13 r13 = splat 3F800000 (1)
14 r14 = splat 2 (2.8025969e-45)
15 r15 = splat 40000000 (2)
16 r16 = splat 40400000 (3)
17 r17 = splat 40800000 (4)
18 r18 = splat 3 (4.2038954e-45)
19 r19 = splat 4 (5.6051939e-45)
21 registers, 233 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 3F000000 (0.5)
11 r11 = eq_f32 r0 r10
12 r12 = splat 3F800000 (1)
13 r13 = splat 2 (2.8025969e-45)
14 r14 = splat 40000000 (2)
15 r15 = splat 40400000 (3)
16 r16 = splat 40800000 (4)
17 r17 = splat 3 (4.2038954e-45)
18 r18 = splat 4 (5.6051939e-45)
loop:
20 r20 = index
21 r21 = eq_f32 r1 r20
22 r21 = bit_and r21 r12
23 trace_var r21 $0 = r3
24 trace_var r21 $1 = r4
25 trace_var r21 $2 = r5
26 trace_var r21 $3 = r6
27 trace_var r21 $4 = r7
28 trace_var r21 $5 = r8
29 trace_var r21 $6 = r9
30 trace_var r21 $7 = r10
31 trace_enter r21 F0
32 trace_var r21 $8 = r20
33 trace_var r21 $9 = r2
34 trace_line r21 L58
35 trace_var r21 $10 = r11
36 trace_var r21 $11 = r11
37 trace_var r21 $12 = r11
38 trace_var r21 $13 = r11
39 trace_line r21 L59
40 trace_var r21 $14 = r13
41 trace_var r21 $15 = r13
42 trace_var r21 $16 = r13
43 trace_var r21 $17 = r13
44 trace_line r21 L60
45 trace_var r21 $18 = r3
46 trace_var r21 $19 = r4
47 trace_var r21 $20 = r5
48 trace_var r21 $21 = r6
49 trace_line r21 L61
50 trace_line r21 L63
51 trace_var r21 $22 = r7
52 trace_var r21 $23 = r8
53 trace_var r21 $24 = r9
54 trace_var r21 $25 = r10
55 trace_line r21 L64
56 trace_line r21 L66
57 trace_enter r21 F1
58 trace_line r21 L6
59 trace_var r21 $26 = r0
60 trace_line r21 L7
61 trace_var r21 $27 = r0
62 trace_line r21 L8
63 trace_var r21 $28 = r14
64 trace_line r21 L9
65 trace_var r21 $29 = r14
66 trace_line r21 L11
67 trace_exit r21 F1
68 trace_enter r21 F2
69 trace_line r21 L15
70 trace_var r21 $30 = r15
71 trace_var r21 $31 = r15
72 trace_line r21 L16
73 trace_var r21 $32 = r15
74 trace_var r21 $33 = r15
75 trace_line r21 L17
76 trace_var r21 $34 = r16
77 trace_var r21 $35 = r16
78 trace_var r21 $36 = r16
79 trace_line r21 L18
80 trace_var r21 $37 = r16
81 trace_var r21 $38 = r16
82 trace_var r21 $39 = r16
83 trace_line r21 L19
84 trace_var r21 $40 = r17
85 trace_var r21 $41 = r17
86 trace_var r21 $42 = r17
87 trace_var r21 $43 = r17
88 trace_line r21 L20
89 trace_var r21 $44 = r17
90 trace_var r21 $45 = r17
91 trace_var r21 $46 = r17
92 trace_var r21 $47 = r17
93 trace_line r21 L22
94 trace_var r21 $48 = r14
95 trace_var r21 $49 = r14
96 trace_line r21 L23
97 trace_var r21 $50 = r14
98 trace_var r21 $51 = r14
99 trace_line r21 L24
100 trace_var r21 $52 = r18
101 trace_var r21 $53 = r18
102 trace_var r21 $54 = r18
103 trace_line r21 L25
104 trace_var r21 $55 = r18
105 trace_var r21 $56 = r18
106 trace_var r21 $57 = r18
107 trace_line r21 L26
108 trace_var r21 $58 = r19
109 trace_var r21 $59 = r19
110 trace_var r21 $60 = r19
111 trace_var r21 $61 = r19
112 trace_line r21 L27
113 trace_var r21 $62 = r19
114 trace_var r21 $63 = r19
115 trace_var r21 $64 = r19
116 trace_var r21 $65 = r19
117 trace_line r21 L29
118 trace_exit r21 F2
119 trace_enter r21 F3
120 trace_line r21 L34
121 trace_var r21 $66 = r15
122 trace_var r21 $67 = r11
123 trace_var r21 $68 = r11
124 trace_var r21 $69 = r15
125 trace_line r21 L35
126 trace_var r21 $70 = r15
127 trace_var r21 $71 = r11
128 trace_var r21 $72 = r11
129 trace_var r21 $73 = r15
130 trace_line r21 L36
131 trace_var r21 $74 = r16
132 trace_var r21 $75 = r11
133 trace_var r21 $76 = r11
134 trace_var r21 $77 = r11
135 trace_var r21 $78 = r16
136 trace_var r21 $79 = r11
137 trace_var r21 $80 = r11
138 trace_var r21 $81 = r11
139 trace_var r21 $82 = r16
140 trace_line r21 L37
141 trace_var r21 $83 = r16
142 trace_var r21 $84 = r11
143 trace_var r21 $85 = r11
144 trace_var r21 $86 = r11
145 trace_var r21 $87 = r16
146 trace_var r21 $88 = r11
147 trace_var r21 $89 = r11
148 trace_var r21 $90 = r11
149 trace_var r21 $91 = r16
150 trace_line r21 L38
151 trace_var r21 $92 = r17
152 trace_var r21 $93 = r11
153 trace_var r21 $94 = r11
154 trace_var r21 $95 = r11
155 trace_var r21 $96 = r11
156 trace_var r21 $97 = r17
157 trace_var r21 $98 = r11
158 trace_var r21 $99 = r11
159 trace_var r21 $100 = r11
160 trace_var r21 $101 = r11
161 trace_var r21 $102 = r17
162 trace_var r21 $103 = r11
163 trace_var r21 $104 = r11
164 trace_var r21 $105 = r11
165 trace_var r21 $106 = r11
166 trace_var r21 $107 = r17
167 trace_line r21 L39
168 trace_var r21 $108 = r17
169 trace_var r21 $109 = r11
170 trace_var r21 $110 = r11
171 trace_var r21 $111 = r11
172 trace_var r21 $112 = r11
173 trace_var r21 $113 = r17
174 trace_var r21 $114 = r11
175 trace_var r21 $115 = r11
176 trace_var r21 $116 = r11
177 trace_var r21 $117 = r11
178 trace_var r21 $118 = r17
179 trace_var r21 $119 = r11
180 trace_var r21 $120 = r11
181 trace_var r21 $121 = r11
182 trace_var r21 $122 = r11
183 trace_var r21 $123 = r17
184 trace_line r21 L41
185 trace_exit r21 F3
186 trace_enter r21 F4
187 trace_line r21 L45
188 trace_var r21 $124 = r11
189 trace_line r21 L45
190 trace_var r21 $124 = r13
191 trace_line r21 L46
192 trace_var r21 $125 = r11
193 trace_line r21 L46
194 trace_var r21 $125 = r13
195 trace_line r21 L47
196 trace_var r21 $126 = r11
197 trace_var r21 $127 = r11
198 trace_var r21 $128 = r11
199 trace_var r21 $129 = r11
200 trace_line r21 L47
201 trace_var r21 $127 = r13
202 trace_line r21 L47
203 trace_var r21 $128 = r15
204 trace_var r21 $129 = r16
205 trace_line r21 L48
206 trace_var r21 $130 = r11
207 trace_var r21 $131 = r11
208 trace_var r21 $132 = r11
209 trace_var r21 $133 = r11
210 trace_line r21 L48
211 trace_var r21 $131 = r13
212 trace_line r21 L48
213 trace_var r21 $132 = r15
214 trace_var r21 $133 = r16
215 trace_line r21 L50
216 trace_exit r21 F4
217 trace_enter r21 F5
218 trace_var r21 $134 = r13
219 trace_line r21 L53
220 trace_exit r21 F5
221 trace_enter r21 F6
222 trace_var r21 $135 = r15
223 trace_line r21 L54
224 trace_exit r21 F6
225 trace_enter r21 F7
226 trace_var r21 $136 = r16
227 trace_line r21 L55
228 trace_exit r21 F7
229 trace_exit r21 F0
230 store32 ptr1 r3
231 store32 ptr2 r4
232 store32 ptr3 r5
233 store32 ptr4 r6
19 r19 = index
20 r20 = eq_f32 r19 r10
21 r20 = bit_and r20 r11
22 trace_var r20 $0 = r1
23 trace_var r20 $1 = r2
24 trace_var r20 $2 = r3
25 trace_var r20 $3 = r4
26 trace_var r20 $4 = r5
27 trace_var r20 $5 = r6
28 trace_var r20 $6 = r7
29 trace_var r20 $7 = r8
30 trace_enter r20 F0
31 trace_var r20 $8 = r19
32 trace_var r20 $9 = r0
33 trace_line r20 L58
34 trace_var r20 $10 = r9
35 trace_var r20 $11 = r9
36 trace_var r20 $12 = r9
37 trace_var r20 $13 = r9
38 trace_line r20 L59
39 trace_var r20 $14 = r12
40 trace_var r20 $15 = r12
41 trace_var r20 $16 = r12
42 trace_var r20 $17 = r12
43 trace_line r20 L60
44 trace_var r20 $18 = r1
45 trace_var r20 $19 = r2
46 trace_var r20 $20 = r3
47 trace_var r20 $21 = r4
48 trace_line r20 L61
49 trace_line r20 L63
50 trace_var r20 $22 = r5
51 trace_var r20 $23 = r6
52 trace_var r20 $24 = r7
53 trace_var r20 $25 = r8
54 trace_line r20 L64
55 trace_line r20 L66
56 trace_enter r20 F1
57 trace_line r20 L6
58 trace_var r20 $26 = r10
59 trace_line r20 L7
60 trace_var r20 $27 = r10
61 trace_line r20 L8
62 trace_var r20 $28 = r13
63 trace_line r20 L9
64 trace_var r20 $29 = r13
65 trace_line r20 L11
66 trace_exit r20 F1
67 trace_enter r20 F2
68 trace_line r20 L15
69 trace_var r20 $30 = r14
70 trace_var r20 $31 = r14
71 trace_line r20 L16
72 trace_var r20 $32 = r14
73 trace_var r20 $33 = r14
74 trace_line r20 L17
75 trace_var r20 $34 = r15
76 trace_var r20 $35 = r15
77 trace_var r20 $36 = r15
78 trace_line r20 L18
79 trace_var r20 $37 = r15
80 trace_var r20 $38 = r15
81 trace_var r20 $39 = r15
82 trace_line r20 L19
83 trace_var r20 $40 = r16
84 trace_var r20 $41 = r16
85 trace_var r20 $42 = r16
86 trace_var r20 $43 = r16
87 trace_line r20 L20
88 trace_var r20 $44 = r16
89 trace_var r20 $45 = r16
90 trace_var r20 $46 = r16
91 trace_var r20 $47 = r16
92 trace_line r20 L22
93 trace_var r20 $48 = r13
94 trace_var r20 $49 = r13
95 trace_line r20 L23
96 trace_var r20 $50 = r13
97 trace_var r20 $51 = r13
98 trace_line r20 L24
99 trace_var r20 $52 = r17
100 trace_var r20 $53 = r17
101 trace_var r20 $54 = r17
102 trace_line r20 L25
103 trace_var r20 $55 = r17
104 trace_var r20 $56 = r17
105 trace_var r20 $57 = r17
106 trace_line r20 L26
107 trace_var r20 $58 = r18
108 trace_var r20 $59 = r18
109 trace_var r20 $60 = r18
110 trace_var r20 $61 = r18
111 trace_line r20 L27
112 trace_var r20 $62 = r18
113 trace_var r20 $63 = r18
114 trace_var r20 $64 = r18
115 trace_var r20 $65 = r18
116 trace_line r20 L29
117 trace_exit r20 F2
118 trace_enter r20 F3
119 trace_line r20 L34
120 trace_var r20 $66 = r14
121 trace_var r20 $67 = r9
122 trace_var r20 $68 = r9
123 trace_var r20 $69 = r14
124 trace_line r20 L35
125 trace_var r20 $70 = r14
126 trace_var r20 $71 = r9
127 trace_var r20 $72 = r9
128 trace_var r20 $73 = r14
129 trace_line r20 L36
130 trace_var r20 $74 = r15
131 trace_var r20 $75 = r9
132 trace_var r20 $76 = r9
133 trace_var r20 $77 = r9
134 trace_var r20 $78 = r15
135 trace_var r20 $79 = r9
136 trace_var r20 $80 = r9
137 trace_var r20 $81 = r9
138 trace_var r20 $82 = r15
139 trace_line r20 L37
140 trace_var r20 $83 = r15
141 trace_var r20 $84 = r9
142 trace_var r20 $85 = r9
143 trace_var r20 $86 = r9
144 trace_var r20 $87 = r15
145 trace_var r20 $88 = r9
146 trace_var r20 $89 = r9
147 trace_var r20 $90 = r9
148 trace_var r20 $91 = r15
149 trace_line r20 L38
150 trace_var r20 $92 = r16
151 trace_var r20 $93 = r9
152 trace_var r20 $94 = r9
153 trace_var r20 $95 = r9
154 trace_var r20 $96 = r9
155 trace_var r20 $97 = r16
156 trace_var r20 $98 = r9
157 trace_var r20 $99 = r9
158 trace_var r20 $100 = r9
159 trace_var r20 $101 = r9
160 trace_var r20 $102 = r16
161 trace_var r20 $103 = r9
162 trace_var r20 $104 = r9
163 trace_var r20 $105 = r9
164 trace_var r20 $106 = r9
165 trace_var r20 $107 = r16
166 trace_line r20 L39
167 trace_var r20 $108 = r16
168 trace_var r20 $109 = r9
169 trace_var r20 $110 = r9
170 trace_var r20 $111 = r9
171 trace_var r20 $112 = r9
172 trace_var r20 $113 = r16
173 trace_var r20 $114 = r9
174 trace_var r20 $115 = r9
175 trace_var r20 $116 = r9
176 trace_var r20 $117 = r9
177 trace_var r20 $118 = r16
178 trace_var r20 $119 = r9
179 trace_var r20 $120 = r9
180 trace_var r20 $121 = r9
181 trace_var r20 $122 = r9
182 trace_var r20 $123 = r16
183 trace_line r20 L41
184 trace_exit r20 F3
185 trace_enter r20 F4
186 trace_line r20 L45
187 trace_var r20 $124 = r9
188 trace_line r20 L45
189 trace_var r20 $124 = r12
190 trace_line r20 L46
191 trace_var r20 $125 = r9
192 trace_line r20 L46
193 trace_var r20 $125 = r12
194 trace_line r20 L47
195 trace_var r20 $126 = r9
196 trace_var r20 $127 = r9
197 trace_var r20 $128 = r9
198 trace_var r20 $129 = r9
199 trace_line r20 L47
200 trace_var r20 $127 = r12
201 trace_line r20 L47
202 trace_var r20 $128 = r14
203 trace_var r20 $129 = r15
204 trace_line r20 L48
205 trace_var r20 $130 = r9
206 trace_var r20 $131 = r9
207 trace_var r20 $132 = r9
208 trace_var r20 $133 = r9
209 trace_line r20 L48
210 trace_var r20 $131 = r12
211 trace_line r20 L48
212 trace_var r20 $132 = r14
213 trace_var r20 $133 = r15
214 trace_line r20 L50
215 trace_exit r20 F4
216 trace_enter r20 F5
217 trace_var r20 $134 = r12
218 trace_line r20 L53
219 trace_exit r20 F5
220 trace_enter r20 F6
221 trace_var r20 $135 = r14
222 trace_line r20 L54
223 trace_exit r20 F6
224 trace_enter r20 F7
225 trace_var r20 $136 = r15
226 trace_line r20 L55
227 trace_exit r20 F7
228 trace_exit r20 F0
229 store32 ptr1 r1
230 store32 ptr2 r2
231 store32 ptr3 r3
232 store32 ptr4 r4