1125 instructions 2 3store_src_rg coords = src.rg 4init_lane_masks CondMask = LoopMask = RetMask = true 5copy_uniform $0 = colorGreen(1) 6cast_to_int_from_float $0 = FloatToInt($0) 7copy_slot_unmasked x = $0 8copy_constant _0_val = 0 9store_loop_mask $0 = LoopMask 10copy_slot_unmasked $1 = x 11store_loop_mask $2 = LoopMask 12mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 13case_op if ($1 == 0x00000001) { LoopMask = true; $2 = false; } 14branch_if_no_lanes_active branch_if_no_lanes_active +21 (label 1 at #33) 15copy_constant _1_i = 0 16store_loop_mask $3 = LoopMask 17jump jump +10 (label 3 at #25) 18label label 0x00000004 19copy_slot_unmasked $4 = _0_val 20add_imm_int $4 += 0x00000001 21copy_slot_masked _0_val = Mask($4) 22branch_if_all_lanes_active branch_if_all_lanes_active +11 (label 2 at #31) 23mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 24copy_slot_unmasked $4 = _1_i 25add_imm_int $4 += 0x00000001 26copy_slot_masked _1_i = Mask($4) 27label label 0x00000003 28copy_slot_unmasked $4 = _1_i 29cmplt_imm_int $4 = lessThan($4, 0x0000000A) 30merge_loop_mask LoopMask &= $4 31stack_rewind 32branch_if_any_lanes_active branch_if_any_lanes_active -14 (label 4 at #16) 33label label 0x00000002 34load_loop_mask LoopMask = $3 35label label 0x00000001 36reenable_loop_mask LoopMask |= $2 37branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 5 at #39) 38copy_slot_unmasked $2 = _0_val 39add_imm_int $2 += 0x00000001 40copy_slot_masked _0_val = Mask($2) 41label label 0x00000005 42label label 0 43load_loop_mask LoopMask = $0 44store_condition_mask $12 = CondMask 45store_condition_mask $19 = CondMask 46copy_slot_unmasked $20 = _0_val 47cmpeq_imm_int $20 = equal($20, 0x00000002) 48copy_constant $13 = 0 49merge_condition_mask CondMask = $19 & $20 50branch_if_no_lanes_active branch_if_no_lanes_active +42 (label 8 at #90) 51copy_constant val = 0 52store_loop_mask $14 = LoopMask 53copy_slot_unmasked $15 = x 54store_loop_mask $16 = LoopMask 55mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 56case_op if ($15 == 0x00000001) { LoopMask = true; $16 = false; } 57branch_if_no_lanes_active branch_if_no_lanes_active +22 (label 11 at #77) 58copy_constant i = 0 59store_loop_mask $17 = LoopMask 60jump jump +11 (label 13 at #69) 61label label 0x0000000E 62copy_constant $21 = 0 63copy_slot_unmasked $18 = val 64add_imm_int $18 += 0x00000001 65copy_slot_masked val = Mask($18) 66continue_op $21 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask) 67reenable_loop_mask LoopMask |= $21 68copy_slot_unmasked $18 = i 69add_imm_int $18 += 0x00000001 70copy_slot_masked i = Mask($18) 71label label 0x0000000D 72copy_slot_unmasked $18 = i 73cmplt_imm_int $18 = lessThan($18, 0x0000000A) 74merge_loop_mask LoopMask &= $18 75stack_rewind 76branch_if_any_lanes_active branch_if_any_lanes_active -15 (label 14 at #59) 77label label 0x0000000C 78load_loop_mask LoopMask = $17 79label label 0x0000000B 80reenable_loop_mask LoopMask |= $16 81branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 15 at #83) 82copy_slot_unmasked $16 = val 83add_imm_int $16 += 0x00000001 84copy_slot_masked val = Mask($16) 85label label 0x0000000F 86label label 0x0000000A 87load_loop_mask LoopMask = $14 88copy_slot_unmasked $14 = val 89cmpeq_imm_int $14 = equal($14, 0x0000000B) 90label label 0x00000009 91copy_slot_masked $13 = Mask($14) 92label label 0x00000008 93load_condition_mask CondMask = $19 94copy_constant $0 = 0 95merge_condition_mask CondMask = $12 & $13 96branch_if_no_lanes_active branch_if_no_lanes_active +47 (label 7 at #141) 97store_return_mask $1 = RetMask 98splat_2_constants val₁, i₁ = 0 99store_loop_mask $2 = LoopMask 100jump jump +28 (label 18 at #126) 101label label 0x00000013 102store_loop_mask $3 = LoopMask 103copy_slot_unmasked $4 = x 104store_loop_mask $5 = LoopMask 105mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 106case_op if ($4 == 0x00000001) { LoopMask = true; $5 = false; } 107branch_if_no_lanes_active branch_if_no_lanes_active +6 (label 21 at #111) 108copy_slot_unmasked $6 = val₁ 109add_imm_int $6 += 0x00000001 110copy_slot_masked val₁ = Mask($6) 111branch_if_all_lanes_active branch_if_all_lanes_active +9 (label 20 at #118) 112mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 113label label 0x00000015 114reenable_loop_mask LoopMask |= $5 115branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 22 at #117) 116copy_constant $5 = 0 117copy_slot_masked [loop_with_break_in_switch].result = Mask($5) 118mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 119label label 0x00000016 120label label 0x00000014 121load_loop_mask LoopMask = $3 122copy_slot_unmasked $3 = val₁ 123add_imm_int $3 += 0x00000001 124copy_slot_masked val₁ = Mask($3) 125copy_slot_unmasked $3 = i₁ 126add_imm_int $3 += 0x00000001 127copy_slot_masked i₁ = Mask($3) 128label label 0x00000012 129copy_slot_unmasked $3 = i₁ 130cmplt_imm_int $3 = lessThan($3, 0x0000000A) 131merge_loop_mask LoopMask &= $3 132stack_rewind 133branch_if_any_lanes_active branch_if_any_lanes_active -32 (label 19 at #99) 134label label 0x00000011 135load_loop_mask LoopMask = $2 136copy_slot_unmasked $2 = val₁ 137cmpeq_imm_int $2 = equal($2, 0x00000014) 138copy_slot_masked [loop_with_break_in_switch].result = Mask($2) 139load_return_mask RetMask = $1 140copy_slot_unmasked $1 = [loop_with_break_in_switch].result 141label label 0x00000010 142copy_slot_masked $0 = Mask($1) 143label label 0x00000007 144load_condition_mask CondMask = $12 145swizzle_4 $0..3 = ($0..3).xxxx 146copy_4_uniforms $4..7 = colorRed 147copy_4_uniforms $8..11 = colorGreen 148mix_4_ints $0..3 = mix($4..7, $8..11, $0..3) 149load_src src.rgba = $0..3 150