125 instructions

store_src_rg                   coords = src.rg
init_lane_masks                CondMask = LoopMask = RetMask = true
copy_uniform                   $0 = colorGreen(1)
cast_to_int_from_float         $0 = FloatToInt($0)
copy_slot_unmasked             x = $0
copy_constant                  _0_val = 0
store_loop_mask                $0 = LoopMask
copy_slot_unmasked             $1 = x
store_loop_mask                $2 = LoopMask
mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
case_op                        if ($1 == 0x00000001) { LoopMask = true; $2 = false; }
branch_if_no_lanes_active      branch_if_no_lanes_active +21 (label 1 at #33)
copy_constant                  _1_i = 0
store_loop_mask                $3 = LoopMask
jump                           jump +10 (label 3 at #25)
label                          label 0x00000004
copy_slot_unmasked             $4 = _0_val
add_imm_int                    $4 += 0x00000001
copy_slot_masked               _0_val = Mask($4)
branch_if_all_lanes_active     branch_if_all_lanes_active +11 (label 2 at #31)
mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
copy_slot_unmasked             $4 = _1_i
add_imm_int                    $4 += 0x00000001
copy_slot_masked               _1_i = Mask($4)
label                          label 0x00000003
copy_slot_unmasked             $4 = _1_i
cmplt_imm_int                  $4 = lessThan($4, 0x0000000A)
merge_loop_mask                LoopMask &= $4
stack_rewind
branch_if_any_lanes_active     branch_if_any_lanes_active -14 (label 4 at #16)
label                          label 0x00000002
load_loop_mask                 LoopMask = $3
label                          label 0x00000001
reenable_loop_mask             LoopMask |= $2
branch_if_no_lanes_active      branch_if_no_lanes_active +4 (label 5 at #39)
copy_slot_unmasked             $2 = _0_val
add_imm_int                    $2 += 0x00000001
copy_slot_masked               _0_val = Mask($2)
label                          label 0x00000005
label                          label 0
load_loop_mask                 LoopMask = $0
store_condition_mask           $12 = CondMask
store_condition_mask           $19 = CondMask
copy_slot_unmasked             $20 = _0_val
cmpeq_imm_int                  $20 = equal($20, 0x00000002)
copy_constant                  $13 = 0
merge_condition_mask           CondMask = $19 & $20
branch_if_no_lanes_active      branch_if_no_lanes_active +42 (label 8 at #90)
copy_constant                  val = 0
store_loop_mask                $14 = LoopMask
copy_slot_unmasked             $15 = x
store_loop_mask                $16 = LoopMask
mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
case_op                        if ($15 == 0x00000001) { LoopMask = true; $16 = false; }
branch_if_no_lanes_active      branch_if_no_lanes_active +22 (label 11 at #77)
copy_constant                  i = 0
store_loop_mask                $17 = LoopMask
jump                           jump +11 (label 13 at #69)
label                          label 0x0000000E
copy_constant                  $21 = 0
copy_slot_unmasked             $18 = val
add_imm_int                    $18 += 0x00000001
copy_slot_masked               val = Mask($18)
continue_op                    $21 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask)
reenable_loop_mask             LoopMask |= $21
copy_slot_unmasked             $18 = i
add_imm_int                    $18 += 0x00000001
copy_slot_masked               i = Mask($18)
label                          label 0x0000000D
copy_slot_unmasked             $18 = i
cmplt_imm_int                  $18 = lessThan($18, 0x0000000A)
merge_loop_mask                LoopMask &= $18
stack_rewind
branch_if_any_lanes_active     branch_if_any_lanes_active -15 (label 14 at #59)
label                          label 0x0000000C
load_loop_mask                 LoopMask = $17
label                          label 0x0000000B
reenable_loop_mask             LoopMask |= $16
branch_if_no_lanes_active      branch_if_no_lanes_active +4 (label 15 at #83)
copy_slot_unmasked             $16 = val
add_imm_int                    $16 += 0x00000001
copy_slot_masked               val = Mask($16)
label                          label 0x0000000F
label                          label 0x0000000A
load_loop_mask                 LoopMask = $14
copy_slot_unmasked             $14 = val
cmpeq_imm_int                  $14 = equal($14, 0x0000000B)
label                          label 0x00000009
copy_slot_masked               $13 = Mask($14)
label                          label 0x00000008
load_condition_mask            CondMask = $19
copy_constant                  $0 = 0
merge_condition_mask           CondMask = $12 & $13
branch_if_no_lanes_active      branch_if_no_lanes_active +47 (label 7 at #141)
store_return_mask              $1 = RetMask
splat_2_constants              val₁, i₁ = 0
store_loop_mask                $2 = LoopMask
jump                           jump +28 (label 18 at #126)
label                          label 0x00000013
store_loop_mask                $3 = LoopMask
copy_slot_unmasked             $4 = x
store_loop_mask                $5 = LoopMask
mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
case_op                        if ($4 == 0x00000001) { LoopMask = true; $5 = false; }
branch_if_no_lanes_active      branch_if_no_lanes_active +6 (label 21 at #111)
copy_slot_unmasked             $6 = val₁
add_imm_int                    $6 += 0x00000001
copy_slot_masked               val₁ = Mask($6)
branch_if_all_lanes_active     branch_if_all_lanes_active +9 (label 20 at #118)
mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
label                          label 0x00000015
reenable_loop_mask             LoopMask |= $5
branch_if_no_lanes_active      branch_if_no_lanes_active +4 (label 22 at #117)
copy_constant                  $5 = 0
copy_slot_masked               [loop_with_break_in_switch].result = Mask($5)
mask_off_return_mask           RetMask &= ~(CondMask & LoopMask & RetMask)
label                          label 0x00000016
label                          label 0x00000014
load_loop_mask                 LoopMask = $3
copy_slot_unmasked             $3 = val₁
add_imm_int                    $3 += 0x00000001
copy_slot_masked               val₁ = Mask($3)
copy_slot_unmasked             $3 = i₁
add_imm_int                    $3 += 0x00000001
copy_slot_masked               i₁ = Mask($3)
label                          label 0x00000012
copy_slot_unmasked             $3 = i₁
cmplt_imm_int                  $3 = lessThan($3, 0x0000000A)
merge_loop_mask                LoopMask &= $3
stack_rewind
branch_if_any_lanes_active     branch_if_any_lanes_active -32 (label 19 at #99)
label                          label 0x00000011
load_loop_mask                 LoopMask = $2
copy_slot_unmasked             $2 = val₁
cmpeq_imm_int                  $2 = equal($2, 0x00000014)
copy_slot_masked               [loop_with_break_in_switch].result = Mask($2)
load_return_mask               RetMask = $1
copy_slot_unmasked             $1 = [loop_with_break_in_switch].result
label                          label 0x00000010
copy_slot_masked               $0 = Mask($1)
label                          label 0x00000007
load_condition_mask            CondMask = $12
swizzle_4                      $0..3 = ($0..3).xxxx
copy_4_uniforms                $4..7 = colorRed
copy_4_uniforms                $8..11 = colorGreen
mix_4_ints                     $0..3 = mix($4..7, $8..11, $0..3)
load_src                       src.rgba = $0..3
