From 1991780081a16bcf55faf2de667ad07056c3fcde Mon Sep 17 00:00:00 2001 From: John Stiles Date: Fri, 12 Nov 2021 08:45:31 -0500 Subject: [PATCH] Update LoopFloat/LoopInt tests to reduce hoisting. Previously, none of our `runtime` tests relied on the input coordinate in any way, so all of the logic was hoisted above the main loop in every test. This CL adds an artificial reliance on the input coordinate so that we have at least some SkVM tests with real code in the main loop. This lets us see debug trace instructions interleaved with real code. The input coordinate is clamped against a known uniform value (`colorGreen` always contains 0101) so that the final test output remains consistent in practice. Additionally, I noticed that this test was only enabled in ES3, but it doesn't seem to have anything ES3-specific in it, so it's now enabled across the board. Change-Id: Ie82f40b1060edb6071e300040ac59fb7d27094b0 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/470397 Commit-Queue: John Stiles Auto-Submit: John Stiles Reviewed-by: Ethan Nicholas --- resources/sksl/runtime/LoopFloat.rts | 20 +- resources/sksl/runtime/LoopInt.rts | 18 +- tests/SkSLTest.cpp | 4 +- tests/sksl/runtime/LoopFloat.skvm | 1287 ++++++++++++++------------ tests/sksl/runtime/LoopFloat.stage | 24 +- tests/sksl/runtime/LoopInt.skvm | 1197 +++++++++++++----------- tests/sksl/runtime/LoopInt.stage | 24 +- 7 files changed, 1394 insertions(+), 1180 deletions(-) diff --git a/resources/sksl/runtime/LoopFloat.rts b/resources/sksl/runtime/LoopFloat.rts index 2d55cd44e2..d5a38ee6ba 100644 --- a/resources/sksl/runtime/LoopFloat.rts +++ b/resources/sksl/runtime/LoopFloat.rts @@ -4,31 +4,30 @@ uniform half4 colorRed, colorGreen; // Should return 5 const float kZero = 0; -float return_loop() { +float return_loop(float five) { for (float i = kZero; i < 10; ++i) { - bool shouldExit = (i == float(colorGreen.g * 5)); - if (shouldExit) { return i; } + if (i == five) { return i; } } return 0; } // Should return 35 const float kTen = kZero + 10; -float continue_loop() { +float continue_loop(float five) { float sum = 0; for (float i = 0; i < kTen; ++i) { - if (i < 5) { continue; } + if (i < five) { continue; } sum += i; } return sum; } // Should return 15 -float break_loop() { +float break_loop(float five) { float sum = 0; const float kOne = 1; for (float i = 0; i < 10; i += kOne) { - if (i > 5) { break; } + if (i > five) { break; } sum += i; } return sum; @@ -113,9 +112,10 @@ bool loop_operator_eq() { return result == float4(9, 9, 9, 1); } -half4 main(float2 xy) { - return (return_loop() == 5 && continue_loop() == 35 && - break_loop() == 15 && abs(float_loop()) < 0.025 && +half4 main(float2 pos) { + float five = clamp(pos.x, colorGreen.g, colorGreen.a) * 5.0; + return (return_loop(five) == 5 && continue_loop(five) == 35 && + break_loop(five) == 15 && abs(float_loop()) < 0.025 && loop_operator_le() && loop_operator_lt() && loop_operator_ge() && loop_operator_gt() && loop_operator_eq() && loop_operator_ne()) ? colorGreen : colorRed; diff --git a/resources/sksl/runtime/LoopInt.rts b/resources/sksl/runtime/LoopInt.rts index feb78d77b2..849b6915a2 100644 --- a/resources/sksl/runtime/LoopInt.rts +++ b/resources/sksl/runtime/LoopInt.rts @@ -4,31 +4,30 @@ uniform half4 colorRed, colorGreen; // Should return 5 const int kZero = 0; -int return_loop() { +int return_loop(int five) { for (int i = kZero; i < 10; ++i) { - bool shouldExit = (i == int(colorGreen.g * 5)); - if (shouldExit) { return i; } + if (i == five) { return i; } } return 0; } // Should return 35 const int kTen = kZero + 10; -int continue_loop() { +int continue_loop(int five) { int sum = 0; for (int i = 0; i < kTen; ++i) { - if (i < 5) { continue; } + if (i < five) { continue; } sum += i; } return sum; } // Should return 15 -int break_loop() { +int break_loop(int five) { int sum = 0; const int kOne = 1; for (int i = 0; i < 10; i += kOne) { - if (i > 5) { break; } + if (i > five) { break; } sum += i; } return sum; @@ -104,8 +103,9 @@ bool loop_operator_eq() { return result == int4(9, 9, 9, 1); } -half4 main(float2 xy) { - return (return_loop() == 5 && continue_loop() == 35 && break_loop() == 15 && +half4 main(float2 pos) { + int five = int(clamp(pos.x, colorGreen.g, colorGreen.a)) * 5; + return (return_loop(five) == 5 && continue_loop(five) == 35 && break_loop(five) == 15 && loop_operator_le() && loop_operator_lt() && loop_operator_ge() && loop_operator_gt() && loop_operator_eq() && loop_operator_ne()) ? colorGreen : colorRed; diff --git a/tests/SkSLTest.cpp b/tests/SkSLTest.cpp index 7c42f9a2e4..1e16ab9c91 100644 --- a/tests/SkSLTest.cpp +++ b/tests/SkSLTest.cpp @@ -279,8 +279,8 @@ SKSL_TEST_ES3(SkSLIntrinsicTranspose, "intrinsics/Transpose.sksl") SKSL_TEST_ES3(SkSLIntrinsicUintBitsToFloat, "intrinsics/UintBitsToFloat.sksl") SKSL_TEST_ES3(SkSLArrayNarrowingConversions, "runtime/ArrayNarrowingConversions.rts") -SKSL_TEST_ES3(SkSLLoopFloat, "runtime/LoopFloat.rts") -SKSL_TEST_ES3(SkSLLoopInt, "runtime/LoopInt.rts") +SKSL_TEST(SkSLLoopFloat, "runtime/LoopFloat.rts") +SKSL_TEST(SkSLLoopInt, "runtime/LoopInt.rts") SKSL_TEST(SkSLQualifierOrder, "runtime/QualifierOrder.rts") SKSL_TEST(SkSLPrecisionQualifiers, "runtime/PrecisionQualifiers.rts") diff --git a/tests/sksl/runtime/LoopFloat.skvm b/tests/sksl/runtime/LoopFloat.skvm index 59bbcecf7a..6aefdb3b12 100644 --- a/tests/sksl/runtime/LoopFloat.skvm +++ b/tests/sksl/runtime/LoopFloat.skvm @@ -1,4 +1,4 @@ -128 registers, 602 instructions: +38 registers, 709 instructions: 0 r0 = uniform32 ptr0 0 1 r1 = uniform32 ptr0 4 2 r2 = uniform32 ptr0 8 @@ -12,593 +12,700 @@ 10 r10 = splat FFFFFFFF (nan) 11 r11 = splat 41200000 (10) 12 r12 = splat 40A00000 (5) -13 r13 = mul_f32 r6 r12 -14 r9 = eq_f32 r9 r13 -15 r14 = splat 1 (1.4012985e-45) -16 r15 = bit_xor r10 r9 -17 r16 = splat 3F800000 (1) -18 r17 = eq_f32 r16 r13 -19 r17 = bit_and r17 r15 -20 r18 = bit_and r16 r17 -21 r19 = bit_or r9 r17 -22 r20 = bit_xor r10 r19 -23 r21 = splat 40000000 (2) -24 r22 = eq_f32 r21 r13 -25 r22 = bit_and r22 r20 -26 r18 = select r22 r21 r18 -27 r19 = bit_or r19 r22 -28 r23 = bit_xor r10 r19 -29 r24 = splat 40400000 (3) -30 r25 = eq_f32 r24 r13 -31 r25 = bit_and r25 r23 -32 r18 = select r25 r24 r18 -33 r19 = bit_or r19 r25 -34 r26 = bit_xor r10 r19 -35 r27 = splat 40800000 (4) -36 r28 = eq_f32 r27 r13 -37 r28 = bit_and r28 r26 -38 r18 = select r28 r27 r18 -39 r19 = bit_or r19 r28 -40 r29 = bit_xor r10 r19 -41 r30 = eq_f32 r12 r13 -42 r30 = bit_and r30 r29 -43 r18 = select r30 r12 r18 -44 r19 = bit_or r19 r30 -45 r31 = bit_xor r10 r19 -46 r32 = splat 40C00000 (6) -47 r33 = eq_f32 r32 r13 -48 r33 = bit_and r33 r31 -49 r18 = select r33 r32 r18 -50 r19 = bit_or r19 r33 -51 r34 = bit_xor r10 r19 -52 r35 = splat 40E00000 (7) -53 r36 = eq_f32 r35 r13 -54 r36 = bit_and r36 r34 -55 r18 = select r36 r35 r18 -56 r19 = bit_or r19 r36 -57 r37 = bit_xor r10 r19 -58 r38 = splat 41000000 (8) -59 r39 = eq_f32 r38 r13 -60 r39 = bit_and r39 r37 -61 r18 = select r39 r38 r18 -62 r19 = bit_or r19 r39 -63 r40 = bit_xor r10 r19 -64 r41 = splat 41100000 (9) -65 r13 = eq_f32 r41 r13 -66 r13 = bit_and r13 r40 -67 r18 = select r13 r41 r18 -68 r19 = bit_or r19 r13 -69 r19 = bit_xor r10 r19 -70 r18 = bit_clear r18 r19 -71 r18 = eq_f32 r18 r12 -72 r42 = bit_xor r10 r18 -73 r43 = bit_and r18 r42 -74 r42 = bit_or r42 r18 -75 r44 = bit_and r18 r42 -76 r45 = bit_xor r10 r44 -77 r45 = bit_and r42 r45 -78 r42 = bit_and r18 r45 -79 r46 = bit_and r16 r42 -80 r45 = bit_or r45 r44 -81 r47 = bit_and r18 r45 -82 r48 = bit_xor r10 r47 -83 r48 = bit_and r45 r48 -84 r45 = bit_and r18 r48 -85 r49 = add_f32 r46 r21 -86 r49 = select r45 r49 r46 -87 r48 = bit_or r48 r47 -88 r50 = bit_and r18 r48 -89 r51 = bit_xor r10 r50 -90 r51 = bit_and r48 r51 -91 r48 = bit_and r18 r51 -92 r52 = add_f32 r49 r24 -93 r52 = select r48 r52 r49 -94 r51 = bit_or r51 r50 -95 r53 = bit_and r18 r51 -96 r54 = bit_xor r10 r53 -97 r54 = bit_and r51 r54 -98 r51 = bit_and r18 r54 -99 r55 = add_f32 r52 r27 -100 r55 = select r51 r55 r52 -101 r54 = bit_or r54 r53 -102 r54 = bit_and r18 r54 -103 r56 = add_f32 r55 r12 -104 r56 = select r54 r56 r55 -105 r57 = add_f32 r56 r32 -106 r57 = select r54 r57 r56 -107 r58 = add_f32 r57 r35 -108 r58 = select r54 r58 r57 -109 r59 = add_f32 r58 r38 -110 r59 = select r54 r59 r58 -111 r60 = add_f32 r59 r41 -112 r60 = select r54 r60 r59 -113 r61 = bit_and r60 r18 -114 r62 = splat 420C0000 (35) -115 r62 = eq_f32 r61 r62 -116 r62 = bit_and r18 r62 -117 r61 = bit_and r16 r62 -118 r63 = add_f32 r61 r21 -119 r63 = select r62 r63 r61 -120 r64 = add_f32 r63 r24 -121 r64 = select r62 r64 r63 -122 r65 = add_f32 r64 r27 -123 r65 = select r62 r65 r64 -124 r66 = add_f32 r65 r12 -125 r66 = select r62 r66 r65 -126 r67 = bit_xor r10 r62 -127 r68 = bit_and r62 r67 -128 r69 = add_f32 r66 r32 -129 r69 = select r68 r69 r66 -130 r70 = bit_xor r10 r68 -131 r70 = bit_and r67 r70 -132 r67 = bit_and r62 r70 -133 r71 = add_f32 r69 r35 -134 r71 = select r67 r71 r69 -135 r72 = bit_xor r10 r67 -136 r72 = bit_and r70 r72 -137 r70 = bit_and r62 r72 -138 r73 = add_f32 r71 r38 -139 r73 = select r70 r73 r71 -140 r74 = bit_xor r10 r70 -141 r74 = bit_and r72 r74 -142 r74 = bit_and r62 r74 -143 r72 = add_f32 r73 r41 -144 r72 = select r74 r72 r73 -145 r75 = bit_and r72 r62 -146 r76 = splat 41700000 (15) -147 r76 = eq_f32 r75 r76 -148 r76 = bit_and r62 r76 -149 r75 = splat 3DFBE76D (0.123) -150 r77 = bit_and r75 r76 -151 r78 = splat 3E6F9DB2 (0.234) -152 r79 = add_f32 r77 r78 -153 r79 = select r76 r79 r77 -154 r80 = splat 3EB0A3D7 (0.345) -155 r81 = add_f32 r79 r80 -156 r81 = select r76 r81 r79 -157 r82 = splat 3EE978D5 (0.456) -158 r83 = add_f32 r81 r82 -159 r83 = select r76 r83 r81 -160 r84 = splat 3F1126EA (0.56700003) -161 r85 = add_f32 r83 r84 -162 r85 = select r76 r85 r83 -163 r86 = splat 3FDCCCCD (1.725) -164 r86 = sub_f32 r85 r86 -165 r86 = bit_and r86 r76 -166 r87 = splat 7FFFFFFF (nan) -167 r87 = bit_and r86 r87 -168 r86 = splat 3CCCCCCD (0.025) -169 r87 = gt_f32 r86 r87 -170 r87 = bit_and r76 r87 -171 r86 = select r87 r16 r41 -172 r88 = select r87 r86 r41 -173 r89 = select r87 r21 r86 -174 r90 = select r87 r88 r41 -175 r91 = select r87 r89 r88 -176 r92 = select r87 r24 r89 -177 r93 = eq_f32 r90 r16 -178 r94 = eq_f32 r91 r21 -179 r95 = eq_f32 r92 r24 -180 r94 = bit_and r93 r94 -181 r95 = bit_and r94 r95 -182 r95 = bit_and r95 r87 -183 r95 = bit_and r87 r95 -184 r94 = select r95 r16 r41 -185 r93 = select r95 r94 r41 -186 r96 = select r95 r21 r94 -187 r97 = select r95 r93 r41 -188 r98 = select r95 r96 r93 -189 r99 = select r95 r24 r96 -190 r100 = eq_f32 r97 r16 -191 r101 = eq_f32 r98 r21 -192 r102 = eq_f32 r99 r24 -193 r101 = bit_and r100 r101 -194 r102 = bit_and r101 r102 -195 r102 = bit_and r102 r95 -196 r102 = bit_and r95 r102 -197 r101 = select r102 r24 r41 -198 r100 = select r102 r101 r41 -199 r103 = select r102 r21 r101 -200 r104 = select r102 r100 r41 -201 r105 = select r102 r103 r100 -202 r106 = select r102 r16 r103 -203 r107 = eq_f32 r104 r24 -204 r108 = eq_f32 r105 r21 -205 r109 = eq_f32 r106 r16 -206 r108 = bit_and r107 r108 -207 r109 = bit_and r108 r109 -208 r109 = bit_and r109 r102 -209 r109 = bit_and r102 r109 -210 r108 = select r109 r24 r41 -211 r107 = select r109 r108 r41 -212 r110 = select r109 r21 r108 -213 r111 = select r109 r107 r41 -214 r112 = select r109 r110 r107 -215 r113 = select r109 r16 r110 -216 r114 = eq_f32 r111 r24 -217 r115 = eq_f32 r112 r21 -218 r116 = eq_f32 r113 r16 -219 r115 = bit_and r114 r115 -220 r116 = bit_and r115 r116 -221 r116 = bit_and r116 r109 -222 r116 = bit_and r109 r116 -223 r115 = select r116 r16 r41 -224 r114 = eq_f32 r115 r16 -225 r114 = bit_and r114 r116 -226 r114 = bit_and r116 r114 -227 r117 = select r114 r16 r41 -228 r118 = select r114 r117 r41 -229 r119 = select r114 r21 r117 -230 r120 = select r114 r118 r41 -231 r121 = select r114 r119 r118 -232 r122 = select r114 r24 r119 -233 r123 = eq_f32 r120 r16 -234 r124 = eq_f32 r121 r21 -235 r125 = eq_f32 r122 r24 -236 r124 = bit_and r123 r124 -237 r125 = bit_and r124 r125 -238 r125 = bit_and r125 r114 -239 r125 = bit_and r114 r125 -240 r124 = select r125 r5 r1 -241 r123 = select r125 r6 r2 -242 r126 = select r125 r7 r3 -243 r125 = select r125 r8 r4 +13 r13 = splat 3F800000 (1) +14 r14 = splat 40000000 (2) +15 r15 = splat 40400000 (3) +16 r16 = splat 40800000 (4) +17 r17 = splat 40C00000 (6) +18 r18 = splat 40E00000 (7) +19 r19 = splat 41000000 (8) +20 r20 = splat 41100000 (9) +21 r21 = splat 420C0000 (35) +22 r22 = splat 41700000 (15) +23 r23 = splat 3DFBE76D (0.123) +24 r24 = splat 3E6F9DB2 (0.234) +25 r25 = splat 3EB0A3D7 (0.345) +26 r26 = splat 3EE978D5 (0.456) +27 r27 = splat 3F1126EA (0.56700003) +28 r28 = splat 3FDCCCCD (1.725) +29 r29 = splat 7FFFFFFF (nan) +30 r30 = splat 3CCCCCCD (0.025) loop: -244 r127 = index -245 trace_var r10 $0 = r1 (F32) -246 trace_var r10 $1 = r2 (F32) -247 trace_var r10 $2 = r3 (F32) -248 trace_var r10 $3 = r4 (F32) -249 trace_var r10 $4 = r5 (F32) -250 trace_var r10 $5 = r6 (F32) -251 trace_var r10 $6 = r7 (F32) -252 trace_var r10 $7 = r8 (F32) -253 trace_var r10 $9 = r11 (F32) -254 trace_call r10 L116 (enter) -255 trace_var r10 $10 = r127 (F32) -256 trace_var r10 $11 = r0 (F32) -257 trace_line r10 L117 -258 trace_call r10 L7 (enter) -259 trace_line r10 L8 -260 trace_line r10 L9 -261 trace_var r10 $13 = r14 (bool) -262 trace_line r10 L10 -263 trace_line r9 L10 -264 trace_line r15 L8 -265 trace_var r15 $12 = r16 (F32) -266 trace_line r15 L9 -267 trace_var r15 $13 = r14 (bool) -268 trace_line r15 L10 -269 trace_line r17 L10 -270 trace_line r20 L8 -271 trace_var r20 $12 = r21 (F32) -272 trace_line r20 L9 -273 trace_var r20 $13 = r14 (bool) -274 trace_line r20 L10 -275 trace_line r22 L10 -276 trace_line r23 L8 -277 trace_var r23 $12 = r24 (F32) -278 trace_line r23 L9 -279 trace_var r23 $13 = r14 (bool) -280 trace_line r23 L10 -281 trace_line r25 L10 -282 trace_line r26 L8 -283 trace_var r26 $12 = r27 (F32) -284 trace_line r26 L9 -285 trace_var r26 $13 = r14 (bool) -286 trace_line r26 L10 -287 trace_line r28 L10 -288 trace_line r29 L8 -289 trace_var r29 $12 = r12 (F32) -290 trace_line r29 L9 -291 trace_var r29 $13 = r14 (bool) -292 trace_line r29 L10 -293 trace_line r30 L10 -294 trace_line r31 L8 -295 trace_var r31 $12 = r32 (F32) -296 trace_line r31 L9 -297 trace_var r31 $13 = r14 (bool) -298 trace_line r31 L10 -299 trace_line r33 L10 -300 trace_line r34 L8 -301 trace_var r34 $12 = r35 (F32) -302 trace_line r34 L9 -303 trace_var r34 $13 = r14 (bool) -304 trace_line r34 L10 -305 trace_line r36 L10 -306 trace_line r37 L8 -307 trace_var r37 $12 = r38 (F32) -308 trace_line r37 L9 -309 trace_var r37 $13 = r14 (bool) -310 trace_line r37 L10 -311 trace_line r39 L10 -312 trace_line r40 L8 -313 trace_var r40 $12 = r41 (F32) -314 trace_line r40 L9 -315 trace_var r40 $13 = r14 (bool) -316 trace_line r40 L10 -317 trace_line r13 L10 -318 trace_line r19 L8 -319 trace_line r19 L12 -320 trace_call r10 L7 (exit) -321 trace_call r18 L17 (enter) -322 trace_line r18 L18 -323 trace_line r18 L19 -324 trace_line r18 L20 -325 trace_line r43 L21 -326 trace_line r44 L19 -327 trace_var r44 $15 = r16 (F32) -328 trace_line r44 L20 -329 trace_line r42 L21 -330 trace_var r42 $14 = r46 (F32) -331 trace_line r47 L19 -332 trace_var r47 $15 = r21 (F32) -333 trace_line r47 L20 -334 trace_line r45 L21 -335 trace_var r45 $14 = r49 (F32) -336 trace_line r50 L19 -337 trace_var r50 $15 = r24 (F32) -338 trace_line r50 L20 -339 trace_line r48 L21 -340 trace_var r48 $14 = r52 (F32) -341 trace_line r53 L19 -342 trace_var r53 $15 = r27 (F32) -343 trace_line r53 L20 -344 trace_line r51 L21 -345 trace_var r51 $14 = r55 (F32) -346 trace_line r54 L19 -347 trace_var r54 $15 = r12 (F32) -348 trace_line r54 L20 -349 trace_line r54 L21 -350 trace_var r54 $14 = r56 (F32) -351 trace_line r54 L19 -352 trace_var r54 $15 = r32 (F32) -353 trace_line r54 L20 -354 trace_line r54 L21 -355 trace_var r54 $14 = r57 (F32) -356 trace_line r54 L19 -357 trace_var r54 $15 = r35 (F32) -358 trace_line r54 L20 -359 trace_line r54 L21 -360 trace_var r54 $14 = r58 (F32) -361 trace_line r54 L19 -362 trace_var r54 $15 = r38 (F32) -363 trace_line r54 L20 -364 trace_line r54 L21 -365 trace_var r54 $14 = r59 (F32) -366 trace_line r54 L19 -367 trace_var r54 $15 = r41 (F32) -368 trace_line r54 L20 -369 trace_line r54 L21 -370 trace_var r54 $14 = r60 (F32) -371 trace_line r54 L19 -372 trace_line r18 L23 -373 trace_call r18 L17 (exit) -374 trace_call r62 L27 (enter) -375 trace_line r62 L28 -376 trace_line r62 L29 -377 trace_var r62 $17 = r16 (F32) -378 trace_line r62 L30 -379 trace_line r62 L31 -380 trace_line r62 L32 -381 trace_line r62 L30 -382 trace_var r62 $18 = r16 (F32) -383 trace_line r62 L31 -384 trace_line r62 L32 -385 trace_var r62 $16 = r61 (F32) -386 trace_line r62 L30 -387 trace_var r62 $18 = r21 (F32) -388 trace_line r62 L31 -389 trace_line r62 L32 -390 trace_var r62 $16 = r63 (F32) -391 trace_line r62 L30 -392 trace_var r62 $18 = r24 (F32) -393 trace_line r62 L31 -394 trace_line r62 L32 -395 trace_var r62 $16 = r64 (F32) -396 trace_line r62 L30 -397 trace_var r62 $18 = r27 (F32) -398 trace_line r62 L31 -399 trace_line r62 L32 -400 trace_var r62 $16 = r65 (F32) -401 trace_line r62 L30 -402 trace_var r62 $18 = r12 (F32) -403 trace_line r62 L31 -404 trace_line r62 L32 -405 trace_var r62 $16 = r66 (F32) -406 trace_line r62 L30 -407 trace_var r62 $18 = r32 (F32) -408 trace_line r62 L31 -409 trace_line r68 L32 -410 trace_var r68 $16 = r69 (F32) -411 trace_line r68 L30 -412 trace_var r68 $18 = r35 (F32) -413 trace_line r68 L31 -414 trace_line r67 L32 -415 trace_var r67 $16 = r71 (F32) -416 trace_line r67 L30 -417 trace_var r67 $18 = r38 (F32) -418 trace_line r67 L31 -419 trace_line r70 L32 -420 trace_var r70 $16 = r73 (F32) -421 trace_line r70 L30 -422 trace_var r70 $18 = r41 (F32) -423 trace_line r70 L31 -424 trace_line r74 L32 -425 trace_var r74 $16 = r72 (F32) -426 trace_line r74 L30 -427 trace_line r62 L34 -428 trace_call r62 L27 (exit) -429 trace_call r76 L38 (enter) -430 trace_line r76 L39 -431 trace_line r76 L40 -432 trace_var r76 $20 = r75 (F32) -433 trace_line r76 L41 -434 trace_var r76 $19 = r77 (F32) -435 trace_line r76 L40 -436 trace_var r76 $20 = r78 (F32) -437 trace_line r76 L41 -438 trace_var r76 $19 = r79 (F32) -439 trace_line r76 L40 -440 trace_var r76 $20 = r80 (F32) -441 trace_line r76 L41 -442 trace_var r76 $19 = r81 (F32) -443 trace_line r76 L40 -444 trace_var r76 $20 = r82 (F32) -445 trace_line r76 L41 -446 trace_var r76 $19 = r83 (F32) -447 trace_line r76 L40 -448 trace_var r76 $20 = r84 (F32) -449 trace_line r76 L41 -450 trace_var r76 $19 = r85 (F32) -451 trace_line r76 L40 -452 trace_line r76 L43 -453 trace_call r76 L38 (exit) -454 trace_call r87 L46 (enter) -455 trace_line r87 L48 -456 trace_line r87 L49 -457 trace_line r87 L51 -458 trace_var r87 $21 = r41 (F32) -459 trace_var r87 $22 = r41 (F32) -460 trace_var r87 $23 = r41 (F32) -461 trace_var r87 $24 = r41 (F32) -462 trace_line r87 L52 -463 trace_var r87 $25 = r16 (F32) -464 trace_line r87 L53 -465 trace_var r87 $24 = r86 (F32) -466 trace_line r87 L52 -467 trace_var r87 $25 = r21 (F32) -468 trace_line r87 L53 -469 trace_var r87 $23 = r88 (F32) -470 trace_var r87 $24 = r89 (F32) -471 trace_line r87 L52 -472 trace_var r87 $25 = r24 (F32) -473 trace_line r87 L53 -474 trace_var r87 $22 = r90 (F32) -475 trace_var r87 $23 = r91 (F32) -476 trace_var r87 $24 = r92 (F32) -477 trace_line r87 L52 -478 trace_line r87 L55 -479 trace_call r87 L46 (exit) -480 trace_call r95 L58 (enter) -481 trace_line r95 L60 -482 trace_line r95 L61 -483 trace_line r95 L63 -484 trace_var r95 $26 = r41 (F32) -485 trace_var r95 $27 = r41 (F32) -486 trace_var r95 $28 = r41 (F32) -487 trace_var r95 $29 = r41 (F32) -488 trace_line r95 L64 -489 trace_var r95 $30 = r16 (F32) -490 trace_line r95 L65 -491 trace_var r95 $29 = r94 (F32) -492 trace_line r95 L64 -493 trace_var r95 $30 = r21 (F32) -494 trace_line r95 L65 -495 trace_var r95 $28 = r93 (F32) -496 trace_var r95 $29 = r96 (F32) -497 trace_line r95 L64 -498 trace_var r95 $30 = r24 (F32) -499 trace_line r95 L65 -500 trace_var r95 $27 = r97 (F32) -501 trace_var r95 $28 = r98 (F32) -502 trace_var r95 $29 = r99 (F32) -503 trace_line r95 L64 -504 trace_line r95 L67 -505 trace_call r95 L58 (exit) -506 trace_call r102 L70 (enter) -507 trace_line r102 L72 -508 trace_line r102 L73 -509 trace_line r102 L75 -510 trace_var r102 $31 = r41 (F32) -511 trace_var r102 $32 = r41 (F32) -512 trace_var r102 $33 = r41 (F32) -513 trace_var r102 $34 = r41 (F32) -514 trace_line r102 L76 -515 trace_var r102 $35 = r24 (F32) -516 trace_line r102 L77 -517 trace_var r102 $34 = r101 (F32) -518 trace_line r102 L76 -519 trace_var r102 $35 = r21 (F32) -520 trace_line r102 L77 -521 trace_var r102 $33 = r100 (F32) -522 trace_var r102 $34 = r103 (F32) -523 trace_line r102 L76 -524 trace_var r102 $35 = r16 (F32) -525 trace_line r102 L77 -526 trace_var r102 $32 = r104 (F32) -527 trace_var r102 $33 = r105 (F32) -528 trace_var r102 $34 = r106 (F32) -529 trace_line r102 L76 -530 trace_line r102 L79 -531 trace_call r102 L70 (exit) -532 trace_call r109 L82 (enter) -533 trace_line r109 L84 -534 trace_line r109 L85 -535 trace_line r109 L87 -536 trace_var r109 $36 = r41 (F32) -537 trace_var r109 $37 = r41 (F32) -538 trace_var r109 $38 = r41 (F32) -539 trace_var r109 $39 = r41 (F32) -540 trace_line r109 L88 -541 trace_var r109 $40 = r24 (F32) -542 trace_line r109 L89 -543 trace_var r109 $39 = r108 (F32) -544 trace_line r109 L88 -545 trace_var r109 $40 = r21 (F32) -546 trace_line r109 L89 -547 trace_var r109 $38 = r107 (F32) -548 trace_var r109 $39 = r110 (F32) -549 trace_line r109 L88 -550 trace_var r109 $40 = r16 (F32) -551 trace_line r109 L89 -552 trace_var r109 $37 = r111 (F32) -553 trace_var r109 $38 = r112 (F32) -554 trace_var r109 $39 = r113 (F32) -555 trace_line r109 L88 -556 trace_line r109 L91 -557 trace_call r109 L82 (exit) -558 trace_call r116 L105 (enter) -559 trace_line r116 L107 -560 trace_line r116 L109 -561 trace_var r116 $41 = r41 (F32) -562 trace_var r116 $42 = r41 (F32) -563 trace_var r116 $43 = r41 (F32) -564 trace_var r116 $44 = r41 (F32) -565 trace_line r116 L110 -566 trace_var r116 $45 = r16 (F32) -567 trace_line r116 L111 -568 trace_var r116 $44 = r115 (F32) -569 trace_line r116 L110 -570 trace_line r116 L113 -571 trace_call r116 L105 (exit) -572 trace_call r114 L94 (enter) -573 trace_line r114 L96 -574 trace_line r114 L98 -575 trace_var r114 $46 = r41 (F32) -576 trace_var r114 $47 = r41 (F32) -577 trace_var r114 $48 = r41 (F32) -578 trace_var r114 $49 = r41 (F32) -579 trace_line r114 L99 -580 trace_var r114 $50 = r16 (F32) -581 trace_line r114 L100 -582 trace_var r114 $49 = r117 (F32) -583 trace_line r114 L99 -584 trace_var r114 $50 = r21 (F32) -585 trace_line r114 L100 -586 trace_var r114 $48 = r118 (F32) -587 trace_var r114 $49 = r119 (F32) -588 trace_line r114 L99 -589 trace_var r114 $50 = r24 (F32) -590 trace_line r114 L100 -591 trace_var r114 $47 = r120 (F32) -592 trace_var r114 $48 = r121 (F32) -593 trace_var r114 $49 = r122 (F32) -594 trace_line r114 L99 -595 trace_line r114 L102 -596 trace_call r114 L94 (exit) -597 trace_call r10 L116 (exit) -598 store32 ptr1 r124 -599 store32 ptr2 r123 -600 store32 ptr3 r126 -601 store32 ptr4 r125 +31 r31 = index +32 trace_var r10 $0 = r1 (F32) +33 trace_var r10 $1 = r2 (F32) +34 trace_var r10 $2 = r3 (F32) +35 trace_var r10 $3 = r4 (F32) +36 trace_var r10 $4 = r5 (F32) +37 trace_var r10 $5 = r6 (F32) +38 trace_var r10 $6 = r7 (F32) +39 trace_var r10 $7 = r8 (F32) +40 trace_var r10 $9 = r11 (F32) +41 trace_call r10 L115 (enter) +42 trace_var r10 $10 = r31 (F32) +43 trace_var r10 $11 = r0 (F32) +44 trace_line r10 L116 +45 r31 = min_f32 r31 r8 +46 r31 = max_f32 r6 r31 +47 r31 = mul_f32 r31 r12 +48 trace_var r10 $12 = r31 (F32) +49 trace_line r10 L117 +50 trace_call r10 L7 (enter) +51 trace_var r10 $13 = r31 (F32) +52 trace_line r10 L8 +53 trace_line r10 L9 +54 r32 = eq_f32 r9 r31 +55 trace_line r32 L9 +56 r33 = bit_xor r10 r32 +57 trace_line r33 L8 +58 trace_var r33 $14 = r13 (F32) +59 trace_line r33 L9 +60 r34 = eq_f32 r13 r31 +61 r33 = bit_and r34 r33 +62 trace_line r33 L9 +63 r34 = bit_and r13 r33 +64 r33 = bit_or r32 r33 +65 r32 = bit_xor r10 r33 +66 trace_line r32 L8 +67 trace_var r32 $14 = r14 (F32) +68 trace_line r32 L9 +69 r35 = eq_f32 r14 r31 +70 r32 = bit_and r35 r32 +71 trace_line r32 L9 +72 r34 = select r32 r14 r34 +73 r32 = bit_or r33 r32 +74 r33 = bit_xor r10 r32 +75 trace_line r33 L8 +76 trace_var r33 $14 = r15 (F32) +77 trace_line r33 L9 +78 r35 = eq_f32 r15 r31 +79 r33 = bit_and r35 r33 +80 trace_line r33 L9 +81 r34 = select r33 r15 r34 +82 r33 = bit_or r32 r33 +83 r32 = bit_xor r10 r33 +84 trace_line r32 L8 +85 trace_var r32 $14 = r16 (F32) +86 trace_line r32 L9 +87 r35 = eq_f32 r16 r31 +88 r32 = bit_and r35 r32 +89 trace_line r32 L9 +90 r34 = select r32 r16 r34 +91 r32 = bit_or r33 r32 +92 r33 = bit_xor r10 r32 +93 trace_line r33 L8 +94 trace_var r33 $14 = r12 (F32) +95 trace_line r33 L9 +96 r35 = eq_f32 r12 r31 +97 r33 = bit_and r35 r33 +98 trace_line r33 L9 +99 r34 = select r33 r12 r34 +100 r33 = bit_or r32 r33 +101 r32 = bit_xor r10 r33 +102 trace_line r32 L8 +103 trace_var r32 $14 = r17 (F32) +104 trace_line r32 L9 +105 r35 = eq_f32 r17 r31 +106 r32 = bit_and r35 r32 +107 trace_line r32 L9 +108 r34 = select r32 r17 r34 +109 r32 = bit_or r33 r32 +110 r33 = bit_xor r10 r32 +111 trace_line r33 L8 +112 trace_var r33 $14 = r18 (F32) +113 trace_line r33 L9 +114 r35 = eq_f32 r18 r31 +115 r33 = bit_and r35 r33 +116 trace_line r33 L9 +117 r34 = select r33 r18 r34 +118 r33 = bit_or r32 r33 +119 r32 = bit_xor r10 r33 +120 trace_line r32 L8 +121 trace_var r32 $14 = r19 (F32) +122 trace_line r32 L9 +123 r35 = eq_f32 r19 r31 +124 r32 = bit_and r35 r32 +125 trace_line r32 L9 +126 r34 = select r32 r19 r34 +127 r32 = bit_or r33 r32 +128 r33 = bit_xor r10 r32 +129 trace_line r33 L8 +130 trace_var r33 $14 = r20 (F32) +131 trace_line r33 L9 +132 r35 = eq_f32 r20 r31 +133 r33 = bit_and r35 r33 +134 trace_line r33 L9 +135 r34 = select r33 r20 r34 +136 r33 = bit_or r32 r33 +137 r33 = bit_xor r10 r33 +138 trace_line r33 L8 +139 trace_line r33 L11 +140 r33 = bit_clear r34 r33 +141 trace_call r10 L7 (exit) +142 r33 = eq_f32 r33 r12 +143 trace_call r33 L16 (enter) +144 trace_var r33 $15 = r31 (F32) +145 trace_line r33 L17 +146 trace_line r33 L18 +147 trace_line r33 L19 +148 r34 = gt_f32 r31 r9 +149 r34 = bit_and r33 r34 +150 trace_line r34 L19 +151 r32 = bit_xor r10 r34 +152 r35 = bit_and r33 r32 +153 trace_line r35 L20 +154 r34 = bit_or r32 r34 +155 r32 = bit_and r33 r34 +156 trace_line r32 L18 +157 trace_var r32 $17 = r13 (F32) +158 trace_line r32 L19 +159 r32 = gt_f32 r31 r13 +160 r32 = bit_and r33 r32 +161 r32 = bit_and r32 r34 +162 trace_line r32 L19 +163 r35 = bit_xor r10 r32 +164 r35 = bit_and r34 r35 +165 r34 = bit_and r33 r35 +166 trace_line r34 L20 +167 r36 = bit_and r13 r34 +168 trace_var r34 $16 = r36 (F32) +169 r32 = bit_or r35 r32 +170 r35 = bit_and r33 r32 +171 trace_line r35 L18 +172 trace_var r35 $17 = r14 (F32) +173 trace_line r35 L19 +174 r35 = gt_f32 r31 r14 +175 r35 = bit_and r33 r35 +176 r35 = bit_and r35 r32 +177 trace_line r35 L19 +178 r34 = bit_xor r10 r35 +179 r34 = bit_and r32 r34 +180 r32 = bit_and r33 r34 +181 trace_line r32 L20 +182 r37 = add_f32 r36 r14 +183 r36 = select r32 r37 r36 +184 trace_var r32 $16 = r36 (F32) +185 r35 = bit_or r34 r35 +186 r34 = bit_and r33 r35 +187 trace_line r34 L18 +188 trace_var r34 $17 = r15 (F32) +189 trace_line r34 L19 +190 r34 = gt_f32 r31 r15 +191 r34 = bit_and r33 r34 +192 r34 = bit_and r34 r35 +193 trace_line r34 L19 +194 r32 = bit_xor r10 r34 +195 r32 = bit_and r35 r32 +196 r35 = bit_and r33 r32 +197 trace_line r35 L20 +198 r37 = add_f32 r36 r15 +199 r36 = select r35 r37 r36 +200 trace_var r35 $16 = r36 (F32) +201 r34 = bit_or r32 r34 +202 r32 = bit_and r33 r34 +203 trace_line r32 L18 +204 trace_var r32 $17 = r16 (F32) +205 trace_line r32 L19 +206 r32 = gt_f32 r31 r16 +207 r32 = bit_and r33 r32 +208 r32 = bit_and r32 r34 +209 trace_line r32 L19 +210 r35 = bit_xor r10 r32 +211 r35 = bit_and r34 r35 +212 r34 = bit_and r33 r35 +213 trace_line r34 L20 +214 r37 = add_f32 r36 r16 +215 r36 = select r34 r37 r36 +216 trace_var r34 $16 = r36 (F32) +217 r32 = bit_or r35 r32 +218 r35 = bit_and r33 r32 +219 trace_line r35 L18 +220 trace_var r35 $17 = r12 (F32) +221 trace_line r35 L19 +222 r35 = gt_f32 r31 r12 +223 r35 = bit_and r33 r35 +224 r35 = bit_and r35 r32 +225 trace_line r35 L19 +226 r34 = bit_xor r10 r35 +227 r34 = bit_and r32 r34 +228 r32 = bit_and r33 r34 +229 trace_line r32 L20 +230 r37 = add_f32 r36 r12 +231 r36 = select r32 r37 r36 +232 trace_var r32 $16 = r36 (F32) +233 r35 = bit_or r34 r35 +234 r34 = bit_and r33 r35 +235 trace_line r34 L18 +236 trace_var r34 $17 = r17 (F32) +237 trace_line r34 L19 +238 r34 = gt_f32 r31 r17 +239 r34 = bit_and r33 r34 +240 r34 = bit_and r34 r35 +241 trace_line r34 L19 +242 r32 = bit_xor r10 r34 +243 r32 = bit_and r35 r32 +244 r35 = bit_and r33 r32 +245 trace_line r35 L20 +246 r37 = add_f32 r36 r17 +247 r36 = select r35 r37 r36 +248 trace_var r35 $16 = r36 (F32) +249 r34 = bit_or r32 r34 +250 r32 = bit_and r33 r34 +251 trace_line r32 L18 +252 trace_var r32 $17 = r18 (F32) +253 trace_line r32 L19 +254 r32 = gt_f32 r31 r18 +255 r32 = bit_and r33 r32 +256 r32 = bit_and r32 r34 +257 trace_line r32 L19 +258 r35 = bit_xor r10 r32 +259 r35 = bit_and r34 r35 +260 r34 = bit_and r33 r35 +261 trace_line r34 L20 +262 r37 = add_f32 r36 r18 +263 r36 = select r34 r37 r36 +264 trace_var r34 $16 = r36 (F32) +265 r32 = bit_or r35 r32 +266 r35 = bit_and r33 r32 +267 trace_line r35 L18 +268 trace_var r35 $17 = r19 (F32) +269 trace_line r35 L19 +270 r35 = gt_f32 r31 r19 +271 r35 = bit_and r33 r35 +272 r35 = bit_and r35 r32 +273 trace_line r35 L19 +274 r34 = bit_xor r10 r35 +275 r34 = bit_and r32 r34 +276 r32 = bit_and r33 r34 +277 trace_line r32 L20 +278 r37 = add_f32 r36 r19 +279 r36 = select r32 r37 r36 +280 trace_var r32 $16 = r36 (F32) +281 r35 = bit_or r34 r35 +282 r34 = bit_and r33 r35 +283 trace_line r34 L18 +284 trace_var r34 $17 = r20 (F32) +285 trace_line r34 L19 +286 r34 = gt_f32 r31 r20 +287 r34 = bit_and r33 r34 +288 r34 = bit_and r34 r35 +289 trace_line r34 L19 +290 r32 = bit_xor r10 r34 +291 r32 = bit_and r35 r32 +292 r35 = bit_and r33 r32 +293 trace_line r35 L20 +294 r37 = add_f32 r36 r20 +295 r36 = select r35 r37 r36 +296 trace_var r35 $16 = r36 (F32) +297 r34 = bit_or r32 r34 +298 r34 = bit_and r33 r34 +299 trace_line r34 L18 +300 trace_line r33 L22 +301 r36 = bit_and r36 r33 +302 trace_call r33 L16 (exit) +303 r36 = eq_f32 r36 r21 +304 r36 = bit_and r33 r36 +305 trace_call r36 L26 (enter) +306 trace_var r36 $18 = r31 (F32) +307 trace_line r36 L27 +308 trace_line r36 L28 +309 trace_var r36 $20 = r13 (F32) +310 trace_line r36 L29 +311 trace_line r36 L30 +312 r33 = gt_f32 r9 r31 +313 r33 = bit_and r36 r33 +314 trace_line r33 L30 +315 r33 = bit_xor r10 r33 +316 r34 = bit_and r36 r33 +317 trace_line r34 L31 +318 trace_line r34 L29 +319 trace_var r34 $21 = r13 (F32) +320 trace_line r34 L30 +321 r34 = gt_f32 r13 r31 +322 r34 = bit_and r36 r34 +323 r34 = bit_and r34 r33 +324 trace_line r34 L30 +325 r34 = bit_xor r10 r34 +326 r34 = bit_and r33 r34 +327 r33 = bit_and r36 r34 +328 trace_line r33 L31 +329 r32 = bit_and r13 r33 +330 trace_var r33 $19 = r32 (F32) +331 trace_line r33 L29 +332 trace_var r33 $21 = r14 (F32) +333 trace_line r33 L30 +334 r33 = gt_f32 r14 r31 +335 r33 = bit_and r36 r33 +336 r33 = bit_and r33 r34 +337 trace_line r33 L30 +338 r33 = bit_xor r10 r33 +339 r33 = bit_and r34 r33 +340 r34 = bit_and r36 r33 +341 trace_line r34 L31 +342 r35 = add_f32 r32 r14 +343 r32 = select r34 r35 r32 +344 trace_var r34 $19 = r32 (F32) +345 trace_line r34 L29 +346 trace_var r34 $21 = r15 (F32) +347 trace_line r34 L30 +348 r34 = gt_f32 r15 r31 +349 r34 = bit_and r36 r34 +350 r34 = bit_and r34 r33 +351 trace_line r34 L30 +352 r34 = bit_xor r10 r34 +353 r34 = bit_and r33 r34 +354 r33 = bit_and r36 r34 +355 trace_line r33 L31 +356 r35 = add_f32 r32 r15 +357 r32 = select r33 r35 r32 +358 trace_var r33 $19 = r32 (F32) +359 trace_line r33 L29 +360 trace_var r33 $21 = r16 (F32) +361 trace_line r33 L30 +362 r33 = gt_f32 r16 r31 +363 r33 = bit_and r36 r33 +364 r33 = bit_and r33 r34 +365 trace_line r33 L30 +366 r33 = bit_xor r10 r33 +367 r33 = bit_and r34 r33 +368 r34 = bit_and r36 r33 +369 trace_line r34 L31 +370 r35 = add_f32 r32 r16 +371 r32 = select r34 r35 r32 +372 trace_var r34 $19 = r32 (F32) +373 trace_line r34 L29 +374 trace_var r34 $21 = r12 (F32) +375 trace_line r34 L30 +376 r34 = gt_f32 r12 r31 +377 r34 = bit_and r36 r34 +378 r34 = bit_and r34 r33 +379 trace_line r34 L30 +380 r34 = bit_xor r10 r34 +381 r34 = bit_and r33 r34 +382 r33 = bit_and r36 r34 +383 trace_line r33 L31 +384 r35 = add_f32 r32 r12 +385 r32 = select r33 r35 r32 +386 trace_var r33 $19 = r32 (F32) +387 trace_line r33 L29 +388 trace_var r33 $21 = r17 (F32) +389 trace_line r33 L30 +390 r33 = gt_f32 r17 r31 +391 r33 = bit_and r36 r33 +392 r33 = bit_and r33 r34 +393 trace_line r33 L30 +394 r33 = bit_xor r10 r33 +395 r33 = bit_and r34 r33 +396 r34 = bit_and r36 r33 +397 trace_line r34 L31 +398 r35 = add_f32 r32 r17 +399 r32 = select r34 r35 r32 +400 trace_var r34 $19 = r32 (F32) +401 trace_line r34 L29 +402 trace_var r34 $21 = r18 (F32) +403 trace_line r34 L30 +404 r34 = gt_f32 r18 r31 +405 r34 = bit_and r36 r34 +406 r34 = bit_and r34 r33 +407 trace_line r34 L30 +408 r34 = bit_xor r10 r34 +409 r34 = bit_and r33 r34 +410 r33 = bit_and r36 r34 +411 trace_line r33 L31 +412 r35 = add_f32 r32 r18 +413 r32 = select r33 r35 r32 +414 trace_var r33 $19 = r32 (F32) +415 trace_line r33 L29 +416 trace_var r33 $21 = r19 (F32) +417 trace_line r33 L30 +418 r33 = gt_f32 r19 r31 +419 r33 = bit_and r36 r33 +420 r33 = bit_and r33 r34 +421 trace_line r33 L30 +422 r33 = bit_xor r10 r33 +423 r33 = bit_and r34 r33 +424 r34 = bit_and r36 r33 +425 trace_line r34 L31 +426 r35 = add_f32 r32 r19 +427 r32 = select r34 r35 r32 +428 trace_var r34 $19 = r32 (F32) +429 trace_line r34 L29 +430 trace_var r34 $21 = r20 (F32) +431 trace_line r34 L30 +432 r31 = gt_f32 r20 r31 +433 r31 = bit_and r36 r31 +434 r31 = bit_and r31 r33 +435 trace_line r31 L30 +436 r31 = bit_xor r10 r31 +437 r31 = bit_and r33 r31 +438 r31 = bit_and r36 r31 +439 trace_line r31 L31 +440 r33 = add_f32 r32 r20 +441 r32 = select r31 r33 r32 +442 trace_var r31 $19 = r32 (F32) +443 trace_line r31 L29 +444 trace_line r36 L33 +445 r32 = bit_and r32 r36 +446 trace_call r36 L26 (exit) +447 r32 = eq_f32 r32 r22 +448 r32 = bit_and r36 r32 +449 trace_call r32 L37 (enter) +450 trace_line r32 L38 +451 trace_line r32 L39 +452 trace_var r32 $23 = r23 (F32) +453 trace_line r32 L40 +454 r36 = bit_and r23 r32 +455 trace_var r32 $22 = r36 (F32) +456 trace_line r32 L39 +457 trace_var r32 $23 = r24 (F32) +458 trace_line r32 L40 +459 r31 = add_f32 r36 r24 +460 r36 = select r32 r31 r36 +461 trace_var r32 $22 = r36 (F32) +462 trace_line r32 L39 +463 trace_var r32 $23 = r25 (F32) +464 trace_line r32 L40 +465 r31 = add_f32 r36 r25 +466 r36 = select r32 r31 r36 +467 trace_var r32 $22 = r36 (F32) +468 trace_line r32 L39 +469 trace_var r32 $23 = r26 (F32) +470 trace_line r32 L40 +471 r31 = add_f32 r36 r26 +472 r36 = select r32 r31 r36 +473 trace_var r32 $22 = r36 (F32) +474 trace_line r32 L39 +475 trace_var r32 $23 = r27 (F32) +476 trace_line r32 L40 +477 r31 = add_f32 r36 r27 +478 r36 = select r32 r31 r36 +479 trace_var r32 $22 = r36 (F32) +480 trace_line r32 L39 +481 trace_line r32 L42 +482 r36 = sub_f32 r36 r28 +483 r36 = bit_and r36 r32 +484 trace_call r32 L37 (exit) +485 r36 = bit_and r36 r29 +486 r36 = gt_f32 r30 r36 +487 r36 = bit_and r32 r36 +488 trace_call r36 L45 (enter) +489 trace_line r36 L47 +490 trace_line r36 L48 +491 trace_line r36 L50 +492 trace_var r36 $24 = r20 (F32) +493 trace_var r36 $25 = r20 (F32) +494 trace_var r36 $26 = r20 (F32) +495 trace_var r36 $27 = r20 (F32) +496 trace_line r36 L51 +497 trace_var r36 $28 = r13 (F32) +498 trace_line r36 L52 +499 r32 = select r36 r13 r20 +500 trace_var r36 $27 = r32 (F32) +501 trace_line r36 L51 +502 trace_var r36 $28 = r14 (F32) +503 trace_line r36 L52 +504 r31 = select r36 r32 r20 +505 trace_var r36 $26 = r31 (F32) +506 r32 = select r36 r14 r32 +507 trace_var r36 $27 = r32 (F32) +508 trace_line r36 L51 +509 trace_var r36 $28 = r15 (F32) +510 trace_line r36 L52 +511 r33 = select r36 r31 r20 +512 trace_var r36 $25 = r33 (F32) +513 r31 = select r36 r32 r31 +514 trace_var r36 $26 = r31 (F32) +515 r32 = select r36 r15 r32 +516 trace_var r36 $27 = r32 (F32) +517 trace_line r36 L51 +518 trace_line r36 L54 +519 r33 = eq_f32 r33 r13 +520 r31 = eq_f32 r31 r14 +521 r32 = eq_f32 r32 r15 +522 r31 = bit_and r33 r31 +523 r32 = bit_and r31 r32 +524 r32 = bit_and r32 r36 +525 trace_call r36 L45 (exit) +526 r32 = bit_and r36 r32 +527 trace_call r32 L57 (enter) +528 trace_line r32 L59 +529 trace_line r32 L60 +530 trace_line r32 L62 +531 trace_var r32 $29 = r20 (F32) +532 trace_var r32 $30 = r20 (F32) +533 trace_var r32 $31 = r20 (F32) +534 trace_var r32 $32 = r20 (F32) +535 trace_line r32 L63 +536 trace_var r32 $33 = r13 (F32) +537 trace_line r32 L64 +538 r36 = select r32 r13 r20 +539 trace_var r32 $32 = r36 (F32) +540 trace_line r32 L63 +541 trace_var r32 $33 = r14 (F32) +542 trace_line r32 L64 +543 r31 = select r32 r36 r20 +544 trace_var r32 $31 = r31 (F32) +545 r36 = select r32 r14 r36 +546 trace_var r32 $32 = r36 (F32) +547 trace_line r32 L63 +548 trace_var r32 $33 = r15 (F32) +549 trace_line r32 L64 +550 r33 = select r32 r31 r20 +551 trace_var r32 $30 = r33 (F32) +552 r31 = select r32 r36 r31 +553 trace_var r32 $31 = r31 (F32) +554 r36 = select r32 r15 r36 +555 trace_var r32 $32 = r36 (F32) +556 trace_line r32 L63 +557 trace_line r32 L66 +558 r33 = eq_f32 r33 r13 +559 r31 = eq_f32 r31 r14 +560 r36 = eq_f32 r36 r15 +561 r31 = bit_and r33 r31 +562 r36 = bit_and r31 r36 +563 r36 = bit_and r36 r32 +564 trace_call r32 L57 (exit) +565 r36 = bit_and r32 r36 +566 trace_call r36 L69 (enter) +567 trace_line r36 L71 +568 trace_line r36 L72 +569 trace_line r36 L74 +570 trace_var r36 $34 = r20 (F32) +571 trace_var r36 $35 = r20 (F32) +572 trace_var r36 $36 = r20 (F32) +573 trace_var r36 $37 = r20 (F32) +574 trace_line r36 L75 +575 trace_var r36 $38 = r15 (F32) +576 trace_line r36 L76 +577 r32 = select r36 r15 r20 +578 trace_var r36 $37 = r32 (F32) +579 trace_line r36 L75 +580 trace_var r36 $38 = r14 (F32) +581 trace_line r36 L76 +582 r31 = select r36 r32 r20 +583 trace_var r36 $36 = r31 (F32) +584 r32 = select r36 r14 r32 +585 trace_var r36 $37 = r32 (F32) +586 trace_line r36 L75 +587 trace_var r36 $38 = r13 (F32) +588 trace_line r36 L76 +589 r33 = select r36 r31 r20 +590 trace_var r36 $35 = r33 (F32) +591 r31 = select r36 r32 r31 +592 trace_var r36 $36 = r31 (F32) +593 r32 = select r36 r13 r32 +594 trace_var r36 $37 = r32 (F32) +595 trace_line r36 L75 +596 trace_line r36 L78 +597 r33 = eq_f32 r33 r15 +598 r31 = eq_f32 r31 r14 +599 r32 = eq_f32 r32 r13 +600 r31 = bit_and r33 r31 +601 r32 = bit_and r31 r32 +602 r32 = bit_and r32 r36 +603 trace_call r36 L69 (exit) +604 r32 = bit_and r36 r32 +605 trace_call r32 L81 (enter) +606 trace_line r32 L83 +607 trace_line r32 L84 +608 trace_line r32 L86 +609 trace_var r32 $39 = r20 (F32) +610 trace_var r32 $40 = r20 (F32) +611 trace_var r32 $41 = r20 (F32) +612 trace_var r32 $42 = r20 (F32) +613 trace_line r32 L87 +614 trace_var r32 $43 = r15 (F32) +615 trace_line r32 L88 +616 r36 = select r32 r15 r20 +617 trace_var r32 $42 = r36 (F32) +618 trace_line r32 L87 +619 trace_var r32 $43 = r14 (F32) +620 trace_line r32 L88 +621 r31 = select r32 r36 r20 +622 trace_var r32 $41 = r31 (F32) +623 r36 = select r32 r14 r36 +624 trace_var r32 $42 = r36 (F32) +625 trace_line r32 L87 +626 trace_var r32 $43 = r13 (F32) +627 trace_line r32 L88 +628 r33 = select r32 r31 r20 +629 trace_var r32 $40 = r33 (F32) +630 r31 = select r32 r36 r31 +631 trace_var r32 $41 = r31 (F32) +632 r36 = select r32 r13 r36 +633 trace_var r32 $42 = r36 (F32) +634 trace_line r32 L87 +635 trace_line r32 L90 +636 r33 = eq_f32 r33 r15 +637 r31 = eq_f32 r31 r14 +638 r36 = eq_f32 r36 r13 +639 r31 = bit_and r33 r31 +640 r36 = bit_and r31 r36 +641 r36 = bit_and r36 r32 +642 trace_call r32 L81 (exit) +643 r36 = bit_and r32 r36 +644 trace_call r36 L104 (enter) +645 trace_line r36 L106 +646 trace_line r36 L108 +647 trace_var r36 $44 = r20 (F32) +648 trace_var r36 $45 = r20 (F32) +649 trace_var r36 $46 = r20 (F32) +650 trace_var r36 $47 = r20 (F32) +651 trace_line r36 L109 +652 trace_var r36 $48 = r13 (F32) +653 trace_line r36 L110 +654 r32 = select r36 r13 r20 +655 trace_var r36 $47 = r32 (F32) +656 trace_line r36 L109 +657 trace_line r36 L112 +658 r32 = eq_f32 r32 r13 +659 r32 = bit_and r32 r36 +660 trace_call r36 L104 (exit) +661 r32 = bit_and r36 r32 +662 trace_call r32 L93 (enter) +663 trace_line r32 L95 +664 trace_line r32 L97 +665 trace_var r32 $49 = r20 (F32) +666 trace_var r32 $50 = r20 (F32) +667 trace_var r32 $51 = r20 (F32) +668 trace_var r32 $52 = r20 (F32) +669 trace_line r32 L98 +670 trace_var r32 $53 = r13 (F32) +671 trace_line r32 L99 +672 r36 = select r32 r13 r20 +673 trace_var r32 $52 = r36 (F32) +674 trace_line r32 L98 +675 trace_var r32 $53 = r14 (F32) +676 trace_line r32 L99 +677 r31 = select r32 r36 r20 +678 trace_var r32 $51 = r31 (F32) +679 r36 = select r32 r14 r36 +680 trace_var r32 $52 = r36 (F32) +681 trace_line r32 L98 +682 trace_var r32 $53 = r15 (F32) +683 trace_line r32 L99 +684 r33 = select r32 r31 r20 +685 trace_var r32 $50 = r33 (F32) +686 r31 = select r32 r36 r31 +687 trace_var r32 $51 = r31 (F32) +688 r36 = select r32 r15 r36 +689 trace_var r32 $52 = r36 (F32) +690 trace_line r32 L98 +691 trace_line r32 L101 +692 r33 = eq_f32 r33 r13 +693 r31 = eq_f32 r31 r14 +694 r36 = eq_f32 r36 r15 +695 r31 = bit_and r33 r31 +696 r36 = bit_and r31 r36 +697 r36 = bit_and r36 r32 +698 trace_call r32 L93 (exit) +699 r36 = bit_and r32 r36 +700 r32 = select r36 r5 r1 +701 r31 = select r36 r6 r2 +702 r33 = select r36 r7 r3 +703 r36 = select r36 r8 r4 +704 trace_call r10 L115 (exit) +705 store32 ptr1 r32 +706 store32 ptr2 r31 +707 store32 ptr3 r33 +708 store32 ptr4 r36 diff --git a/tests/sksl/runtime/LoopFloat.stage b/tests/sksl/runtime/LoopFloat.stage index 6edb0e904c..41ef1cf76e 100644 --- a/tests/sksl/runtime/LoopFloat.stage +++ b/tests/sksl/runtime/LoopFloat.stage @@ -1,10 +1,10 @@ uniform half4 colorRed; uniform half4 colorGreen; const float kZero_0 = 0.0; -float return_loop_0(); +float return_loop_0(float five); const float kTen_0 = 10.0; -float continue_loop_0(); -float break_loop_0(); +float continue_loop_0(float five); +float break_loop_0(float five); float float_loop_0(); bool loop_operator_le_0(); bool loop_operator_lt_0(); @@ -12,24 +12,23 @@ bool loop_operator_ge_0(); bool loop_operator_gt_0(); bool loop_operator_ne_0(); bool loop_operator_eq_0(); -float return_loop_0() +float return_loop_0(float five) { for (float i = kZero_0;i < 10.0; ++i) { - bool shouldExit = i == float(colorGreen.y * 5.0); - if (shouldExit) + if (i == five) { return i; } } return 0.0; } -float continue_loop_0() +float continue_loop_0(float five) { float sum = 0.0; for (float i = 0.0;i < kTen_0; ++i) { - if (i < 5.0) + if (i < five) { continue; } @@ -37,13 +36,13 @@ float continue_loop_0() } return sum; } -float break_loop_0() +float break_loop_0(float five) { float sum = 0.0; const float kOne = 1.0; for (float i = 0.0;i < 10.0; i += kOne) { - if (i > 5.0) + if (i > five) { break; } @@ -124,7 +123,8 @@ bool loop_operator_eq_0() } return result == float4(9.0, 9.0, 9.0, 1.0); } -half4 main(float2 xy) +half4 main(float2 pos) { - return half4(((((((((return_loop_0() == 5.0 && continue_loop_0() == 35.0) && break_loop_0() == 15.0) && abs(float_loop_0()) < 0.02500000037252903) && loop_operator_le_0()) && loop_operator_lt_0()) && loop_operator_ge_0()) && loop_operator_gt_0()) && loop_operator_eq_0()) && loop_operator_ne_0() ? colorGreen : colorRed); + float five = clamp(_coords.x, float(colorGreen.y), float(colorGreen.w)) * 5.0; + return half4(((((((((return_loop_0(five) == 5.0 && continue_loop_0(five) == 35.0) && break_loop_0(five) == 15.0) && abs(float_loop_0()) < 0.02500000037252903) && loop_operator_le_0()) && loop_operator_lt_0()) && loop_operator_ge_0()) && loop_operator_gt_0()) && loop_operator_eq_0()) && loop_operator_ne_0() ? colorGreen : colorRed); } diff --git a/tests/sksl/runtime/LoopInt.skvm b/tests/sksl/runtime/LoopInt.skvm index 19b169f1e7..f1be9b4622 100644 --- a/tests/sksl/runtime/LoopInt.skvm +++ b/tests/sksl/runtime/LoopInt.skvm @@ -1,4 +1,4 @@ -116 registers, 556 instructions: +30 registers, 663 instructions: 0 r0 = uniform32 ptr0 0 1 r1 = uniform32 ptr0 4 2 r2 = uniform32 ptr0 8 @@ -11,548 +11,655 @@ 9 r9 = splat 0 (0) 10 r10 = splat FFFFFFFF (nan) 11 r11 = splat A (1.4012985e-44) -12 r12 = splat 40A00000 (5) -13 r12 = mul_f32 r6 r12 -14 r12 = trunc r12 -15 r9 = eq_i32 r9 r12 -16 r13 = splat 1 (1.4012985e-45) -17 r14 = bit_xor r10 r9 -18 r15 = eq_i32 r13 r12 -19 r15 = bit_and r15 r14 -20 r16 = bit_and r13 r15 -21 r17 = bit_or r9 r15 -22 r18 = bit_xor r10 r17 -23 r19 = splat 2 (2.8025969e-45) -24 r20 = eq_i32 r19 r12 -25 r20 = bit_and r20 r18 -26 r16 = select r20 r19 r16 -27 r17 = bit_or r17 r20 -28 r21 = bit_xor r10 r17 -29 r22 = splat 3 (4.2038954e-45) -30 r23 = eq_i32 r22 r12 -31 r23 = bit_and r23 r21 -32 r16 = select r23 r22 r16 -33 r17 = bit_or r17 r23 -34 r24 = bit_xor r10 r17 -35 r25 = splat 4 (5.6051939e-45) -36 r26 = eq_i32 r25 r12 -37 r26 = bit_and r26 r24 -38 r16 = select r26 r25 r16 -39 r17 = bit_or r17 r26 -40 r27 = bit_xor r10 r17 -41 r28 = splat 5 (7.0064923e-45) -42 r29 = eq_i32 r28 r12 -43 r29 = bit_and r29 r27 -44 r16 = select r29 r28 r16 -45 r17 = bit_or r17 r29 -46 r30 = bit_xor r10 r17 -47 r31 = splat 6 (8.4077908e-45) -48 r32 = eq_i32 r31 r12 -49 r32 = bit_and r32 r30 -50 r16 = select r32 r31 r16 -51 r17 = bit_or r17 r32 -52 r33 = bit_xor r10 r17 -53 r34 = splat 7 (9.8090893e-45) -54 r35 = eq_i32 r34 r12 -55 r35 = bit_and r35 r33 -56 r16 = select r35 r34 r16 -57 r17 = bit_or r17 r35 -58 r36 = bit_xor r10 r17 -59 r37 = splat 8 (1.1210388e-44) -60 r38 = eq_i32 r37 r12 -61 r38 = bit_and r38 r36 -62 r16 = select r38 r37 r16 -63 r17 = bit_or r17 r38 -64 r39 = bit_xor r10 r17 -65 r40 = splat 9 (1.2611686e-44) -66 r12 = eq_i32 r40 r12 -67 r12 = bit_and r12 r39 -68 r16 = select r12 r40 r16 -69 r17 = bit_or r17 r12 -70 r17 = bit_xor r10 r17 -71 r16 = bit_clear r16 r17 -72 r16 = eq_i32 r16 r28 -73 r41 = bit_xor r10 r16 -74 r42 = bit_and r16 r41 -75 r41 = bit_or r41 r16 -76 r43 = bit_and r16 r41 -77 r44 = bit_xor r10 r43 -78 r44 = bit_and r41 r44 -79 r41 = bit_and r16 r44 -80 r45 = bit_and r13 r41 -81 r44 = bit_or r44 r43 -82 r46 = bit_and r16 r44 -83 r47 = bit_xor r10 r46 -84 r47 = bit_and r44 r47 -85 r44 = bit_and r16 r47 -86 r48 = add_i32 r45 r19 -87 r48 = select r44 r48 r45 -88 r47 = bit_or r47 r46 -89 r49 = bit_and r16 r47 -90 r50 = bit_xor r10 r49 -91 r50 = bit_and r47 r50 -92 r47 = bit_and r16 r50 -93 r51 = add_i32 r48 r22 -94 r51 = select r47 r51 r48 -95 r50 = bit_or r50 r49 -96 r52 = bit_and r16 r50 -97 r53 = bit_xor r10 r52 -98 r53 = bit_and r50 r53 -99 r50 = bit_and r16 r53 -100 r54 = add_i32 r51 r25 -101 r54 = select r50 r54 r51 -102 r53 = bit_or r53 r52 -103 r53 = bit_and r16 r53 -104 r55 = add_i32 r54 r28 -105 r55 = select r53 r55 r54 -106 r56 = add_i32 r55 r31 -107 r56 = select r53 r56 r55 -108 r57 = add_i32 r56 r34 -109 r57 = select r53 r57 r56 -110 r58 = add_i32 r57 r37 -111 r58 = select r53 r58 r57 -112 r59 = add_i32 r58 r40 -113 r59 = select r53 r59 r58 -114 r60 = bit_and r59 r16 -115 r61 = splat 23 (4.9045446e-44) -116 r61 = eq_i32 r60 r61 -117 r61 = bit_and r16 r61 -118 r60 = bit_and r13 r61 -119 r62 = add_i32 r60 r19 -120 r62 = select r61 r62 r60 -121 r63 = add_i32 r62 r22 -122 r63 = select r61 r63 r62 -123 r64 = add_i32 r63 r25 -124 r64 = select r61 r64 r63 -125 r65 = add_i32 r64 r28 -126 r65 = select r61 r65 r64 -127 r66 = bit_xor r10 r61 -128 r67 = bit_and r61 r66 -129 r68 = add_i32 r65 r31 -130 r68 = select r67 r68 r65 -131 r69 = bit_xor r10 r67 -132 r69 = bit_and r66 r69 -133 r66 = bit_and r61 r69 -134 r70 = add_i32 r68 r34 -135 r70 = select r66 r70 r68 -136 r71 = bit_xor r10 r66 -137 r71 = bit_and r69 r71 -138 r69 = bit_and r61 r71 -139 r72 = add_i32 r70 r37 -140 r72 = select r69 r72 r70 -141 r73 = bit_xor r10 r69 -142 r73 = bit_and r71 r73 -143 r73 = bit_and r61 r73 -144 r71 = add_i32 r72 r40 -145 r71 = select r73 r71 r72 -146 r74 = bit_and r71 r61 -147 r75 = splat F (2.1019477e-44) -148 r75 = eq_i32 r74 r75 -149 r75 = bit_and r61 r75 -150 r74 = select r75 r13 r40 -151 r76 = select r75 r74 r40 -152 r77 = select r75 r19 r74 -153 r78 = select r75 r76 r40 -154 r79 = select r75 r77 r76 -155 r80 = select r75 r22 r77 -156 r81 = eq_i32 r78 r13 -157 r82 = eq_i32 r79 r19 -158 r83 = eq_i32 r80 r22 -159 r82 = bit_and r81 r82 -160 r83 = bit_and r82 r83 -161 r83 = bit_and r83 r75 -162 r83 = bit_and r75 r83 -163 r82 = select r83 r13 r40 -164 r81 = select r83 r82 r40 -165 r84 = select r83 r19 r82 -166 r85 = select r83 r81 r40 -167 r86 = select r83 r84 r81 -168 r87 = select r83 r22 r84 -169 r88 = eq_i32 r85 r13 -170 r89 = eq_i32 r86 r19 -171 r90 = eq_i32 r87 r22 -172 r89 = bit_and r88 r89 -173 r90 = bit_and r89 r90 -174 r90 = bit_and r90 r83 -175 r90 = bit_and r83 r90 -176 r89 = select r90 r22 r40 -177 r88 = select r90 r89 r40 -178 r91 = select r90 r19 r89 -179 r92 = select r90 r88 r40 -180 r93 = select r90 r91 r88 -181 r94 = select r90 r13 r91 -182 r95 = eq_i32 r92 r22 -183 r96 = eq_i32 r93 r19 -184 r97 = eq_i32 r94 r13 -185 r96 = bit_and r95 r96 -186 r97 = bit_and r96 r97 -187 r97 = bit_and r97 r90 -188 r97 = bit_and r90 r97 -189 r96 = select r97 r22 r40 -190 r95 = select r97 r96 r40 -191 r98 = select r97 r19 r96 -192 r99 = select r97 r95 r40 -193 r100 = select r97 r98 r95 -194 r101 = select r97 r13 r98 -195 r102 = eq_i32 r99 r22 -196 r103 = eq_i32 r100 r19 -197 r104 = eq_i32 r101 r13 -198 r103 = bit_and r102 r103 -199 r104 = bit_and r103 r104 -200 r104 = bit_and r104 r97 -201 r104 = bit_and r97 r104 -202 r103 = select r104 r13 r40 -203 r102 = eq_i32 r103 r13 -204 r102 = bit_and r102 r104 -205 r102 = bit_and r104 r102 -206 r105 = select r102 r13 r40 -207 r106 = select r102 r105 r40 -208 r107 = select r102 r19 r105 -209 r108 = select r102 r106 r40 -210 r109 = select r102 r107 r106 -211 r110 = select r102 r22 r107 -212 r111 = eq_i32 r108 r13 -213 r112 = eq_i32 r109 r19 -214 r113 = eq_i32 r110 r22 -215 r112 = bit_and r111 r112 -216 r113 = bit_and r112 r113 -217 r113 = bit_and r113 r102 -218 r113 = bit_and r102 r113 -219 r112 = select r113 r5 r1 -220 r111 = select r113 r6 r2 -221 r114 = select r113 r7 r3 -222 r113 = select r113 r8 r4 +12 r12 = splat 5 (7.0064923e-45) +13 r13 = splat 1 (1.4012985e-45) +14 r14 = splat 2 (2.8025969e-45) +15 r15 = splat 3 (4.2038954e-45) +16 r16 = splat 4 (5.6051939e-45) +17 r17 = splat 6 (8.4077908e-45) +18 r18 = splat 7 (9.8090893e-45) +19 r19 = splat 8 (1.1210388e-44) +20 r20 = splat 9 (1.2611686e-44) +21 r21 = splat 23 (4.9045446e-44) +22 r22 = splat F (2.1019477e-44) loop: -223 r115 = index -224 trace_var r10 $0 = r1 (F32) -225 trace_var r10 $1 = r2 (F32) -226 trace_var r10 $2 = r3 (F32) -227 trace_var r10 $3 = r4 (F32) -228 trace_var r10 $4 = r5 (F32) -229 trace_var r10 $5 = r6 (F32) -230 trace_var r10 $6 = r7 (F32) -231 trace_var r10 $7 = r8 (F32) -232 trace_var r10 $9 = r11 (I32) -233 trace_call r10 L107 (enter) -234 trace_var r10 $10 = r115 (F32) -235 trace_var r10 $11 = r0 (F32) -236 trace_line r10 L108 -237 trace_call r10 L7 (enter) -238 trace_line r10 L8 -239 trace_line r10 L9 -240 trace_var r10 $13 = r13 (bool) -241 trace_line r10 L10 -242 trace_line r9 L10 -243 trace_line r14 L8 -244 trace_var r14 $12 = r13 (I32) -245 trace_line r14 L9 -246 trace_var r14 $13 = r13 (bool) -247 trace_line r14 L10 -248 trace_line r15 L10 -249 trace_line r18 L8 -250 trace_var r18 $12 = r19 (I32) -251 trace_line r18 L9 -252 trace_var r18 $13 = r13 (bool) -253 trace_line r18 L10 -254 trace_line r20 L10 -255 trace_line r21 L8 -256 trace_var r21 $12 = r22 (I32) -257 trace_line r21 L9 -258 trace_var r21 $13 = r13 (bool) -259 trace_line r21 L10 -260 trace_line r23 L10 -261 trace_line r24 L8 -262 trace_var r24 $12 = r25 (I32) -263 trace_line r24 L9 -264 trace_var r24 $13 = r13 (bool) -265 trace_line r24 L10 -266 trace_line r26 L10 -267 trace_line r27 L8 -268 trace_var r27 $12 = r28 (I32) -269 trace_line r27 L9 -270 trace_var r27 $13 = r13 (bool) -271 trace_line r27 L10 -272 trace_line r29 L10 -273 trace_line r30 L8 -274 trace_var r30 $12 = r31 (I32) -275 trace_line r30 L9 -276 trace_var r30 $13 = r13 (bool) -277 trace_line r30 L10 -278 trace_line r32 L10 -279 trace_line r33 L8 -280 trace_var r33 $12 = r34 (I32) -281 trace_line r33 L9 -282 trace_var r33 $13 = r13 (bool) -283 trace_line r33 L10 -284 trace_line r35 L10 -285 trace_line r36 L8 -286 trace_var r36 $12 = r37 (I32) -287 trace_line r36 L9 -288 trace_var r36 $13 = r13 (bool) -289 trace_line r36 L10 -290 trace_line r38 L10 -291 trace_line r39 L8 -292 trace_var r39 $12 = r40 (I32) -293 trace_line r39 L9 -294 trace_var r39 $13 = r13 (bool) -295 trace_line r39 L10 -296 trace_line r12 L10 -297 trace_line r17 L8 -298 trace_line r17 L12 -299 trace_call r10 L7 (exit) -300 trace_call r16 L17 (enter) -301 trace_line r16 L18 -302 trace_line r16 L19 -303 trace_line r16 L20 -304 trace_line r42 L21 -305 trace_line r43 L19 -306 trace_var r43 $15 = r13 (I32) -307 trace_line r43 L20 -308 trace_line r41 L21 -309 trace_var r41 $14 = r45 (I32) -310 trace_line r46 L19 -311 trace_var r46 $15 = r19 (I32) -312 trace_line r46 L20 -313 trace_line r44 L21 -314 trace_var r44 $14 = r48 (I32) -315 trace_line r49 L19 -316 trace_var r49 $15 = r22 (I32) -317 trace_line r49 L20 -318 trace_line r47 L21 -319 trace_var r47 $14 = r51 (I32) -320 trace_line r52 L19 -321 trace_var r52 $15 = r25 (I32) -322 trace_line r52 L20 -323 trace_line r50 L21 -324 trace_var r50 $14 = r54 (I32) -325 trace_line r53 L19 -326 trace_var r53 $15 = r28 (I32) -327 trace_line r53 L20 -328 trace_line r53 L21 -329 trace_var r53 $14 = r55 (I32) -330 trace_line r53 L19 -331 trace_var r53 $15 = r31 (I32) -332 trace_line r53 L20 -333 trace_line r53 L21 -334 trace_var r53 $14 = r56 (I32) -335 trace_line r53 L19 -336 trace_var r53 $15 = r34 (I32) -337 trace_line r53 L20 -338 trace_line r53 L21 -339 trace_var r53 $14 = r57 (I32) -340 trace_line r53 L19 -341 trace_var r53 $15 = r37 (I32) -342 trace_line r53 L20 -343 trace_line r53 L21 -344 trace_var r53 $14 = r58 (I32) -345 trace_line r53 L19 -346 trace_var r53 $15 = r40 (I32) -347 trace_line r53 L20 -348 trace_line r53 L21 -349 trace_var r53 $14 = r59 (I32) -350 trace_line r53 L19 -351 trace_line r16 L23 -352 trace_call r16 L17 (exit) -353 trace_call r61 L27 (enter) -354 trace_line r61 L28 -355 trace_line r61 L29 -356 trace_var r61 $17 = r13 (I32) -357 trace_line r61 L30 -358 trace_line r61 L31 -359 trace_line r61 L32 -360 trace_line r61 L30 -361 trace_var r61 $18 = r13 (I32) -362 trace_line r61 L31 -363 trace_line r61 L32 -364 trace_var r61 $16 = r60 (I32) -365 trace_line r61 L30 -366 trace_var r61 $18 = r19 (I32) -367 trace_line r61 L31 -368 trace_line r61 L32 -369 trace_var r61 $16 = r62 (I32) -370 trace_line r61 L30 -371 trace_var r61 $18 = r22 (I32) -372 trace_line r61 L31 -373 trace_line r61 L32 -374 trace_var r61 $16 = r63 (I32) -375 trace_line r61 L30 -376 trace_var r61 $18 = r25 (I32) -377 trace_line r61 L31 -378 trace_line r61 L32 -379 trace_var r61 $16 = r64 (I32) -380 trace_line r61 L30 -381 trace_var r61 $18 = r28 (I32) -382 trace_line r61 L31 -383 trace_line r61 L32 -384 trace_var r61 $16 = r65 (I32) -385 trace_line r61 L30 -386 trace_var r61 $18 = r31 (I32) -387 trace_line r61 L31 -388 trace_line r67 L32 -389 trace_var r67 $16 = r68 (I32) -390 trace_line r67 L30 -391 trace_var r67 $18 = r34 (I32) -392 trace_line r67 L31 -393 trace_line r66 L32 -394 trace_var r66 $16 = r70 (I32) -395 trace_line r66 L30 -396 trace_var r66 $18 = r37 (I32) -397 trace_line r66 L31 -398 trace_line r69 L32 -399 trace_var r69 $16 = r72 (I32) -400 trace_line r69 L30 -401 trace_var r69 $18 = r40 (I32) -402 trace_line r69 L31 -403 trace_line r73 L32 -404 trace_var r73 $16 = r71 (I32) -405 trace_line r73 L30 -406 trace_line r61 L34 -407 trace_call r61 L27 (exit) -408 trace_call r75 L37 (enter) -409 trace_line r75 L39 -410 trace_line r75 L40 -411 trace_line r75 L42 -412 trace_var r75 $19 = r40 (I32) -413 trace_var r75 $20 = r40 (I32) -414 trace_var r75 $21 = r40 (I32) -415 trace_var r75 $22 = r40 (I32) -416 trace_line r75 L43 -417 trace_var r75 $23 = r13 (I32) -418 trace_line r75 L44 -419 trace_var r75 $22 = r74 (I32) -420 trace_line r75 L43 -421 trace_var r75 $23 = r19 (I32) -422 trace_line r75 L44 -423 trace_var r75 $21 = r76 (I32) -424 trace_var r75 $22 = r77 (I32) -425 trace_line r75 L43 -426 trace_var r75 $23 = r22 (I32) -427 trace_line r75 L44 -428 trace_var r75 $20 = r78 (I32) -429 trace_var r75 $21 = r79 (I32) -430 trace_var r75 $22 = r80 (I32) -431 trace_line r75 L43 -432 trace_line r75 L46 -433 trace_call r75 L37 (exit) -434 trace_call r83 L49 (enter) -435 trace_line r83 L51 -436 trace_line r83 L52 -437 trace_line r83 L54 -438 trace_var r83 $24 = r40 (I32) -439 trace_var r83 $25 = r40 (I32) -440 trace_var r83 $26 = r40 (I32) -441 trace_var r83 $27 = r40 (I32) -442 trace_line r83 L55 -443 trace_var r83 $28 = r13 (I32) -444 trace_line r83 L56 -445 trace_var r83 $27 = r82 (I32) -446 trace_line r83 L55 -447 trace_var r83 $28 = r19 (I32) -448 trace_line r83 L56 -449 trace_var r83 $26 = r81 (I32) -450 trace_var r83 $27 = r84 (I32) -451 trace_line r83 L55 -452 trace_var r83 $28 = r22 (I32) -453 trace_line r83 L56 -454 trace_var r83 $25 = r85 (I32) -455 trace_var r83 $26 = r86 (I32) -456 trace_var r83 $27 = r87 (I32) -457 trace_line r83 L55 -458 trace_line r83 L58 -459 trace_call r83 L49 (exit) -460 trace_call r90 L61 (enter) -461 trace_line r90 L63 -462 trace_line r90 L64 -463 trace_line r90 L66 -464 trace_var r90 $29 = r40 (I32) -465 trace_var r90 $30 = r40 (I32) -466 trace_var r90 $31 = r40 (I32) -467 trace_var r90 $32 = r40 (I32) -468 trace_line r90 L67 -469 trace_var r90 $33 = r22 (I32) -470 trace_line r90 L68 -471 trace_var r90 $32 = r89 (I32) -472 trace_line r90 L67 -473 trace_var r90 $33 = r19 (I32) -474 trace_line r90 L68 -475 trace_var r90 $31 = r88 (I32) -476 trace_var r90 $32 = r91 (I32) -477 trace_line r90 L67 -478 trace_var r90 $33 = r13 (I32) -479 trace_line r90 L68 -480 trace_var r90 $30 = r92 (I32) -481 trace_var r90 $31 = r93 (I32) -482 trace_var r90 $32 = r94 (I32) -483 trace_line r90 L67 -484 trace_line r90 L70 -485 trace_call r90 L61 (exit) -486 trace_call r97 L73 (enter) -487 trace_line r97 L75 -488 trace_line r97 L76 -489 trace_line r97 L78 -490 trace_var r97 $34 = r40 (I32) -491 trace_var r97 $35 = r40 (I32) -492 trace_var r97 $36 = r40 (I32) -493 trace_var r97 $37 = r40 (I32) -494 trace_line r97 L79 -495 trace_var r97 $38 = r22 (I32) -496 trace_line r97 L80 -497 trace_var r97 $37 = r96 (I32) -498 trace_line r97 L79 -499 trace_var r97 $38 = r19 (I32) -500 trace_line r97 L80 -501 trace_var r97 $36 = r95 (I32) -502 trace_var r97 $37 = r98 (I32) -503 trace_line r97 L79 -504 trace_var r97 $38 = r13 (I32) -505 trace_line r97 L80 -506 trace_var r97 $35 = r99 (I32) -507 trace_var r97 $36 = r100 (I32) -508 trace_var r97 $37 = r101 (I32) -509 trace_line r97 L79 -510 trace_line r97 L82 -511 trace_call r97 L73 (exit) -512 trace_call r104 L96 (enter) -513 trace_line r104 L98 -514 trace_line r104 L100 -515 trace_var r104 $39 = r40 (I32) -516 trace_var r104 $40 = r40 (I32) -517 trace_var r104 $41 = r40 (I32) -518 trace_var r104 $42 = r40 (I32) -519 trace_line r104 L101 -520 trace_var r104 $43 = r13 (I32) -521 trace_line r104 L102 -522 trace_var r104 $42 = r103 (I32) -523 trace_line r104 L101 -524 trace_line r104 L104 -525 trace_call r104 L96 (exit) -526 trace_call r102 L85 (enter) -527 trace_line r102 L87 -528 trace_line r102 L89 -529 trace_var r102 $44 = r40 (I32) -530 trace_var r102 $45 = r40 (I32) -531 trace_var r102 $46 = r40 (I32) -532 trace_var r102 $47 = r40 (I32) -533 trace_line r102 L90 -534 trace_var r102 $48 = r13 (I32) -535 trace_line r102 L91 -536 trace_var r102 $47 = r105 (I32) -537 trace_line r102 L90 -538 trace_var r102 $48 = r19 (I32) -539 trace_line r102 L91 -540 trace_var r102 $46 = r106 (I32) -541 trace_var r102 $47 = r107 (I32) -542 trace_line r102 L90 -543 trace_var r102 $48 = r22 (I32) -544 trace_line r102 L91 -545 trace_var r102 $45 = r108 (I32) -546 trace_var r102 $46 = r109 (I32) -547 trace_var r102 $47 = r110 (I32) -548 trace_line r102 L90 -549 trace_line r102 L93 -550 trace_call r102 L85 (exit) -551 trace_call r10 L107 (exit) -552 store32 ptr1 r112 -553 store32 ptr2 r111 -554 store32 ptr3 r114 -555 store32 ptr4 r113 +23 r23 = index +24 trace_var r10 $0 = r1 (F32) +25 trace_var r10 $1 = r2 (F32) +26 trace_var r10 $2 = r3 (F32) +27 trace_var r10 $3 = r4 (F32) +28 trace_var r10 $4 = r5 (F32) +29 trace_var r10 $5 = r6 (F32) +30 trace_var r10 $6 = r7 (F32) +31 trace_var r10 $7 = r8 (F32) +32 trace_var r10 $9 = r11 (I32) +33 trace_call r10 L106 (enter) +34 trace_var r10 $10 = r23 (F32) +35 trace_var r10 $11 = r0 (F32) +36 trace_line r10 L107 +37 r23 = min_f32 r23 r8 +38 r23 = max_f32 r6 r23 +39 r23 = trunc r23 +40 r23 = mul_i32 r23 r12 +41 trace_var r10 $12 = r23 (I32) +42 trace_line r10 L108 +43 trace_call r10 L7 (enter) +44 trace_var r10 $13 = r23 (I32) +45 trace_line r10 L8 +46 trace_line r10 L9 +47 r24 = eq_i32 r9 r23 +48 trace_line r24 L9 +49 r25 = bit_xor r10 r24 +50 trace_line r25 L8 +51 trace_var r25 $14 = r13 (I32) +52 trace_line r25 L9 +53 r26 = eq_i32 r13 r23 +54 r25 = bit_and r26 r25 +55 trace_line r25 L9 +56 r26 = bit_and r13 r25 +57 r25 = bit_or r24 r25 +58 r24 = bit_xor r10 r25 +59 trace_line r24 L8 +60 trace_var r24 $14 = r14 (I32) +61 trace_line r24 L9 +62 r27 = eq_i32 r14 r23 +63 r24 = bit_and r27 r24 +64 trace_line r24 L9 +65 r26 = select r24 r14 r26 +66 r24 = bit_or r25 r24 +67 r25 = bit_xor r10 r24 +68 trace_line r25 L8 +69 trace_var r25 $14 = r15 (I32) +70 trace_line r25 L9 +71 r27 = eq_i32 r15 r23 +72 r25 = bit_and r27 r25 +73 trace_line r25 L9 +74 r26 = select r25 r15 r26 +75 r25 = bit_or r24 r25 +76 r24 = bit_xor r10 r25 +77 trace_line r24 L8 +78 trace_var r24 $14 = r16 (I32) +79 trace_line r24 L9 +80 r27 = eq_i32 r16 r23 +81 r24 = bit_and r27 r24 +82 trace_line r24 L9 +83 r26 = select r24 r16 r26 +84 r24 = bit_or r25 r24 +85 r25 = bit_xor r10 r24 +86 trace_line r25 L8 +87 trace_var r25 $14 = r12 (I32) +88 trace_line r25 L9 +89 r27 = eq_i32 r12 r23 +90 r25 = bit_and r27 r25 +91 trace_line r25 L9 +92 r26 = select r25 r12 r26 +93 r25 = bit_or r24 r25 +94 r24 = bit_xor r10 r25 +95 trace_line r24 L8 +96 trace_var r24 $14 = r17 (I32) +97 trace_line r24 L9 +98 r27 = eq_i32 r17 r23 +99 r24 = bit_and r27 r24 +100 trace_line r24 L9 +101 r26 = select r24 r17 r26 +102 r24 = bit_or r25 r24 +103 r25 = bit_xor r10 r24 +104 trace_line r25 L8 +105 trace_var r25 $14 = r18 (I32) +106 trace_line r25 L9 +107 r27 = eq_i32 r18 r23 +108 r25 = bit_and r27 r25 +109 trace_line r25 L9 +110 r26 = select r25 r18 r26 +111 r25 = bit_or r24 r25 +112 r24 = bit_xor r10 r25 +113 trace_line r24 L8 +114 trace_var r24 $14 = r19 (I32) +115 trace_line r24 L9 +116 r27 = eq_i32 r19 r23 +117 r24 = bit_and r27 r24 +118 trace_line r24 L9 +119 r26 = select r24 r19 r26 +120 r24 = bit_or r25 r24 +121 r25 = bit_xor r10 r24 +122 trace_line r25 L8 +123 trace_var r25 $14 = r20 (I32) +124 trace_line r25 L9 +125 r27 = eq_i32 r20 r23 +126 r25 = bit_and r27 r25 +127 trace_line r25 L9 +128 r26 = select r25 r20 r26 +129 r25 = bit_or r24 r25 +130 r25 = bit_xor r10 r25 +131 trace_line r25 L8 +132 trace_line r25 L11 +133 r25 = bit_clear r26 r25 +134 trace_call r10 L7 (exit) +135 r25 = eq_i32 r25 r12 +136 trace_call r25 L16 (enter) +137 trace_var r25 $15 = r23 (I32) +138 trace_line r25 L17 +139 trace_line r25 L18 +140 trace_line r25 L19 +141 r26 = gt_i32 r23 r9 +142 r26 = bit_and r25 r26 +143 trace_line r26 L19 +144 r24 = bit_xor r10 r26 +145 r27 = bit_and r25 r24 +146 trace_line r27 L20 +147 r26 = bit_or r24 r26 +148 r24 = bit_and r25 r26 +149 trace_line r24 L18 +150 trace_var r24 $17 = r13 (I32) +151 trace_line r24 L19 +152 r24 = gt_i32 r23 r13 +153 r24 = bit_and r25 r24 +154 r24 = bit_and r24 r26 +155 trace_line r24 L19 +156 r27 = bit_xor r10 r24 +157 r27 = bit_and r26 r27 +158 r26 = bit_and r25 r27 +159 trace_line r26 L20 +160 r28 = bit_and r13 r26 +161 trace_var r26 $16 = r28 (I32) +162 r24 = bit_or r27 r24 +163 r27 = bit_and r25 r24 +164 trace_line r27 L18 +165 trace_var r27 $17 = r14 (I32) +166 trace_line r27 L19 +167 r27 = gt_i32 r23 r14 +168 r27 = bit_and r25 r27 +169 r27 = bit_and r27 r24 +170 trace_line r27 L19 +171 r26 = bit_xor r10 r27 +172 r26 = bit_and r24 r26 +173 r24 = bit_and r25 r26 +174 trace_line r24 L20 +175 r29 = add_i32 r28 r14 +176 r28 = select r24 r29 r28 +177 trace_var r24 $16 = r28 (I32) +178 r27 = bit_or r26 r27 +179 r26 = bit_and r25 r27 +180 trace_line r26 L18 +181 trace_var r26 $17 = r15 (I32) +182 trace_line r26 L19 +183 r26 = gt_i32 r23 r15 +184 r26 = bit_and r25 r26 +185 r26 = bit_and r26 r27 +186 trace_line r26 L19 +187 r24 = bit_xor r10 r26 +188 r24 = bit_and r27 r24 +189 r27 = bit_and r25 r24 +190 trace_line r27 L20 +191 r29 = add_i32 r28 r15 +192 r28 = select r27 r29 r28 +193 trace_var r27 $16 = r28 (I32) +194 r26 = bit_or r24 r26 +195 r24 = bit_and r25 r26 +196 trace_line r24 L18 +197 trace_var r24 $17 = r16 (I32) +198 trace_line r24 L19 +199 r24 = gt_i32 r23 r16 +200 r24 = bit_and r25 r24 +201 r24 = bit_and r24 r26 +202 trace_line r24 L19 +203 r27 = bit_xor r10 r24 +204 r27 = bit_and r26 r27 +205 r26 = bit_and r25 r27 +206 trace_line r26 L20 +207 r29 = add_i32 r28 r16 +208 r28 = select r26 r29 r28 +209 trace_var r26 $16 = r28 (I32) +210 r24 = bit_or r27 r24 +211 r27 = bit_and r25 r24 +212 trace_line r27 L18 +213 trace_var r27 $17 = r12 (I32) +214 trace_line r27 L19 +215 r27 = gt_i32 r23 r12 +216 r27 = bit_and r25 r27 +217 r27 = bit_and r27 r24 +218 trace_line r27 L19 +219 r26 = bit_xor r10 r27 +220 r26 = bit_and r24 r26 +221 r24 = bit_and r25 r26 +222 trace_line r24 L20 +223 r29 = add_i32 r28 r12 +224 r28 = select r24 r29 r28 +225 trace_var r24 $16 = r28 (I32) +226 r27 = bit_or r26 r27 +227 r26 = bit_and r25 r27 +228 trace_line r26 L18 +229 trace_var r26 $17 = r17 (I32) +230 trace_line r26 L19 +231 r26 = gt_i32 r23 r17 +232 r26 = bit_and r25 r26 +233 r26 = bit_and r26 r27 +234 trace_line r26 L19 +235 r24 = bit_xor r10 r26 +236 r24 = bit_and r27 r24 +237 r27 = bit_and r25 r24 +238 trace_line r27 L20 +239 r29 = add_i32 r28 r17 +240 r28 = select r27 r29 r28 +241 trace_var r27 $16 = r28 (I32) +242 r26 = bit_or r24 r26 +243 r24 = bit_and r25 r26 +244 trace_line r24 L18 +245 trace_var r24 $17 = r18 (I32) +246 trace_line r24 L19 +247 r24 = gt_i32 r23 r18 +248 r24 = bit_and r25 r24 +249 r24 = bit_and r24 r26 +250 trace_line r24 L19 +251 r27 = bit_xor r10 r24 +252 r27 = bit_and r26 r27 +253 r26 = bit_and r25 r27 +254 trace_line r26 L20 +255 r29 = add_i32 r28 r18 +256 r28 = select r26 r29 r28 +257 trace_var r26 $16 = r28 (I32) +258 r24 = bit_or r27 r24 +259 r27 = bit_and r25 r24 +260 trace_line r27 L18 +261 trace_var r27 $17 = r19 (I32) +262 trace_line r27 L19 +263 r27 = gt_i32 r23 r19 +264 r27 = bit_and r25 r27 +265 r27 = bit_and r27 r24 +266 trace_line r27 L19 +267 r26 = bit_xor r10 r27 +268 r26 = bit_and r24 r26 +269 r24 = bit_and r25 r26 +270 trace_line r24 L20 +271 r29 = add_i32 r28 r19 +272 r28 = select r24 r29 r28 +273 trace_var r24 $16 = r28 (I32) +274 r27 = bit_or r26 r27 +275 r26 = bit_and r25 r27 +276 trace_line r26 L18 +277 trace_var r26 $17 = r20 (I32) +278 trace_line r26 L19 +279 r26 = gt_i32 r23 r20 +280 r26 = bit_and r25 r26 +281 r26 = bit_and r26 r27 +282 trace_line r26 L19 +283 r24 = bit_xor r10 r26 +284 r24 = bit_and r27 r24 +285 r27 = bit_and r25 r24 +286 trace_line r27 L20 +287 r29 = add_i32 r28 r20 +288 r28 = select r27 r29 r28 +289 trace_var r27 $16 = r28 (I32) +290 r26 = bit_or r24 r26 +291 r26 = bit_and r25 r26 +292 trace_line r26 L18 +293 trace_line r25 L22 +294 r28 = bit_and r28 r25 +295 trace_call r25 L16 (exit) +296 r28 = eq_i32 r28 r21 +297 r28 = bit_and r25 r28 +298 trace_call r28 L26 (enter) +299 trace_var r28 $18 = r23 (I32) +300 trace_line r28 L27 +301 trace_line r28 L28 +302 trace_var r28 $20 = r13 (I32) +303 trace_line r28 L29 +304 trace_line r28 L30 +305 r25 = gt_i32 r9 r23 +306 r25 = bit_and r28 r25 +307 trace_line r25 L30 +308 r25 = bit_xor r10 r25 +309 r26 = bit_and r28 r25 +310 trace_line r26 L31 +311 trace_line r26 L29 +312 trace_var r26 $21 = r13 (I32) +313 trace_line r26 L30 +314 r26 = gt_i32 r13 r23 +315 r26 = bit_and r28 r26 +316 r26 = bit_and r26 r25 +317 trace_line r26 L30 +318 r26 = bit_xor r10 r26 +319 r26 = bit_and r25 r26 +320 r25 = bit_and r28 r26 +321 trace_line r25 L31 +322 r24 = bit_and r13 r25 +323 trace_var r25 $19 = r24 (I32) +324 trace_line r25 L29 +325 trace_var r25 $21 = r14 (I32) +326 trace_line r25 L30 +327 r25 = gt_i32 r14 r23 +328 r25 = bit_and r28 r25 +329 r25 = bit_and r25 r26 +330 trace_line r25 L30 +331 r25 = bit_xor r10 r25 +332 r25 = bit_and r26 r25 +333 r26 = bit_and r28 r25 +334 trace_line r26 L31 +335 r27 = add_i32 r24 r14 +336 r24 = select r26 r27 r24 +337 trace_var r26 $19 = r24 (I32) +338 trace_line r26 L29 +339 trace_var r26 $21 = r15 (I32) +340 trace_line r26 L30 +341 r26 = gt_i32 r15 r23 +342 r26 = bit_and r28 r26 +343 r26 = bit_and r26 r25 +344 trace_line r26 L30 +345 r26 = bit_xor r10 r26 +346 r26 = bit_and r25 r26 +347 r25 = bit_and r28 r26 +348 trace_line r25 L31 +349 r27 = add_i32 r24 r15 +350 r24 = select r25 r27 r24 +351 trace_var r25 $19 = r24 (I32) +352 trace_line r25 L29 +353 trace_var r25 $21 = r16 (I32) +354 trace_line r25 L30 +355 r25 = gt_i32 r16 r23 +356 r25 = bit_and r28 r25 +357 r25 = bit_and r25 r26 +358 trace_line r25 L30 +359 r25 = bit_xor r10 r25 +360 r25 = bit_and r26 r25 +361 r26 = bit_and r28 r25 +362 trace_line r26 L31 +363 r27 = add_i32 r24 r16 +364 r24 = select r26 r27 r24 +365 trace_var r26 $19 = r24 (I32) +366 trace_line r26 L29 +367 trace_var r26 $21 = r12 (I32) +368 trace_line r26 L30 +369 r26 = gt_i32 r12 r23 +370 r26 = bit_and r28 r26 +371 r26 = bit_and r26 r25 +372 trace_line r26 L30 +373 r26 = bit_xor r10 r26 +374 r26 = bit_and r25 r26 +375 r25 = bit_and r28 r26 +376 trace_line r25 L31 +377 r27 = add_i32 r24 r12 +378 r24 = select r25 r27 r24 +379 trace_var r25 $19 = r24 (I32) +380 trace_line r25 L29 +381 trace_var r25 $21 = r17 (I32) +382 trace_line r25 L30 +383 r25 = gt_i32 r17 r23 +384 r25 = bit_and r28 r25 +385 r25 = bit_and r25 r26 +386 trace_line r25 L30 +387 r25 = bit_xor r10 r25 +388 r25 = bit_and r26 r25 +389 r26 = bit_and r28 r25 +390 trace_line r26 L31 +391 r27 = add_i32 r24 r17 +392 r24 = select r26 r27 r24 +393 trace_var r26 $19 = r24 (I32) +394 trace_line r26 L29 +395 trace_var r26 $21 = r18 (I32) +396 trace_line r26 L30 +397 r26 = gt_i32 r18 r23 +398 r26 = bit_and r28 r26 +399 r26 = bit_and r26 r25 +400 trace_line r26 L30 +401 r26 = bit_xor r10 r26 +402 r26 = bit_and r25 r26 +403 r25 = bit_and r28 r26 +404 trace_line r25 L31 +405 r27 = add_i32 r24 r18 +406 r24 = select r25 r27 r24 +407 trace_var r25 $19 = r24 (I32) +408 trace_line r25 L29 +409 trace_var r25 $21 = r19 (I32) +410 trace_line r25 L30 +411 r25 = gt_i32 r19 r23 +412 r25 = bit_and r28 r25 +413 r25 = bit_and r25 r26 +414 trace_line r25 L30 +415 r25 = bit_xor r10 r25 +416 r25 = bit_and r26 r25 +417 r26 = bit_and r28 r25 +418 trace_line r26 L31 +419 r27 = add_i32 r24 r19 +420 r24 = select r26 r27 r24 +421 trace_var r26 $19 = r24 (I32) +422 trace_line r26 L29 +423 trace_var r26 $21 = r20 (I32) +424 trace_line r26 L30 +425 r23 = gt_i32 r20 r23 +426 r23 = bit_and r28 r23 +427 r23 = bit_and r23 r25 +428 trace_line r23 L30 +429 r23 = bit_xor r10 r23 +430 r23 = bit_and r25 r23 +431 r23 = bit_and r28 r23 +432 trace_line r23 L31 +433 r25 = add_i32 r24 r20 +434 r24 = select r23 r25 r24 +435 trace_var r23 $19 = r24 (I32) +436 trace_line r23 L29 +437 trace_line r28 L33 +438 r24 = bit_and r24 r28 +439 trace_call r28 L26 (exit) +440 r24 = eq_i32 r24 r22 +441 r24 = bit_and r28 r24 +442 trace_call r24 L36 (enter) +443 trace_line r24 L38 +444 trace_line r24 L39 +445 trace_line r24 L41 +446 trace_var r24 $22 = r20 (I32) +447 trace_var r24 $23 = r20 (I32) +448 trace_var r24 $24 = r20 (I32) +449 trace_var r24 $25 = r20 (I32) +450 trace_line r24 L42 +451 trace_var r24 $26 = r13 (I32) +452 trace_line r24 L43 +453 r28 = select r24 r13 r20 +454 trace_var r24 $25 = r28 (I32) +455 trace_line r24 L42 +456 trace_var r24 $26 = r14 (I32) +457 trace_line r24 L43 +458 r23 = select r24 r28 r20 +459 trace_var r24 $24 = r23 (I32) +460 r28 = select r24 r14 r28 +461 trace_var r24 $25 = r28 (I32) +462 trace_line r24 L42 +463 trace_var r24 $26 = r15 (I32) +464 trace_line r24 L43 +465 r25 = select r24 r23 r20 +466 trace_var r24 $23 = r25 (I32) +467 r23 = select r24 r28 r23 +468 trace_var r24 $24 = r23 (I32) +469 r28 = select r24 r15 r28 +470 trace_var r24 $25 = r28 (I32) +471 trace_line r24 L42 +472 trace_line r24 L45 +473 r25 = eq_i32 r25 r13 +474 r23 = eq_i32 r23 r14 +475 r28 = eq_i32 r28 r15 +476 r23 = bit_and r25 r23 +477 r28 = bit_and r23 r28 +478 r28 = bit_and r28 r24 +479 trace_call r24 L36 (exit) +480 r28 = bit_and r24 r28 +481 trace_call r28 L48 (enter) +482 trace_line r28 L50 +483 trace_line r28 L51 +484 trace_line r28 L53 +485 trace_var r28 $27 = r20 (I32) +486 trace_var r28 $28 = r20 (I32) +487 trace_var r28 $29 = r20 (I32) +488 trace_var r28 $30 = r20 (I32) +489 trace_line r28 L54 +490 trace_var r28 $31 = r13 (I32) +491 trace_line r28 L55 +492 r24 = select r28 r13 r20 +493 trace_var r28 $30 = r24 (I32) +494 trace_line r28 L54 +495 trace_var r28 $31 = r14 (I32) +496 trace_line r28 L55 +497 r23 = select r28 r24 r20 +498 trace_var r28 $29 = r23 (I32) +499 r24 = select r28 r14 r24 +500 trace_var r28 $30 = r24 (I32) +501 trace_line r28 L54 +502 trace_var r28 $31 = r15 (I32) +503 trace_line r28 L55 +504 r25 = select r28 r23 r20 +505 trace_var r28 $28 = r25 (I32) +506 r23 = select r28 r24 r23 +507 trace_var r28 $29 = r23 (I32) +508 r24 = select r28 r15 r24 +509 trace_var r28 $30 = r24 (I32) +510 trace_line r28 L54 +511 trace_line r28 L57 +512 r25 = eq_i32 r25 r13 +513 r23 = eq_i32 r23 r14 +514 r24 = eq_i32 r24 r15 +515 r23 = bit_and r25 r23 +516 r24 = bit_and r23 r24 +517 r24 = bit_and r24 r28 +518 trace_call r28 L48 (exit) +519 r24 = bit_and r28 r24 +520 trace_call r24 L60 (enter) +521 trace_line r24 L62 +522 trace_line r24 L63 +523 trace_line r24 L65 +524 trace_var r24 $32 = r20 (I32) +525 trace_var r24 $33 = r20 (I32) +526 trace_var r24 $34 = r20 (I32) +527 trace_var r24 $35 = r20 (I32) +528 trace_line r24 L66 +529 trace_var r24 $36 = r15 (I32) +530 trace_line r24 L67 +531 r28 = select r24 r15 r20 +532 trace_var r24 $35 = r28 (I32) +533 trace_line r24 L66 +534 trace_var r24 $36 = r14 (I32) +535 trace_line r24 L67 +536 r23 = select r24 r28 r20 +537 trace_var r24 $34 = r23 (I32) +538 r28 = select r24 r14 r28 +539 trace_var r24 $35 = r28 (I32) +540 trace_line r24 L66 +541 trace_var r24 $36 = r13 (I32) +542 trace_line r24 L67 +543 r25 = select r24 r23 r20 +544 trace_var r24 $33 = r25 (I32) +545 r23 = select r24 r28 r23 +546 trace_var r24 $34 = r23 (I32) +547 r28 = select r24 r13 r28 +548 trace_var r24 $35 = r28 (I32) +549 trace_line r24 L66 +550 trace_line r24 L69 +551 r25 = eq_i32 r25 r15 +552 r23 = eq_i32 r23 r14 +553 r28 = eq_i32 r28 r13 +554 r23 = bit_and r25 r23 +555 r28 = bit_and r23 r28 +556 r28 = bit_and r28 r24 +557 trace_call r24 L60 (exit) +558 r28 = bit_and r24 r28 +559 trace_call r28 L72 (enter) +560 trace_line r28 L74 +561 trace_line r28 L75 +562 trace_line r28 L77 +563 trace_var r28 $37 = r20 (I32) +564 trace_var r28 $38 = r20 (I32) +565 trace_var r28 $39 = r20 (I32) +566 trace_var r28 $40 = r20 (I32) +567 trace_line r28 L78 +568 trace_var r28 $41 = r15 (I32) +569 trace_line r28 L79 +570 r24 = select r28 r15 r20 +571 trace_var r28 $40 = r24 (I32) +572 trace_line r28 L78 +573 trace_var r28 $41 = r14 (I32) +574 trace_line r28 L79 +575 r23 = select r28 r24 r20 +576 trace_var r28 $39 = r23 (I32) +577 r24 = select r28 r14 r24 +578 trace_var r28 $40 = r24 (I32) +579 trace_line r28 L78 +580 trace_var r28 $41 = r13 (I32) +581 trace_line r28 L79 +582 r25 = select r28 r23 r20 +583 trace_var r28 $38 = r25 (I32) +584 r23 = select r28 r24 r23 +585 trace_var r28 $39 = r23 (I32) +586 r24 = select r28 r13 r24 +587 trace_var r28 $40 = r24 (I32) +588 trace_line r28 L78 +589 trace_line r28 L81 +590 r25 = eq_i32 r25 r15 +591 r23 = eq_i32 r23 r14 +592 r24 = eq_i32 r24 r13 +593 r23 = bit_and r25 r23 +594 r24 = bit_and r23 r24 +595 r24 = bit_and r24 r28 +596 trace_call r28 L72 (exit) +597 r24 = bit_and r28 r24 +598 trace_call r24 L95 (enter) +599 trace_line r24 L97 +600 trace_line r24 L99 +601 trace_var r24 $42 = r20 (I32) +602 trace_var r24 $43 = r20 (I32) +603 trace_var r24 $44 = r20 (I32) +604 trace_var r24 $45 = r20 (I32) +605 trace_line r24 L100 +606 trace_var r24 $46 = r13 (I32) +607 trace_line r24 L101 +608 r28 = select r24 r13 r20 +609 trace_var r24 $45 = r28 (I32) +610 trace_line r24 L100 +611 trace_line r24 L103 +612 r28 = eq_i32 r28 r13 +613 r28 = bit_and r28 r24 +614 trace_call r24 L95 (exit) +615 r28 = bit_and r24 r28 +616 trace_call r28 L84 (enter) +617 trace_line r28 L86 +618 trace_line r28 L88 +619 trace_var r28 $47 = r20 (I32) +620 trace_var r28 $48 = r20 (I32) +621 trace_var r28 $49 = r20 (I32) +622 trace_var r28 $50 = r20 (I32) +623 trace_line r28 L89 +624 trace_var r28 $51 = r13 (I32) +625 trace_line r28 L90 +626 r24 = select r28 r13 r20 +627 trace_var r28 $50 = r24 (I32) +628 trace_line r28 L89 +629 trace_var r28 $51 = r14 (I32) +630 trace_line r28 L90 +631 r23 = select r28 r24 r20 +632 trace_var r28 $49 = r23 (I32) +633 r24 = select r28 r14 r24 +634 trace_var r28 $50 = r24 (I32) +635 trace_line r28 L89 +636 trace_var r28 $51 = r15 (I32) +637 trace_line r28 L90 +638 r25 = select r28 r23 r20 +639 trace_var r28 $48 = r25 (I32) +640 r23 = select r28 r24 r23 +641 trace_var r28 $49 = r23 (I32) +642 r24 = select r28 r15 r24 +643 trace_var r28 $50 = r24 (I32) +644 trace_line r28 L89 +645 trace_line r28 L92 +646 r25 = eq_i32 r25 r13 +647 r23 = eq_i32 r23 r14 +648 r24 = eq_i32 r24 r15 +649 r23 = bit_and r25 r23 +650 r24 = bit_and r23 r24 +651 r24 = bit_and r24 r28 +652 trace_call r28 L84 (exit) +653 r24 = bit_and r28 r24 +654 r28 = select r24 r5 r1 +655 r23 = select r24 r6 r2 +656 r25 = select r24 r7 r3 +657 r24 = select r24 r8 r4 +658 trace_call r10 L106 (exit) +659 store32 ptr1 r28 +660 store32 ptr2 r23 +661 store32 ptr3 r25 +662 store32 ptr4 r24 diff --git a/tests/sksl/runtime/LoopInt.stage b/tests/sksl/runtime/LoopInt.stage index 2ef6f59a25..2f4e6c105e 100644 --- a/tests/sksl/runtime/LoopInt.stage +++ b/tests/sksl/runtime/LoopInt.stage @@ -1,34 +1,33 @@ uniform half4 colorRed; uniform half4 colorGreen; const int kZero_0 = 0; -int return_loop_0(); +int return_loop_0(int five); const int kTen_0 = 10; -int continue_loop_0(); -int break_loop_0(); +int continue_loop_0(int five); +int break_loop_0(int five); bool loop_operator_le_0(); bool loop_operator_lt_0(); bool loop_operator_ge_0(); bool loop_operator_gt_0(); bool loop_operator_ne_0(); bool loop_operator_eq_0(); -int return_loop_0() +int return_loop_0(int five) { for (int i = kZero_0;i < 10; ++i) { - bool shouldExit = i == int(colorGreen.y * 5.0); - if (shouldExit) + if (i == five) { return i; } } return 0; } -int continue_loop_0() +int continue_loop_0(int five) { int sum = 0; for (int i = 0;i < kTen_0; ++i) { - if (i < 5) + if (i < five) { continue; } @@ -36,13 +35,13 @@ int continue_loop_0() } return sum; } -int break_loop_0() +int break_loop_0(int five) { int sum = 0; const int kOne = 1; for (int i = 0;i < 10; i += kOne) { - if (i > 5) + if (i > five) { break; } @@ -114,7 +113,8 @@ bool loop_operator_eq_0() } return result == int4(9, 9, 9, 1); } -half4 main(float2 xy) +half4 main(float2 pos) { - return half4((((((((return_loop_0() == 5 && continue_loop_0() == 35) && break_loop_0() == 15) && loop_operator_le_0()) && loop_operator_lt_0()) && loop_operator_ge_0()) && loop_operator_gt_0()) && loop_operator_eq_0()) && loop_operator_ne_0() ? colorGreen : colorRed); + int five = int(clamp(_coords.x, float(colorGreen.y), float(colorGreen.w))) * 5; + return half4((((((((return_loop_0(five) == 5 && continue_loop_0(five) == 35) && break_loop_0(five) == 15) && loop_operator_le_0()) && loop_operator_lt_0()) && loop_operator_ge_0()) && loop_operator_gt_0()) && loop_operator_eq_0()) && loop_operator_ne_0() ? colorGreen : colorRed); }