Put function return values in a slot.
This shouldn't change code generation when debug traces are disabled.
When they are enabled, we now get trace_var opcodes emitted for every
return statement. Internally, this required a fair amount of refactoring
around how return values are passed around, but it should all be
functionally equivalent.
Change-Id: Ieb9d9c75399109186f905e0499d8fe6e2fc2067c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/477981
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/sksl/codegen/SkSLVMCodeGenerator.cpp b/src/sksl/codegen/SkSLVMCodeGenerator.cpp
index b7bb0a4..24752fd 100644
--- a/src/sksl/codegen/SkSLVMCodeGenerator.cpp
+++ b/src/sksl/codegen/SkSLVMCodeGenerator.cpp
@@ -147,8 +147,8 @@
* variable's contents, and construct a Value with those ids.
*/
- /** Appends this variable to the SkVMSlotInfo array inside of SkVMDebugInfo. */
- void addDebugSlotInfo(String varName, const Type& type, int line);
+ /** Creates a Value from a collection of adjacent slots. */
+ Value getSlotValue(size_t slot, size_t nslots);
/**
* Returns the slot index of this function inside the SkVMFunctionInfo array in SkVMDebugInfo.
@@ -156,6 +156,12 @@
*/
int getDebugFunctionInfo(const FunctionDeclaration& decl);
+ /** Used by `createSlot` to add this variable to the SkVMSlotInfo array inside SkVMDebugInfo. */
+ void addDebugSlotInfo(String varName, const Type& type, int line);
+
+ /** Used by `getSlot` to create a new slot on its first access. */
+ size_t createSlot(const String& name, const Type& type, int line);
+
/**
* Returns the slot holding v's Val(s). Allocates storage if this is first time 'v' is
* referenced. Compound variables (e.g. vectors) will consume more than one slot, with
@@ -164,6 +170,12 @@
size_t getSlot(const Variable& v);
/**
+ * Returns the slot holding fn's return value. Allocates storage if this is first time accessing
+ * the slot.
+ */
+ size_t getSlot(const FunctionDefinition& fn);
+
+ /**
* Writes a value to a slot previously created by getSlot.
*/
void writeToSlot(int slot, skvm::Val value);
@@ -177,10 +189,8 @@
/** Initializes uniforms and global variables at the start of main(). */
void setupGlobals(SkSpan<skvm::Val> uniforms, skvm::Coord device);
- /** Emits an SkSL function. */
- void writeFunction(const FunctionDefinition& function,
- SkSpan<skvm::Val> arguments,
- SkSpan<skvm::Val> outReturn);
+ /** Emits an SkSL function. Returns the slot index of the SkSL function's return value. */
+ size_t writeFunction(const FunctionDefinition& function, SkSpan<skvm::Val> arguments);
skvm::F32 f32(skvm::Val id) { SkASSERT(id != skvm::NA); return {fBuilder, id}; }
skvm::I32 i32(skvm::Val id) { SkASSERT(id != skvm::NA); return {fBuilder, id}; }
@@ -273,7 +283,10 @@
};
std::vector<Slot> fSlots;
- std::unordered_map<const Variable*, size_t> fVariableMap; // [Variable, first slot in fSlots]
+ // [Variable, first slot in fSlots]
+ std::unordered_map<const Variable*, size_t> fVariableMap;
+ // [Function, first slot in fSlots]
+ std::unordered_map<const FunctionDefinition*, size_t> fReturnValueMap;
// Debug trace mask (set to true when fTraceCoord matches device coordinates)
skvm::I32 fTraceMask;
@@ -292,8 +305,8 @@
// State that's local to the generation of a single function:
//
struct Function {
- const SkSpan<skvm::Val> fReturnValue;
- skvm::I32 fReturned;
+ size_t fReturnSlot;
+ skvm::I32 fReturned;
};
std::vector<Function> fFunctionStack;
Function& currentFunction() { return fFunctionStack.back(); }
@@ -345,7 +358,13 @@
fConditionMask = fLoopMask = fBuilder->splat(0xffff'ffff);
this->setupGlobals(uniforms, device);
- this->writeFunction(function, arguments, outReturn);
+ size_t returnSlot = this->writeFunction(function, arguments);
+
+ // Copy the value from the return slot into outReturn.
+ SkASSERT(function.declaration().returnType().slotCount() == outReturn.size());
+ for (size_t i = 0; i < outReturn.size(); ++i) {
+ outReturn[i] = fSlots[returnSlot + i].val;
+ }
}
void SkVMGenerator::setupGlobals(SkSpan<skvm::Val> uniforms, skvm::Coord device) {
@@ -433,6 +452,14 @@
SkASSERT(uniformIter == uniforms.end());
}
+Value SkVMGenerator::getSlotValue(size_t slot, size_t nslots) {
+ Value val(nslots);
+ for (size_t i = 0; i < nslots; ++i) {
+ val[i] = fSlots[slot + i].val;
+ }
+ return val;
+}
+
int SkVMGenerator::getDebugFunctionInfo(const FunctionDeclaration& decl) {
SkASSERT(fDebugInfo);
@@ -451,11 +478,9 @@
return slot;
}
-void SkVMGenerator::writeFunction(const FunctionDefinition& function,
- SkSpan<skvm::Val> arguments,
- SkSpan<skvm::Val> outReturn) {
+size_t SkVMGenerator::writeFunction(const FunctionDefinition& function,
+ SkSpan<skvm::Val> arguments) {
const FunctionDeclaration& decl = function.declaration();
- SkASSERT(decl.returnType().slotCount() == outReturn.size());
int funcIndex = -1;
if (fDebugInfo) {
@@ -463,7 +488,8 @@
fBuilder->trace_enter(this->traceMask(), funcIndex);
}
- fFunctionStack.push_back({outReturn, /*returned=*/fBuilder->splat(0)});
+ size_t returnSlot = this->getSlot(function);
+ fFunctionStack.push_back({/*fReturnSlot=*/returnSlot, /*fReturned=*/fBuilder->splat(0)});
// For all parameters, copy incoming argument IDs to our vector of (all) variable IDs
size_t argIdx = 0;
@@ -501,6 +527,8 @@
if (fDebugInfo) {
fBuilder->trace_exit(this->traceMask(), funcIndex);
}
+
+ return returnSlot;
}
void SkVMGenerator::writeToSlot(int slot, skvm::Val value) {
@@ -558,31 +586,49 @@
}
}
+size_t SkVMGenerator::createSlot(const String& name, const Type& type, int line) {
+ size_t slot = fSlots.size(),
+ nslots = type.slotCount();
+
+ if (fDebugInfo) {
+ // Our debug slot-info table should always have the same length as the actual slot table.
+ SkASSERT(fDebugInfo->fSlotInfo.size() == slot);
+
+ // Append slot names and types to our debug slot-info table.
+ fDebugInfo->fSlotInfo.reserve(slot + nslots);
+ this->addDebugSlotInfo(name, type, line);
+
+ // Confirm that we added the expected number of slots.
+ SkASSERT(fDebugInfo->fSlotInfo.size() == (slot + nslots));
+ }
+
+ // Create brand new slots initialized to zero.
+ skvm::Val initialValue = fBuilder->splat(0.0f).id;
+ fSlots.insert(fSlots.end(), nslots, Slot{initialValue});
+ return slot;
+}
+
size_t SkVMGenerator::getSlot(const Variable& v) {
auto entry = fVariableMap.find(&v);
if (entry != fVariableMap.end()) {
return entry->second;
}
- size_t slot = fSlots.size(),
- nslots = v.type().slotCount();
+ size_t slot = this->createSlot(String(v.name()), v.type(), v.fLine);
+ fVariableMap[&v] = slot;
+ return slot;
+}
- if (fDebugInfo) {
- // Our debug slot-info table should always have the same length as the actual slot table.
- SkASSERT(fDebugInfo->fSlotInfo.size() == slot);
-
- // Append slots for this variable to our debug slot-info table.
- fDebugInfo->fSlotInfo.reserve(slot + nslots);
- this->addDebugSlotInfo(String(v.name()), v.type(), v.fLine);
-
- // Confirm that we added the expected number of slots.
- SkASSERT(fDebugInfo->fSlotInfo.size() == (slot + nslots));
+size_t SkVMGenerator::getSlot(const FunctionDefinition& fn) {
+ auto entry = fReturnValueMap.find(&fn);
+ if (entry != fReturnValueMap.end()) {
+ return entry->second;
}
- // Create zeroed-out slots for this new variable.
- skvm::Val initialValue = fBuilder->splat(0.0f).id;
- fSlots.insert(fSlots.end(), nslots, Slot{initialValue});
- fVariableMap[&v] = slot;
+ size_t slot = this->createSlot("[" + fn.declaration().name() + "].result",
+ fn.declaration().returnType(),
+ fn.fLine);
+ fReturnValueMap[&fn] = slot;
return slot;
}
@@ -952,11 +998,7 @@
Value SkVMGenerator::writeVariableExpression(const VariableReference& expr) {
size_t slot = this->getSlot(*expr.variable());
- Value val(expr.type().slotCount());
- for (size_t i = 0; i < val.slots(); ++i) {
- val[i] = fSlots[slot + i].val;
- }
- return val;
+ return this->getSlotValue(slot, expr.type().slotCount());
}
Value SkVMGenerator::writeMatrixInverse2x2(const Value& m) {
@@ -1330,6 +1372,8 @@
}
const FunctionDeclaration& decl = f.function();
+ SkASSERTF(decl.definition(), "no definition for function '%s'", decl.description().c_str());
+ const FunctionDefinition& funcDef = *decl.definition();
// Evaluate all arguments, gather the results into a contiguous list of IDs
std::vector<skvm::Val> argVals;
@@ -1340,28 +1384,19 @@
}
}
- // Create storage for the return value
- const skvm::F32 zero = fBuilder->splat(0.0f);
- size_t nslots = f.type().slotCount();
- Value result(nslots);
- for (size_t i = 0; i < nslots; ++i) {
- result[i] = zero;
- }
-
+ size_t returnSlot;
{
// This merges currentFunction().fReturned into fConditionMask. Lanes that conditionally
// returned in the current function would otherwise resume execution within the child.
ScopedCondition m(this, ~currentFunction().fReturned);
- SkASSERTF(f.function().definition(), "no definition for function '%s'",
- f.function().description().c_str());
- this->writeFunction(*f.function().definition(), SkMakeSpan(argVals), result.asSpan());
+ returnSlot = this->writeFunction(funcDef, SkMakeSpan(argVals));
}
// Propagate new values of any 'out' params back to the original arguments
const std::unique_ptr<Expression>* argIter = f.arguments().begin();
size_t valIdx = 0;
for (const Variable* p : decl.parameters()) {
- nslots = p->type().slotCount();
+ size_t nslots = p->type().slotCount();
if (p->modifiers().fFlags & Modifiers::kOut_Flag) {
Value v(nslots);
for (size_t i = 0; i < nslots; ++i) {
@@ -1374,7 +1409,8 @@
argIter++;
}
- return result;
+ // Create a result Value from the return slot
+ return this->getSlotValue(returnSlot, f.type().slotCount());
}
Value SkVMGenerator::writeExternalFunctionCall(const ExternalFunctionCall& c) {
@@ -1709,10 +1745,13 @@
if (r.expression()) {
Value val = this->writeExpression(*r.expression());
- int i = 0;
- for (skvm::Val& slot : currentFunction().fReturnValue) {
- slot = select(returnsHere, f32(val[i]), f32(slot)).id;
- i++;
+ size_t slot = currentFunction().fReturnSlot;
+ size_t nslots = r.expression()->type().slotCount();
+ for (size_t i = 0; i < nslots; ++i) {
+ fSlots[slot + i].writtenTo = false;
+ skvm::Val conditionalStore = this->writeConditionalStore(fSlots[slot + i].val, val[i],
+ returnsHere);
+ this->writeToSlot(slot + i, conditionalStore);
}
}
diff --git a/tests/SkSLInterpreterTest.cpp b/tests/SkSLInterpreterTest.cpp
index b6538e7..ce5d9ac 100644
--- a/tests/SkSLInterpreterTest.cpp
+++ b/tests/SkSLInterpreterTest.cpp
@@ -1066,6 +1066,7 @@
comparison = true
line 3
line 4
+[less_than].result = true
exit bool less_than(float left, int right)
function_result = true
line 11
@@ -1078,6 +1079,7 @@
comparison = false
line 3
line 6
+[less_than].result = false
exit bool less_than(float left, int right)
function_result = false
line 11
@@ -1090,10 +1092,12 @@
comparison = false
line 3
line 6
+[less_than].result = false
exit bool less_than(float left, int right)
function_result = false
line 11
line 14
+[main].result = 40
exit int main()
)", "Trace output does not match expectation:\n%s\n", hook.fTrace.c_str());
}
diff --git a/tests/sksl/runtime/ArrayIndexing.skvm b/tests/sksl/runtime/ArrayIndexing.skvm
index e34d814..72dd6ab 100644
--- a/tests/sksl/runtime/ArrayIndexing.skvm
+++ b/tests/sksl/runtime/ArrayIndexing.skvm
@@ -26,21 +26,29 @@
$25 = u4[13] (float, L26)
$26 = u4[14] (float, L26)
$27 = u4[15] (float, L26)
-$28 = xy (float2 : slot 1/2, L37)
-$29 = xy (float2 : slot 2/2, L37)
-$30 = sum (float, L10)
-$31 = i (int, L11)
-$32 = prod (float, L19)
-$33 = i (int, L20)
-$34 = sum (float, L28)
-$35 = f (float, L29)
+$28 = [main].result (float4 : slot 1/4, L37)
+$29 = [main].result (float4 : slot 2/4, L37)
+$30 = [main].result (float4 : slot 3/4, L37)
+$31 = [main].result (float4 : slot 4/4, L37)
+$32 = xy (float2 : slot 1/2, L37)
+$33 = xy (float2 : slot 2/2, L37)
+$34 = [index_by_literal].result (float, L4)
+$35 = [index_by_loop].result (float, L9)
+$36 = sum (float, L10)
+$37 = i (int, L11)
+$38 = [index_by_complex_loop].result (float, L18)
+$39 = prod (float, L19)
+$40 = i (int, L20)
+$41 = [index_out_of_bounds_checked].result (float, L27)
+$42 = sum (float, L28)
+$43 = f (float, L29)
F0 = float4 main(float2 xy)
F1 = float index_by_literal()
F2 = float index_by_loop()
F3 = float index_by_complex_loop()
F4 = float index_out_of_bounds_checked()
-54 registers, 171 instructions:
+54 registers, 179 instructions:
0 r0 = uniform32 ptr0 0
1 r1 = uniform32 ptr0 4
2 r2 = uniform32 ptr0 8
@@ -126,90 +134,98 @@
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 = r0
+84 trace_var r53 $32 = r52
+85 trace_var r53 $33 = 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 = r29
-93 trace_line r53 L11
-94 trace_var r53 $31 = r32
-95 trace_line r53 L12
-96 trace_var r53 $30 = r8
-97 trace_line r53 L11
-98 trace_var r53 $31 = r33
-99 trace_line r53 L12
-100 trace_var r53 $30 = r34
-101 trace_line r53 L11
-102 trace_var r53 $31 = r35
-103 trace_line r53 L12
-104 trace_var r53 $30 = r36
-105 trace_line r53 L11
-106 trace_var r53 $31 = r29
-107 trace_line r53 L12
-108 trace_var r53 $30 = r37
-109 trace_line r53 L11
-110 trace_line r53 L14
-111 trace_exit r53 F2
-112 trace_enter r53 F3
-113 trace_line r53 L19
-114 trace_var r53 $32 = r38
-115 trace_line r53 L20
-116 trace_var r53 $33 = r29
-117 trace_line r53 L21
-118 trace_var r53 $32 = r9
-119 trace_line r53 L20
-120 trace_var r53 $33 = r35
-121 trace_line r53 L21
-122 trace_var r53 $32 = r39
-123 trace_line r53 L20
-124 trace_var r53 $33 = r33
-125 trace_line r53 L21
-126 trace_var r53 $32 = r40
-127 trace_line r53 L20
-128 trace_var r53 $33 = r32
-129 trace_line r53 L21
-130 trace_var r53 $32 = r41
-131 trace_line r53 L20
-132 trace_line r53 L23
-133 trace_exit r53 F3
-134 trace_enter r53 F4
-135 trace_line r53 L28
-136 trace_var r53 $34 = r29
-137 trace_line r53 L29
-138 trace_var r53 $35 = r42
-139 trace_line r53 L30
+89 trace_var r53 $34 = r1
+90 trace_exit r53 F1
+91 trace_enter r53 F2
+92 trace_line r53 L10
+93 trace_var r53 $36 = r29
+94 trace_line r53 L11
+95 trace_var r53 $37 = r32
+96 trace_line r53 L12
+97 trace_var r53 $36 = r8
+98 trace_line r53 L11
+99 trace_var r53 $37 = r33
+100 trace_line r53 L12
+101 trace_var r53 $36 = r34
+102 trace_line r53 L11
+103 trace_var r53 $37 = r35
+104 trace_line r53 L12
+105 trace_var r53 $36 = r36
+106 trace_line r53 L11
+107 trace_var r53 $37 = r29
+108 trace_line r53 L12
+109 trace_var r53 $36 = r37
+110 trace_line r53 L11
+111 trace_line r53 L14
+112 trace_var r53 $35 = r37
+113 trace_exit r53 F2
+114 trace_enter r53 F3
+115 trace_line r53 L19
+116 trace_var r53 $39 = r38
+117 trace_line r53 L20
+118 trace_var r53 $40 = r29
+119 trace_line r53 L21
+120 trace_var r53 $39 = r9
+121 trace_line r53 L20
+122 trace_var r53 $40 = r35
+123 trace_line r53 L21
+124 trace_var r53 $39 = r39
+125 trace_line r53 L20
+126 trace_var r53 $40 = r33
+127 trace_line r53 L21
+128 trace_var r53 $39 = r40
+129 trace_line r53 L20
+130 trace_var r53 $40 = r32
+131 trace_line r53 L21
+132 trace_var r53 $39 = r41
+133 trace_line r53 L20
+134 trace_line r53 L23
+135 trace_var r53 $38 = r41
+136 trace_exit r53 F3
+137 trace_enter r53 F4
+138 trace_line r53 L28
+139 trace_var r53 $42 = r29
140 trace_line r53 L29
-141 trace_var r53 $35 = r43
+141 trace_var r53 $43 = r42
142 trace_line r53 L30
-143 trace_line r53 L31
-144 trace_var r53 $34 = r44
-145 trace_line r53 L29
-146 trace_var r53 $35 = r45
-147 trace_line r53 L30
-148 trace_line r53 L31
-149 trace_var r53 $34 = r46
-150 trace_line r53 L29
-151 trace_var r53 $35 = r47
-152 trace_line r53 L30
-153 trace_line r53 L31
-154 trace_var r53 $34 = r48
-155 trace_line r53 L29
-156 trace_var r53 $35 = r49
-157 trace_line r53 L30
-158 trace_line r53 L31
-159 trace_var r53 $34 = r50
-160 trace_line r53 L29
-161 trace_var r53 $35 = r51
-162 trace_line r53 L30
+143 trace_line r53 L29
+144 trace_var r53 $43 = r43
+145 trace_line r53 L30
+146 trace_line r53 L31
+147 trace_var r53 $42 = r44
+148 trace_line r53 L29
+149 trace_var r53 $43 = r45
+150 trace_line r53 L30
+151 trace_line r53 L31
+152 trace_var r53 $42 = r46
+153 trace_line r53 L29
+154 trace_var r53 $43 = r47
+155 trace_line r53 L30
+156 trace_line r53 L31
+157 trace_var r53 $42 = r48
+158 trace_line r53 L29
+159 trace_var r53 $43 = r49
+160 trace_line r53 L30
+161 trace_line r53 L31
+162 trace_var r53 $42 = r50
163 trace_line r53 L29
-164 trace_line r53 L34
-165 trace_exit r53 F4
-166 trace_exit r53 F0
-167 store32 ptr1 r1
-168 store32 ptr2 r37
-169 store32 ptr3 r41
-170 store32 ptr4 r50
+164 trace_var r53 $43 = r51
+165 trace_line r53 L30
+166 trace_line r53 L29
+167 trace_line r53 L34
+168 trace_var r53 $41 = r50
+169 trace_exit r53 F4
+170 trace_var r53 $28 = r1
+171 trace_var r53 $29 = r37
+172 trace_var r53 $30 = r41
+173 trace_var r53 $31 = r50
+174 trace_exit r53 F0
+175 store32 ptr1 r1
+176 store32 ptr2 r37
+177 store32 ptr3 r41
+178 store32 ptr4 r50
diff --git a/tests/sksl/runtime/LoopFloat.skvm b/tests/sksl/runtime/LoopFloat.skvm
index 934cb86..69711f6 100644
--- a/tests/sksl/runtime/LoopFloat.skvm
+++ b/tests/sksl/runtime/LoopFloat.skvm
@@ -8,50 +8,64 @@
$7 = colorGreen (float4 : slot 4/4, L3)
$8 = kZero (float, L6)
$9 = kTen (float, L15)
-$10 = pos (float2 : slot 1/2, L115)
-$11 = pos (float2 : slot 2/2, L115)
-$12 = five (float, L116)
-$13 = five (float, L7)
-$14 = i (float, L8)
-$15 = five (float, L16)
-$16 = sum (float, L17)
-$17 = i (float, L18)
-$18 = five (float, L26)
-$19 = sum (float, L27)
-$20 = kOne (float, L28)
-$21 = i (float, L29)
-$22 = sum (float, L38)
-$23 = i (float, L39)
-$24 = result (float4 : slot 1/4, L50)
-$25 = result (float4 : slot 2/4, L50)
-$26 = result (float4 : slot 3/4, L50)
-$27 = result (float4 : slot 4/4, L50)
-$28 = i (float, L51)
-$29 = result (float4 : slot 1/4, L62)
-$30 = result (float4 : slot 2/4, L62)
-$31 = result (float4 : slot 3/4, L62)
-$32 = result (float4 : slot 4/4, L62)
-$33 = i (float, L63)
-$34 = result (float4 : slot 1/4, L74)
-$35 = result (float4 : slot 2/4, L74)
-$36 = result (float4 : slot 3/4, L74)
-$37 = result (float4 : slot 4/4, L74)
-$38 = i (float, L75)
-$39 = result (float4 : slot 1/4, L86)
-$40 = result (float4 : slot 2/4, L86)
-$41 = result (float4 : slot 3/4, L86)
-$42 = result (float4 : slot 4/4, L86)
-$43 = i (float, L87)
-$44 = result (float4 : slot 1/4, L108)
-$45 = result (float4 : slot 2/4, L108)
-$46 = result (float4 : slot 3/4, L108)
-$47 = result (float4 : slot 4/4, L108)
-$48 = i (float, L109)
-$49 = result (float4 : slot 1/4, L97)
-$50 = result (float4 : slot 2/4, L97)
-$51 = result (float4 : slot 3/4, L97)
-$52 = result (float4 : slot 4/4, L97)
-$53 = i (float, L98)
+$10 = [main].result (float4 : slot 1/4, L115)
+$11 = [main].result (float4 : slot 2/4, L115)
+$12 = [main].result (float4 : slot 3/4, L115)
+$13 = [main].result (float4 : slot 4/4, L115)
+$14 = pos (float2 : slot 1/2, L115)
+$15 = pos (float2 : slot 2/2, L115)
+$16 = five (float, L116)
+$17 = [return_loop].result (float, L7)
+$18 = five (float, L7)
+$19 = i (float, L8)
+$20 = [continue_loop].result (float, L16)
+$21 = five (float, L16)
+$22 = sum (float, L17)
+$23 = i (float, L18)
+$24 = [break_loop].result (float, L26)
+$25 = five (float, L26)
+$26 = sum (float, L27)
+$27 = kOne (float, L28)
+$28 = i (float, L29)
+$29 = [float_loop].result (float, L37)
+$30 = sum (float, L38)
+$31 = i (float, L39)
+$32 = [loop_operator_le].result (bool, L45)
+$33 = result (float4 : slot 1/4, L50)
+$34 = result (float4 : slot 2/4, L50)
+$35 = result (float4 : slot 3/4, L50)
+$36 = result (float4 : slot 4/4, L50)
+$37 = i (float, L51)
+$38 = [loop_operator_lt].result (bool, L57)
+$39 = result (float4 : slot 1/4, L62)
+$40 = result (float4 : slot 2/4, L62)
+$41 = result (float4 : slot 3/4, L62)
+$42 = result (float4 : slot 4/4, L62)
+$43 = i (float, L63)
+$44 = [loop_operator_ge].result (bool, L69)
+$45 = result (float4 : slot 1/4, L74)
+$46 = result (float4 : slot 2/4, L74)
+$47 = result (float4 : slot 3/4, L74)
+$48 = result (float4 : slot 4/4, L74)
+$49 = i (float, L75)
+$50 = [loop_operator_gt].result (bool, L81)
+$51 = result (float4 : slot 1/4, L86)
+$52 = result (float4 : slot 2/4, L86)
+$53 = result (float4 : slot 3/4, L86)
+$54 = result (float4 : slot 4/4, L86)
+$55 = i (float, L87)
+$56 = [loop_operator_eq].result (bool, L104)
+$57 = result (float4 : slot 1/4, L108)
+$58 = result (float4 : slot 2/4, L108)
+$59 = result (float4 : slot 3/4, L108)
+$60 = result (float4 : slot 4/4, L108)
+$61 = i (float, L109)
+$62 = [loop_operator_ne].result (bool, L93)
+$63 = result (float4 : slot 1/4, L97)
+$64 = result (float4 : slot 2/4, L97)
+$65 = result (float4 : slot 3/4, L97)
+$66 = result (float4 : slot 4/4, L97)
+$67 = i (float, L98)
F0 = half4 main(float2 pos)
F1 = float return_loop(float five)
F2 = float continue_loop(float five)
@@ -64,7 +78,7 @@
F9 = bool loop_operator_eq()
F10 = bool loop_operator_ne()
-43 registers, 799 instructions:
+43 registers, 823 instructions:
0 r0 = uniform32 ptr0 0
1 r1 = uniform32 ptr0 4
2 r2 = uniform32 ptr0 8
@@ -113,755 +127,779 @@
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 = r0
+47 trace_var r34 $14 = r33
+48 trace_var r34 $15 = r0
49 trace_line r34 L116
50 r33 = min_f32 r33 r8
51 r33 = max_f32 r6 r33
52 r33 = mul_f32 r33 r14
-53 trace_var r34 $12 = r33
+53 trace_var r34 $16 = r33
54 trace_line r34 L117
55 trace_enter r34 F1
-56 trace_var r34 $13 = r33
+56 trace_var r34 $18 = r33
57 trace_line r34 L8
-58 trace_var r34 $14 = r9
+58 trace_var r34 $19 = r9
59 trace_line r34 L9
60 r35 = eq_f32 r9 r33
61 r36 = bit_and r34 r35
62 trace_line r36 L9
-63 r36 = bit_xor r10 r35
-64 r37 = bit_and r34 r36
-65 trace_line r37 L8
-66 trace_var r37 $14 = r15
-67 trace_line r37 L9
-68 r37 = eq_f32 r33 r15
-69 r37 = bit_and r36 r37
-70 r36 = bit_and r34 r37
-71 trace_line r36 L9
-72 r36 = bit_and r15 r37
-73 r37 = bit_or r35 r37
-74 r35 = bit_xor r10 r37
-75 r38 = bit_and r34 r35
-76 trace_line r38 L8
-77 trace_var r38 $14 = r16
-78 trace_line r38 L9
-79 r38 = eq_f32 r33 r16
-80 r38 = bit_and r35 r38
-81 r35 = bit_and r34 r38
-82 trace_line r35 L9
-83 r36 = select r38 r16 r36
-84 r38 = bit_or r37 r38
-85 r37 = bit_xor r10 r38
-86 r35 = bit_and r34 r37
-87 trace_line r35 L8
-88 trace_var r35 $14 = r17
-89 trace_line r35 L9
-90 r35 = eq_f32 r33 r17
-91 r35 = bit_and r37 r35
-92 r37 = bit_and r34 r35
-93 trace_line r37 L9
-94 r36 = select r35 r17 r36
-95 r35 = bit_or r38 r35
-96 r38 = bit_xor r10 r35
-97 r37 = bit_and r34 r38
-98 trace_line r37 L8
-99 trace_var r37 $14 = r18
-100 trace_line r37 L9
-101 r37 = eq_f32 r33 r18
-102 r37 = bit_and r38 r37
-103 r38 = bit_and r34 r37
-104 trace_line r38 L9
-105 r36 = select r37 r18 r36
-106 r37 = bit_or r35 r37
-107 r35 = bit_xor r10 r37
-108 r38 = bit_and r34 r35
-109 trace_line r38 L8
-110 trace_var r38 $14 = r14
-111 trace_line r38 L9
-112 r38 = eq_f32 r14 r33
-113 r38 = bit_and r35 r38
-114 r35 = bit_and r34 r38
-115 trace_line r35 L9
-116 r36 = select r38 r14 r36
-117 r38 = bit_or r37 r38
-118 r37 = bit_xor r10 r38
-119 r35 = bit_and r34 r37
-120 trace_line r35 L8
-121 trace_var r35 $14 = r19
-122 trace_line r35 L9
-123 r35 = eq_f32 r33 r19
-124 r35 = bit_and r37 r35
-125 r37 = bit_and r34 r35
-126 trace_line r37 L9
-127 r36 = select r35 r19 r36
-128 r35 = bit_or r38 r35
-129 r38 = bit_xor r10 r35
-130 r37 = bit_and r34 r38
-131 trace_line r37 L8
-132 trace_var r37 $14 = r20
-133 trace_line r37 L9
-134 r37 = eq_f32 r33 r20
-135 r37 = bit_and r38 r37
-136 r38 = bit_and r34 r37
-137 trace_line r38 L9
-138 r36 = select r37 r20 r36
-139 r37 = bit_or r35 r37
-140 r35 = bit_xor r10 r37
-141 r38 = bit_and r34 r35
-142 trace_line r38 L8
-143 trace_var r38 $14 = r21
-144 trace_line r38 L9
-145 r38 = eq_f32 r33 r21
-146 r38 = bit_and r35 r38
-147 r35 = bit_and r34 r38
-148 trace_line r35 L9
-149 r36 = select r38 r21 r36
-150 r38 = bit_or r37 r38
-151 r37 = bit_xor r10 r38
-152 r35 = bit_and r34 r37
-153 trace_line r35 L8
-154 trace_var r35 $14 = r22
-155 trace_line r35 L9
-156 r35 = eq_f32 r33 r22
-157 r35 = bit_and r37 r35
-158 r37 = bit_and r34 r35
-159 trace_line r37 L9
-160 r36 = select r35 r22 r36
-161 r35 = bit_or r38 r35
-162 r35 = bit_xor r10 r35
-163 r38 = bit_and r34 r35
-164 trace_line r38 L8
-165 trace_line r38 L11
-166 r35 = bit_clear r36 r35
-167 trace_exit r34 F1
-168 r35 = eq_f32 r14 r35
-169 r36 = bit_and r34 r35
-170 trace_enter r36 F2
-171 trace_var r36 $15 = r33
-172 trace_line r36 L17
-173 trace_var r36 $16 = r9
-174 trace_line r36 L18
-175 trace_var r36 $17 = r9
-176 trace_line r36 L19
-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 r10 r38
-182 r39 = bit_and r35 r37
-183 r39 = bit_and r34 r39
-184 trace_line r39 L20
-185 r37 = bit_or r38 r37
-186 r38 = bit_and r35 r37
-187 r38 = bit_and r34 r38
-188 trace_line r38 L18
-189 trace_var r38 $17 = r15
-190 trace_line r38 L19
-191 r38 = gt_f32 r33 r15
-192 r38 = bit_and r35 r38
-193 r38 = bit_and r37 r38
-194 r39 = bit_and r34 r38
-195 trace_line r39 L19
-196 r39 = bit_xor r10 r38
-197 r39 = bit_and r37 r39
-198 r37 = bit_and r35 r39
-199 r40 = bit_and r34 r37
-200 trace_line r40 L20
-201 r37 = bit_and r15 r37
-202 trace_var r40 $16 = r37
-203 r39 = bit_or r38 r39
-204 r38 = bit_and r35 r39
-205 r38 = bit_and r34 r38
-206 trace_line r38 L18
-207 trace_var r38 $17 = r16
-208 trace_line r38 L19
-209 r38 = gt_f32 r33 r16
-210 r38 = bit_and r35 r38
-211 r38 = bit_and r39 r38
-212 r40 = bit_and r34 r38
-213 trace_line r40 L19
-214 r40 = bit_xor r10 r38
-215 r40 = bit_and r39 r40
-216 r39 = bit_and r35 r40
-217 r41 = bit_and r34 r39
-218 trace_line r41 L20
-219 r42 = add_f32 r16 r37
-220 r37 = select r39 r42 r37
-221 trace_var r41 $16 = r37
-222 r40 = bit_or r38 r40
-223 r38 = bit_and r35 r40
-224 r38 = bit_and r34 r38
-225 trace_line r38 L18
-226 trace_var r38 $17 = r17
-227 trace_line r38 L19
-228 r38 = gt_f32 r33 r17
-229 r38 = bit_and r35 r38
-230 r38 = bit_and r40 r38
-231 r41 = bit_and r34 r38
-232 trace_line r41 L19
-233 r41 = bit_xor r10 r38
-234 r41 = bit_and r40 r41
-235 r40 = bit_and r35 r41
-236 r42 = bit_and r34 r40
-237 trace_line r42 L20
-238 r39 = add_f32 r17 r37
-239 r37 = select r40 r39 r37
-240 trace_var r42 $16 = r37
-241 r41 = bit_or r38 r41
-242 r38 = bit_and r35 r41
-243 r38 = bit_and r34 r38
-244 trace_line r38 L18
-245 trace_var r38 $17 = r18
-246 trace_line r38 L19
-247 r38 = gt_f32 r33 r18
-248 r38 = bit_and r35 r38
-249 r38 = bit_and r41 r38
-250 r42 = bit_and r34 r38
-251 trace_line r42 L19
-252 r42 = bit_xor r10 r38
-253 r42 = bit_and r41 r42
-254 r41 = bit_and r35 r42
-255 r39 = bit_and r34 r41
-256 trace_line r39 L20
-257 r40 = add_f32 r18 r37
-258 r37 = select r41 r40 r37
-259 trace_var r39 $16 = r37
-260 r42 = bit_or r38 r42
-261 r38 = bit_and r35 r42
-262 r38 = bit_and r34 r38
-263 trace_line r38 L18
-264 trace_var r38 $17 = r14
-265 trace_line r38 L19
-266 r38 = gt_f32 r33 r14
-267 r38 = bit_and r35 r38
-268 r38 = bit_and r42 r38
-269 r39 = bit_and r34 r38
-270 trace_line r39 L19
-271 r39 = bit_xor r10 r38
-272 r39 = bit_and r42 r39
-273 r42 = bit_and r35 r39
-274 r40 = bit_and r34 r42
-275 trace_line r40 L20
-276 r41 = add_f32 r14 r37
-277 r37 = select r42 r41 r37
-278 trace_var r40 $16 = r37
-279 r39 = bit_or r38 r39
-280 r38 = bit_and r35 r39
-281 r38 = bit_and r34 r38
-282 trace_line r38 L18
-283 trace_var r38 $17 = r19
-284 trace_line r38 L19
-285 r38 = gt_f32 r33 r19
-286 r38 = bit_and r35 r38
-287 r38 = bit_and r39 r38
-288 r40 = bit_and r34 r38
-289 trace_line r40 L19
-290 r40 = bit_xor r10 r38
-291 r40 = bit_and r39 r40
-292 r39 = bit_and r35 r40
-293 r41 = bit_and r34 r39
-294 trace_line r41 L20
-295 r42 = add_f32 r19 r37
-296 r37 = select r39 r42 r37
-297 trace_var r41 $16 = r37
-298 r40 = bit_or r38 r40
-299 r38 = bit_and r35 r40
-300 r38 = bit_and r34 r38
-301 trace_line r38 L18
-302 trace_var r38 $17 = r20
-303 trace_line r38 L19
-304 r38 = gt_f32 r33 r20
-305 r38 = bit_and r35 r38
-306 r38 = bit_and r40 r38
-307 r41 = bit_and r34 r38
-308 trace_line r41 L19
-309 r41 = bit_xor r10 r38
-310 r41 = bit_and r40 r41
-311 r40 = bit_and r35 r41
-312 r42 = bit_and r34 r40
-313 trace_line r42 L20
-314 r39 = add_f32 r20 r37
-315 r37 = select r40 r39 r37
-316 trace_var r42 $16 = r37
-317 r41 = bit_or r38 r41
-318 r38 = bit_and r35 r41
-319 r38 = bit_and r34 r38
-320 trace_line r38 L18
-321 trace_var r38 $17 = r21
-322 trace_line r38 L19
-323 r38 = gt_f32 r33 r21
-324 r38 = bit_and r35 r38
-325 r38 = bit_and r41 r38
-326 r42 = bit_and r34 r38
-327 trace_line r42 L19
-328 r42 = bit_xor r10 r38
-329 r42 = bit_and r41 r42
-330 r41 = bit_and r35 r42
-331 r39 = bit_and r34 r41
-332 trace_line r39 L20
-333 r40 = add_f32 r21 r37
-334 r37 = select r41 r40 r37
-335 trace_var r39 $16 = r37
-336 r42 = bit_or r38 r42
-337 r38 = bit_and r35 r42
-338 r38 = bit_and r34 r38
-339 trace_line r38 L18
-340 trace_var r38 $17 = r22
-341 trace_line r38 L19
-342 r38 = gt_f32 r33 r22
-343 r38 = bit_and r35 r38
-344 r38 = bit_and r42 r38
-345 r39 = bit_and r34 r38
-346 trace_line r39 L19
-347 r39 = bit_xor r10 r38
-348 r39 = bit_and r42 r39
-349 r42 = bit_and r35 r39
-350 r40 = bit_and r34 r42
-351 trace_line r40 L20
-352 r41 = add_f32 r22 r37
-353 r37 = select r42 r41 r37
-354 trace_var r40 $16 = r37
-355 r39 = bit_or r38 r39
-356 r39 = bit_and r35 r39
-357 r39 = bit_and r34 r39
-358 trace_line r39 L18
-359 trace_line r36 L22
-360 r37 = bit_and r35 r37
-361 trace_exit r36 F2
-362 r37 = eq_f32 r37 r23
-363 r37 = bit_and r35 r37
-364 r35 = bit_and r34 r37
-365 trace_enter r35 F3
-366 trace_var r35 $18 = r33
-367 trace_line r35 L27
-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 = r9
-373 trace_line r35 L30
-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 r10 r36
-379 r39 = bit_and r37 r36
-380 r39 = bit_and r34 r39
-381 trace_line r39 L31
-382 trace_line r39 L29
-383 trace_var r39 $21 = r15
-384 trace_line r39 L30
-385 r39 = gt_f32 r15 r33
-386 r39 = bit_and r37 r39
-387 r39 = bit_and r36 r39
-388 r38 = bit_and r34 r39
-389 trace_line r38 L30
-390 r39 = bit_xor r10 r39
-391 r39 = bit_and r36 r39
-392 r36 = bit_and r37 r39
-393 r38 = bit_and r34 r36
-394 trace_line r38 L31
-395 r36 = bit_and r15 r36
-396 trace_var r38 $19 = r36
-397 trace_line r38 L29
-398 trace_var r38 $21 = r16
-399 trace_line r38 L30
-400 r38 = gt_f32 r16 r33
-401 r38 = bit_and r37 r38
-402 r38 = bit_and r39 r38
-403 r40 = bit_and r34 r38
-404 trace_line r40 L30
-405 r38 = bit_xor r10 r38
-406 r38 = bit_and r39 r38
-407 r39 = bit_and r37 r38
-408 r40 = bit_and r34 r39
-409 trace_line r40 L31
-410 r41 = add_f32 r16 r36
-411 r36 = select r39 r41 r36
-412 trace_var r40 $19 = r36
-413 trace_line r40 L29
-414 trace_var r40 $21 = r17
-415 trace_line r40 L30
-416 r40 = gt_f32 r17 r33
-417 r40 = bit_and r37 r40
-418 r40 = bit_and r38 r40
-419 r41 = bit_and r34 r40
-420 trace_line r41 L30
-421 r40 = bit_xor r10 r40
-422 r40 = bit_and r38 r40
-423 r38 = bit_and r37 r40
-424 r41 = bit_and r34 r38
-425 trace_line r41 L31
-426 r39 = add_f32 r17 r36
-427 r36 = select r38 r39 r36
-428 trace_var r41 $19 = r36
-429 trace_line r41 L29
-430 trace_var r41 $21 = r18
-431 trace_line r41 L30
-432 r41 = gt_f32 r18 r33
-433 r41 = bit_and r37 r41
-434 r41 = bit_and r40 r41
-435 r39 = bit_and r34 r41
-436 trace_line r39 L30
-437 r41 = bit_xor r10 r41
-438 r41 = bit_and r40 r41
-439 r40 = bit_and r37 r41
-440 r39 = bit_and r34 r40
-441 trace_line r39 L31
-442 r38 = add_f32 r18 r36
-443 r36 = select r40 r38 r36
-444 trace_var r39 $19 = r36
-445 trace_line r39 L29
-446 trace_var r39 $21 = r14
-447 trace_line r39 L30
-448 r39 = gt_f32 r14 r33
-449 r39 = bit_and r37 r39
-450 r39 = bit_and r41 r39
-451 r38 = bit_and r34 r39
-452 trace_line r38 L30
-453 r39 = bit_xor r10 r39
-454 r39 = bit_and r41 r39
-455 r41 = bit_and r37 r39
-456 r38 = bit_and r34 r41
-457 trace_line r38 L31
-458 r40 = add_f32 r14 r36
-459 r36 = select r41 r40 r36
-460 trace_var r38 $19 = r36
-461 trace_line r38 L29
-462 trace_var r38 $21 = r19
-463 trace_line r38 L30
-464 r38 = gt_f32 r19 r33
-465 r38 = bit_and r37 r38
-466 r38 = bit_and r39 r38
-467 r40 = bit_and r34 r38
-468 trace_line r40 L30
-469 r38 = bit_xor r10 r38
-470 r38 = bit_and r39 r38
-471 r39 = bit_and r37 r38
-472 r40 = bit_and r34 r39
-473 trace_line r40 L31
-474 r41 = add_f32 r19 r36
-475 r36 = select r39 r41 r36
-476 trace_var r40 $19 = r36
-477 trace_line r40 L29
-478 trace_var r40 $21 = r20
-479 trace_line r40 L30
-480 r40 = gt_f32 r20 r33
-481 r40 = bit_and r37 r40
-482 r40 = bit_and r38 r40
-483 r41 = bit_and r34 r40
-484 trace_line r41 L30
-485 r40 = bit_xor r10 r40
-486 r40 = bit_and r38 r40
-487 r38 = bit_and r37 r40
-488 r41 = bit_and r34 r38
-489 trace_line r41 L31
-490 r39 = add_f32 r20 r36
-491 r36 = select r38 r39 r36
-492 trace_var r41 $19 = r36
-493 trace_line r41 L29
-494 trace_var r41 $21 = r21
-495 trace_line r41 L30
-496 r41 = gt_f32 r21 r33
-497 r41 = bit_and r37 r41
-498 r41 = bit_and r40 r41
-499 r39 = bit_and r34 r41
-500 trace_line r39 L30
-501 r41 = bit_xor r10 r41
-502 r41 = bit_and r40 r41
-503 r40 = bit_and r37 r41
-504 r39 = bit_and r34 r40
-505 trace_line r39 L31
-506 r38 = add_f32 r21 r36
-507 r36 = select r40 r38 r36
-508 trace_var r39 $19 = r36
-509 trace_line r39 L29
-510 trace_var r39 $21 = r22
-511 trace_line r39 L30
-512 r33 = gt_f32 r22 r33
-513 r33 = bit_and r37 r33
-514 r33 = bit_and r41 r33
-515 r39 = bit_and r34 r33
-516 trace_line r39 L30
-517 r33 = bit_xor r10 r33
-518 r33 = bit_and r41 r33
-519 r33 = bit_and r37 r33
-520 r41 = bit_and r34 r33
-521 trace_line r41 L31
-522 r39 = add_f32 r22 r36
-523 r36 = select r33 r39 r36
-524 trace_var r41 $19 = r36
-525 trace_line r41 L29
-526 trace_line r35 L33
-527 r36 = bit_and r37 r36
-528 trace_exit r35 F3
-529 r36 = eq_f32 r36 r24
-530 r36 = bit_and r37 r36
-531 r37 = bit_and r34 r36
-532 trace_enter r37 F4
-533 trace_line r37 L38
-534 trace_var r37 $22 = r9
-535 trace_line r37 L39
-536 trace_var r37 $23 = r25
-537 trace_line r37 L40
-538 r35 = bit_and r36 r25
-539 trace_var r37 $22 = r35
-540 trace_line r37 L39
-541 trace_var r37 $23 = r26
-542 trace_line r37 L40
-543 r41 = add_f32 r35 r26
-544 r35 = select r36 r41 r35
-545 trace_var r37 $22 = r35
-546 trace_line r37 L39
-547 trace_var r37 $23 = r27
-548 trace_line r37 L40
-549 r41 = add_f32 r35 r27
-550 r35 = select r36 r41 r35
-551 trace_var r37 $22 = r35
-552 trace_line r37 L39
-553 trace_var r37 $23 = r28
-554 trace_line r37 L40
-555 r41 = add_f32 r35 r28
-556 r35 = select r36 r41 r35
-557 trace_var r37 $22 = r35
-558 trace_line r37 L39
-559 trace_var r37 $23 = r29
-560 trace_line r37 L40
-561 r41 = add_f32 r35 r29
-562 r35 = select r36 r41 r35
-563 trace_var r37 $22 = r35
-564 trace_line r37 L39
-565 trace_line r37 L42
-566 r35 = sub_f32 r35 r30
-567 r35 = bit_and r36 r35
-568 trace_exit r37 F4
-569 r35 = bit_and r35 r31
-570 r35 = gt_f32 r32 r35
-571 r35 = bit_and r36 r35
-572 r36 = bit_and r34 r35
-573 trace_enter r36 F5
-574 trace_line r36 L47
-575 trace_line r36 L48
-576 trace_line r36 L50
-577 trace_var r36 $24 = r22
-578 trace_var r36 $25 = r22
-579 trace_var r36 $26 = r22
-580 trace_var r36 $27 = r22
-581 trace_line r36 L51
-582 trace_var r36 $28 = r15
-583 trace_line r36 L52
-584 r37 = select r35 r15 r22
-585 trace_var r36 $27 = r37
-586 trace_line r36 L51
-587 trace_var r36 $28 = r16
-588 trace_line r36 L52
-589 r41 = select r35 r37 r22
-590 trace_var r36 $26 = r41
-591 r37 = select r35 r16 r37
-592 trace_var r36 $27 = r37
-593 trace_line r36 L51
-594 trace_var r36 $28 = r17
-595 trace_line r36 L52
-596 r39 = select r35 r41 r22
-597 trace_var r36 $25 = r39
-598 r41 = select r35 r37 r41
-599 trace_var r36 $26 = r41
-600 r37 = select r35 r17 r37
-601 trace_var r36 $27 = r37
-602 trace_line r36 L51
-603 trace_line r36 L54
-604 r39 = eq_f32 r15 r39
-605 r41 = eq_f32 r16 r41
-606 r37 = eq_f32 r17 r37
-607 r41 = bit_and r39 r41
-608 r41 = bit_and r37 r41
-609 r41 = bit_and r35 r41
-610 trace_exit r36 F5
-611 r41 = bit_and r35 r41
-612 r35 = bit_and r34 r41
-613 trace_enter r35 F6
-614 trace_line r35 L59
-615 trace_line r35 L60
-616 trace_line r35 L62
-617 trace_var r35 $29 = r22
-618 trace_var r35 $30 = r22
-619 trace_var r35 $31 = r22
-620 trace_var r35 $32 = r22
-621 trace_line r35 L63
-622 trace_var r35 $33 = r15
-623 trace_line r35 L64
-624 r36 = select r41 r15 r22
-625 trace_var r35 $32 = r36
-626 trace_line r35 L63
-627 trace_var r35 $33 = r16
-628 trace_line r35 L64
-629 r37 = select r41 r36 r22
-630 trace_var r35 $31 = r37
-631 r36 = select r41 r16 r36
-632 trace_var r35 $32 = r36
-633 trace_line r35 L63
-634 trace_var r35 $33 = r17
-635 trace_line r35 L64
-636 r39 = select r41 r37 r22
-637 trace_var r35 $30 = r39
-638 r37 = select r41 r36 r37
-639 trace_var r35 $31 = r37
-640 r36 = select r41 r17 r36
-641 trace_var r35 $32 = r36
-642 trace_line r35 L63
-643 trace_line r35 L66
-644 r39 = eq_f32 r15 r39
-645 r37 = eq_f32 r16 r37
-646 r36 = eq_f32 r17 r36
-647 r37 = bit_and r39 r37
-648 r37 = bit_and r36 r37
-649 r37 = bit_and r41 r37
-650 trace_exit r35 F6
-651 r37 = bit_and r41 r37
-652 r41 = bit_and r34 r37
-653 trace_enter r41 F7
-654 trace_line r41 L71
-655 trace_line r41 L72
-656 trace_line r41 L74
-657 trace_var r41 $34 = r22
-658 trace_var r41 $35 = r22
-659 trace_var r41 $36 = r22
-660 trace_var r41 $37 = r22
-661 trace_line r41 L75
-662 trace_var r41 $38 = r17
-663 trace_line r41 L76
-664 r35 = select r37 r17 r22
-665 trace_var r41 $37 = r35
-666 trace_line r41 L75
-667 trace_var r41 $38 = r16
-668 trace_line r41 L76
-669 r36 = select r37 r35 r22
-670 trace_var r41 $36 = r36
-671 r35 = select r37 r16 r35
-672 trace_var r41 $37 = r35
-673 trace_line r41 L75
-674 trace_var r41 $38 = r15
-675 trace_line r41 L76
-676 r39 = select r37 r36 r22
-677 trace_var r41 $35 = r39
-678 r36 = select r37 r35 r36
-679 trace_var r41 $36 = r36
-680 r35 = select r37 r15 r35
-681 trace_var r41 $37 = r35
+63 trace_var r36 $17 = r9
+64 r36 = bit_xor r10 r35
+65 r37 = bit_and r34 r36
+66 trace_line r37 L8
+67 trace_var r37 $19 = r15
+68 trace_line r37 L9
+69 r37 = eq_f32 r33 r15
+70 r37 = bit_and r36 r37
+71 r36 = bit_and r34 r37
+72 trace_line r36 L9
+73 r38 = bit_and r15 r37
+74 trace_var r36 $17 = r38
+75 r37 = bit_or r35 r37
+76 r35 = bit_xor r10 r37
+77 r36 = bit_and r34 r35
+78 trace_line r36 L8
+79 trace_var r36 $19 = r16
+80 trace_line r36 L9
+81 r36 = eq_f32 r33 r16
+82 r36 = bit_and r35 r36
+83 r35 = bit_and r34 r36
+84 trace_line r35 L9
+85 r38 = select r36 r16 r38
+86 trace_var r35 $17 = r38
+87 r36 = bit_or r37 r36
+88 r37 = bit_xor r10 r36
+89 r35 = bit_and r34 r37
+90 trace_line r35 L8
+91 trace_var r35 $19 = r17
+92 trace_line r35 L9
+93 r35 = eq_f32 r33 r17
+94 r35 = bit_and r37 r35
+95 r37 = bit_and r34 r35
+96 trace_line r37 L9
+97 r38 = select r35 r17 r38
+98 trace_var r37 $17 = r38
+99 r35 = bit_or r36 r35
+100 r36 = bit_xor r10 r35
+101 r37 = bit_and r34 r36
+102 trace_line r37 L8
+103 trace_var r37 $19 = r18
+104 trace_line r37 L9
+105 r37 = eq_f32 r33 r18
+106 r37 = bit_and r36 r37
+107 r36 = bit_and r34 r37
+108 trace_line r36 L9
+109 r38 = select r37 r18 r38
+110 trace_var r36 $17 = r38
+111 r37 = bit_or r35 r37
+112 r35 = bit_xor r10 r37
+113 r36 = bit_and r34 r35
+114 trace_line r36 L8
+115 trace_var r36 $19 = r14
+116 trace_line r36 L9
+117 r36 = eq_f32 r14 r33
+118 r36 = bit_and r35 r36
+119 r35 = bit_and r34 r36
+120 trace_line r35 L9
+121 r38 = select r36 r14 r38
+122 trace_var r35 $17 = r38
+123 r36 = bit_or r37 r36
+124 r37 = bit_xor r10 r36
+125 r35 = bit_and r34 r37
+126 trace_line r35 L8
+127 trace_var r35 $19 = r19
+128 trace_line r35 L9
+129 r35 = eq_f32 r33 r19
+130 r35 = bit_and r37 r35
+131 r37 = bit_and r34 r35
+132 trace_line r37 L9
+133 r38 = select r35 r19 r38
+134 trace_var r37 $17 = r38
+135 r35 = bit_or r36 r35
+136 r36 = bit_xor r10 r35
+137 r37 = bit_and r34 r36
+138 trace_line r37 L8
+139 trace_var r37 $19 = r20
+140 trace_line r37 L9
+141 r37 = eq_f32 r33 r20
+142 r37 = bit_and r36 r37
+143 r36 = bit_and r34 r37
+144 trace_line r36 L9
+145 r38 = select r37 r20 r38
+146 trace_var r36 $17 = r38
+147 r37 = bit_or r35 r37
+148 r35 = bit_xor r10 r37
+149 r36 = bit_and r34 r35
+150 trace_line r36 L8
+151 trace_var r36 $19 = r21
+152 trace_line r36 L9
+153 r36 = eq_f32 r33 r21
+154 r36 = bit_and r35 r36
+155 r35 = bit_and r34 r36
+156 trace_line r35 L9
+157 r38 = select r36 r21 r38
+158 trace_var r35 $17 = r38
+159 r36 = bit_or r37 r36
+160 r37 = bit_xor r10 r36
+161 r35 = bit_and r34 r37
+162 trace_line r35 L8
+163 trace_var r35 $19 = r22
+164 trace_line r35 L9
+165 r35 = eq_f32 r33 r22
+166 r35 = bit_and r37 r35
+167 r37 = bit_and r34 r35
+168 trace_line r37 L9
+169 r38 = select r35 r22 r38
+170 trace_var r37 $17 = r38
+171 r35 = bit_or r36 r35
+172 r35 = bit_xor r10 r35
+173 r36 = bit_and r34 r35
+174 trace_line r36 L8
+175 trace_line r36 L11
+176 r35 = bit_clear r38 r35
+177 trace_var r36 $17 = r35
+178 trace_exit r34 F1
+179 r35 = eq_f32 r14 r35
+180 r36 = bit_and r34 r35
+181 trace_enter r36 F2
+182 trace_var r36 $21 = r33
+183 trace_line r36 L17
+184 trace_var r36 $22 = r9
+185 trace_line r36 L18
+186 trace_var r36 $23 = r9
+187 trace_line r36 L19
+188 r38 = gt_f32 r33 r9
+189 r38 = bit_and r35 r38
+190 r37 = bit_and r34 r38
+191 trace_line r37 L19
+192 r37 = bit_xor r10 r38
+193 r39 = bit_and r35 r37
+194 r39 = bit_and r34 r39
+195 trace_line r39 L20
+196 r37 = bit_or r38 r37
+197 r38 = bit_and r35 r37
+198 r38 = bit_and r34 r38
+199 trace_line r38 L18
+200 trace_var r38 $23 = r15
+201 trace_line r38 L19
+202 r38 = gt_f32 r33 r15
+203 r38 = bit_and r35 r38
+204 r38 = bit_and r37 r38
+205 r39 = bit_and r34 r38
+206 trace_line r39 L19
+207 r39 = bit_xor r10 r38
+208 r39 = bit_and r37 r39
+209 r37 = bit_and r35 r39
+210 r40 = bit_and r34 r37
+211 trace_line r40 L20
+212 r37 = bit_and r15 r37
+213 trace_var r40 $22 = r37
+214 r39 = bit_or r38 r39
+215 r38 = bit_and r35 r39
+216 r38 = bit_and r34 r38
+217 trace_line r38 L18
+218 trace_var r38 $23 = r16
+219 trace_line r38 L19
+220 r38 = gt_f32 r33 r16
+221 r38 = bit_and r35 r38
+222 r38 = bit_and r39 r38
+223 r40 = bit_and r34 r38
+224 trace_line r40 L19
+225 r40 = bit_xor r10 r38
+226 r40 = bit_and r39 r40
+227 r39 = bit_and r35 r40
+228 r41 = bit_and r34 r39
+229 trace_line r41 L20
+230 r42 = add_f32 r16 r37
+231 r37 = select r39 r42 r37
+232 trace_var r41 $22 = r37
+233 r40 = bit_or r38 r40
+234 r38 = bit_and r35 r40
+235 r38 = bit_and r34 r38
+236 trace_line r38 L18
+237 trace_var r38 $23 = r17
+238 trace_line r38 L19
+239 r38 = gt_f32 r33 r17
+240 r38 = bit_and r35 r38
+241 r38 = bit_and r40 r38
+242 r41 = bit_and r34 r38
+243 trace_line r41 L19
+244 r41 = bit_xor r10 r38
+245 r41 = bit_and r40 r41
+246 r40 = bit_and r35 r41
+247 r42 = bit_and r34 r40
+248 trace_line r42 L20
+249 r39 = add_f32 r17 r37
+250 r37 = select r40 r39 r37
+251 trace_var r42 $22 = r37
+252 r41 = bit_or r38 r41
+253 r38 = bit_and r35 r41
+254 r38 = bit_and r34 r38
+255 trace_line r38 L18
+256 trace_var r38 $23 = r18
+257 trace_line r38 L19
+258 r38 = gt_f32 r33 r18
+259 r38 = bit_and r35 r38
+260 r38 = bit_and r41 r38
+261 r42 = bit_and r34 r38
+262 trace_line r42 L19
+263 r42 = bit_xor r10 r38
+264 r42 = bit_and r41 r42
+265 r41 = bit_and r35 r42
+266 r39 = bit_and r34 r41
+267 trace_line r39 L20
+268 r40 = add_f32 r18 r37
+269 r37 = select r41 r40 r37
+270 trace_var r39 $22 = r37
+271 r42 = bit_or r38 r42
+272 r38 = bit_and r35 r42
+273 r38 = bit_and r34 r38
+274 trace_line r38 L18
+275 trace_var r38 $23 = r14
+276 trace_line r38 L19
+277 r38 = gt_f32 r33 r14
+278 r38 = bit_and r35 r38
+279 r38 = bit_and r42 r38
+280 r39 = bit_and r34 r38
+281 trace_line r39 L19
+282 r39 = bit_xor r10 r38
+283 r39 = bit_and r42 r39
+284 r42 = bit_and r35 r39
+285 r40 = bit_and r34 r42
+286 trace_line r40 L20
+287 r41 = add_f32 r14 r37
+288 r37 = select r42 r41 r37
+289 trace_var r40 $22 = r37
+290 r39 = bit_or r38 r39
+291 r38 = bit_and r35 r39
+292 r38 = bit_and r34 r38
+293 trace_line r38 L18
+294 trace_var r38 $23 = r19
+295 trace_line r38 L19
+296 r38 = gt_f32 r33 r19
+297 r38 = bit_and r35 r38
+298 r38 = bit_and r39 r38
+299 r40 = bit_and r34 r38
+300 trace_line r40 L19
+301 r40 = bit_xor r10 r38
+302 r40 = bit_and r39 r40
+303 r39 = bit_and r35 r40
+304 r41 = bit_and r34 r39
+305 trace_line r41 L20
+306 r42 = add_f32 r19 r37
+307 r37 = select r39 r42 r37
+308 trace_var r41 $22 = r37
+309 r40 = bit_or r38 r40
+310 r38 = bit_and r35 r40
+311 r38 = bit_and r34 r38
+312 trace_line r38 L18
+313 trace_var r38 $23 = r20
+314 trace_line r38 L19
+315 r38 = gt_f32 r33 r20
+316 r38 = bit_and r35 r38
+317 r38 = bit_and r40 r38
+318 r41 = bit_and r34 r38
+319 trace_line r41 L19
+320 r41 = bit_xor r10 r38
+321 r41 = bit_and r40 r41
+322 r40 = bit_and r35 r41
+323 r42 = bit_and r34 r40
+324 trace_line r42 L20
+325 r39 = add_f32 r20 r37
+326 r37 = select r40 r39 r37
+327 trace_var r42 $22 = r37
+328 r41 = bit_or r38 r41
+329 r38 = bit_and r35 r41
+330 r38 = bit_and r34 r38
+331 trace_line r38 L18
+332 trace_var r38 $23 = r21
+333 trace_line r38 L19
+334 r38 = gt_f32 r33 r21
+335 r38 = bit_and r35 r38
+336 r38 = bit_and r41 r38
+337 r42 = bit_and r34 r38
+338 trace_line r42 L19
+339 r42 = bit_xor r10 r38
+340 r42 = bit_and r41 r42
+341 r41 = bit_and r35 r42
+342 r39 = bit_and r34 r41
+343 trace_line r39 L20
+344 r40 = add_f32 r21 r37
+345 r37 = select r41 r40 r37
+346 trace_var r39 $22 = r37
+347 r42 = bit_or r38 r42
+348 r38 = bit_and r35 r42
+349 r38 = bit_and r34 r38
+350 trace_line r38 L18
+351 trace_var r38 $23 = r22
+352 trace_line r38 L19
+353 r38 = gt_f32 r33 r22
+354 r38 = bit_and r35 r38
+355 r38 = bit_and r42 r38
+356 r39 = bit_and r34 r38
+357 trace_line r39 L19
+358 r39 = bit_xor r10 r38
+359 r39 = bit_and r42 r39
+360 r42 = bit_and r35 r39
+361 r40 = bit_and r34 r42
+362 trace_line r40 L20
+363 r41 = add_f32 r22 r37
+364 r37 = select r42 r41 r37
+365 trace_var r40 $22 = r37
+366 r39 = bit_or r38 r39
+367 r39 = bit_and r35 r39
+368 r39 = bit_and r34 r39
+369 trace_line r39 L18
+370 trace_line r36 L22
+371 r37 = bit_and r35 r37
+372 trace_var r36 $20 = r37
+373 trace_exit r36 F2
+374 r37 = eq_f32 r37 r23
+375 r37 = bit_and r35 r37
+376 r35 = bit_and r34 r37
+377 trace_enter r35 F3
+378 trace_var r35 $25 = r33
+379 trace_line r35 L27
+380 trace_var r35 $26 = r9
+381 trace_line r35 L28
+382 trace_var r35 $27 = r15
+383 trace_line r35 L29
+384 trace_var r35 $28 = r9
+385 trace_line r35 L30
+386 r36 = gt_f32 r9 r33
+387 r36 = bit_and r37 r36
+388 r39 = bit_and r34 r36
+389 trace_line r39 L30
+390 r36 = bit_xor r10 r36
+391 r39 = bit_and r37 r36
+392 r39 = bit_and r34 r39
+393 trace_line r39 L31
+394 trace_line r39 L29
+395 trace_var r39 $28 = r15
+396 trace_line r39 L30
+397 r39 = gt_f32 r15 r33
+398 r39 = bit_and r37 r39
+399 r39 = bit_and r36 r39
+400 r38 = bit_and r34 r39
+401 trace_line r38 L30
+402 r39 = bit_xor r10 r39
+403 r39 = bit_and r36 r39
+404 r36 = bit_and r37 r39
+405 r38 = bit_and r34 r36
+406 trace_line r38 L31
+407 r36 = bit_and r15 r36
+408 trace_var r38 $26 = r36
+409 trace_line r38 L29
+410 trace_var r38 $28 = r16
+411 trace_line r38 L30
+412 r38 = gt_f32 r16 r33
+413 r38 = bit_and r37 r38
+414 r38 = bit_and r39 r38
+415 r40 = bit_and r34 r38
+416 trace_line r40 L30
+417 r38 = bit_xor r10 r38
+418 r38 = bit_and r39 r38
+419 r39 = bit_and r37 r38
+420 r40 = bit_and r34 r39
+421 trace_line r40 L31
+422 r41 = add_f32 r16 r36
+423 r36 = select r39 r41 r36
+424 trace_var r40 $26 = r36
+425 trace_line r40 L29
+426 trace_var r40 $28 = r17
+427 trace_line r40 L30
+428 r40 = gt_f32 r17 r33
+429 r40 = bit_and r37 r40
+430 r40 = bit_and r38 r40
+431 r41 = bit_and r34 r40
+432 trace_line r41 L30
+433 r40 = bit_xor r10 r40
+434 r40 = bit_and r38 r40
+435 r38 = bit_and r37 r40
+436 r41 = bit_and r34 r38
+437 trace_line r41 L31
+438 r39 = add_f32 r17 r36
+439 r36 = select r38 r39 r36
+440 trace_var r41 $26 = r36
+441 trace_line r41 L29
+442 trace_var r41 $28 = r18
+443 trace_line r41 L30
+444 r41 = gt_f32 r18 r33
+445 r41 = bit_and r37 r41
+446 r41 = bit_and r40 r41
+447 r39 = bit_and r34 r41
+448 trace_line r39 L30
+449 r41 = bit_xor r10 r41
+450 r41 = bit_and r40 r41
+451 r40 = bit_and r37 r41
+452 r39 = bit_and r34 r40
+453 trace_line r39 L31
+454 r38 = add_f32 r18 r36
+455 r36 = select r40 r38 r36
+456 trace_var r39 $26 = r36
+457 trace_line r39 L29
+458 trace_var r39 $28 = r14
+459 trace_line r39 L30
+460 r39 = gt_f32 r14 r33
+461 r39 = bit_and r37 r39
+462 r39 = bit_and r41 r39
+463 r38 = bit_and r34 r39
+464 trace_line r38 L30
+465 r39 = bit_xor r10 r39
+466 r39 = bit_and r41 r39
+467 r41 = bit_and r37 r39
+468 r38 = bit_and r34 r41
+469 trace_line r38 L31
+470 r40 = add_f32 r14 r36
+471 r36 = select r41 r40 r36
+472 trace_var r38 $26 = r36
+473 trace_line r38 L29
+474 trace_var r38 $28 = r19
+475 trace_line r38 L30
+476 r38 = gt_f32 r19 r33
+477 r38 = bit_and r37 r38
+478 r38 = bit_and r39 r38
+479 r40 = bit_and r34 r38
+480 trace_line r40 L30
+481 r38 = bit_xor r10 r38
+482 r38 = bit_and r39 r38
+483 r39 = bit_and r37 r38
+484 r40 = bit_and r34 r39
+485 trace_line r40 L31
+486 r41 = add_f32 r19 r36
+487 r36 = select r39 r41 r36
+488 trace_var r40 $26 = r36
+489 trace_line r40 L29
+490 trace_var r40 $28 = r20
+491 trace_line r40 L30
+492 r40 = gt_f32 r20 r33
+493 r40 = bit_and r37 r40
+494 r40 = bit_and r38 r40
+495 r41 = bit_and r34 r40
+496 trace_line r41 L30
+497 r40 = bit_xor r10 r40
+498 r40 = bit_and r38 r40
+499 r38 = bit_and r37 r40
+500 r41 = bit_and r34 r38
+501 trace_line r41 L31
+502 r39 = add_f32 r20 r36
+503 r36 = select r38 r39 r36
+504 trace_var r41 $26 = r36
+505 trace_line r41 L29
+506 trace_var r41 $28 = r21
+507 trace_line r41 L30
+508 r41 = gt_f32 r21 r33
+509 r41 = bit_and r37 r41
+510 r41 = bit_and r40 r41
+511 r39 = bit_and r34 r41
+512 trace_line r39 L30
+513 r41 = bit_xor r10 r41
+514 r41 = bit_and r40 r41
+515 r40 = bit_and r37 r41
+516 r39 = bit_and r34 r40
+517 trace_line r39 L31
+518 r38 = add_f32 r21 r36
+519 r36 = select r40 r38 r36
+520 trace_var r39 $26 = r36
+521 trace_line r39 L29
+522 trace_var r39 $28 = r22
+523 trace_line r39 L30
+524 r33 = gt_f32 r22 r33
+525 r33 = bit_and r37 r33
+526 r33 = bit_and r41 r33
+527 r39 = bit_and r34 r33
+528 trace_line r39 L30
+529 r33 = bit_xor r10 r33
+530 r33 = bit_and r41 r33
+531 r33 = bit_and r37 r33
+532 r41 = bit_and r34 r33
+533 trace_line r41 L31
+534 r39 = add_f32 r22 r36
+535 r36 = select r33 r39 r36
+536 trace_var r41 $26 = r36
+537 trace_line r41 L29
+538 trace_line r35 L33
+539 r36 = bit_and r37 r36
+540 trace_var r35 $24 = r36
+541 trace_exit r35 F3
+542 r36 = eq_f32 r36 r24
+543 r36 = bit_and r37 r36
+544 r37 = bit_and r34 r36
+545 trace_enter r37 F4
+546 trace_line r37 L38
+547 trace_var r37 $30 = r9
+548 trace_line r37 L39
+549 trace_var r37 $31 = r25
+550 trace_line r37 L40
+551 r35 = bit_and r36 r25
+552 trace_var r37 $30 = r35
+553 trace_line r37 L39
+554 trace_var r37 $31 = r26
+555 trace_line r37 L40
+556 r41 = add_f32 r35 r26
+557 r35 = select r36 r41 r35
+558 trace_var r37 $30 = r35
+559 trace_line r37 L39
+560 trace_var r37 $31 = r27
+561 trace_line r37 L40
+562 r41 = add_f32 r35 r27
+563 r35 = select r36 r41 r35
+564 trace_var r37 $30 = r35
+565 trace_line r37 L39
+566 trace_var r37 $31 = r28
+567 trace_line r37 L40
+568 r41 = add_f32 r35 r28
+569 r35 = select r36 r41 r35
+570 trace_var r37 $30 = r35
+571 trace_line r37 L39
+572 trace_var r37 $31 = r29
+573 trace_line r37 L40
+574 r41 = add_f32 r35 r29
+575 r35 = select r36 r41 r35
+576 trace_var r37 $30 = r35
+577 trace_line r37 L39
+578 trace_line r37 L42
+579 r35 = sub_f32 r35 r30
+580 r35 = bit_and r36 r35
+581 trace_var r37 $29 = r35
+582 trace_exit r37 F4
+583 r35 = bit_and r35 r31
+584 r35 = gt_f32 r32 r35
+585 r35 = bit_and r36 r35
+586 r36 = bit_and r34 r35
+587 trace_enter r36 F5
+588 trace_line r36 L47
+589 trace_line r36 L48
+590 trace_line r36 L50
+591 trace_var r36 $33 = r22
+592 trace_var r36 $34 = r22
+593 trace_var r36 $35 = r22
+594 trace_var r36 $36 = r22
+595 trace_line r36 L51
+596 trace_var r36 $37 = r15
+597 trace_line r36 L52
+598 r37 = select r35 r15 r22
+599 trace_var r36 $36 = r37
+600 trace_line r36 L51
+601 trace_var r36 $37 = r16
+602 trace_line r36 L52
+603 r41 = select r35 r37 r22
+604 trace_var r36 $35 = r41
+605 r37 = select r35 r16 r37
+606 trace_var r36 $36 = r37
+607 trace_line r36 L51
+608 trace_var r36 $37 = r17
+609 trace_line r36 L52
+610 r39 = select r35 r41 r22
+611 trace_var r36 $34 = r39
+612 r41 = select r35 r37 r41
+613 trace_var r36 $35 = r41
+614 r37 = select r35 r17 r37
+615 trace_var r36 $36 = r37
+616 trace_line r36 L51
+617 trace_line r36 L54
+618 r39 = eq_f32 r15 r39
+619 r41 = eq_f32 r16 r41
+620 r37 = eq_f32 r17 r37
+621 r41 = bit_and r39 r41
+622 r41 = bit_and r37 r41
+623 r41 = bit_and r35 r41
+624 trace_var r36 $32 = r41
+625 trace_exit r36 F5
+626 r41 = bit_and r35 r41
+627 r35 = bit_and r34 r41
+628 trace_enter r35 F6
+629 trace_line r35 L59
+630 trace_line r35 L60
+631 trace_line r35 L62
+632 trace_var r35 $39 = r22
+633 trace_var r35 $40 = r22
+634 trace_var r35 $41 = r22
+635 trace_var r35 $42 = r22
+636 trace_line r35 L63
+637 trace_var r35 $43 = r15
+638 trace_line r35 L64
+639 r36 = select r41 r15 r22
+640 trace_var r35 $42 = r36
+641 trace_line r35 L63
+642 trace_var r35 $43 = r16
+643 trace_line r35 L64
+644 r37 = select r41 r36 r22
+645 trace_var r35 $41 = r37
+646 r36 = select r41 r16 r36
+647 trace_var r35 $42 = r36
+648 trace_line r35 L63
+649 trace_var r35 $43 = r17
+650 trace_line r35 L64
+651 r39 = select r41 r37 r22
+652 trace_var r35 $40 = r39
+653 r37 = select r41 r36 r37
+654 trace_var r35 $41 = r37
+655 r36 = select r41 r17 r36
+656 trace_var r35 $42 = r36
+657 trace_line r35 L63
+658 trace_line r35 L66
+659 r39 = eq_f32 r15 r39
+660 r37 = eq_f32 r16 r37
+661 r36 = eq_f32 r17 r36
+662 r37 = bit_and r39 r37
+663 r37 = bit_and r36 r37
+664 r37 = bit_and r41 r37
+665 trace_var r35 $38 = r37
+666 trace_exit r35 F6
+667 r37 = bit_and r41 r37
+668 r41 = bit_and r34 r37
+669 trace_enter r41 F7
+670 trace_line r41 L71
+671 trace_line r41 L72
+672 trace_line r41 L74
+673 trace_var r41 $45 = r22
+674 trace_var r41 $46 = r22
+675 trace_var r41 $47 = r22
+676 trace_var r41 $48 = r22
+677 trace_line r41 L75
+678 trace_var r41 $49 = r17
+679 trace_line r41 L76
+680 r35 = select r37 r17 r22
+681 trace_var r41 $48 = r35
682 trace_line r41 L75
-683 trace_line r41 L78
-684 r39 = eq_f32 r17 r39
-685 r36 = eq_f32 r16 r36
-686 r35 = eq_f32 r15 r35
-687 r36 = bit_and r39 r36
-688 r36 = bit_and r35 r36
-689 r36 = bit_and r37 r36
-690 trace_exit r41 F7
-691 r36 = bit_and r37 r36
-692 r37 = bit_and r34 r36
-693 trace_enter r37 F8
-694 trace_line r37 L83
-695 trace_line r37 L84
-696 trace_line r37 L86
-697 trace_var r37 $39 = r22
-698 trace_var r37 $40 = r22
-699 trace_var r37 $41 = r22
-700 trace_var r37 $42 = r22
-701 trace_line r37 L87
-702 trace_var r37 $43 = r17
-703 trace_line r37 L88
-704 r41 = select r36 r17 r22
-705 trace_var r37 $42 = r41
-706 trace_line r37 L87
-707 trace_var r37 $43 = r16
-708 trace_line r37 L88
-709 r35 = select r36 r41 r22
-710 trace_var r37 $41 = r35
-711 r41 = select r36 r16 r41
-712 trace_var r37 $42 = r41
-713 trace_line r37 L87
-714 trace_var r37 $43 = r15
-715 trace_line r37 L88
-716 r39 = select r36 r35 r22
-717 trace_var r37 $40 = r39
-718 r35 = select r36 r41 r35
-719 trace_var r37 $41 = r35
-720 r41 = select r36 r15 r41
-721 trace_var r37 $42 = r41
-722 trace_line r37 L87
-723 trace_line r37 L90
-724 r39 = eq_f32 r17 r39
-725 r35 = eq_f32 r16 r35
-726 r41 = eq_f32 r15 r41
-727 r35 = bit_and r39 r35
-728 r35 = bit_and r41 r35
-729 r35 = bit_and r36 r35
-730 trace_exit r37 F8
-731 r35 = bit_and r36 r35
-732 r36 = bit_and r34 r35
-733 trace_enter r36 F9
-734 trace_line r36 L106
-735 trace_line r36 L108
-736 trace_var r36 $44 = r22
-737 trace_var r36 $45 = r22
-738 trace_var r36 $46 = r22
-739 trace_var r36 $47 = r22
-740 trace_line r36 L109
-741 trace_var r36 $48 = r15
-742 trace_line r36 L110
-743 r37 = select r35 r15 r22
-744 trace_var r36 $47 = r37
-745 trace_line r36 L109
-746 trace_line r36 L112
-747 r37 = eq_f32 r15 r37
-748 r37 = bit_and r35 r37
-749 trace_exit r36 F9
-750 r37 = bit_and r35 r37
-751 r35 = bit_and r34 r37
-752 trace_enter r35 F10
-753 trace_line r35 L95
-754 trace_line r35 L97
-755 trace_var r35 $49 = r22
-756 trace_var r35 $50 = r22
-757 trace_var r35 $51 = r22
-758 trace_var r35 $52 = r22
-759 trace_line r35 L98
-760 trace_var r35 $53 = r15
-761 trace_line r35 L99
-762 r36 = select r37 r15 r22
-763 trace_var r35 $52 = r36
-764 trace_line r35 L98
-765 trace_var r35 $53 = r16
-766 trace_line r35 L99
-767 r41 = select r37 r36 r22
-768 trace_var r35 $51 = r41
-769 r36 = select r37 r16 r36
-770 trace_var r35 $52 = r36
-771 trace_line r35 L98
-772 trace_var r35 $53 = r17
-773 trace_line r35 L99
-774 r39 = select r37 r41 r22
-775 trace_var r35 $50 = r39
-776 r41 = select r37 r36 r41
-777 trace_var r35 $51 = r41
-778 r36 = select r37 r17 r36
-779 trace_var r35 $52 = r36
-780 trace_line r35 L98
-781 trace_line r35 L101
-782 r39 = eq_f32 r15 r39
-783 r41 = eq_f32 r16 r41
-784 r36 = eq_f32 r17 r36
-785 r41 = bit_and r39 r41
-786 r41 = bit_and r36 r41
-787 r41 = bit_and r37 r41
-788 trace_exit r35 F10
-789 r41 = bit_and r37 r41
-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
-797 store32 ptr3 r36
-798 store32 ptr4 r41
+683 trace_var r41 $49 = r16
+684 trace_line r41 L76
+685 r36 = select r37 r35 r22
+686 trace_var r41 $47 = r36
+687 r35 = select r37 r16 r35
+688 trace_var r41 $48 = r35
+689 trace_line r41 L75
+690 trace_var r41 $49 = r15
+691 trace_line r41 L76
+692 r39 = select r37 r36 r22
+693 trace_var r41 $46 = r39
+694 r36 = select r37 r35 r36
+695 trace_var r41 $47 = r36
+696 r35 = select r37 r15 r35
+697 trace_var r41 $48 = r35
+698 trace_line r41 L75
+699 trace_line r41 L78
+700 r39 = eq_f32 r17 r39
+701 r36 = eq_f32 r16 r36
+702 r35 = eq_f32 r15 r35
+703 r36 = bit_and r39 r36
+704 r36 = bit_and r35 r36
+705 r36 = bit_and r37 r36
+706 trace_var r41 $44 = r36
+707 trace_exit r41 F7
+708 r36 = bit_and r37 r36
+709 r37 = bit_and r34 r36
+710 trace_enter r37 F8
+711 trace_line r37 L83
+712 trace_line r37 L84
+713 trace_line r37 L86
+714 trace_var r37 $51 = r22
+715 trace_var r37 $52 = r22
+716 trace_var r37 $53 = r22
+717 trace_var r37 $54 = r22
+718 trace_line r37 L87
+719 trace_var r37 $55 = r17
+720 trace_line r37 L88
+721 r41 = select r36 r17 r22
+722 trace_var r37 $54 = r41
+723 trace_line r37 L87
+724 trace_var r37 $55 = r16
+725 trace_line r37 L88
+726 r35 = select r36 r41 r22
+727 trace_var r37 $53 = r35
+728 r41 = select r36 r16 r41
+729 trace_var r37 $54 = r41
+730 trace_line r37 L87
+731 trace_var r37 $55 = r15
+732 trace_line r37 L88
+733 r39 = select r36 r35 r22
+734 trace_var r37 $52 = r39
+735 r35 = select r36 r41 r35
+736 trace_var r37 $53 = r35
+737 r41 = select r36 r15 r41
+738 trace_var r37 $54 = r41
+739 trace_line r37 L87
+740 trace_line r37 L90
+741 r39 = eq_f32 r17 r39
+742 r35 = eq_f32 r16 r35
+743 r41 = eq_f32 r15 r41
+744 r35 = bit_and r39 r35
+745 r35 = bit_and r41 r35
+746 r35 = bit_and r36 r35
+747 trace_var r37 $50 = r35
+748 trace_exit r37 F8
+749 r35 = bit_and r36 r35
+750 r36 = bit_and r34 r35
+751 trace_enter r36 F9
+752 trace_line r36 L106
+753 trace_line r36 L108
+754 trace_var r36 $57 = r22
+755 trace_var r36 $58 = r22
+756 trace_var r36 $59 = r22
+757 trace_var r36 $60 = r22
+758 trace_line r36 L109
+759 trace_var r36 $61 = r15
+760 trace_line r36 L110
+761 r37 = select r35 r15 r22
+762 trace_var r36 $60 = r37
+763 trace_line r36 L109
+764 trace_line r36 L112
+765 r37 = eq_f32 r15 r37
+766 r37 = bit_and r35 r37
+767 trace_var r36 $56 = r37
+768 trace_exit r36 F9
+769 r37 = bit_and r35 r37
+770 r35 = bit_and r34 r37
+771 trace_enter r35 F10
+772 trace_line r35 L95
+773 trace_line r35 L97
+774 trace_var r35 $63 = r22
+775 trace_var r35 $64 = r22
+776 trace_var r35 $65 = r22
+777 trace_var r35 $66 = r22
+778 trace_line r35 L98
+779 trace_var r35 $67 = r15
+780 trace_line r35 L99
+781 r36 = select r37 r15 r22
+782 trace_var r35 $66 = r36
+783 trace_line r35 L98
+784 trace_var r35 $67 = r16
+785 trace_line r35 L99
+786 r41 = select r37 r36 r22
+787 trace_var r35 $65 = r41
+788 r36 = select r37 r16 r36
+789 trace_var r35 $66 = r36
+790 trace_line r35 L98
+791 trace_var r35 $67 = r17
+792 trace_line r35 L99
+793 r39 = select r37 r41 r22
+794 trace_var r35 $64 = r39
+795 r41 = select r37 r36 r41
+796 trace_var r35 $65 = r41
+797 r36 = select r37 r17 r36
+798 trace_var r35 $66 = r36
+799 trace_line r35 L98
+800 trace_line r35 L101
+801 r39 = eq_f32 r15 r39
+802 r41 = eq_f32 r16 r41
+803 r36 = eq_f32 r17 r36
+804 r41 = bit_and r39 r41
+805 r41 = bit_and r36 r41
+806 r41 = bit_and r37 r41
+807 trace_var r35 $62 = r41
+808 trace_exit r35 F10
+809 r41 = bit_and r37 r41
+810 r37 = select r41 r5 r1
+811 r35 = select r41 r6 r2
+812 r36 = select r41 r7 r3
+813 r41 = select r41 r8 r4
+814 trace_var r34 $10 = r37
+815 trace_var r34 $11 = r35
+816 trace_var r34 $12 = r36
+817 trace_var r34 $13 = r41
+818 trace_exit r34 F0
+819 store32 ptr1 r37
+820 store32 ptr2 r35
+821 store32 ptr3 r36
+822 store32 ptr4 r41
diff --git a/tests/sksl/runtime/LoopInt.skvm b/tests/sksl/runtime/LoopInt.skvm
index d76dfd7..33950e5 100644
--- a/tests/sksl/runtime/LoopInt.skvm
+++ b/tests/sksl/runtime/LoopInt.skvm
@@ -8,48 +8,61 @@
$7 = colorGreen (float4 : slot 4/4, L3)
$8 = kZero (int, L6)
$9 = kTen (int, L15)
-$10 = pos (float2 : slot 1/2, L106)
-$11 = pos (float2 : slot 2/2, L106)
-$12 = five (int, L107)
-$13 = five (int, L7)
-$14 = i (int, L8)
-$15 = five (int, L16)
-$16 = sum (int, L17)
-$17 = i (int, L18)
-$18 = five (int, L26)
-$19 = sum (int, L27)
-$20 = kOne (int, L28)
-$21 = i (int, L29)
-$22 = result (int4 : slot 1/4, L41)
-$23 = result (int4 : slot 2/4, L41)
-$24 = result (int4 : slot 3/4, L41)
-$25 = result (int4 : slot 4/4, L41)
-$26 = i (int, L42)
-$27 = result (int4 : slot 1/4, L53)
-$28 = result (int4 : slot 2/4, L53)
-$29 = result (int4 : slot 3/4, L53)
-$30 = result (int4 : slot 4/4, L53)
-$31 = i (int, L54)
-$32 = result (int4 : slot 1/4, L65)
-$33 = result (int4 : slot 2/4, L65)
-$34 = result (int4 : slot 3/4, L65)
-$35 = result (int4 : slot 4/4, L65)
-$36 = i (int, L66)
-$37 = result (int4 : slot 1/4, L77)
-$38 = result (int4 : slot 2/4, L77)
-$39 = result (int4 : slot 3/4, L77)
-$40 = result (int4 : slot 4/4, L77)
-$41 = i (int, L78)
-$42 = result (int4 : slot 1/4, L99)
-$43 = result (int4 : slot 2/4, L99)
-$44 = result (int4 : slot 3/4, L99)
-$45 = result (int4 : slot 4/4, L99)
-$46 = i (int, L100)
-$47 = result (int4 : slot 1/4, L88)
-$48 = result (int4 : slot 2/4, L88)
-$49 = result (int4 : slot 3/4, L88)
-$50 = result (int4 : slot 4/4, L88)
-$51 = i (int, L89)
+$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)
@@ -61,7 +74,7 @@
F8 = bool loop_operator_eq()
F9 = bool loop_operator_ne()
-35 registers, 751 instructions:
+35 registers, 774 instructions:
0 r0 = uniform32 ptr0 0
1 r1 = uniform32 ptr0 4
2 r2 = uniform32 ptr0 8
@@ -102,715 +115,738 @@
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 = r0
+39 trace_var r26 $14 = r25
+40 trace_var r26 $15 = r0
41 trace_line r26 L107
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
+46 trace_var r26 $16 = r25
47 trace_line r26 L108
48 trace_enter r26 F1
-49 trace_var r26 $13 = r25
+49 trace_var r26 $18 = r25
50 trace_line r26 L8
-51 trace_var r26 $14 = r9
+51 trace_var r26 $19 = r9
52 trace_line r26 L9
53 r27 = eq_i32 r9 r25
54 r28 = bit_and r26 r27
55 trace_line r28 L9
-56 r28 = bit_xor r10 r27
-57 r29 = bit_and r26 r28
-58 trace_line r29 L8
-59 trace_var r29 $14 = r15
-60 trace_line r29 L9
-61 r29 = eq_i32 r25 r15
-62 r29 = bit_and r28 r29
-63 r28 = bit_and r26 r29
-64 trace_line r28 L9
-65 r28 = bit_and r15 r29
-66 r29 = bit_or r27 r29
-67 r27 = bit_xor r10 r29
-68 r30 = bit_and r26 r27
-69 trace_line r30 L8
-70 trace_var r30 $14 = r16
-71 trace_line r30 L9
-72 r30 = eq_i32 r25 r16
-73 r30 = bit_and r27 r30
-74 r27 = bit_and r26 r30
-75 trace_line r27 L9
-76 r28 = select r30 r16 r28
-77 r30 = bit_or r29 r30
-78 r29 = bit_xor r10 r30
-79 r27 = bit_and r26 r29
-80 trace_line r27 L8
-81 trace_var r27 $14 = r17
-82 trace_line r27 L9
-83 r27 = eq_i32 r25 r17
-84 r27 = bit_and r29 r27
-85 r29 = bit_and r26 r27
-86 trace_line r29 L9
-87 r28 = select r27 r17 r28
-88 r27 = bit_or r30 r27
-89 r30 = bit_xor r10 r27
-90 r29 = bit_and r26 r30
-91 trace_line r29 L8
-92 trace_var r29 $14 = r18
-93 trace_line r29 L9
-94 r29 = eq_i32 r25 r18
-95 r29 = bit_and r30 r29
-96 r30 = bit_and r26 r29
-97 trace_line r30 L9
-98 r28 = select r29 r18 r28
-99 r29 = bit_or r27 r29
-100 r27 = bit_xor r10 r29
-101 r30 = bit_and r26 r27
-102 trace_line r30 L8
-103 trace_var r30 $14 = r14
-104 trace_line r30 L9
-105 r30 = eq_i32 r14 r25
-106 r30 = bit_and r27 r30
-107 r27 = bit_and r26 r30
-108 trace_line r27 L9
-109 r28 = select r30 r14 r28
-110 r30 = bit_or r29 r30
-111 r29 = bit_xor r10 r30
-112 r27 = bit_and r26 r29
-113 trace_line r27 L8
-114 trace_var r27 $14 = r19
-115 trace_line r27 L9
-116 r27 = eq_i32 r25 r19
-117 r27 = bit_and r29 r27
-118 r29 = bit_and r26 r27
-119 trace_line r29 L9
-120 r28 = select r27 r19 r28
-121 r27 = bit_or r30 r27
-122 r30 = bit_xor r10 r27
-123 r29 = bit_and r26 r30
-124 trace_line r29 L8
-125 trace_var r29 $14 = r20
-126 trace_line r29 L9
-127 r29 = eq_i32 r25 r20
-128 r29 = bit_and r30 r29
-129 r30 = bit_and r26 r29
-130 trace_line r30 L9
-131 r28 = select r29 r20 r28
-132 r29 = bit_or r27 r29
-133 r27 = bit_xor r10 r29
-134 r30 = bit_and r26 r27
-135 trace_line r30 L8
-136 trace_var r30 $14 = r21
-137 trace_line r30 L9
-138 r30 = eq_i32 r25 r21
-139 r30 = bit_and r27 r30
-140 r27 = bit_and r26 r30
-141 trace_line r27 L9
-142 r28 = select r30 r21 r28
-143 r30 = bit_or r29 r30
-144 r29 = bit_xor r10 r30
-145 r27 = bit_and r26 r29
-146 trace_line r27 L8
-147 trace_var r27 $14 = r22
-148 trace_line r27 L9
-149 r27 = eq_i32 r25 r22
-150 r27 = bit_and r29 r27
-151 r29 = bit_and r26 r27
-152 trace_line r29 L9
-153 r28 = select r27 r22 r28
-154 r27 = bit_or r30 r27
-155 r27 = bit_xor r10 r27
-156 r30 = bit_and r26 r27
-157 trace_line r30 L8
-158 trace_line r30 L11
-159 r27 = bit_clear r28 r27
-160 trace_exit r26 F1
-161 r27 = eq_i32 r14 r27
-162 r28 = bit_and r26 r27
-163 trace_enter r28 F2
-164 trace_var r28 $15 = r25
-165 trace_line r28 L17
-166 trace_var r28 $16 = r9
-167 trace_line r28 L18
-168 trace_var r28 $17 = r9
-169 trace_line r28 L19
-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 r10 r30
-175 r31 = bit_and r27 r29
-176 r31 = bit_and r26 r31
-177 trace_line r31 L20
-178 r29 = bit_or r30 r29
-179 r30 = bit_and r27 r29
-180 r30 = bit_and r26 r30
-181 trace_line r30 L18
-182 trace_var r30 $17 = r15
-183 trace_line r30 L19
-184 r30 = gt_i32 r25 r15
-185 r30 = bit_and r27 r30
-186 r30 = bit_and r29 r30
-187 r31 = bit_and r26 r30
-188 trace_line r31 L19
-189 r31 = bit_xor r10 r30
-190 r31 = bit_and r29 r31
-191 r29 = bit_and r27 r31
-192 r32 = bit_and r26 r29
-193 trace_line r32 L20
-194 r29 = bit_and r15 r29
-195 trace_var r32 $16 = r29
-196 r31 = bit_or r30 r31
-197 r30 = bit_and r27 r31
-198 r30 = bit_and r26 r30
-199 trace_line r30 L18
-200 trace_var r30 $17 = r16
-201 trace_line r30 L19
-202 r30 = gt_i32 r25 r16
-203 r30 = bit_and r27 r30
-204 r30 = bit_and r31 r30
-205 r32 = bit_and r26 r30
-206 trace_line r32 L19
-207 r32 = bit_xor r10 r30
-208 r32 = bit_and r31 r32
-209 r31 = bit_and r27 r32
-210 r33 = bit_and r26 r31
-211 trace_line r33 L20
-212 r34 = add_i32 r16 r29
-213 r29 = select r31 r34 r29
-214 trace_var r33 $16 = r29
-215 r32 = bit_or r30 r32
-216 r30 = bit_and r27 r32
-217 r30 = bit_and r26 r30
-218 trace_line r30 L18
-219 trace_var r30 $17 = r17
-220 trace_line r30 L19
-221 r30 = gt_i32 r25 r17
-222 r30 = bit_and r27 r30
-223 r30 = bit_and r32 r30
-224 r33 = bit_and r26 r30
-225 trace_line r33 L19
-226 r33 = bit_xor r10 r30
-227 r33 = bit_and r32 r33
-228 r32 = bit_and r27 r33
-229 r34 = bit_and r26 r32
-230 trace_line r34 L20
-231 r31 = add_i32 r17 r29
-232 r29 = select r32 r31 r29
-233 trace_var r34 $16 = r29
-234 r33 = bit_or r30 r33
-235 r30 = bit_and r27 r33
-236 r30 = bit_and r26 r30
-237 trace_line r30 L18
-238 trace_var r30 $17 = r18
-239 trace_line r30 L19
-240 r30 = gt_i32 r25 r18
-241 r30 = bit_and r27 r30
-242 r30 = bit_and r33 r30
-243 r34 = bit_and r26 r30
-244 trace_line r34 L19
-245 r34 = bit_xor r10 r30
-246 r34 = bit_and r33 r34
-247 r33 = bit_and r27 r34
-248 r31 = bit_and r26 r33
-249 trace_line r31 L20
-250 r32 = add_i32 r18 r29
-251 r29 = select r33 r32 r29
-252 trace_var r31 $16 = r29
-253 r34 = bit_or r30 r34
-254 r30 = bit_and r27 r34
-255 r30 = bit_and r26 r30
-256 trace_line r30 L18
-257 trace_var r30 $17 = r14
-258 trace_line r30 L19
-259 r30 = gt_i32 r25 r14
-260 r30 = bit_and r27 r30
-261 r30 = bit_and r34 r30
-262 r31 = bit_and r26 r30
-263 trace_line r31 L19
-264 r31 = bit_xor r10 r30
-265 r31 = bit_and r34 r31
-266 r34 = bit_and r27 r31
-267 r32 = bit_and r26 r34
-268 trace_line r32 L20
-269 r33 = add_i32 r14 r29
-270 r29 = select r34 r33 r29
-271 trace_var r32 $16 = r29
-272 r31 = bit_or r30 r31
-273 r30 = bit_and r27 r31
-274 r30 = bit_and r26 r30
-275 trace_line r30 L18
-276 trace_var r30 $17 = r19
-277 trace_line r30 L19
-278 r30 = gt_i32 r25 r19
-279 r30 = bit_and r27 r30
-280 r30 = bit_and r31 r30
-281 r32 = bit_and r26 r30
-282 trace_line r32 L19
-283 r32 = bit_xor r10 r30
-284 r32 = bit_and r31 r32
-285 r31 = bit_and r27 r32
-286 r33 = bit_and r26 r31
-287 trace_line r33 L20
-288 r34 = add_i32 r19 r29
-289 r29 = select r31 r34 r29
-290 trace_var r33 $16 = r29
-291 r32 = bit_or r30 r32
-292 r30 = bit_and r27 r32
-293 r30 = bit_and r26 r30
-294 trace_line r30 L18
-295 trace_var r30 $17 = r20
-296 trace_line r30 L19
-297 r30 = gt_i32 r25 r20
-298 r30 = bit_and r27 r30
-299 r30 = bit_and r32 r30
-300 r33 = bit_and r26 r30
-301 trace_line r33 L19
-302 r33 = bit_xor r10 r30
-303 r33 = bit_and r32 r33
-304 r32 = bit_and r27 r33
-305 r34 = bit_and r26 r32
-306 trace_line r34 L20
-307 r31 = add_i32 r20 r29
-308 r29 = select r32 r31 r29
-309 trace_var r34 $16 = r29
-310 r33 = bit_or r30 r33
-311 r30 = bit_and r27 r33
-312 r30 = bit_and r26 r30
-313 trace_line r30 L18
-314 trace_var r30 $17 = r21
-315 trace_line r30 L19
-316 r30 = gt_i32 r25 r21
-317 r30 = bit_and r27 r30
-318 r30 = bit_and r33 r30
-319 r34 = bit_and r26 r30
-320 trace_line r34 L19
-321 r34 = bit_xor r10 r30
-322 r34 = bit_and r33 r34
-323 r33 = bit_and r27 r34
-324 r31 = bit_and r26 r33
-325 trace_line r31 L20
-326 r32 = add_i32 r21 r29
-327 r29 = select r33 r32 r29
-328 trace_var r31 $16 = r29
-329 r34 = bit_or r30 r34
-330 r30 = bit_and r27 r34
-331 r30 = bit_and r26 r30
-332 trace_line r30 L18
-333 trace_var r30 $17 = r22
-334 trace_line r30 L19
-335 r30 = gt_i32 r25 r22
-336 r30 = bit_and r27 r30
-337 r30 = bit_and r34 r30
-338 r31 = bit_and r26 r30
-339 trace_line r31 L19
-340 r31 = bit_xor r10 r30
-341 r31 = bit_and r34 r31
-342 r34 = bit_and r27 r31
-343 r32 = bit_and r26 r34
-344 trace_line r32 L20
-345 r33 = add_i32 r22 r29
-346 r29 = select r34 r33 r29
-347 trace_var r32 $16 = r29
-348 r31 = bit_or r30 r31
-349 r31 = bit_and r27 r31
-350 r31 = bit_and r26 r31
-351 trace_line r31 L18
-352 trace_line r28 L22
-353 r29 = bit_and r27 r29
-354 trace_exit r28 F2
-355 r29 = eq_i32 r29 r23
-356 r29 = bit_and r27 r29
-357 r27 = bit_and r26 r29
-358 trace_enter r27 F3
-359 trace_var r27 $18 = r25
-360 trace_line r27 L27
-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 = r9
-366 trace_line r27 L30
-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 r10 r28
-372 r31 = bit_and r29 r28
-373 r31 = bit_and r26 r31
-374 trace_line r31 L31
-375 trace_line r31 L29
-376 trace_var r31 $21 = r15
-377 trace_line r31 L30
-378 r31 = gt_i32 r15 r25
-379 r31 = bit_and r29 r31
-380 r31 = bit_and r28 r31
-381 r30 = bit_and r26 r31
-382 trace_line r30 L30
-383 r31 = bit_xor r10 r31
-384 r31 = bit_and r28 r31
-385 r28 = bit_and r29 r31
-386 r30 = bit_and r26 r28
-387 trace_line r30 L31
-388 r28 = bit_and r15 r28
-389 trace_var r30 $19 = r28
-390 trace_line r30 L29
-391 trace_var r30 $21 = r16
-392 trace_line r30 L30
-393 r30 = gt_i32 r16 r25
-394 r30 = bit_and r29 r30
-395 r30 = bit_and r31 r30
-396 r32 = bit_and r26 r30
-397 trace_line r32 L30
-398 r30 = bit_xor r10 r30
-399 r30 = bit_and r31 r30
-400 r31 = bit_and r29 r30
-401 r32 = bit_and r26 r31
-402 trace_line r32 L31
-403 r33 = add_i32 r16 r28
-404 r28 = select r31 r33 r28
-405 trace_var r32 $19 = r28
-406 trace_line r32 L29
-407 trace_var r32 $21 = r17
-408 trace_line r32 L30
-409 r32 = gt_i32 r17 r25
-410 r32 = bit_and r29 r32
-411 r32 = bit_and r30 r32
-412 r33 = bit_and r26 r32
-413 trace_line r33 L30
-414 r32 = bit_xor r10 r32
-415 r32 = bit_and r30 r32
-416 r30 = bit_and r29 r32
-417 r33 = bit_and r26 r30
-418 trace_line r33 L31
-419 r31 = add_i32 r17 r28
-420 r28 = select r30 r31 r28
-421 trace_var r33 $19 = r28
-422 trace_line r33 L29
-423 trace_var r33 $21 = r18
-424 trace_line r33 L30
-425 r33 = gt_i32 r18 r25
-426 r33 = bit_and r29 r33
-427 r33 = bit_and r32 r33
-428 r31 = bit_and r26 r33
-429 trace_line r31 L30
-430 r33 = bit_xor r10 r33
-431 r33 = bit_and r32 r33
-432 r32 = bit_and r29 r33
-433 r31 = bit_and r26 r32
-434 trace_line r31 L31
-435 r30 = add_i32 r18 r28
-436 r28 = select r32 r30 r28
-437 trace_var r31 $19 = r28
-438 trace_line r31 L29
-439 trace_var r31 $21 = r14
-440 trace_line r31 L30
-441 r31 = gt_i32 r14 r25
-442 r31 = bit_and r29 r31
-443 r31 = bit_and r33 r31
-444 r30 = bit_and r26 r31
-445 trace_line r30 L30
-446 r31 = bit_xor r10 r31
-447 r31 = bit_and r33 r31
-448 r33 = bit_and r29 r31
-449 r30 = bit_and r26 r33
-450 trace_line r30 L31
-451 r32 = add_i32 r14 r28
-452 r28 = select r33 r32 r28
-453 trace_var r30 $19 = r28
-454 trace_line r30 L29
-455 trace_var r30 $21 = r19
-456 trace_line r30 L30
-457 r30 = gt_i32 r19 r25
-458 r30 = bit_and r29 r30
-459 r30 = bit_and r31 r30
-460 r32 = bit_and r26 r30
-461 trace_line r32 L30
-462 r30 = bit_xor r10 r30
-463 r30 = bit_and r31 r30
-464 r31 = bit_and r29 r30
-465 r32 = bit_and r26 r31
-466 trace_line r32 L31
-467 r33 = add_i32 r19 r28
-468 r28 = select r31 r33 r28
-469 trace_var r32 $19 = r28
-470 trace_line r32 L29
-471 trace_var r32 $21 = r20
-472 trace_line r32 L30
-473 r32 = gt_i32 r20 r25
-474 r32 = bit_and r29 r32
-475 r32 = bit_and r30 r32
-476 r33 = bit_and r26 r32
-477 trace_line r33 L30
-478 r32 = bit_xor r10 r32
-479 r32 = bit_and r30 r32
-480 r30 = bit_and r29 r32
-481 r33 = bit_and r26 r30
-482 trace_line r33 L31
-483 r31 = add_i32 r20 r28
-484 r28 = select r30 r31 r28
-485 trace_var r33 $19 = r28
-486 trace_line r33 L29
-487 trace_var r33 $21 = r21
-488 trace_line r33 L30
-489 r33 = gt_i32 r21 r25
-490 r33 = bit_and r29 r33
-491 r33 = bit_and r32 r33
-492 r31 = bit_and r26 r33
-493 trace_line r31 L30
-494 r33 = bit_xor r10 r33
-495 r33 = bit_and r32 r33
-496 r32 = bit_and r29 r33
-497 r31 = bit_and r26 r32
-498 trace_line r31 L31
-499 r30 = add_i32 r21 r28
-500 r28 = select r32 r30 r28
-501 trace_var r31 $19 = r28
-502 trace_line r31 L29
-503 trace_var r31 $21 = r22
-504 trace_line r31 L30
-505 r25 = gt_i32 r22 r25
-506 r25 = bit_and r29 r25
-507 r25 = bit_and r33 r25
-508 r31 = bit_and r26 r25
-509 trace_line r31 L30
-510 r25 = bit_xor r10 r25
-511 r25 = bit_and r33 r25
-512 r25 = bit_and r29 r25
-513 r33 = bit_and r26 r25
-514 trace_line r33 L31
-515 r31 = add_i32 r22 r28
-516 r28 = select r25 r31 r28
-517 trace_var r33 $19 = r28
-518 trace_line r33 L29
-519 trace_line r27 L33
-520 r28 = bit_and r29 r28
-521 trace_exit r27 F3
-522 r28 = eq_i32 r28 r24
-523 r28 = bit_and r29 r28
-524 r29 = bit_and r26 r28
-525 trace_enter r29 F4
-526 trace_line r29 L38
-527 trace_line r29 L39
-528 trace_line r29 L41
-529 trace_var r29 $22 = r22
-530 trace_var r29 $23 = r22
-531 trace_var r29 $24 = r22
-532 trace_var r29 $25 = r22
-533 trace_line r29 L42
-534 trace_var r29 $26 = r15
-535 trace_line r29 L43
-536 r27 = select r28 r15 r22
-537 trace_var r29 $25 = r27
-538 trace_line r29 L42
-539 trace_var r29 $26 = r16
-540 trace_line r29 L43
-541 r33 = select r28 r27 r22
-542 trace_var r29 $24 = r33
-543 r27 = select r28 r16 r27
-544 trace_var r29 $25 = r27
-545 trace_line r29 L42
-546 trace_var r29 $26 = r17
-547 trace_line r29 L43
-548 r31 = select r28 r33 r22
-549 trace_var r29 $23 = r31
-550 r33 = select r28 r27 r33
-551 trace_var r29 $24 = r33
-552 r27 = select r28 r17 r27
-553 trace_var r29 $25 = r27
-554 trace_line r29 L42
-555 trace_line r29 L45
-556 r31 = eq_i32 r15 r31
-557 r33 = eq_i32 r16 r33
-558 r27 = eq_i32 r17 r27
-559 r33 = bit_and r31 r33
-560 r33 = bit_and r27 r33
-561 r33 = bit_and r28 r33
-562 trace_exit r29 F4
-563 r33 = bit_and r28 r33
-564 r28 = bit_and r26 r33
-565 trace_enter r28 F5
-566 trace_line r28 L50
-567 trace_line r28 L51
-568 trace_line r28 L53
-569 trace_var r28 $27 = r22
-570 trace_var r28 $28 = r22
-571 trace_var r28 $29 = r22
-572 trace_var r28 $30 = r22
-573 trace_line r28 L54
-574 trace_var r28 $31 = r15
-575 trace_line r28 L55
-576 r29 = select r33 r15 r22
-577 trace_var r28 $30 = r29
-578 trace_line r28 L54
-579 trace_var r28 $31 = r16
-580 trace_line r28 L55
-581 r27 = select r33 r29 r22
-582 trace_var r28 $29 = r27
-583 r29 = select r33 r16 r29
-584 trace_var r28 $30 = r29
-585 trace_line r28 L54
-586 trace_var r28 $31 = r17
-587 trace_line r28 L55
-588 r31 = select r33 r27 r22
-589 trace_var r28 $28 = r31
-590 r27 = select r33 r29 r27
-591 trace_var r28 $29 = r27
-592 r29 = select r33 r17 r29
-593 trace_var r28 $30 = r29
-594 trace_line r28 L54
-595 trace_line r28 L57
-596 r31 = eq_i32 r15 r31
-597 r27 = eq_i32 r16 r27
-598 r29 = eq_i32 r17 r29
-599 r27 = bit_and r31 r27
-600 r27 = bit_and r29 r27
-601 r27 = bit_and r33 r27
-602 trace_exit r28 F5
-603 r27 = bit_and r33 r27
-604 r33 = bit_and r26 r27
-605 trace_enter r33 F6
-606 trace_line r33 L62
-607 trace_line r33 L63
-608 trace_line r33 L65
-609 trace_var r33 $32 = r22
-610 trace_var r33 $33 = r22
-611 trace_var r33 $34 = r22
-612 trace_var r33 $35 = r22
-613 trace_line r33 L66
-614 trace_var r33 $36 = r17
-615 trace_line r33 L67
-616 r28 = select r27 r17 r22
-617 trace_var r33 $35 = r28
-618 trace_line r33 L66
-619 trace_var r33 $36 = r16
-620 trace_line r33 L67
-621 r29 = select r27 r28 r22
-622 trace_var r33 $34 = r29
-623 r28 = select r27 r16 r28
-624 trace_var r33 $35 = r28
-625 trace_line r33 L66
-626 trace_var r33 $36 = r15
-627 trace_line r33 L67
-628 r31 = select r27 r29 r22
-629 trace_var r33 $33 = r31
-630 r29 = select r27 r28 r29
-631 trace_var r33 $34 = r29
-632 r28 = select r27 r15 r28
-633 trace_var r33 $35 = r28
-634 trace_line r33 L66
-635 trace_line r33 L69
-636 r31 = eq_i32 r17 r31
-637 r29 = eq_i32 r16 r29
-638 r28 = eq_i32 r15 r28
-639 r29 = bit_and r31 r29
-640 r29 = bit_and r28 r29
-641 r29 = bit_and r27 r29
-642 trace_exit r33 F6
-643 r29 = bit_and r27 r29
-644 r27 = bit_and r26 r29
-645 trace_enter r27 F7
-646 trace_line r27 L74
-647 trace_line r27 L75
-648 trace_line r27 L77
-649 trace_var r27 $37 = r22
-650 trace_var r27 $38 = r22
-651 trace_var r27 $39 = r22
-652 trace_var r27 $40 = r22
-653 trace_line r27 L78
-654 trace_var r27 $41 = r17
-655 trace_line r27 L79
-656 r33 = select r29 r17 r22
-657 trace_var r27 $40 = r33
-658 trace_line r27 L78
-659 trace_var r27 $41 = r16
-660 trace_line r27 L79
-661 r28 = select r29 r33 r22
-662 trace_var r27 $39 = r28
-663 r33 = select r29 r16 r33
-664 trace_var r27 $40 = r33
-665 trace_line r27 L78
-666 trace_var r27 $41 = r15
-667 trace_line r27 L79
-668 r31 = select r29 r28 r22
-669 trace_var r27 $38 = r31
-670 r28 = select r29 r33 r28
-671 trace_var r27 $39 = r28
-672 r33 = select r29 r15 r33
-673 trace_var r27 $40 = r33
+56 trace_var r28 $17 = r9
+57 r28 = bit_xor r10 r27
+58 r29 = bit_and r26 r28
+59 trace_line r29 L8
+60 trace_var r29 $19 = r15
+61 trace_line r29 L9
+62 r29 = eq_i32 r25 r15
+63 r29 = bit_and r28 r29
+64 r28 = bit_and r26 r29
+65 trace_line r28 L9
+66 r30 = bit_and r15 r29
+67 trace_var r28 $17 = r30
+68 r29 = bit_or r27 r29
+69 r27 = bit_xor r10 r29
+70 r28 = bit_and r26 r27
+71 trace_line r28 L8
+72 trace_var r28 $19 = r16
+73 trace_line r28 L9
+74 r28 = eq_i32 r25 r16
+75 r28 = bit_and r27 r28
+76 r27 = bit_and r26 r28
+77 trace_line r27 L9
+78 r30 = select r28 r16 r30
+79 trace_var r27 $17 = r30
+80 r28 = bit_or r29 r28
+81 r29 = bit_xor r10 r28
+82 r27 = bit_and r26 r29
+83 trace_line r27 L8
+84 trace_var r27 $19 = r17
+85 trace_line r27 L9
+86 r27 = eq_i32 r25 r17
+87 r27 = bit_and r29 r27
+88 r29 = bit_and r26 r27
+89 trace_line r29 L9
+90 r30 = select r27 r17 r30
+91 trace_var r29 $17 = r30
+92 r27 = bit_or r28 r27
+93 r28 = bit_xor r10 r27
+94 r29 = bit_and r26 r28
+95 trace_line r29 L8
+96 trace_var r29 $19 = r18
+97 trace_line r29 L9
+98 r29 = eq_i32 r25 r18
+99 r29 = bit_and r28 r29
+100 r28 = bit_and r26 r29
+101 trace_line r28 L9
+102 r30 = select r29 r18 r30
+103 trace_var r28 $17 = r30
+104 r29 = bit_or r27 r29
+105 r27 = bit_xor r10 r29
+106 r28 = bit_and r26 r27
+107 trace_line r28 L8
+108 trace_var r28 $19 = r14
+109 trace_line r28 L9
+110 r28 = eq_i32 r14 r25
+111 r28 = bit_and r27 r28
+112 r27 = bit_and r26 r28
+113 trace_line r27 L9
+114 r30 = select r28 r14 r30
+115 trace_var r27 $17 = r30
+116 r28 = bit_or r29 r28
+117 r29 = bit_xor r10 r28
+118 r27 = bit_and r26 r29
+119 trace_line r27 L8
+120 trace_var r27 $19 = r19
+121 trace_line r27 L9
+122 r27 = eq_i32 r25 r19
+123 r27 = bit_and r29 r27
+124 r29 = bit_and r26 r27
+125 trace_line r29 L9
+126 r30 = select r27 r19 r30
+127 trace_var r29 $17 = r30
+128 r27 = bit_or r28 r27
+129 r28 = bit_xor r10 r27
+130 r29 = bit_and r26 r28
+131 trace_line r29 L8
+132 trace_var r29 $19 = r20
+133 trace_line r29 L9
+134 r29 = eq_i32 r25 r20
+135 r29 = bit_and r28 r29
+136 r28 = bit_and r26 r29
+137 trace_line r28 L9
+138 r30 = select r29 r20 r30
+139 trace_var r28 $17 = r30
+140 r29 = bit_or r27 r29
+141 r27 = bit_xor r10 r29
+142 r28 = bit_and r26 r27
+143 trace_line r28 L8
+144 trace_var r28 $19 = r21
+145 trace_line r28 L9
+146 r28 = eq_i32 r25 r21
+147 r28 = bit_and r27 r28
+148 r27 = bit_and r26 r28
+149 trace_line r27 L9
+150 r30 = select r28 r21 r30
+151 trace_var r27 $17 = r30
+152 r28 = bit_or r29 r28
+153 r29 = bit_xor r10 r28
+154 r27 = bit_and r26 r29
+155 trace_line r27 L8
+156 trace_var r27 $19 = r22
+157 trace_line r27 L9
+158 r27 = eq_i32 r25 r22
+159 r27 = bit_and r29 r27
+160 r29 = bit_and r26 r27
+161 trace_line r29 L9
+162 r30 = select r27 r22 r30
+163 trace_var r29 $17 = r30
+164 r27 = bit_or r28 r27
+165 r27 = bit_xor r10 r27
+166 r28 = bit_and r26 r27
+167 trace_line r28 L8
+168 trace_line r28 L11
+169 r27 = bit_clear r30 r27
+170 trace_var r28 $17 = r27
+171 trace_exit r26 F1
+172 r27 = eq_i32 r14 r27
+173 r28 = bit_and r26 r27
+174 trace_enter r28 F2
+175 trace_var r28 $21 = r25
+176 trace_line r28 L17
+177 trace_var r28 $22 = r9
+178 trace_line r28 L18
+179 trace_var r28 $23 = r9
+180 trace_line r28 L19
+181 r30 = gt_i32 r25 r9
+182 r30 = bit_and r27 r30
+183 r29 = bit_and r26 r30
+184 trace_line r29 L19
+185 r29 = bit_xor r10 r30
+186 r31 = bit_and r27 r29
+187 r31 = bit_and r26 r31
+188 trace_line r31 L20
+189 r29 = bit_or r30 r29
+190 r30 = bit_and r27 r29
+191 r30 = bit_and r26 r30
+192 trace_line r30 L18
+193 trace_var r30 $23 = r15
+194 trace_line r30 L19
+195 r30 = gt_i32 r25 r15
+196 r30 = bit_and r27 r30
+197 r30 = bit_and r29 r30
+198 r31 = bit_and r26 r30
+199 trace_line r31 L19
+200 r31 = bit_xor r10 r30
+201 r31 = bit_and r29 r31
+202 r29 = bit_and r27 r31
+203 r32 = bit_and r26 r29
+204 trace_line r32 L20
+205 r29 = bit_and r15 r29
+206 trace_var r32 $22 = r29
+207 r31 = bit_or r30 r31
+208 r30 = bit_and r27 r31
+209 r30 = bit_and r26 r30
+210 trace_line r30 L18
+211 trace_var r30 $23 = r16
+212 trace_line r30 L19
+213 r30 = gt_i32 r25 r16
+214 r30 = bit_and r27 r30
+215 r30 = bit_and r31 r30
+216 r32 = bit_and r26 r30
+217 trace_line r32 L19
+218 r32 = bit_xor r10 r30
+219 r32 = bit_and r31 r32
+220 r31 = bit_and r27 r32
+221 r33 = bit_and r26 r31
+222 trace_line r33 L20
+223 r34 = add_i32 r16 r29
+224 r29 = select r31 r34 r29
+225 trace_var r33 $22 = r29
+226 r32 = bit_or r30 r32
+227 r30 = bit_and r27 r32
+228 r30 = bit_and r26 r30
+229 trace_line r30 L18
+230 trace_var r30 $23 = r17
+231 trace_line r30 L19
+232 r30 = gt_i32 r25 r17
+233 r30 = bit_and r27 r30
+234 r30 = bit_and r32 r30
+235 r33 = bit_and r26 r30
+236 trace_line r33 L19
+237 r33 = bit_xor r10 r30
+238 r33 = bit_and r32 r33
+239 r32 = bit_and r27 r33
+240 r34 = bit_and r26 r32
+241 trace_line r34 L20
+242 r31 = add_i32 r17 r29
+243 r29 = select r32 r31 r29
+244 trace_var r34 $22 = r29
+245 r33 = bit_or r30 r33
+246 r30 = bit_and r27 r33
+247 r30 = bit_and r26 r30
+248 trace_line r30 L18
+249 trace_var r30 $23 = r18
+250 trace_line r30 L19
+251 r30 = gt_i32 r25 r18
+252 r30 = bit_and r27 r30
+253 r30 = bit_and r33 r30
+254 r34 = bit_and r26 r30
+255 trace_line r34 L19
+256 r34 = bit_xor r10 r30
+257 r34 = bit_and r33 r34
+258 r33 = bit_and r27 r34
+259 r31 = bit_and r26 r33
+260 trace_line r31 L20
+261 r32 = add_i32 r18 r29
+262 r29 = select r33 r32 r29
+263 trace_var r31 $22 = r29
+264 r34 = bit_or r30 r34
+265 r30 = bit_and r27 r34
+266 r30 = bit_and r26 r30
+267 trace_line r30 L18
+268 trace_var r30 $23 = r14
+269 trace_line r30 L19
+270 r30 = gt_i32 r25 r14
+271 r30 = bit_and r27 r30
+272 r30 = bit_and r34 r30
+273 r31 = bit_and r26 r30
+274 trace_line r31 L19
+275 r31 = bit_xor r10 r30
+276 r31 = bit_and r34 r31
+277 r34 = bit_and r27 r31
+278 r32 = bit_and r26 r34
+279 trace_line r32 L20
+280 r33 = add_i32 r14 r29
+281 r29 = select r34 r33 r29
+282 trace_var r32 $22 = r29
+283 r31 = bit_or r30 r31
+284 r30 = bit_and r27 r31
+285 r30 = bit_and r26 r30
+286 trace_line r30 L18
+287 trace_var r30 $23 = r19
+288 trace_line r30 L19
+289 r30 = gt_i32 r25 r19
+290 r30 = bit_and r27 r30
+291 r30 = bit_and r31 r30
+292 r32 = bit_and r26 r30
+293 trace_line r32 L19
+294 r32 = bit_xor r10 r30
+295 r32 = bit_and r31 r32
+296 r31 = bit_and r27 r32
+297 r33 = bit_and r26 r31
+298 trace_line r33 L20
+299 r34 = add_i32 r19 r29
+300 r29 = select r31 r34 r29
+301 trace_var r33 $22 = r29
+302 r32 = bit_or r30 r32
+303 r30 = bit_and r27 r32
+304 r30 = bit_and r26 r30
+305 trace_line r30 L18
+306 trace_var r30 $23 = r20
+307 trace_line r30 L19
+308 r30 = gt_i32 r25 r20
+309 r30 = bit_and r27 r30
+310 r30 = bit_and r32 r30
+311 r33 = bit_and r26 r30
+312 trace_line r33 L19
+313 r33 = bit_xor r10 r30
+314 r33 = bit_and r32 r33
+315 r32 = bit_and r27 r33
+316 r34 = bit_and r26 r32
+317 trace_line r34 L20
+318 r31 = add_i32 r20 r29
+319 r29 = select r32 r31 r29
+320 trace_var r34 $22 = r29
+321 r33 = bit_or r30 r33
+322 r30 = bit_and r27 r33
+323 r30 = bit_and r26 r30
+324 trace_line r30 L18
+325 trace_var r30 $23 = r21
+326 trace_line r30 L19
+327 r30 = gt_i32 r25 r21
+328 r30 = bit_and r27 r30
+329 r30 = bit_and r33 r30
+330 r34 = bit_and r26 r30
+331 trace_line r34 L19
+332 r34 = bit_xor r10 r30
+333 r34 = bit_and r33 r34
+334 r33 = bit_and r27 r34
+335 r31 = bit_and r26 r33
+336 trace_line r31 L20
+337 r32 = add_i32 r21 r29
+338 r29 = select r33 r32 r29
+339 trace_var r31 $22 = r29
+340 r34 = bit_or r30 r34
+341 r30 = bit_and r27 r34
+342 r30 = bit_and r26 r30
+343 trace_line r30 L18
+344 trace_var r30 $23 = r22
+345 trace_line r30 L19
+346 r30 = gt_i32 r25 r22
+347 r30 = bit_and r27 r30
+348 r30 = bit_and r34 r30
+349 r31 = bit_and r26 r30
+350 trace_line r31 L19
+351 r31 = bit_xor r10 r30
+352 r31 = bit_and r34 r31
+353 r34 = bit_and r27 r31
+354 r32 = bit_and r26 r34
+355 trace_line r32 L20
+356 r33 = add_i32 r22 r29
+357 r29 = select r34 r33 r29
+358 trace_var r32 $22 = r29
+359 r31 = bit_or r30 r31
+360 r31 = bit_and r27 r31
+361 r31 = bit_and r26 r31
+362 trace_line r31 L18
+363 trace_line r28 L22
+364 r29 = bit_and r27 r29
+365 trace_var r28 $20 = r29
+366 trace_exit r28 F2
+367 r29 = eq_i32 r29 r23
+368 r29 = bit_and r27 r29
+369 r27 = bit_and r26 r29
+370 trace_enter r27 F3
+371 trace_var r27 $25 = r25
+372 trace_line r27 L27
+373 trace_var r27 $26 = r9
+374 trace_line r27 L28
+375 trace_var r27 $27 = r15
+376 trace_line r27 L29
+377 trace_var r27 $28 = r9
+378 trace_line r27 L30
+379 r28 = gt_i32 r9 r25
+380 r28 = bit_and r29 r28
+381 r31 = bit_and r26 r28
+382 trace_line r31 L30
+383 r28 = bit_xor r10 r28
+384 r31 = bit_and r29 r28
+385 r31 = bit_and r26 r31
+386 trace_line r31 L31
+387 trace_line r31 L29
+388 trace_var r31 $28 = r15
+389 trace_line r31 L30
+390 r31 = gt_i32 r15 r25
+391 r31 = bit_and r29 r31
+392 r31 = bit_and r28 r31
+393 r30 = bit_and r26 r31
+394 trace_line r30 L30
+395 r31 = bit_xor r10 r31
+396 r31 = bit_and r28 r31
+397 r28 = bit_and r29 r31
+398 r30 = bit_and r26 r28
+399 trace_line r30 L31
+400 r28 = bit_and r15 r28
+401 trace_var r30 $26 = r28
+402 trace_line r30 L29
+403 trace_var r30 $28 = r16
+404 trace_line r30 L30
+405 r30 = gt_i32 r16 r25
+406 r30 = bit_and r29 r30
+407 r30 = bit_and r31 r30
+408 r32 = bit_and r26 r30
+409 trace_line r32 L30
+410 r30 = bit_xor r10 r30
+411 r30 = bit_and r31 r30
+412 r31 = bit_and r29 r30
+413 r32 = bit_and r26 r31
+414 trace_line r32 L31
+415 r33 = add_i32 r16 r28
+416 r28 = select r31 r33 r28
+417 trace_var r32 $26 = r28
+418 trace_line r32 L29
+419 trace_var r32 $28 = r17
+420 trace_line r32 L30
+421 r32 = gt_i32 r17 r25
+422 r32 = bit_and r29 r32
+423 r32 = bit_and r30 r32
+424 r33 = bit_and r26 r32
+425 trace_line r33 L30
+426 r32 = bit_xor r10 r32
+427 r32 = bit_and r30 r32
+428 r30 = bit_and r29 r32
+429 r33 = bit_and r26 r30
+430 trace_line r33 L31
+431 r31 = add_i32 r17 r28
+432 r28 = select r30 r31 r28
+433 trace_var r33 $26 = r28
+434 trace_line r33 L29
+435 trace_var r33 $28 = r18
+436 trace_line r33 L30
+437 r33 = gt_i32 r18 r25
+438 r33 = bit_and r29 r33
+439 r33 = bit_and r32 r33
+440 r31 = bit_and r26 r33
+441 trace_line r31 L30
+442 r33 = bit_xor r10 r33
+443 r33 = bit_and r32 r33
+444 r32 = bit_and r29 r33
+445 r31 = bit_and r26 r32
+446 trace_line r31 L31
+447 r30 = add_i32 r18 r28
+448 r28 = select r32 r30 r28
+449 trace_var r31 $26 = r28
+450 trace_line r31 L29
+451 trace_var r31 $28 = r14
+452 trace_line r31 L30
+453 r31 = gt_i32 r14 r25
+454 r31 = bit_and r29 r31
+455 r31 = bit_and r33 r31
+456 r30 = bit_and r26 r31
+457 trace_line r30 L30
+458 r31 = bit_xor r10 r31
+459 r31 = bit_and r33 r31
+460 r33 = bit_and r29 r31
+461 r30 = bit_and r26 r33
+462 trace_line r30 L31
+463 r32 = add_i32 r14 r28
+464 r28 = select r33 r32 r28
+465 trace_var r30 $26 = r28
+466 trace_line r30 L29
+467 trace_var r30 $28 = r19
+468 trace_line r30 L30
+469 r30 = gt_i32 r19 r25
+470 r30 = bit_and r29 r30
+471 r30 = bit_and r31 r30
+472 r32 = bit_and r26 r30
+473 trace_line r32 L30
+474 r30 = bit_xor r10 r30
+475 r30 = bit_and r31 r30
+476 r31 = bit_and r29 r30
+477 r32 = bit_and r26 r31
+478 trace_line r32 L31
+479 r33 = add_i32 r19 r28
+480 r28 = select r31 r33 r28
+481 trace_var r32 $26 = r28
+482 trace_line r32 L29
+483 trace_var r32 $28 = r20
+484 trace_line r32 L30
+485 r32 = gt_i32 r20 r25
+486 r32 = bit_and r29 r32
+487 r32 = bit_and r30 r32
+488 r33 = bit_and r26 r32
+489 trace_line r33 L30
+490 r32 = bit_xor r10 r32
+491 r32 = bit_and r30 r32
+492 r30 = bit_and r29 r32
+493 r33 = bit_and r26 r30
+494 trace_line r33 L31
+495 r31 = add_i32 r20 r28
+496 r28 = select r30 r31 r28
+497 trace_var r33 $26 = r28
+498 trace_line r33 L29
+499 trace_var r33 $28 = r21
+500 trace_line r33 L30
+501 r33 = gt_i32 r21 r25
+502 r33 = bit_and r29 r33
+503 r33 = bit_and r32 r33
+504 r31 = bit_and r26 r33
+505 trace_line r31 L30
+506 r33 = bit_xor r10 r33
+507 r33 = bit_and r32 r33
+508 r32 = bit_and r29 r33
+509 r31 = bit_and r26 r32
+510 trace_line r31 L31
+511 r30 = add_i32 r21 r28
+512 r28 = select r32 r30 r28
+513 trace_var r31 $26 = r28
+514 trace_line r31 L29
+515 trace_var r31 $28 = r22
+516 trace_line r31 L30
+517 r25 = gt_i32 r22 r25
+518 r25 = bit_and r29 r25
+519 r25 = bit_and r33 r25
+520 r31 = bit_and r26 r25
+521 trace_line r31 L30
+522 r25 = bit_xor r10 r25
+523 r25 = bit_and r33 r25
+524 r25 = bit_and r29 r25
+525 r33 = bit_and r26 r25
+526 trace_line r33 L31
+527 r31 = add_i32 r22 r28
+528 r28 = select r25 r31 r28
+529 trace_var r33 $26 = r28
+530 trace_line r33 L29
+531 trace_line r27 L33
+532 r28 = bit_and r29 r28
+533 trace_var r27 $24 = r28
+534 trace_exit r27 F3
+535 r28 = eq_i32 r28 r24
+536 r28 = bit_and r29 r28
+537 r29 = bit_and r26 r28
+538 trace_enter r29 F4
+539 trace_line r29 L38
+540 trace_line r29 L39
+541 trace_line r29 L41
+542 trace_var r29 $30 = r22
+543 trace_var r29 $31 = r22
+544 trace_var r29 $32 = r22
+545 trace_var r29 $33 = r22
+546 trace_line r29 L42
+547 trace_var r29 $34 = r15
+548 trace_line r29 L43
+549 r27 = select r28 r15 r22
+550 trace_var r29 $33 = r27
+551 trace_line r29 L42
+552 trace_var r29 $34 = r16
+553 trace_line r29 L43
+554 r33 = select r28 r27 r22
+555 trace_var r29 $32 = r33
+556 r27 = select r28 r16 r27
+557 trace_var r29 $33 = r27
+558 trace_line r29 L42
+559 trace_var r29 $34 = r17
+560 trace_line r29 L43
+561 r31 = select r28 r33 r22
+562 trace_var r29 $31 = r31
+563 r33 = select r28 r27 r33
+564 trace_var r29 $32 = r33
+565 r27 = select r28 r17 r27
+566 trace_var r29 $33 = r27
+567 trace_line r29 L42
+568 trace_line r29 L45
+569 r31 = eq_i32 r15 r31
+570 r33 = eq_i32 r16 r33
+571 r27 = eq_i32 r17 r27
+572 r33 = bit_and r31 r33
+573 r33 = bit_and r27 r33
+574 r33 = bit_and r28 r33
+575 trace_var r29 $29 = r33
+576 trace_exit r29 F4
+577 r33 = bit_and r28 r33
+578 r28 = bit_and r26 r33
+579 trace_enter r28 F5
+580 trace_line r28 L50
+581 trace_line r28 L51
+582 trace_line r28 L53
+583 trace_var r28 $36 = r22
+584 trace_var r28 $37 = r22
+585 trace_var r28 $38 = r22
+586 trace_var r28 $39 = r22
+587 trace_line r28 L54
+588 trace_var r28 $40 = r15
+589 trace_line r28 L55
+590 r29 = select r33 r15 r22
+591 trace_var r28 $39 = r29
+592 trace_line r28 L54
+593 trace_var r28 $40 = r16
+594 trace_line r28 L55
+595 r27 = select r33 r29 r22
+596 trace_var r28 $38 = r27
+597 r29 = select r33 r16 r29
+598 trace_var r28 $39 = r29
+599 trace_line r28 L54
+600 trace_var r28 $40 = r17
+601 trace_line r28 L55
+602 r31 = select r33 r27 r22
+603 trace_var r28 $37 = r31
+604 r27 = select r33 r29 r27
+605 trace_var r28 $38 = r27
+606 r29 = select r33 r17 r29
+607 trace_var r28 $39 = r29
+608 trace_line r28 L54
+609 trace_line r28 L57
+610 r31 = eq_i32 r15 r31
+611 r27 = eq_i32 r16 r27
+612 r29 = eq_i32 r17 r29
+613 r27 = bit_and r31 r27
+614 r27 = bit_and r29 r27
+615 r27 = bit_and r33 r27
+616 trace_var r28 $35 = r27
+617 trace_exit r28 F5
+618 r27 = bit_and r33 r27
+619 r33 = bit_and r26 r27
+620 trace_enter r33 F6
+621 trace_line r33 L62
+622 trace_line r33 L63
+623 trace_line r33 L65
+624 trace_var r33 $42 = r22
+625 trace_var r33 $43 = r22
+626 trace_var r33 $44 = r22
+627 trace_var r33 $45 = r22
+628 trace_line r33 L66
+629 trace_var r33 $46 = r17
+630 trace_line r33 L67
+631 r28 = select r27 r17 r22
+632 trace_var r33 $45 = r28
+633 trace_line r33 L66
+634 trace_var r33 $46 = r16
+635 trace_line r33 L67
+636 r29 = select r27 r28 r22
+637 trace_var r33 $44 = r29
+638 r28 = select r27 r16 r28
+639 trace_var r33 $45 = r28
+640 trace_line r33 L66
+641 trace_var r33 $46 = r15
+642 trace_line r33 L67
+643 r31 = select r27 r29 r22
+644 trace_var r33 $43 = r31
+645 r29 = select r27 r28 r29
+646 trace_var r33 $44 = r29
+647 r28 = select r27 r15 r28
+648 trace_var r33 $45 = r28
+649 trace_line r33 L66
+650 trace_line r33 L69
+651 r31 = eq_i32 r17 r31
+652 r29 = eq_i32 r16 r29
+653 r28 = eq_i32 r15 r28
+654 r29 = bit_and r31 r29
+655 r29 = bit_and r28 r29
+656 r29 = bit_and r27 r29
+657 trace_var r33 $41 = r29
+658 trace_exit r33 F6
+659 r29 = bit_and r27 r29
+660 r27 = bit_and r26 r29
+661 trace_enter r27 F7
+662 trace_line r27 L74
+663 trace_line r27 L75
+664 trace_line r27 L77
+665 trace_var r27 $48 = r22
+666 trace_var r27 $49 = r22
+667 trace_var r27 $50 = r22
+668 trace_var r27 $51 = r22
+669 trace_line r27 L78
+670 trace_var r27 $52 = r17
+671 trace_line r27 L79
+672 r33 = select r29 r17 r22
+673 trace_var r27 $51 = r33
674 trace_line r27 L78
-675 trace_line r27 L81
-676 r31 = eq_i32 r17 r31
-677 r28 = eq_i32 r16 r28
-678 r33 = eq_i32 r15 r33
-679 r28 = bit_and r31 r28
-680 r28 = bit_and r33 r28
-681 r28 = bit_and r29 r28
-682 trace_exit r27 F7
-683 r28 = bit_and r29 r28
-684 r29 = bit_and r26 r28
-685 trace_enter r29 F8
-686 trace_line r29 L97
-687 trace_line r29 L99
-688 trace_var r29 $42 = r22
-689 trace_var r29 $43 = r22
-690 trace_var r29 $44 = r22
-691 trace_var r29 $45 = r22
-692 trace_line r29 L100
-693 trace_var r29 $46 = r15
-694 trace_line r29 L101
-695 r27 = select r28 r15 r22
-696 trace_var r29 $45 = r27
-697 trace_line r29 L100
-698 trace_line r29 L103
-699 r27 = eq_i32 r15 r27
-700 r27 = bit_and r28 r27
-701 trace_exit r29 F8
-702 r27 = bit_and r28 r27
-703 r28 = bit_and r26 r27
-704 trace_enter r28 F9
-705 trace_line r28 L86
-706 trace_line r28 L88
-707 trace_var r28 $47 = r22
-708 trace_var r28 $48 = r22
-709 trace_var r28 $49 = r22
-710 trace_var r28 $50 = r22
-711 trace_line r28 L89
-712 trace_var r28 $51 = r15
-713 trace_line r28 L90
-714 r29 = select r27 r15 r22
-715 trace_var r28 $50 = r29
-716 trace_line r28 L89
-717 trace_var r28 $51 = r16
-718 trace_line r28 L90
-719 r33 = select r27 r29 r22
-720 trace_var r28 $49 = r33
-721 r29 = select r27 r16 r29
-722 trace_var r28 $50 = r29
-723 trace_line r28 L89
-724 trace_var r28 $51 = r17
-725 trace_line r28 L90
-726 r31 = select r27 r33 r22
-727 trace_var r28 $48 = r31
-728 r33 = select r27 r29 r33
-729 trace_var r28 $49 = r33
-730 r29 = select r27 r17 r29
-731 trace_var r28 $50 = r29
-732 trace_line r28 L89
-733 trace_line r28 L92
-734 r31 = eq_i32 r15 r31
-735 r33 = eq_i32 r16 r33
-736 r29 = eq_i32 r17 r29
-737 r33 = bit_and r31 r33
-738 r33 = bit_and r29 r33
-739 r33 = bit_and r27 r33
-740 trace_exit r28 F9
-741 r33 = bit_and r27 r33
-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
-749 store32 ptr3 r29
-750 store32 ptr4 r33
+675 trace_var r27 $52 = r16
+676 trace_line r27 L79
+677 r28 = select r29 r33 r22
+678 trace_var r27 $50 = r28
+679 r33 = select r29 r16 r33
+680 trace_var r27 $51 = r33
+681 trace_line r27 L78
+682 trace_var r27 $52 = r15
+683 trace_line r27 L79
+684 r31 = select r29 r28 r22
+685 trace_var r27 $49 = r31
+686 r28 = select r29 r33 r28
+687 trace_var r27 $50 = r28
+688 r33 = select r29 r15 r33
+689 trace_var r27 $51 = r33
+690 trace_line r27 L78
+691 trace_line r27 L81
+692 r31 = eq_i32 r17 r31
+693 r28 = eq_i32 r16 r28
+694 r33 = eq_i32 r15 r33
+695 r28 = bit_and r31 r28
+696 r28 = bit_and r33 r28
+697 r28 = bit_and r29 r28
+698 trace_var r27 $47 = r28
+699 trace_exit r27 F7
+700 r28 = bit_and r29 r28
+701 r29 = bit_and r26 r28
+702 trace_enter r29 F8
+703 trace_line r29 L97
+704 trace_line r29 L99
+705 trace_var r29 $54 = r22
+706 trace_var r29 $55 = r22
+707 trace_var r29 $56 = r22
+708 trace_var r29 $57 = r22
+709 trace_line r29 L100
+710 trace_var r29 $58 = r15
+711 trace_line r29 L101
+712 r27 = select r28 r15 r22
+713 trace_var r29 $57 = r27
+714 trace_line r29 L100
+715 trace_line r29 L103
+716 r27 = eq_i32 r15 r27
+717 r27 = bit_and r28 r27
+718 trace_var r29 $53 = r27
+719 trace_exit r29 F8
+720 r27 = bit_and r28 r27
+721 r28 = bit_and r26 r27
+722 trace_enter r28 F9
+723 trace_line r28 L86
+724 trace_line r28 L88
+725 trace_var r28 $60 = r22
+726 trace_var r28 $61 = r22
+727 trace_var r28 $62 = r22
+728 trace_var r28 $63 = r22
+729 trace_line r28 L89
+730 trace_var r28 $64 = r15
+731 trace_line r28 L90
+732 r29 = select r27 r15 r22
+733 trace_var r28 $63 = r29
+734 trace_line r28 L89
+735 trace_var r28 $64 = r16
+736 trace_line r28 L90
+737 r33 = select r27 r29 r22
+738 trace_var r28 $62 = r33
+739 r29 = select r27 r16 r29
+740 trace_var r28 $63 = r29
+741 trace_line r28 L89
+742 trace_var r28 $64 = r17
+743 trace_line r28 L90
+744 r31 = select r27 r33 r22
+745 trace_var r28 $61 = r31
+746 r33 = select r27 r29 r33
+747 trace_var r28 $62 = r33
+748 r29 = select r27 r17 r29
+749 trace_var r28 $63 = r29
+750 trace_line r28 L89
+751 trace_line r28 L92
+752 r31 = eq_i32 r15 r31
+753 r33 = eq_i32 r16 r33
+754 r29 = eq_i32 r17 r29
+755 r33 = bit_and r31 r33
+756 r33 = bit_and r29 r33
+757 r33 = bit_and r27 r33
+758 trace_var r28 $59 = r33
+759 trace_exit r28 F9
+760 r33 = bit_and r27 r33
+761 r27 = select r33 r5 r1
+762 r28 = select r33 r6 r2
+763 r29 = select r33 r7 r3
+764 r33 = select r33 r8 r4
+765 trace_var r26 $10 = r27
+766 trace_var r26 $11 = r28
+767 trace_var r26 $12 = r29
+768 trace_var r26 $13 = r33
+769 trace_exit r26 F0
+770 store32 ptr1 r27
+771 store32 ptr2 r28
+772 store32 ptr3 r29
+773 store32 ptr4 r33
diff --git a/tests/sksl/runtime/PrecisionQualifiers.skvm b/tests/sksl/runtime/PrecisionQualifiers.skvm
index b232ce9..e9e743f 100644
--- a/tests/sksl/runtime/PrecisionQualifiers.skvm
+++ b/tests/sksl/runtime/PrecisionQualifiers.skvm
@@ -6,135 +6,146 @@
$5 = colorRed (float4 : slot 2/4, L3)
$6 = colorRed (float4 : slot 3/4, L3)
$7 = colorRed (float4 : slot 4/4, L3)
-$8 = coords (float2 : slot 1/2, L57)
-$9 = coords (float2 : slot 2/2, L57)
-$10 = zero (float4 : slot 1/4, L58)
-$11 = zero (float4 : slot 2/4, L58)
-$12 = zero (float4 : slot 3/4, L58)
-$13 = zero (float4 : slot 4/4, L58)
-$14 = one (float4 : slot 1/4, L59)
-$15 = one (float4 : slot 2/4, L59)
-$16 = one (float4 : slot 3/4, L59)
-$17 = one (float4 : slot 4/4, L59)
-$18 = green (float4 : slot 1/4, L60)
-$19 = green (float4 : slot 2/4, L60)
-$20 = green (float4 : slot 3/4, L60)
-$21 = green (float4 : slot 4/4, L60)
-$22 = red (float4 : slot 1/4, L63)
-$23 = red (float4 : slot 2/4, L63)
-$24 = red (float4 : slot 3/4, L63)
-$25 = red (float4 : slot 4/4, L63)
-$26 = mp (float, L6)
-$27 = hp (float, L7)
-$28 = ihp (int, L8)
-$29 = imp (int, L9)
-$30 = mp2 (float2 : slot 1/2, L15)
-$31 = mp2 (float2 : slot 2/2, L15)
-$32 = hp2 (float2 : slot 1/2, L16)
-$33 = hp2 (float2 : slot 2/2, L16)
-$34 = mp3 (float3 : slot 1/3, L17)
-$35 = mp3 (float3 : slot 2/3, L17)
-$36 = mp3 (float3 : slot 3/3, L17)
-$37 = hp3 (float3 : slot 1/3, L18)
-$38 = hp3 (float3 : slot 2/3, L18)
-$39 = hp3 (float3 : slot 3/3, L18)
-$40 = mp4 (float4 : slot 1/4, L19)
-$41 = mp4 (float4 : slot 2/4, L19)
-$42 = mp4 (float4 : slot 3/4, L19)
-$43 = mp4 (float4 : slot 4/4, L19)
-$44 = hp4 (float4 : slot 1/4, L20)
-$45 = hp4 (float4 : slot 2/4, L20)
-$46 = hp4 (float4 : slot 3/4, L20)
-$47 = hp4 (float4 : slot 4/4, L20)
-$48 = ihp2 (int2 : slot 1/2, L22)
-$49 = ihp2 (int2 : slot 2/2, L22)
-$50 = imp2 (int2 : slot 1/2, L23)
-$51 = imp2 (int2 : slot 2/2, L23)
-$52 = ihp3 (int3 : slot 1/3, L24)
-$53 = ihp3 (int3 : slot 2/3, L24)
-$54 = ihp3 (int3 : slot 3/3, L24)
-$55 = imp3 (int3 : slot 1/3, L25)
-$56 = imp3 (int3 : slot 2/3, L25)
-$57 = imp3 (int3 : slot 3/3, L25)
-$58 = ihp4 (int4 : slot 1/4, L26)
-$59 = ihp4 (int4 : slot 2/4, L26)
-$60 = ihp4 (int4 : slot 3/4, L26)
-$61 = ihp4 (int4 : slot 4/4, L26)
-$62 = imp4 (int4 : slot 1/4, L27)
-$63 = imp4 (int4 : slot 2/4, L27)
-$64 = imp4 (int4 : slot 3/4, L27)
-$65 = imp4 (int4 : slot 4/4, L27)
-$66 = mp2 (float2x2 : slot 1/4, L34)
-$67 = mp2 (float2x2 : slot 2/4, L34)
-$68 = mp2 (float2x2 : slot 3/4, L34)
-$69 = mp2 (float2x2 : slot 4/4, L34)
-$70 = hp2 (float2x2 : slot 1/4, L35)
-$71 = hp2 (float2x2 : slot 2/4, L35)
-$72 = hp2 (float2x2 : slot 3/4, L35)
-$73 = hp2 (float2x2 : slot 4/4, L35)
-$74 = mp3 (float3x3 : slot 1/9, L36)
-$75 = mp3 (float3x3 : slot 2/9, L36)
-$76 = mp3 (float3x3 : slot 3/9, L36)
-$77 = mp3 (float3x3 : slot 4/9, L36)
-$78 = mp3 (float3x3 : slot 5/9, L36)
-$79 = mp3 (float3x3 : slot 6/9, L36)
-$80 = mp3 (float3x3 : slot 7/9, L36)
-$81 = mp3 (float3x3 : slot 8/9, L36)
-$82 = mp3 (float3x3 : slot 9/9, L36)
-$83 = hp3 (float3x3 : slot 1/9, L37)
-$84 = hp3 (float3x3 : slot 2/9, L37)
-$85 = hp3 (float3x3 : slot 3/9, L37)
-$86 = hp3 (float3x3 : slot 4/9, L37)
-$87 = hp3 (float3x3 : slot 5/9, L37)
-$88 = hp3 (float3x3 : slot 6/9, L37)
-$89 = hp3 (float3x3 : slot 7/9, L37)
-$90 = hp3 (float3x3 : slot 8/9, L37)
-$91 = hp3 (float3x3 : slot 9/9, L37)
-$92 = mp4 (float4x4 : slot 1/16, L38)
-$93 = mp4 (float4x4 : slot 2/16, L38)
-$94 = mp4 (float4x4 : slot 3/16, L38)
-$95 = mp4 (float4x4 : slot 4/16, L38)
-$96 = mp4 (float4x4 : slot 5/16, L38)
-$97 = mp4 (float4x4 : slot 6/16, L38)
-$98 = mp4 (float4x4 : slot 7/16, L38)
-$99 = mp4 (float4x4 : slot 8/16, L38)
-$100 = mp4 (float4x4 : slot 9/16, L38)
-$101 = mp4 (float4x4 : slot 10/16, L38)
-$102 = mp4 (float4x4 : slot 11/16, L38)
-$103 = mp4 (float4x4 : slot 12/16, L38)
-$104 = mp4 (float4x4 : slot 13/16, L38)
-$105 = mp4 (float4x4 : slot 14/16, L38)
-$106 = mp4 (float4x4 : slot 15/16, L38)
-$107 = mp4 (float4x4 : slot 16/16, L38)
-$108 = hp4 (float4x4 : slot 1/16, L39)
-$109 = hp4 (float4x4 : slot 2/16, L39)
-$110 = hp4 (float4x4 : slot 3/16, L39)
-$111 = hp4 (float4x4 : slot 4/16, L39)
-$112 = hp4 (float4x4 : slot 5/16, L39)
-$113 = hp4 (float4x4 : slot 6/16, L39)
-$114 = hp4 (float4x4 : slot 7/16, L39)
-$115 = hp4 (float4x4 : slot 8/16, L39)
-$116 = hp4 (float4x4 : slot 9/16, L39)
-$117 = hp4 (float4x4 : slot 10/16, L39)
-$118 = hp4 (float4x4 : slot 11/16, L39)
-$119 = hp4 (float4x4 : slot 12/16, L39)
-$120 = hp4 (float4x4 : slot 13/16, L39)
-$121 = hp4 (float4x4 : slot 14/16, L39)
-$122 = hp4 (float4x4 : slot 15/16, L39)
-$123 = hp4 (float4x4 : slot 16/16, L39)
-$124 = mf[0] (float, L45)
-$125 = hf[0] (float, L46)
-$126 = mv[0] (float2 : slot 1/2, L47)
-$127 = mv[0] (float2 : slot 2/2, L47)
-$128 = mv[1] (float2 : slot 1/2, L47)
-$129 = mv[1] (float2 : slot 2/2, L47)
-$130 = hv[0] (float2 : slot 1/2, L48)
-$131 = hv[0] (float2 : slot 2/2, L48)
-$132 = hv[1] (float2 : slot 1/2, L48)
-$133 = hv[1] (float2 : slot 2/2, L48)
-$134 = value (float, L53)
-$135 = value (float, L54)
-$136 = value (float, L55)
+$8 = [main].result (float4 : slot 1/4, L57)
+$9 = [main].result (float4 : slot 2/4, L57)
+$10 = [main].result (float4 : slot 3/4, L57)
+$11 = [main].result (float4 : slot 4/4, L57)
+$12 = coords (float2 : slot 1/2, L57)
+$13 = coords (float2 : slot 2/2, L57)
+$14 = zero (float4 : slot 1/4, L58)
+$15 = zero (float4 : slot 2/4, L58)
+$16 = zero (float4 : slot 3/4, L58)
+$17 = zero (float4 : slot 4/4, L58)
+$18 = one (float4 : slot 1/4, L59)
+$19 = one (float4 : slot 2/4, L59)
+$20 = one (float4 : slot 3/4, L59)
+$21 = one (float4 : slot 4/4, L59)
+$22 = green (float4 : slot 1/4, L60)
+$23 = green (float4 : slot 2/4, L60)
+$24 = green (float4 : slot 3/4, L60)
+$25 = green (float4 : slot 4/4, L60)
+$26 = red (float4 : slot 1/4, L63)
+$27 = red (float4 : slot 2/4, L63)
+$28 = red (float4 : slot 3/4, L63)
+$29 = red (float4 : slot 4/4, L63)
+$30 = [test_scalar].result (bool, L5)
+$31 = mp (float, L6)
+$32 = hp (float, L7)
+$33 = ihp (int, L8)
+$34 = imp (int, L9)
+$35 = [test_vector].result (bool, L14)
+$36 = mp2 (float2 : slot 1/2, L15)
+$37 = mp2 (float2 : slot 2/2, L15)
+$38 = hp2 (float2 : slot 1/2, L16)
+$39 = hp2 (float2 : slot 2/2, L16)
+$40 = mp3 (float3 : slot 1/3, L17)
+$41 = mp3 (float3 : slot 2/3, L17)
+$42 = mp3 (float3 : slot 3/3, L17)
+$43 = hp3 (float3 : slot 1/3, L18)
+$44 = hp3 (float3 : slot 2/3, L18)
+$45 = hp3 (float3 : slot 3/3, L18)
+$46 = mp4 (float4 : slot 1/4, L19)
+$47 = mp4 (float4 : slot 2/4, L19)
+$48 = mp4 (float4 : slot 3/4, L19)
+$49 = mp4 (float4 : slot 4/4, L19)
+$50 = hp4 (float4 : slot 1/4, L20)
+$51 = hp4 (float4 : slot 2/4, L20)
+$52 = hp4 (float4 : slot 3/4, L20)
+$53 = hp4 (float4 : slot 4/4, L20)
+$54 = ihp2 (int2 : slot 1/2, L22)
+$55 = ihp2 (int2 : slot 2/2, L22)
+$56 = imp2 (int2 : slot 1/2, L23)
+$57 = imp2 (int2 : slot 2/2, L23)
+$58 = ihp3 (int3 : slot 1/3, L24)
+$59 = ihp3 (int3 : slot 2/3, L24)
+$60 = ihp3 (int3 : slot 3/3, L24)
+$61 = imp3 (int3 : slot 1/3, L25)
+$62 = imp3 (int3 : slot 2/3, L25)
+$63 = imp3 (int3 : slot 3/3, L25)
+$64 = ihp4 (int4 : slot 1/4, L26)
+$65 = ihp4 (int4 : slot 2/4, L26)
+$66 = ihp4 (int4 : slot 3/4, L26)
+$67 = ihp4 (int4 : slot 4/4, L26)
+$68 = imp4 (int4 : slot 1/4, L27)
+$69 = imp4 (int4 : slot 2/4, L27)
+$70 = imp4 (int4 : slot 3/4, L27)
+$71 = imp4 (int4 : slot 4/4, L27)
+$72 = [test_matrix].result (bool, L33)
+$73 = mp2 (float2x2 : slot 1/4, L34)
+$74 = mp2 (float2x2 : slot 2/4, L34)
+$75 = mp2 (float2x2 : slot 3/4, L34)
+$76 = mp2 (float2x2 : slot 4/4, L34)
+$77 = hp2 (float2x2 : slot 1/4, L35)
+$78 = hp2 (float2x2 : slot 2/4, L35)
+$79 = hp2 (float2x2 : slot 3/4, L35)
+$80 = hp2 (float2x2 : slot 4/4, L35)
+$81 = mp3 (float3x3 : slot 1/9, L36)
+$82 = mp3 (float3x3 : slot 2/9, L36)
+$83 = mp3 (float3x3 : slot 3/9, L36)
+$84 = mp3 (float3x3 : slot 4/9, L36)
+$85 = mp3 (float3x3 : slot 5/9, L36)
+$86 = mp3 (float3x3 : slot 6/9, L36)
+$87 = mp3 (float3x3 : slot 7/9, L36)
+$88 = mp3 (float3x3 : slot 8/9, L36)
+$89 = mp3 (float3x3 : slot 9/9, L36)
+$90 = hp3 (float3x3 : slot 1/9, L37)
+$91 = hp3 (float3x3 : slot 2/9, L37)
+$92 = hp3 (float3x3 : slot 3/9, L37)
+$93 = hp3 (float3x3 : slot 4/9, L37)
+$94 = hp3 (float3x3 : slot 5/9, L37)
+$95 = hp3 (float3x3 : slot 6/9, L37)
+$96 = hp3 (float3x3 : slot 7/9, L37)
+$97 = hp3 (float3x3 : slot 8/9, L37)
+$98 = hp3 (float3x3 : slot 9/9, L37)
+$99 = mp4 (float4x4 : slot 1/16, L38)
+$100 = mp4 (float4x4 : slot 2/16, L38)
+$101 = mp4 (float4x4 : slot 3/16, L38)
+$102 = mp4 (float4x4 : slot 4/16, L38)
+$103 = mp4 (float4x4 : slot 5/16, L38)
+$104 = mp4 (float4x4 : slot 6/16, L38)
+$105 = mp4 (float4x4 : slot 7/16, L38)
+$106 = mp4 (float4x4 : slot 8/16, L38)
+$107 = mp4 (float4x4 : slot 9/16, L38)
+$108 = mp4 (float4x4 : slot 10/16, L38)
+$109 = mp4 (float4x4 : slot 11/16, L38)
+$110 = mp4 (float4x4 : slot 12/16, L38)
+$111 = mp4 (float4x4 : slot 13/16, L38)
+$112 = mp4 (float4x4 : slot 14/16, L38)
+$113 = mp4 (float4x4 : slot 15/16, L38)
+$114 = mp4 (float4x4 : slot 16/16, L38)
+$115 = hp4 (float4x4 : slot 1/16, L39)
+$116 = hp4 (float4x4 : slot 2/16, L39)
+$117 = hp4 (float4x4 : slot 3/16, L39)
+$118 = hp4 (float4x4 : slot 4/16, L39)
+$119 = hp4 (float4x4 : slot 5/16, L39)
+$120 = hp4 (float4x4 : slot 6/16, L39)
+$121 = hp4 (float4x4 : slot 7/16, L39)
+$122 = hp4 (float4x4 : slot 8/16, L39)
+$123 = hp4 (float4x4 : slot 9/16, L39)
+$124 = hp4 (float4x4 : slot 10/16, L39)
+$125 = hp4 (float4x4 : slot 11/16, L39)
+$126 = hp4 (float4x4 : slot 12/16, L39)
+$127 = hp4 (float4x4 : slot 13/16, L39)
+$128 = hp4 (float4x4 : slot 14/16, L39)
+$129 = hp4 (float4x4 : slot 15/16, L39)
+$130 = hp4 (float4x4 : slot 16/16, L39)
+$131 = [test_array].result (bool, L44)
+$132 = mf[0] (float, L45)
+$133 = hf[0] (float, L46)
+$134 = mv[0] (float2 : slot 1/2, L47)
+$135 = mv[0] (float2 : slot 2/2, L47)
+$136 = mv[1] (float2 : slot 1/2, L47)
+$137 = mv[1] (float2 : slot 2/2, L47)
+$138 = hv[0] (float2 : slot 1/2, L48)
+$139 = hv[0] (float2 : slot 2/2, L48)
+$140 = hv[1] (float2 : slot 1/2, L48)
+$141 = hv[1] (float2 : slot 2/2, L48)
+$142 = [highp_param].result (bool, L53)
+$143 = value (float, L53)
+$144 = [mediump_param].result (bool, L54)
+$145 = value (float, L54)
+$146 = [lowp_param].result (bool, L55)
+$147 = value (float, L55)
F0 = float4 main(float2 coords)
F1 = bool test_scalar()
F2 = bool test_vector()
@@ -144,7 +155,7 @@
F6 = bool mediump_param(half value)
F7 = bool lowp_param(half value)
-21 registers, 233 instructions:
+22 registers, 245 instructions:
0 r0 = uniform32 ptr0 0
1 r1 = uniform32 ptr0 4
2 r2 = uniform32 ptr0 8
@@ -155,227 +166,239 @@
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)
+10 r10 = splat FFFFFFFF (nan)
+11 r11 = splat 3F000000 (0.5)
+12 r12 = eq_f32 r0 r11
+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)
loop:
-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
+20 r20 = index
+21 r21 = eq_f32 r20 r11
+22 r21 = bit_and r21 r12
+23 trace_var r21 $0 = r1
+24 trace_var r21 $1 = r2
+25 trace_var r21 $2 = r3
+26 trace_var r21 $3 = r4
+27 trace_var r21 $4 = r5
+28 trace_var r21 $5 = r6
+29 trace_var r21 $6 = r7
+30 trace_var r21 $7 = r8
+31 trace_enter r21 F0
+32 trace_var r21 $12 = r20
+33 trace_var r21 $13 = r0
+34 trace_line r21 L58
+35 trace_var r21 $14 = r9
+36 trace_var r21 $15 = r9
+37 trace_var r21 $16 = r9
+38 trace_var r21 $17 = r9
+39 trace_line r21 L59
+40 trace_var r21 $18 = r13
+41 trace_var r21 $19 = r13
+42 trace_var r21 $20 = r13
+43 trace_var r21 $21 = r13
+44 trace_line r21 L60
+45 trace_var r21 $22 = r1
+46 trace_var r21 $23 = r2
+47 trace_var r21 $24 = r3
+48 trace_var r21 $25 = r4
+49 trace_line r21 L61
+50 trace_line r21 L63
+51 trace_var r21 $26 = r5
+52 trace_var r21 $27 = r6
+53 trace_var r21 $28 = r7
+54 trace_var r21 $29 = r8
+55 trace_line r21 L64
+56 trace_line r21 L66
+57 trace_enter r21 F1
+58 trace_line r21 L6
+59 trace_var r21 $31 = r11
+60 trace_line r21 L7
+61 trace_var r21 $32 = r11
+62 trace_line r21 L8
+63 trace_var r21 $33 = r14
+64 trace_line r21 L9
+65 trace_var r21 $34 = r14
+66 trace_line r21 L11
+67 trace_var r21 $30 = r10
+68 trace_exit r21 F1
+69 trace_enter r21 F2
+70 trace_line r21 L15
+71 trace_var r21 $36 = r15
+72 trace_var r21 $37 = r15
+73 trace_line r21 L16
+74 trace_var r21 $38 = r15
+75 trace_var r21 $39 = r15
+76 trace_line r21 L17
+77 trace_var r21 $40 = r16
+78 trace_var r21 $41 = r16
+79 trace_var r21 $42 = r16
+80 trace_line r21 L18
+81 trace_var r21 $43 = r16
+82 trace_var r21 $44 = r16
+83 trace_var r21 $45 = r16
+84 trace_line r21 L19
+85 trace_var r21 $46 = r17
+86 trace_var r21 $47 = r17
+87 trace_var r21 $48 = r17
+88 trace_var r21 $49 = r17
+89 trace_line r21 L20
+90 trace_var r21 $50 = r17
+91 trace_var r21 $51 = r17
+92 trace_var r21 $52 = r17
+93 trace_var r21 $53 = r17
+94 trace_line r21 L22
+95 trace_var r21 $54 = r14
+96 trace_var r21 $55 = r14
+97 trace_line r21 L23
+98 trace_var r21 $56 = r14
+99 trace_var r21 $57 = r14
+100 trace_line r21 L24
+101 trace_var r21 $58 = r18
+102 trace_var r21 $59 = r18
+103 trace_var r21 $60 = r18
+104 trace_line r21 L25
+105 trace_var r21 $61 = r18
+106 trace_var r21 $62 = r18
+107 trace_var r21 $63 = r18
+108 trace_line r21 L26
+109 trace_var r21 $64 = r19
+110 trace_var r21 $65 = r19
+111 trace_var r21 $66 = r19
+112 trace_var r21 $67 = r19
+113 trace_line r21 L27
+114 trace_var r21 $68 = r19
+115 trace_var r21 $69 = r19
+116 trace_var r21 $70 = r19
+117 trace_var r21 $71 = r19
+118 trace_line r21 L29
+119 trace_var r21 $35 = r10
+120 trace_exit r21 F2
+121 trace_enter r21 F3
+122 trace_line r21 L34
+123 trace_var r21 $73 = r15
+124 trace_var r21 $74 = r9
+125 trace_var r21 $75 = r9
+126 trace_var r21 $76 = r15
+127 trace_line r21 L35
+128 trace_var r21 $77 = r15
+129 trace_var r21 $78 = r9
+130 trace_var r21 $79 = r9
+131 trace_var r21 $80 = r15
+132 trace_line r21 L36
+133 trace_var r21 $81 = r16
+134 trace_var r21 $82 = r9
+135 trace_var r21 $83 = r9
+136 trace_var r21 $84 = r9
+137 trace_var r21 $85 = r16
+138 trace_var r21 $86 = r9
+139 trace_var r21 $87 = r9
+140 trace_var r21 $88 = r9
+141 trace_var r21 $89 = r16
+142 trace_line r21 L37
+143 trace_var r21 $90 = r16
+144 trace_var r21 $91 = r9
+145 trace_var r21 $92 = r9
+146 trace_var r21 $93 = r9
+147 trace_var r21 $94 = r16
+148 trace_var r21 $95 = r9
+149 trace_var r21 $96 = r9
+150 trace_var r21 $97 = r9
+151 trace_var r21 $98 = r16
+152 trace_line r21 L38
+153 trace_var r21 $99 = r17
+154 trace_var r21 $100 = r9
+155 trace_var r21 $101 = r9
+156 trace_var r21 $102 = r9
+157 trace_var r21 $103 = r9
+158 trace_var r21 $104 = r17
+159 trace_var r21 $105 = r9
+160 trace_var r21 $106 = r9
+161 trace_var r21 $107 = r9
+162 trace_var r21 $108 = r9
+163 trace_var r21 $109 = r17
+164 trace_var r21 $110 = r9
+165 trace_var r21 $111 = r9
+166 trace_var r21 $112 = r9
+167 trace_var r21 $113 = r9
+168 trace_var r21 $114 = r17
+169 trace_line r21 L39
+170 trace_var r21 $115 = r17
+171 trace_var r21 $116 = r9
+172 trace_var r21 $117 = r9
+173 trace_var r21 $118 = r9
+174 trace_var r21 $119 = r9
+175 trace_var r21 $120 = r17
+176 trace_var r21 $121 = r9
+177 trace_var r21 $122 = r9
+178 trace_var r21 $123 = r9
+179 trace_var r21 $124 = r9
+180 trace_var r21 $125 = r17
+181 trace_var r21 $126 = r9
+182 trace_var r21 $127 = r9
+183 trace_var r21 $128 = r9
+184 trace_var r21 $129 = r9
+185 trace_var r21 $130 = r17
+186 trace_line r21 L41
+187 trace_var r21 $72 = r10
+188 trace_exit r21 F3
+189 trace_enter r21 F4
+190 trace_line r21 L45
+191 trace_var r21 $132 = r9
+192 trace_line r21 L45
+193 trace_var r21 $132 = r13
+194 trace_line r21 L46
+195 trace_var r21 $133 = r9
+196 trace_line r21 L46
+197 trace_var r21 $133 = r13
+198 trace_line r21 L47
+199 trace_var r21 $134 = r9
+200 trace_var r21 $135 = r9
+201 trace_var r21 $136 = r9
+202 trace_var r21 $137 = r9
+203 trace_line r21 L47
+204 trace_var r21 $135 = r13
+205 trace_line r21 L47
+206 trace_var r21 $136 = r15
+207 trace_var r21 $137 = r16
+208 trace_line r21 L48
+209 trace_var r21 $138 = r9
+210 trace_var r21 $139 = r9
+211 trace_var r21 $140 = r9
+212 trace_var r21 $141 = r9
+213 trace_line r21 L48
+214 trace_var r21 $139 = r13
+215 trace_line r21 L48
+216 trace_var r21 $140 = r15
+217 trace_var r21 $141 = r16
+218 trace_line r21 L50
+219 trace_var r21 $131 = r10
+220 trace_exit r21 F4
+221 trace_enter r21 F5
+222 trace_var r21 $143 = r13
+223 trace_line r21 L53
+224 trace_var r21 $142 = r10
+225 trace_exit r21 F5
+226 trace_enter r21 F6
+227 trace_var r21 $145 = r15
+228 trace_line r21 L54
+229 trace_var r21 $144 = r10
+230 trace_exit r21 F6
+231 trace_enter r21 F7
+232 trace_var r21 $147 = r16
+233 trace_line r21 L55
+234 trace_var r21 $146 = r10
+235 trace_exit r21 F7
+236 trace_var r21 $8 = r1
+237 trace_var r21 $9 = r2
+238 trace_var r21 $10 = r3
+239 trace_var r21 $11 = r4
+240 trace_exit r21 F0
+241 store32 ptr1 r1
+242 store32 ptr2 r2
+243 store32 ptr3 r3
+244 store32 ptr4 r4