1303 instructions 2 3store_src_rg coords = src.rg 4init_lane_masks CondMask = LoopMask = RetMask = true 5store_condition_mask $12 = CondMask 6store_condition_mask $20 = CondMask 7store_condition_mask $28 = CondMask 8store_condition_mask $36 = CondMask 9store_condition_mask $42 = CondMask 10store_condition_mask $49 = CondMask 11store_condition_mask $56 = CondMask 12store_condition_mask $60 = CondMask 13store_condition_mask $64 = CondMask 14store_condition_mask $69 = CondMask 15store_condition_mask $74 = CondMask 16branch_if_no_lanes_active branch_if_no_lanes_active +20 (label 12 at #34) 17store_return_mask $75 = RetMask 18store_loop_mask $76 = LoopMask 19jump jump +5 (label 14 at #22) 20label label 0x0000000F 21copy_constant $77 = 0 22copy_slot_masked [inside_while_loop].result = Mask($77) 23mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 24label label 0x0000000E 25copy_uniform $77 = unknownInput 26cmpeq_imm_float $77 = equal($77, 0x42F60000 (123.0)) 27merge_loop_mask LoopMask &= $77 28stack_rewind 29branch_if_any_lanes_active branch_if_any_lanes_active -9 (label 15 at #18) 30label label 0x0000000D 31load_loop_mask LoopMask = $76 32copy_constant $76 = 0xFFFFFFFF 33copy_slot_masked [inside_while_loop].result = Mask($76) 34load_return_mask RetMask = $75 35copy_slot_unmasked $75 = [inside_while_loop].result 36label label 0x0000000C 37copy_constant $70 = 0 38merge_condition_mask CondMask = $74 & $75 39branch_if_no_lanes_active branch_if_no_lanes_active +17 (label 11 at #54) 40store_return_mask $71 = RetMask 41store_loop_mask $72 = LoopMask 42label label 0x00000012 43copy_constant $73 = 0xFFFFFFFF 44copy_slot_masked [inside_infinite_do_loop].result = Mask($73) 45mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 46copy_constant $73 = 0xFFFFFFFF 47merge_loop_mask LoopMask &= $73 48stack_rewind 49branch_if_any_lanes_active branch_if_any_lanes_active -7 (label 18 at #40) 50label label 0x00000011 51load_loop_mask LoopMask = $72 52load_return_mask RetMask = $71 53copy_slot_unmasked $71 = [inside_infinite_do_loop].result 54label label 0x00000010 55copy_slot_masked $70 = Mask($71) 56label label 0x0000000B 57load_condition_mask CondMask = $74 58copy_constant $65 = 0 59merge_condition_mask CondMask = $69 & $70 60branch_if_no_lanes_active branch_if_no_lanes_active +19 (label 10 at #77) 61store_return_mask $66 = RetMask 62store_loop_mask $67 = LoopMask 63jump jump +5 (label 21 at #66) 64label label 0x00000016 65copy_constant $68 = 0xFFFFFFFF 66copy_slot_masked [inside_infinite_while_loop].result = Mask($68) 67mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 68label label 0x00000015 69copy_constant $68 = 0xFFFFFFFF 70merge_loop_mask LoopMask &= $68 71stack_rewind 72branch_if_any_lanes_active branch_if_any_lanes_active -8 (label 22 at #62) 73label label 0x00000014 74load_loop_mask LoopMask = $67 75load_return_mask RetMask = $66 76copy_slot_unmasked $66 = [inside_infinite_while_loop].result 77label label 0x00000013 78copy_slot_masked $65 = Mask($66) 79label label 0x0000000A 80load_condition_mask CondMask = $69 81copy_constant $61 = 0 82merge_condition_mask CondMask = $64 & $65 83branch_if_no_lanes_active branch_if_no_lanes_active +14 (label 9 at #95) 84store_loop_mask $62 = LoopMask 85label label 0x00000019 86branch_if_all_lanes_active branch_if_all_lanes_active +6 (label 24 at #90) 87mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 88copy_constant $63 = 0xFFFFFFFF 89merge_loop_mask LoopMask &= $63 90stack_rewind 91branch_if_any_lanes_active branch_if_any_lanes_active -6 (label 25 at #83) 92label label 0x00000018 93load_loop_mask LoopMask = $62 94copy_constant $62 = 0xFFFFFFFF 95label label 0x00000017 96copy_slot_masked $61 = Mask($62) 97label label 0x00000009 98load_condition_mask CondMask = $64 99copy_constant $57 = 0 100merge_condition_mask CondMask = $60 & $61 101branch_if_no_lanes_active branch_if_no_lanes_active +16 (label 8 at #115) 102store_loop_mask $58 = LoopMask 103jump jump +4 (label 28 at #105) 104label label 0x0000001D 105branch_if_all_lanes_active branch_if_all_lanes_active +7 (label 27 at #110) 106mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 107label label 0x0000001C 108copy_constant $59 = 0xFFFFFFFF 109merge_loop_mask LoopMask &= $59 110stack_rewind 111branch_if_any_lanes_active branch_if_any_lanes_active -7 (label 29 at #102) 112label label 0x0000001B 113load_loop_mask LoopMask = $58 114copy_constant $58 = 0xFFFFFFFF 115label label 0x0000001A 116copy_slot_masked $57 = Mask($58) 117label label 0x00000008 118load_condition_mask CondMask = $60 119copy_constant $50 = 0 120merge_condition_mask CondMask = $56 & $57 121branch_if_no_lanes_active branch_if_no_lanes_active +31 (label 7 at #150) 122store_return_mask $51 = RetMask 123store_loop_mask $52 = LoopMask 124copy_uniform $53 = unknownInput 125cast_to_int_from_float $53 = FloatToInt($53) 126store_loop_mask $54 = LoopMask 127mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 128case_op if ($53 == 0x00000001) { LoopMask = true; $54 = false; } 129branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 32 at #131) 130copy_constant $55 = 0xFFFFFFFF 131copy_slot_masked [switch_with_all_returns].result = Mask($55) 132mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 133label label 0x00000020 134case_op if ($53 == 0x00000002) { LoopMask = true; $54 = false; } 135branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 33 at #137) 136copy_constant $55 = 0 137copy_slot_masked [switch_with_all_returns].result = Mask($55) 138mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 139label label 0x00000021 140reenable_loop_mask LoopMask |= $54 141branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 34 at #143) 142copy_constant $54 = 0 143copy_slot_masked [switch_with_all_returns].result = Mask($54) 144mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 145label label 0x00000022 146label label 0x0000001F 147load_loop_mask LoopMask = $52 148load_return_mask RetMask = $51 149copy_slot_unmasked $51 = [switch_with_all_returns].result 150label label 0x0000001E 151copy_slot_masked $50 = Mask($51) 152label label 0x00000007 153load_condition_mask CondMask = $56 154copy_constant $43 = 0 155merge_condition_mask CondMask = $49 & $50 156branch_if_no_lanes_active branch_if_no_lanes_active +27 (label 6 at #181) 157store_return_mask $44 = RetMask 158store_loop_mask $45 = LoopMask 159copy_uniform $46 = unknownInput 160cast_to_int_from_float $46 = FloatToInt($46) 161store_loop_mask $47 = LoopMask 162mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 163case_op if ($46 == 0x00000001) { LoopMask = true; $47 = false; } 164branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 37 at #166) 165copy_constant $48 = 0xFFFFFFFF 166copy_slot_masked [switch_fallthrough].result = Mask($48) 167mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 168label label 0x00000025 169case_op if ($46 == 0x00000002) { LoopMask = true; $47 = false; } 170label label 0x00000026 171reenable_loop_mask LoopMask |= $47 172branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 39 at #174) 173copy_constant $47 = 0 174copy_slot_masked [switch_fallthrough].result = Mask($47) 175mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 176label label 0x00000027 177label label 0x00000024 178load_loop_mask LoopMask = $45 179load_return_mask RetMask = $44 180copy_slot_unmasked $44 = [switch_fallthrough].result 181label label 0x00000023 182copy_slot_masked $43 = Mask($44) 183label label 0x00000006 184load_condition_mask CondMask = $49 185copy_constant $37 = 0 186merge_condition_mask CondMask = $42 & $43 187branch_if_no_lanes_active branch_if_no_lanes_active +23 (label 5 at #208) 188store_return_mask $38 = RetMask 189store_loop_mask $39 = LoopMask 190copy_uniform $40 = unknownInput 191cast_to_int_from_float $40 = FloatToInt($40) 192store_loop_mask $41 = LoopMask 193mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 194case_op if ($40 == 0x00000001) { LoopMask = true; $41 = false; } 195label label 0x0000002A 196case_op if ($40 == 0x00000002) { LoopMask = true; $41 = false; } 197label label 0x0000002B 198reenable_loop_mask LoopMask |= $41 199branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 44 at #201) 200copy_constant $41 = 0xFFFFFFFF 201copy_slot_masked [switch_fallthrough_twice].result = Mask($41) 202mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 203label label 0x0000002C 204label label 0x00000029 205load_loop_mask LoopMask = $39 206load_return_mask RetMask = $38 207copy_slot_unmasked $38 = [switch_fallthrough_twice].result 208label label 0x00000028 209copy_slot_masked $37 = Mask($38) 210label label 0x00000005 211load_condition_mask CondMask = $42 212copy_constant $29 = 0 213merge_condition_mask CondMask = $36 & $37 214branch_if_no_lanes_active branch_if_no_lanes_active +39 (label 4 at #251) 215store_return_mask $30 = RetMask 216store_loop_mask $31 = LoopMask 217copy_uniform $32 = unknownInput 218cast_to_int_from_float $32 = FloatToInt($32) 219store_loop_mask $33 = LoopMask 220mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 221case_op if ($32 == 0x00000001) { LoopMask = true; $33 = false; } 222branch_if_no_lanes_active branch_if_no_lanes_active +18 (label 47 at #238) 223copy_constant x = 0 224store_loop_mask $34 = LoopMask 225jump jump +7 (label 49 at #230) 226label label 0x00000032 227branch_if_all_lanes_active branch_if_all_lanes_active +11 (label 48 at #236) 228mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 229copy_slot_unmasked $35 = x 230add_imm_int $35 += 0x00000001 231copy_slot_masked x = Mask($35) 232label label 0x00000031 233copy_slot_unmasked $35 = x 234cmple_imm_int $35 = lessThanEqual($35, 0x0000000A) 235merge_loop_mask LoopMask &= $35 236stack_rewind 237branch_if_any_lanes_active branch_if_any_lanes_active -11 (label 50 at #224) 238label label 0x00000030 239load_loop_mask LoopMask = $34 240label label 0x0000002F 241reenable_loop_mask LoopMask |= $33 242branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 51 at #244) 243copy_constant $33 = 0xFFFFFFFF 244copy_slot_masked [switch_with_break_in_loop].result = Mask($33) 245mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 246label label 0x00000033 247label label 0x0000002E 248load_loop_mask LoopMask = $31 249load_return_mask RetMask = $30 250copy_slot_unmasked $30 = [switch_with_break_in_loop].result 251label label 0x0000002D 252copy_slot_masked $29 = Mask($30) 253label label 0x00000004 254load_condition_mask CondMask = $36 255copy_constant $21 = 0 256merge_condition_mask CondMask = $28 & $29 257branch_if_no_lanes_active branch_if_no_lanes_active +40 (label 3 at #295) 258store_return_mask $22 = RetMask 259store_loop_mask $23 = LoopMask 260copy_uniform $24 = unknownInput 261cast_to_int_from_float $24 = FloatToInt($24) 262store_loop_mask $25 = LoopMask 263mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 264case_op if ($24 == 0x00000001) { LoopMask = true; $25 = false; } 265branch_if_no_lanes_active branch_if_no_lanes_active +19 (label 54 at #282) 266copy_constant x₁ = 0 267store_loop_mask $26 = LoopMask 268jump jump +8 (label 56 at #274) 269label label 0x00000039 270copy_constant $36 = 0 271continue_op $36 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask) 272reenable_loop_mask LoopMask |= $36 273copy_slot_unmasked $27 = x₁ 274add_imm_int $27 += 0x00000001 275copy_slot_masked x₁ = Mask($27) 276label label 0x00000038 277copy_slot_unmasked $27 = x₁ 278cmple_imm_int $27 = lessThanEqual($27, 0x0000000A) 279merge_loop_mask LoopMask &= $27 280stack_rewind 281branch_if_any_lanes_active branch_if_any_lanes_active -12 (label 57 at #267) 282label label 0x00000037 283load_loop_mask LoopMask = $26 284label label 0x00000036 285reenable_loop_mask LoopMask |= $25 286branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 58 at #288) 287copy_constant $25 = 0xFFFFFFFF 288copy_slot_masked [switch_with_continue_in_loop].result = Mask($25) 289mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 290label label 0x0000003A 291label label 0x00000035 292load_loop_mask LoopMask = $23 293load_return_mask RetMask = $22 294copy_slot_unmasked $22 = [switch_with_continue_in_loop].result 295label label 0x00000034 296copy_slot_masked $21 = Mask($22) 297label label 0x00000003 298load_condition_mask CondMask = $28 299copy_constant $13 = 0 300merge_condition_mask CondMask = $20 & $21 301branch_if_no_lanes_active branch_if_no_lanes_active +34 (label 2 at #333) 302store_return_mask $14 = RetMask 303store_loop_mask $15 = LoopMask 304copy_uniform $16 = unknownInput 305cast_to_int_from_float $16 = FloatToInt($16) 306store_loop_mask $17 = LoopMask 307mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 308case_op if ($16 == 0x00000001) { LoopMask = true; $17 = false; } 309branch_if_no_lanes_active branch_if_no_lanes_active +13 (label 61 at #320) 310copy_uniform $18 = unknownInput 311cmpeq_imm_float $18 = equal($18, 0x42F60000 (123.0)) 312branch_if_no_active_lanes_eq branch +5 (label 62 at #315) if no lanes of $18 == 0xFFFFFFFF 313copy_constant $19 = 0 314copy_slot_masked [switch_with_if_that_returns].result = Mask($19) 315mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 316jump jump +5 (label 63 at #319) 317label label 0x0000003E 318copy_constant $19 = 0xFFFFFFFF 319copy_slot_masked [switch_with_if_that_returns].result = Mask($19) 320mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 321label label 0x0000003F 322label label 0x0000003D 323reenable_loop_mask LoopMask |= $17 324branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 64 at #326) 325copy_constant $17 = 0xFFFFFFFF 326copy_slot_masked [switch_with_if_that_returns].result = Mask($17) 327mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 328label label 0x00000040 329label label 0x0000003C 330load_loop_mask LoopMask = $15 331load_return_mask RetMask = $14 332copy_slot_unmasked $14 = [switch_with_if_that_returns].result 333label label 0x0000003B 334copy_slot_masked $13 = Mask($14) 335label label 0x00000002 336load_condition_mask CondMask = $20 337copy_constant $0 = 0 338merge_condition_mask CondMask = $12 & $13 339branch_if_no_lanes_active branch_if_no_lanes_active +29 (label 1 at #366) 340store_return_mask $1 = RetMask 341store_loop_mask $2 = LoopMask 342copy_uniform $3 = unknownInput 343cast_to_int_from_float $3 = FloatToInt($3) 344store_loop_mask $4 = LoopMask 345mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 346case_op if ($3 == 0x00000001) { LoopMask = true; $4 = false; } 347branch_if_no_lanes_active branch_if_no_lanes_active +8 (label 67 at #353) 348copy_uniform $5 = unknownInput 349cmpeq_imm_float $5 = equal($5, 0x42F60000 (123.0)) 350branch_if_no_active_lanes_eq branch +4 (label 68 at #352) if no lanes of $5 == 0xFFFFFFFF 351copy_constant $6 = 0 352copy_slot_masked [switch_with_one_sided_if_then_fallthrough].result = Mask($6) 353mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 354label label 0x00000044 355label label 0x00000043 356reenable_loop_mask LoopMask |= $4 357branch_if_no_lanes_active branch_if_no_lanes_active +4 (label 70 at #359) 358copy_constant $4 = 0xFFFFFFFF 359copy_slot_masked [switch_with_one_sided_if_then_fallthrough].result = Mask($4) 360mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 361label label 0x00000046 362label label 0x00000042 363load_loop_mask LoopMask = $2 364load_return_mask RetMask = $1 365copy_slot_unmasked $1 = [switch_with_one_sided_if_then_fallthrough].result 366label label 0x00000041 367copy_slot_masked $0 = Mask($1) 368label label 0x00000001 369load_condition_mask CondMask = $12 370swizzle_4 $0..3 = ($0..3).xxxx 371copy_4_uniforms $4..7 = colorRed 372copy_4_uniforms $8..11 = colorGreen 373mix_4_ints $0..3 = mix($4..7, $8..11, $0..3) 374load_src src.rgba = $0..3 375