176 instructions [immutable slots] i0 = 0x3F800000 (1.0) i1 = 0x40000000 (2.0) i2 = 0x40400000 (3.0) i3 = 0x3F800000 (1.0) i4 = 0x40000000 (2.0) i5 = 0x40400000 (3.0) i6 = 0x40800000 (4.0) store_device_xy01 $35..38 = DeviceCoords.xy01 cmpeq_imm_float $35 = equal($35, 0x3F000000 (0.5)) cmpeq_imm_float $36 = equal($36, 0x3F000000 (0.5)) bitwise_and_int $35 &= $36 store_src_rg coords = src.rg init_lane_masks CondMask = LoopMask = RetMask = true copy_4_uniforms colorGreen = colorGreen trace_var TraceVar(colorGreen) when $35 is true copy_4_uniforms colorRed = colorRed trace_var TraceVar(colorRed) when $35 is true copy_4_uniforms testMatrix3x3(0..3) = testMatrix3x3(0..3) copy_4_uniforms testMatrix3x3(4..7) = testMatrix3x3(4..7) copy_uniform testMatrix3x3(8) = testMatrix3x3(8) trace_var TraceVar(testMatrix3x3) when $35 is true copy_4_uniforms testMatrix4x4(0..3) = testMatrix4x4(0..3) copy_4_uniforms testMatrix4x4(4..7) = testMatrix4x4(4..7) copy_4_uniforms testMatrix4x4(8..11) = testMatrix4x4(8..11) copy_4_uniforms testMatrix4x4(12..15) = testMatrix4x4(12..15) trace_var TraceVar(testMatrix4x4) when $35 is true trace_enter TraceEnter(half4 main(float2 coords)) when $35 is true trace_var TraceVar(coords) when $35 is true copy_constant $0 = 0 copy_slot_unmasked $1 = $35 copy_slot_masked $0 = Mask($1) trace_scope TraceScope(+1) when $0 is true trace_line TraceLine(28) when $35 is true store_condition_mask $39 = CondMask branch_if_no_lanes_active branch_if_no_lanes_active +68 (label 2 at #96) trace_enter TraceEnter(bool test3x3()) when $35 is true copy_constant $40 = 0 copy_slot_unmasked $41 = $35 copy_slot_masked $40 = Mask($41) trace_scope TraceScope(+1) when $40 is true trace_line TraceLine(8) when $35 is true splat_4_constants matrix(0..3) = 0 splat_4_constants matrix(4..7) = 0 copy_constant matrix(8) = 0 trace_var TraceVar(matrix) when $35 is true trace_line TraceLine(9) when $35 is true copy_3_immutables_unmasked values = i0..2 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0)] trace_var TraceVar(values) when $35 is true copy_constant $41 = 0 copy_slot_unmasked $42 = $35 copy_slot_masked $41 = Mask($42) trace_scope TraceScope(+1) when $41 is true branch_if_no_lanes_active branch_if_no_lanes_active +31 (label 3 at #77) trace_line TraceLine(10) when $35 is true copy_constant index = 0 trace_var TraceVar(index) when $35 is true label label 0x00000004 copy_constant $42 = 0 copy_slot_unmasked $43 = $35 copy_slot_masked $42 = Mask($43) trace_scope TraceScope(+1) when $42 is true trace_line TraceLine(11) when $35 is true copy_slot_unmasked $59 = index mul_imm_int $59 *= 0x00000003 copy_3_slots_unmasked $43..45 = values copy_to_indirect_masked Indirect(matrix(0..2) + $59) = Mask($43..45) trace_var TraceVar(matrix(0..2) + $59) when $35 is true trace_line TraceLine(12) when $35 is true copy_3_slots_unmasked $43..45 = values splat_3_constants $46..48 = 0x40400000 (3.0) add_3_floats $43..45 += $46..48 copy_3_slots_masked values = Mask($43..45) trace_var TraceVar(values) when $35 is true trace_scope TraceScope(-1) when $42 is true trace_line TraceLine(10) when $35 is true copy_slot_unmasked $42 = index add_imm_int $42 += 0x00000001 copy_slot_masked index = Mask($42) trace_var TraceVar(index) when $35 is true copy_slot_unmasked $42 = index cmplt_imm_int $42 = lessThan($42, 0x00000003) stack_rewind branch_if_no_active_lanes_eq branch -26 (label 4 at #50) if no lanes of $42 == 0 label label 0x00000003 trace_scope TraceScope(-1) when $41 is true trace_line TraceLine(14) when $35 is true copy_4_slots_unmasked $41..44 = matrix(0..3) copy_4_slots_unmasked $45..48 = matrix(4..7) copy_slot_unmasked $49 = matrix(8) copy_4_uniforms $50..53 = testMatrix3x3(0..3) copy_4_uniforms $54..57 = testMatrix3x3(4..7) copy_uniform $58 = testMatrix3x3(8) cmpeq_n_floats $41..49 = equal($41..49, $50..58) bitwise_and_4_ints $42..45 &= $46..49 bitwise_and_2_ints $42..43 &= $44..45 bitwise_and_int $42 &= $43 bitwise_and_int $41 &= $42 copy_slot_masked [test3x3].result = Mask($41) trace_var TraceVar([test3x3].result) when $35 is true trace_scope TraceScope(-1) when $40 is true trace_exit TraceExit(bool test3x3()) when $35 is true copy_slot_unmasked $40 = [test3x3].result label label 0x00000002 copy_constant $1 = 0 merge_condition_mask CondMask = $39 & $40 branch_if_no_lanes_active branch_if_no_lanes_active +74 (label 1 at #173) trace_enter TraceEnter(bool test4x4()) when $35 is true copy_constant $2 = 0 copy_slot_unmasked $3 = $35 copy_slot_masked $2 = Mask($3) trace_scope TraceScope(+1) when $2 is true trace_line TraceLine(18) when $35 is true splat_4_constants matrix₁(0..3) = 0 splat_4_constants matrix₁(4..7) = 0 splat_4_constants matrix₁(8..11) = 0 splat_4_constants matrix₁(12..15) = 0 trace_var TraceVar(matrix₁) when $35 is true trace_line TraceLine(19) when $35 is true copy_4_immutables_unmasked values₁ = i3..6 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x40800000 (4.0)] trace_var TraceVar(values₁) when $35 is true copy_constant $3 = 0 copy_slot_unmasked $4 = $35 copy_slot_masked $3 = Mask($4) trace_scope TraceScope(+1) when $3 is true branch_if_no_lanes_active branch_if_no_lanes_active +31 (label 6 at #149) trace_line TraceLine(20) when $35 is true copy_constant index₁ = 0 trace_var TraceVar(index₁) when $35 is true label label 0x00000007 copy_constant $4 = 0 copy_slot_unmasked $5 = $35 copy_slot_masked $4 = Mask($5) trace_scope TraceScope(+1) when $4 is true trace_line TraceLine(21) when $35 is true copy_slot_unmasked $59 = index₁ mul_imm_int $59 *= 0x00000004 copy_4_slots_unmasked $5..8 = values₁ copy_to_indirect_masked Indirect(matrix₁(0..3) + $59) = Mask($5..8) trace_var TraceVar(matrix₁(0..3) + $59) when $35 is true trace_line TraceLine(22) when $35 is true copy_4_slots_unmasked $5..8 = values₁ splat_4_constants $9..12 = 0x40800000 (4.0) add_4_floats $5..8 += $9..12 copy_4_slots_masked values₁ = Mask($5..8) trace_var TraceVar(values₁) when $35 is true trace_scope TraceScope(-1) when $4 is true trace_line TraceLine(20) when $35 is true copy_slot_unmasked $4 = index₁ add_imm_int $4 += 0x00000001 copy_slot_masked index₁ = Mask($4) trace_var TraceVar(index₁) when $35 is true copy_slot_unmasked $4 = index₁ cmplt_imm_int $4 = lessThan($4, 0x00000004) stack_rewind branch_if_no_active_lanes_eq branch -26 (label 7 at #122) if no lanes of $4 == 0 label label 0x00000006 trace_scope TraceScope(-1) when $3 is true trace_line TraceLine(24) when $35 is true copy_4_slots_unmasked $3..6 = matrix₁(0..3) copy_4_slots_unmasked $7..10 = matrix₁(4..7) copy_4_slots_unmasked $11..14 = matrix₁(8..11) copy_4_slots_unmasked $15..18 = matrix₁(12..15) copy_4_uniforms $19..22 = testMatrix4x4(0..3) copy_4_uniforms $23..26 = testMatrix4x4(4..7) copy_4_uniforms $27..30 = testMatrix4x4(8..11) copy_4_uniforms $31..34 = testMatrix4x4(12..15) cmpeq_n_floats $3..18 = equal($3..18, $19..34) bitwise_and_4_ints $11..14 &= $15..18 bitwise_and_4_ints $7..10 &= $11..14 bitwise_and_4_ints $3..6 &= $7..10 bitwise_and_2_ints $3..4 &= $5..6 bitwise_and_int $3 &= $4 copy_slot_masked [test4x4].result = Mask($3) trace_var TraceVar([test4x4].result) when $35 is true trace_scope TraceScope(-1) when $2 is true trace_exit TraceExit(bool test4x4()) when $35 is true copy_slot_unmasked $2 = [test4x4].result label label 0x00000005 copy_slot_masked $1 = Mask($2) label label 0x00000001 load_condition_mask CondMask = $39 swizzle_4 $1..4 = ($1..4).xxxx copy_4_uniforms $5..8 = colorRed copy_4_uniforms $9..12 = colorGreen mix_4_ints $1..4 = mix($5..8, $9..12, $1..4) copy_4_slots_unmasked [main].result = $1..4 trace_var TraceVar([main].result) when $35 is true trace_scope TraceScope(-1) when $0 is true trace_exit TraceExit(half4 main(float2 coords)) when $35 is true load_src src.rgba = [main].result