1363 instructions 2 3[immutable slots] 4i0 = 0x00000002 (2.802597e-45) 5i1 = 0x00000003 (4.203895e-45) 6i2 = 0x00000004 (5.605194e-45) 7 8store_src_rg coords = src.rg 9init_lane_masks CondMask = LoopMask = RetMask = true 10copy_uniform f1 = colorGreen(1) 11copy_uniform $0 = colorGreen(1) 12mul_imm_float $0 *= 0x40000000 (2.0) 13copy_slot_unmasked f2 = $0 14copy_uniform $0 = colorGreen(1) 15mul_imm_float $0 *= 0x40400000 (3.0) 16copy_slot_unmasked f3 = $0 17copy_uniform $0 = colorGreen(1) 18mul_imm_float $0 *= 0x40800000 (4.0) 19copy_slot_unmasked f4 = $0 20copy_slot_unmasked $0 = f1 21add_imm_float $0 += 0x3F800000 (1.0) 22copy_slot_unmasked $1 = f2 23add_imm_float $1 += 0x3F800000 (1.0) 24copy_slot_unmasked $2 = f3 25add_imm_float $2 += 0x3F800000 (1.0) 26copy_slot_unmasked $3 = f4 27add_imm_float $3 += 0x3F800000 (1.0) 28copy_4_slots_unmasked _0_expected = $0..3 29copy_uniform _1_one = colorRed(0) 30copy_slot_unmasked $0 = f1 31copy_slot_unmasked $1 = _1_one 32mul_float $0 *= $1 33copy_slot_unmasked $1 = f2 34copy_slot_unmasked $2 = _1_one 35mul_float $1 *= $2 36copy_slot_unmasked $2 = f3 37copy_slot_unmasked $3 = _1_one 38mul_float $2 *= $3 39copy_slot_unmasked $3 = f4 40copy_slot_unmasked $4 = _1_one 41mul_float $3 *= $4 42copy_4_slots_unmasked _2_m2 = $0..3 43splat_4_constants $4..7 = 0x3F800000 (1.0) 44add_4_floats $0..3 += $4..7 45copy_4_slots_unmasked _2_m2 = $0..3 46store_condition_mask $12 = CondMask 47store_condition_mask $25 = CondMask 48store_condition_mask $38 = CondMask 49store_condition_mask $51 = CondMask 50copy_slot_unmasked $52 = _2_m2(0) 51copy_slot_unmasked $53 = _0_expected(0) 52cmpeq_float $52 = equal($52, $53) 53copy_2_slots_unmasked $53..54 = _2_m2(0..1) 54copy_slot_unmasked $53 = $54 55copy_2_slots_unmasked $54..55 = _0_expected(0..1) 56copy_slot_unmasked $54 = $55 57cmpeq_float $53 = equal($53, $54) 58bitwise_and_int $52 &= $53 59copy_slot_unmasked $53 = _2_m2(2) 60copy_slot_unmasked $54 = _0_expected(2) 61cmpeq_float $53 = equal($53, $54) 62bitwise_and_int $52 &= $53 63copy_2_slots_unmasked $53..54 = _2_m2(2..3) 64copy_slot_unmasked $53 = $54 65copy_2_slots_unmasked $54..55 = _0_expected(2..3) 66copy_slot_unmasked $54 = $55 67cmpeq_float $53 = equal($53, $54) 68bitwise_and_int $52 &= $53 69copy_constant $39 = 0 70merge_condition_mask CondMask = $51 & $52 71branch_if_no_lanes_active branch_if_no_lanes_active +88 (label 4 at #152) 72copy_constant op = 0x00000002 (2.802597e-45) 73copy_slot_unmasked $40 = f1 74add_imm_float $40 += 0xBF800000 (-1.0) 75copy_slot_unmasked $41 = f2 76add_imm_float $41 += 0xBF800000 (-1.0) 77copy_slot_unmasked $42 = f3 78add_imm_float $42 += 0xBF800000 (-1.0) 79copy_slot_unmasked $43 = f4 80add_imm_float $43 += 0xBF800000 (-1.0) 81copy_4_slots_unmasked expected = $40..43 82copy_uniform one = colorRed(0) 83copy_slot_unmasked $40 = f1 84copy_slot_unmasked $41 = one 85mul_float $40 *= $41 86copy_slot_unmasked $41 = f2 87copy_slot_unmasked $42 = one 88mul_float $41 *= $42 89copy_slot_unmasked $42 = f3 90copy_slot_unmasked $43 = one 91mul_float $42 *= $43 92copy_slot_unmasked $43 = f4 93copy_slot_unmasked $44 = one 94mul_float $43 *= $44 95copy_4_slots_unmasked m2 = $40..43 96store_loop_mask $40 = LoopMask 97copy_slot_unmasked $41 = op 98store_loop_mask $42 = LoopMask 99mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 100case_op if ($41 == 0x00000001) { LoopMask = true; $42 = false; } 101branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 7 at #101) 102copy_4_slots_unmasked $43..46 = m2 103splat_4_constants $47..50 = 0x3F800000 (1.0) 104add_4_floats $43..46 += $47..50 105copy_4_slots_masked m2 = Mask($43..46) 106branch_if_all_lanes_active branch_if_all_lanes_active +30 (label 6 at #129) 107mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 108label label 0x00000007 109case_op if ($41 == 0x00000002) { LoopMask = true; $42 = false; } 110branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 8 at #110) 111copy_4_slots_unmasked $43..46 = m2 112splat_4_constants $47..50 = 0x3F800000 (1.0) 113sub_4_floats $43..46 -= $47..50 114copy_4_slots_masked m2 = Mask($43..46) 115branch_if_all_lanes_active branch_if_all_lanes_active +21 (label 6 at #129) 116mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 117label label 0x00000008 118case_op if ($41 == 0x00000003) { LoopMask = true; $42 = false; } 119branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 9 at #119) 120copy_4_slots_unmasked $43..46 = m2 121splat_4_constants $47..50 = 0x40000000 (2.0) 122mul_4_floats $43..46 *= $47..50 123copy_4_slots_masked m2 = Mask($43..46) 124branch_if_all_lanes_active branch_if_all_lanes_active +12 (label 6 at #129) 125mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 126label label 0x00000009 127case_op if ($41 == 0x00000004) { LoopMask = true; $42 = false; } 128branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 10 at #128) 129copy_4_slots_unmasked $43..46 = m2 130splat_4_constants $47..50 = 0x3F000000 (0.5) 131mul_4_floats $43..46 *= $47..50 132copy_4_slots_masked m2 = Mask($43..46) 133branch_if_all_lanes_active branch_if_all_lanes_active +3 (label 6 at #129) 134mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 135label label 0x0000000A 136label label 0x00000006 137load_loop_mask LoopMask = $40 138copy_slot_unmasked $40 = m2(0) 139copy_slot_unmasked $41 = expected(0) 140cmpeq_float $40 = equal($40, $41) 141copy_2_slots_unmasked $41..42 = m2(0..1) 142copy_slot_unmasked $41 = $42 143copy_2_slots_unmasked $42..43 = expected(0..1) 144copy_slot_unmasked $42 = $43 145cmpeq_float $41 = equal($41, $42) 146bitwise_and_int $40 &= $41 147copy_slot_unmasked $41 = m2(2) 148copy_slot_unmasked $42 = expected(2) 149cmpeq_float $41 = equal($41, $42) 150bitwise_and_int $40 &= $41 151copy_2_slots_unmasked $41..42 = m2(2..3) 152copy_slot_unmasked $41 = $42 153copy_2_slots_unmasked $42..43 = expected(2..3) 154copy_slot_unmasked $42 = $43 155cmpeq_float $41 = equal($41, $42) 156bitwise_and_int $40 &= $41 157label label 0x00000005 158copy_slot_masked $39 = Mask($40) 159label label 0x00000004 160load_condition_mask CondMask = $51 161copy_constant $26 = 0 162merge_condition_mask CondMask = $38 & $39 163branch_if_no_lanes_active branch_if_no_lanes_active +88 (label 3 at #244) 164copy_constant op = 0x00000003 (4.203895e-45) 165copy_slot_unmasked $27 = f1 166mul_imm_float $27 *= 0x40000000 (2.0) 167copy_slot_unmasked $28 = f2 168mul_imm_float $28 *= 0x40000000 (2.0) 169copy_slot_unmasked $29 = f3 170mul_imm_float $29 *= 0x40000000 (2.0) 171copy_slot_unmasked $30 = f4 172mul_imm_float $30 *= 0x40000000 (2.0) 173copy_4_slots_unmasked expected = $27..30 174copy_uniform one = colorRed(0) 175copy_slot_unmasked $27 = f1 176copy_slot_unmasked $28 = one 177mul_float $27 *= $28 178copy_slot_unmasked $28 = f2 179copy_slot_unmasked $29 = one 180mul_float $28 *= $29 181copy_slot_unmasked $29 = f3 182copy_slot_unmasked $30 = one 183mul_float $29 *= $30 184copy_slot_unmasked $30 = f4 185copy_slot_unmasked $31 = one 186mul_float $30 *= $31 187copy_4_slots_unmasked m2 = $27..30 188store_loop_mask $27 = LoopMask 189copy_slot_unmasked $28 = op 190store_loop_mask $29 = LoopMask 191mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 192case_op if ($28 == 0x00000001) { LoopMask = true; $29 = false; } 193branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 13 at #193) 194copy_4_slots_unmasked $30..33 = m2 195splat_4_constants $34..37 = 0x3F800000 (1.0) 196add_4_floats $30..33 += $34..37 197copy_4_slots_masked m2 = Mask($30..33) 198branch_if_all_lanes_active branch_if_all_lanes_active +30 (label 12 at #221) 199mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 200label label 0x0000000D 201case_op if ($28 == 0x00000002) { LoopMask = true; $29 = false; } 202branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 14 at #202) 203copy_4_slots_unmasked $30..33 = m2 204splat_4_constants $34..37 = 0x3F800000 (1.0) 205sub_4_floats $30..33 -= $34..37 206copy_4_slots_masked m2 = Mask($30..33) 207branch_if_all_lanes_active branch_if_all_lanes_active +21 (label 12 at #221) 208mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 209label label 0x0000000E 210case_op if ($28 == 0x00000003) { LoopMask = true; $29 = false; } 211branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 15 at #211) 212copy_4_slots_unmasked $30..33 = m2 213splat_4_constants $34..37 = 0x40000000 (2.0) 214mul_4_floats $30..33 *= $34..37 215copy_4_slots_masked m2 = Mask($30..33) 216branch_if_all_lanes_active branch_if_all_lanes_active +12 (label 12 at #221) 217mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 218label label 0x0000000F 219case_op if ($28 == 0x00000004) { LoopMask = true; $29 = false; } 220branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 16 at #220) 221copy_4_slots_unmasked $30..33 = m2 222splat_4_constants $34..37 = 0x3F000000 (0.5) 223mul_4_floats $30..33 *= $34..37 224copy_4_slots_masked m2 = Mask($30..33) 225branch_if_all_lanes_active branch_if_all_lanes_active +3 (label 12 at #221) 226mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 227label label 0x00000010 228label label 0x0000000C 229load_loop_mask LoopMask = $27 230copy_slot_unmasked $27 = m2(0) 231copy_slot_unmasked $28 = expected(0) 232cmpeq_float $27 = equal($27, $28) 233copy_2_slots_unmasked $28..29 = m2(0..1) 234copy_slot_unmasked $28 = $29 235copy_2_slots_unmasked $29..30 = expected(0..1) 236copy_slot_unmasked $29 = $30 237cmpeq_float $28 = equal($28, $29) 238bitwise_and_int $27 &= $28 239copy_slot_unmasked $28 = m2(2) 240copy_slot_unmasked $29 = expected(2) 241cmpeq_float $28 = equal($28, $29) 242bitwise_and_int $27 &= $28 243copy_2_slots_unmasked $28..29 = m2(2..3) 244copy_slot_unmasked $28 = $29 245copy_2_slots_unmasked $29..30 = expected(2..3) 246copy_slot_unmasked $29 = $30 247cmpeq_float $28 = equal($28, $29) 248bitwise_and_int $27 &= $28 249label label 0x0000000B 250copy_slot_masked $26 = Mask($27) 251label label 0x00000003 252load_condition_mask CondMask = $38 253copy_constant $13 = 0 254merge_condition_mask CondMask = $25 & $26 255branch_if_no_lanes_active branch_if_no_lanes_active +88 (label 2 at #336) 256copy_constant op = 0x00000004 (5.605194e-45) 257copy_slot_unmasked $14 = f1 258mul_imm_float $14 *= 0x3F000000 (0.5) 259copy_slot_unmasked $15 = f2 260mul_imm_float $15 *= 0x3F000000 (0.5) 261copy_slot_unmasked $16 = f3 262mul_imm_float $16 *= 0x3F000000 (0.5) 263copy_slot_unmasked $17 = f4 264mul_imm_float $17 *= 0x3F000000 (0.5) 265copy_4_slots_unmasked expected = $14..17 266copy_uniform one = colorRed(0) 267copy_slot_unmasked $14 = f1 268copy_slot_unmasked $15 = one 269mul_float $14 *= $15 270copy_slot_unmasked $15 = f2 271copy_slot_unmasked $16 = one 272mul_float $15 *= $16 273copy_slot_unmasked $16 = f3 274copy_slot_unmasked $17 = one 275mul_float $16 *= $17 276copy_slot_unmasked $17 = f4 277copy_slot_unmasked $18 = one 278mul_float $17 *= $18 279copy_4_slots_unmasked m2 = $14..17 280store_loop_mask $14 = LoopMask 281copy_slot_unmasked $15 = op 282store_loop_mask $16 = LoopMask 283mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 284case_op if ($15 == 0x00000001) { LoopMask = true; $16 = false; } 285branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 19 at #285) 286copy_4_slots_unmasked $17..20 = m2 287splat_4_constants $21..24 = 0x3F800000 (1.0) 288add_4_floats $17..20 += $21..24 289copy_4_slots_masked m2 = Mask($17..20) 290branch_if_all_lanes_active branch_if_all_lanes_active +30 (label 18 at #313) 291mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 292label label 0x00000013 293case_op if ($15 == 0x00000002) { LoopMask = true; $16 = false; } 294branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 20 at #294) 295copy_4_slots_unmasked $17..20 = m2 296splat_4_constants $21..24 = 0x3F800000 (1.0) 297sub_4_floats $17..20 -= $21..24 298copy_4_slots_masked m2 = Mask($17..20) 299branch_if_all_lanes_active branch_if_all_lanes_active +21 (label 18 at #313) 300mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 301label label 0x00000014 302case_op if ($15 == 0x00000003) { LoopMask = true; $16 = false; } 303branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 21 at #303) 304copy_4_slots_unmasked $17..20 = m2 305splat_4_constants $21..24 = 0x40000000 (2.0) 306mul_4_floats $17..20 *= $21..24 307copy_4_slots_masked m2 = Mask($17..20) 308branch_if_all_lanes_active branch_if_all_lanes_active +12 (label 18 at #313) 309mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 310label label 0x00000015 311case_op if ($15 == 0x00000004) { LoopMask = true; $16 = false; } 312branch_if_no_lanes_active branch_if_no_lanes_active +7 (label 22 at #312) 313copy_4_slots_unmasked $17..20 = m2 314splat_4_constants $21..24 = 0x3F000000 (0.5) 315mul_4_floats $17..20 *= $21..24 316copy_4_slots_masked m2 = Mask($17..20) 317branch_if_all_lanes_active branch_if_all_lanes_active +3 (label 18 at #313) 318mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 319label label 0x00000016 320label label 0x00000012 321load_loop_mask LoopMask = $14 322copy_slot_unmasked $14 = m2(0) 323copy_slot_unmasked $15 = expected(0) 324cmpeq_float $14 = equal($14, $15) 325copy_2_slots_unmasked $15..16 = m2(0..1) 326copy_slot_unmasked $15 = $16 327copy_2_slots_unmasked $16..17 = expected(0..1) 328copy_slot_unmasked $16 = $17 329cmpeq_float $15 = equal($15, $16) 330bitwise_and_int $14 &= $15 331copy_slot_unmasked $15 = m2(2) 332copy_slot_unmasked $16 = expected(2) 333cmpeq_float $15 = equal($15, $16) 334bitwise_and_int $14 &= $15 335copy_2_slots_unmasked $15..16 = m2(2..3) 336copy_slot_unmasked $15 = $16 337copy_2_slots_unmasked $16..17 = expected(2..3) 338copy_slot_unmasked $16 = $17 339cmpeq_float $15 = equal($15, $16) 340bitwise_and_int $14 &= $15 341label label 0x00000011 342copy_slot_masked $13 = Mask($14) 343label label 0x00000002 344load_condition_mask CondMask = $25 345copy_constant $0 = 0 346merge_condition_mask CondMask = $12 & $13 347branch_if_no_lanes_active branch_if_no_lanes_active +40 (label 1 at #380) 348copy_uniform $1 = colorRed(0) 349mul_imm_float $1 *= 0x41200000 (10.0) 350copy_slot_unmasked ten = $1 351copy_slot_unmasked $2 = $1 352copy_slot_unmasked $3 = ten 353copy_slot_unmasked $4 = $3 354copy_4_slots_unmasked mat = $1..4 355copy_constant $5 = 0x3F800000 (1.0) 356copy_uniform $6 = testInputs(0) 357div_float $5 /= $6 358swizzle_4 $5..8 = ($5..8).xxxx 359mul_4_floats $1..4 *= $5..8 360copy_4_slots_unmasked div = $1..4 361copy_4_slots_unmasked $1..4 = mat 362copy_constant $5 = 0x3F800000 (1.0) 363copy_uniform $6 = testInputs(0) 364div_float $5 /= $6 365swizzle_4 $5..8 = ($5..8).xxxx 366mul_4_floats $1..4 *= $5..8 367copy_4_slots_masked mat = Mask($1..4) 368copy_4_slots_unmasked $1..4 = div 369splat_4_constants $5..8 = 0x41000000 (8.0) 370add_4_floats $1..4 += $5..8 371bitwise_and_imm_4_ints $1..4 &= 0x7FFFFFFF 372splat_4_constants $5..8 = 0x3C23D70A (0.01) 373cmplt_4_floats $1..4 = lessThan($1..4, $5..8) 374bitwise_and_2_ints $1..2 &= $3..4 375bitwise_and_int $1 &= $2 376copy_4_slots_unmasked $2..5 = mat 377splat_4_constants $6..9 = 0x41000000 (8.0) 378add_4_floats $2..5 += $6..9 379bitwise_and_imm_4_ints $2..5 &= 0x7FFFFFFF 380splat_4_constants $6..9 = 0x3C23D70A (0.01) 381cmplt_4_floats $2..5 = lessThan($2..5, $6..9) 382bitwise_and_2_ints $2..3 &= $4..5 383bitwise_and_int $2 &= $3 384bitwise_and_int $1 &= $2 385label label 0x00000017 386copy_slot_masked $0 = Mask($1) 387label label 0x00000001 388load_condition_mask CondMask = $12 389swizzle_4 $0..3 = ($0..3).xxxx 390copy_4_uniforms $4..7 = colorRed 391copy_4_uniforms $8..11 = colorGreen 392mix_4_ints $0..3 = mix($4..7, $8..11, $0..3) 393load_src src.rgba = $0..3 394