1157 instructions 2 3store_src_rg xy = src.rg 4init_lane_masks CondMask = LoopMask = RetMask = true 5store_condition_mask $12 = CondMask 6store_condition_mask $15 = CondMask 7store_condition_mask $21 = CondMask 8store_condition_mask $26 = CondMask 9store_condition_mask $32 = CondMask 10store_condition_mask $36 = CondMask 11store_condition_mask $40 = CondMask 12branch_if_no_lanes_active branch_if_no_lanes_active +15 (label 8 at #25) 13store_return_mask $41 = RetMask 14store_loop_mask $42 = LoopMask 15label label 0x0000000A 16copy_constant $43 = 0xFFFFFFFF 17copy_slot_masked [test_return].result = Mask($43) 18mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 19copy_constant $43 = 0 20merge_loop_mask LoopMask &= $43 21stack_rewind 22branch_if_any_lanes_active branch_if_any_lanes_active -7 (label 10 at #13) 23label label 0x00000009 24load_loop_mask LoopMask = $42 25load_return_mask RetMask = $41 26copy_slot_unmasked $41 = [test_return].result 27label label 0x00000008 28copy_constant $37 = 0 29merge_condition_mask CondMask = $40 & $41 30branch_if_no_lanes_active branch_if_no_lanes_active +14 (label 7 at #42) 31store_loop_mask $38 = LoopMask 32label label 0x0000000D 33branch_if_all_lanes_active branch_if_all_lanes_active +6 (label 12 at #37) 34mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 35copy_constant $39 = 0 36merge_loop_mask LoopMask &= $39 37stack_rewind 38branch_if_any_lanes_active branch_if_any_lanes_active -6 (label 13 at #30) 39label label 0x0000000C 40load_loop_mask LoopMask = $38 41copy_constant $38 = 0xFFFFFFFF 42label label 0x0000000B 43copy_slot_masked $37 = Mask($38) 44label label 0x00000007 45load_condition_mask CondMask = $40 46copy_constant $33 = 0 47merge_condition_mask CondMask = $36 & $37 48branch_if_no_lanes_active branch_if_no_lanes_active +15 (label 6 at #61) 49store_loop_mask $34 = LoopMask 50label label 0x00000010 51copy_constant $40 = 0 52continue_op $40 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask) 53reenable_loop_mask LoopMask |= $40 54copy_constant $35 = 0 55merge_loop_mask LoopMask &= $35 56stack_rewind 57branch_if_any_lanes_active branch_if_any_lanes_active -7 (label 16 at #48) 58label label 0x0000000F 59load_loop_mask LoopMask = $34 60copy_constant $34 = 0xFFFFFFFF 61label label 0x0000000E 62copy_slot_masked $33 = Mask($34) 63label label 0x00000006 64load_condition_mask CondMask = $36 65copy_constant $27 = 0 66merge_condition_mask CondMask = $32 & $33 67branch_if_no_lanes_active branch_if_no_lanes_active +31 (label 5 at #96) 68store_return_mask $28 = RetMask 69store_loop_mask $29 = LoopMask 70label label 0x00000013 71copy_constant $36 = 0 72copy_constant $30 = 0 73copy_uniform $31 = colorGreen(1) 74cmplt_float $30 = lessThan($30, $31) 75branch_if_no_active_lanes_eq branch +5 (label 20 at #78) if no lanes of $30 == 0xFFFFFFFF 76copy_constant $31 = 0xFFFFFFFF 77copy_slot_masked [test_if_return].result = Mask($31) 78mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 79jump jump +4 (label 21 at #81) 80label label 0x00000014 81branch_if_all_lanes_active branch_if_all_lanes_active +9 (label 18 at #88) 82mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 83label label 0x00000015 84continue_op $36 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask) 85reenable_loop_mask LoopMask |= $36 86copy_constant $30 = 0 87merge_loop_mask LoopMask &= $30 88stack_rewind 89branch_if_any_lanes_active branch_if_any_lanes_active -19 (label 19 at #68) 90label label 0x00000012 91load_loop_mask LoopMask = $29 92copy_constant $29 = 0 93copy_slot_masked [test_if_return].result = Mask($29) 94load_return_mask RetMask = $28 95copy_slot_unmasked $28 = [test_if_return].result 96label label 0x00000011 97copy_slot_masked $27 = Mask($28) 98label label 0x00000005 99load_condition_mask CondMask = $32 100copy_constant $22 = 0 101merge_condition_mask CondMask = $26 & $27 102branch_if_no_lanes_active branch_if_no_lanes_active +24 (label 4 at #124) 103store_loop_mask $23 = LoopMask 104label label 0x00000018 105copy_constant $32 = 0 106copy_constant $24 = 0 107copy_uniform $25 = colorGreen(1) 108cmplt_float $24 = lessThan($24, $25) 109branch_if_no_active_lanes_eq branch +4 (label 25 at #111) if no lanes of $24 == 0xFFFFFFFF 110branch_if_all_lanes_active branch_if_all_lanes_active +11 (label 23 at #119) 111mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 112jump jump +3 (label 26 at #113) 113label label 0x00000019 114continue_op $32 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask) 115label label 0x0000001A 116reenable_loop_mask LoopMask |= $32 117copy_constant $24 = 0 118merge_loop_mask LoopMask &= $24 119stack_rewind 120branch_if_any_lanes_active branch_if_any_lanes_active -16 (label 24 at #102) 121label label 0x00000017 122load_loop_mask LoopMask = $23 123copy_constant $23 = 0xFFFFFFFF 124label label 0x00000016 125copy_slot_masked $22 = Mask($23) 126label label 0x00000004 127load_condition_mask CondMask = $26 128copy_constant $16 = 0 129merge_condition_mask CondMask = $21 & $22 130branch_if_no_lanes_active branch_if_no_lanes_active +26 (label 3 at #154) 131store_return_mask $17 = RetMask 132store_loop_mask $18 = LoopMask 133label label 0x0000001D 134copy_uniform $19 = colorGreen(1) 135cmpeq_imm_float $19 = equal($19, 0) 136branch_if_no_active_lanes_eq branch +5 (label 30 at #139) if no lanes of $19 == 0xFFFFFFFF 137copy_constant $20 = 0 138copy_slot_masked [test_else].result = Mask($20) 139mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 140jump jump +5 (label 31 at #143) 141label label 0x0000001E 142copy_constant $20 = 0xFFFFFFFF 143copy_slot_masked [test_else].result = Mask($20) 144mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 145label label 0x0000001F 146copy_constant $19 = 0 147merge_loop_mask LoopMask &= $19 148stack_rewind 149branch_if_any_lanes_active branch_if_any_lanes_active -16 (label 29 at #131) 150label label 0x0000001C 151load_loop_mask LoopMask = $18 152load_return_mask RetMask = $17 153copy_slot_unmasked $17 = [test_else].result 154label label 0x0000001B 155copy_slot_masked $16 = Mask($17) 156label label 0x00000003 157load_condition_mask CondMask = $21 158copy_constant $13 = 0 159merge_condition_mask CondMask = $15 & $16 160branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 2 at #162) 161copy_constant $14 = 0xFFFFFFFF 162label label 0x00000020 163copy_slot_masked $13 = Mask($14) 164label label 0x00000002 165load_condition_mask CondMask = $15 166copy_constant $0 = 0 167merge_condition_mask CondMask = $12 & $13 168branch_if_no_lanes_active branch_if_no_lanes_active +21 (label 1 at #187) 169copy_constant x = 0 170store_loop_mask $1 = LoopMask 171jump jump +7 (label 35 at #176) 172label label 0x00000024 173branch_if_all_lanes_active branch_if_all_lanes_active +11 (label 34 at #182) 174mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 175copy_slot_unmasked $2 = x 176add_imm_int $2 += 0x00000001 177copy_slot_masked x = Mask($2) 178label label 0x00000023 179copy_slot_unmasked $2 = x 180cmple_imm_int $2 = lessThanEqual($2, 0x00000001) 181merge_loop_mask LoopMask &= $2 182stack_rewind 183branch_if_any_lanes_active branch_if_any_lanes_active -11 (label 36 at #170) 184label label 0x00000022 185load_loop_mask LoopMask = $1 186copy_constant $1 = 0xFFFFFFFF 187label label 0x00000021 188copy_slot_masked $0 = Mask($1) 189label label 0x00000001 190load_condition_mask CondMask = $12 191swizzle_4 $0..3 = ($0..3).xxxx 192copy_4_uniforms $4..7 = colorRed 193copy_4_uniforms $8..11 = colorGreen 194mix_4_ints $0..3 = mix($4..7, $8..11, $0..3) 195load_src src.rgba = $0..3 196