1608 instructions 2 3[immutable slots] 4i0 = 0x41100000 (9.0) 5i1 = 0x3F800000 (1.0) 6i2 = 0x40000000 (2.0) 7i3 = 0x40400000 (3.0) 8i4 = 0x41100000 (9.0) 9i5 = 0x40400000 (3.0) 10i6 = 0x40000000 (2.0) 11i7 = 0x3F800000 (1.0) 12i8 = 0x41100000 (9.0) 13i9 = 0x41100000 (9.0) 14i10 = 0x41100000 (9.0) 15i11 = 0x3F800000 (1.0) 16 17store_device_xy01 $13..16 = DeviceCoords.xy01 18cmpeq_imm_float $13 = equal($13, 0x3F000000 (0.5)) 19cmpeq_imm_float $14 = equal($14, 0x3F000000 (0.5)) 20bitwise_and_int $13 &= $14 21store_src_rg pos = src.rg 22init_lane_masks CondMask = LoopMask = RetMask = true 23copy_4_uniforms colorRed = colorRed 24trace_var TraceVar(colorRed) when $13 is true 25copy_4_uniforms colorGreen = colorGreen 26trace_var TraceVar(colorGreen) when $13 is true 27copy_constant kZero = 0 28trace_var TraceVar(kZero) when $13 is true 29copy_constant kTen = 0x41200000 (10.0) 30trace_var TraceVar(kTen) when $13 is true 31trace_enter TraceEnter(half4 main(float2 pos)) when $13 is true 32trace_var TraceVar(pos) when $13 is true 33copy_constant $0 = 0 34copy_slot_unmasked $1 = $13 35copy_slot_masked $0 = Mask($1) 36trace_scope TraceScope(+1) when $0 is true 37trace_line TraceLine(116) when $13 is true 38copy_slot_unmasked $1 = pos(0) 39copy_uniform $2 = colorGreen(1) 40max_float $1 = max($1, $2) 41copy_uniform $2 = colorGreen(3) 42min_float $1 = min($1, $2) 43mul_imm_float $1 *= 0x40A00000 (5.0) 44copy_slot_unmasked five = $1 45trace_var TraceVar(five) when $13 is true 46trace_line TraceLine(117) when $13 is true 47store_condition_mask $17 = CondMask 48store_condition_mask $28 = CondMask 49store_condition_mask $39 = CondMask 50store_condition_mask $50 = CondMask 51store_condition_mask $61 = CondMask 52store_condition_mask $72 = CondMask 53store_condition_mask $79 = CondMask 54store_condition_mask $89 = CondMask 55store_condition_mask $99 = CondMask 56branch_if_no_lanes_active branch_if_no_lanes_active +62 (label 10 at #102) 57trace_enter TraceEnter(float return_loop(float five)) when $13 is true 58store_return_mask $100 = RetMask 59copy_constant $101 = 0 60copy_slot_unmasked $102 = $13 61copy_slot_masked $101 = Mask($102) 62trace_scope TraceScope(+1) when $101 is true 63copy_constant $102 = 0 64copy_slot_unmasked $103 = $13 65copy_slot_masked $102 = Mask($103) 66trace_scope TraceScope(+1) when $102 is true 67trace_line TraceLine(8) when $13 is true 68copy_constant i = 0 69trace_var TraceVar(i) when $13 is true 70store_loop_mask $103 = LoopMask 71jump jump +29 (label 12 at #84) 72label label 0x0000000D 73copy_constant $104 = 0 74copy_slot_unmasked $105 = $13 75copy_slot_masked $104 = Mask($105) 76trace_scope TraceScope(+1) when $104 is true 77trace_line TraceLine(9) when $13 is true 78store_condition_mask $105 = CondMask 79copy_slot_unmasked $106 = i 80copy_slot_unmasked $107 = five 81cmpeq_float $106 = equal($106, $107) 82merge_condition_mask CondMask = $105 & $106 83copy_constant $107 = 0 84copy_slot_unmasked $108 = $13 85copy_slot_masked $107 = Mask($108) 86trace_scope TraceScope(+1) when $107 is true 87trace_line TraceLine(9) when $13 is true 88copy_slot_unmasked $108 = i 89copy_slot_masked [return_loop].result = Mask($108) 90trace_var TraceVar([return_loop].result) when $13 is true 91mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 92trace_scope TraceScope(-1) when $107 is true 93load_condition_mask CondMask = $105 94trace_scope TraceScope(-1) when $104 is true 95trace_line TraceLine(8) when $13 is true 96copy_slot_unmasked $104 = i 97add_imm_float $104 += 0x3F800000 (1.0) 98copy_slot_masked i = Mask($104) 99trace_var TraceVar(i) when $13 is true 100label label 0x0000000C 101copy_slot_unmasked $104 = i 102cmplt_imm_float $104 = lessThan($104, 0x41200000 (10.0)) 103merge_loop_mask LoopMask &= $104 104stack_rewind 105branch_if_any_lanes_active branch_if_any_lanes_active -33 (label 13 at #56) 106label label 0x0000000B 107load_loop_mask LoopMask = $103 108trace_scope TraceScope(-1) when $102 is true 109trace_line TraceLine(11) when $13 is true 110copy_constant $102 = 0 111copy_slot_masked [return_loop].result = Mask($102) 112trace_var TraceVar([return_loop].result) when $13 is true 113mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) 114trace_scope TraceScope(-1) when $101 is true 115load_return_mask RetMask = $100 116trace_exit TraceExit(float return_loop(float five)) when $13 is true 117copy_slot_unmasked $100 = [return_loop].result 118label label 0x0000000A 119cmpeq_imm_float $100 = equal($100, 0x40A00000 (5.0)) 120copy_constant $90 = 0 121merge_condition_mask CondMask = $99 & $100 122branch_if_no_lanes_active branch_if_no_lanes_active +69 (label 9 at #175) 123trace_enter TraceEnter(float continue_loop(float five)) when $13 is true 124copy_constant $91 = 0 125copy_slot_unmasked $92 = $13 126copy_slot_masked $91 = Mask($92) 127trace_scope TraceScope(+1) when $91 is true 128trace_line TraceLine(17) when $13 is true 129copy_constant sum = 0 130trace_var TraceVar(sum) when $13 is true 131copy_constant $92 = 0 132copy_slot_unmasked $93 = $13 133copy_slot_masked $92 = Mask($93) 134trace_scope TraceScope(+1) when $92 is true 135trace_line TraceLine(18) when $13 is true 136copy_constant i₁ = 0 137trace_var TraceVar(i₁) when $13 is true 138store_loop_mask $93 = LoopMask 139jump jump +33 (label 16 at #156) 140label label 0x00000011 141copy_constant $109 = 0 142copy_constant $94 = 0 143copy_slot_unmasked $95 = $13 144copy_slot_masked $94 = Mask($95) 145trace_scope TraceScope(+1) when $94 is true 146trace_line TraceLine(19) when $13 is true 147store_condition_mask $95 = CondMask 148copy_slot_unmasked $96 = i₁ 149copy_slot_unmasked $97 = five 150cmplt_float $96 = lessThan($96, $97) 151merge_condition_mask CondMask = $95 & $96 152copy_constant $97 = 0 153copy_slot_unmasked $98 = $13 154copy_slot_masked $97 = Mask($98) 155trace_scope TraceScope(+1) when $97 is true 156trace_line TraceLine(19) when $13 is true 157continue_op $109 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask) 158trace_scope TraceScope(-1) when $97 is true 159load_condition_mask CondMask = $95 160trace_line TraceLine(20) when $13 is true 161copy_2_slots_unmasked $95..96 = sum, i₁ 162add_float $95 += $96 163copy_slot_masked sum = Mask($95) 164trace_var TraceVar(sum) when $13 is true 165trace_scope TraceScope(-1) when $94 is true 166reenable_loop_mask LoopMask |= $109 167trace_line TraceLine(18) when $13 is true 168copy_slot_unmasked $94 = i₁ 169add_imm_float $94 += 0x3F800000 (1.0) 170copy_slot_masked i₁ = Mask($94) 171trace_var TraceVar(i₁) when $13 is true 172label label 0x00000010 173copy_slot_unmasked $94 = i₁ 174cmplt_imm_float $94 = lessThan($94, 0x41200000 (10.0)) 175merge_loop_mask LoopMask &= $94 176stack_rewind 177branch_if_any_lanes_active branch_if_any_lanes_active -37 (label 17 at #124) 178label label 0x0000000F 179load_loop_mask LoopMask = $93 180trace_scope TraceScope(-1) when $92 is true 181trace_line TraceLine(22) when $13 is true 182copy_slot_unmasked $92 = sum 183copy_slot_masked [continue_loop].result = Mask($92) 184trace_var TraceVar([continue_loop].result) when $13 is true 185trace_scope TraceScope(-1) when $91 is true 186trace_exit TraceExit(float continue_loop(float five)) when $13 is true 187copy_slot_unmasked $91 = [continue_loop].result 188label label 0x0000000E 189cmpeq_imm_float $91 = equal($91, 0x420C0000 (35.0)) 190copy_slot_masked $90 = Mask($91) 191label label 0x00000009 192load_condition_mask CondMask = $99 193copy_constant $80 = 0 194merge_condition_mask CondMask = $89 & $90 195branch_if_no_lanes_active branch_if_no_lanes_active +72 (label 8 at #251) 196trace_enter TraceEnter(float break_loop(float five)) when $13 is true 197copy_constant $81 = 0 198copy_slot_unmasked $82 = $13 199copy_slot_masked $81 = Mask($82) 200trace_scope TraceScope(+1) when $81 is true 201trace_line TraceLine(27) when $13 is true 202copy_constant sum₁ = 0 203trace_var TraceVar(sum₁) when $13 is true 204trace_line TraceLine(28) when $13 is true 205copy_constant kOne = 0x3F800000 (1.0) 206trace_var TraceVar(kOne) when $13 is true 207copy_constant $82 = 0 208copy_slot_unmasked $83 = $13 209copy_slot_masked $82 = Mask($83) 210trace_scope TraceScope(+1) when $82 is true 211trace_line TraceLine(29) when $13 is true 212copy_constant i₂ = 0 213trace_var TraceVar(i₂) when $13 is true 214store_loop_mask $83 = LoopMask 215jump jump +33 (label 20 at #232) 216label label 0x00000015 217copy_constant $84 = 0 218copy_slot_unmasked $85 = $13 219copy_slot_masked $84 = Mask($85) 220trace_scope TraceScope(+1) when $84 is true 221trace_line TraceLine(30) when $13 is true 222store_condition_mask $85 = CondMask 223copy_slot_unmasked $86 = five 224copy_slot_unmasked $87 = i₂ 225cmplt_float $86 = lessThan($86, $87) 226merge_condition_mask CondMask = $85 & $86 227copy_constant $87 = 0 228copy_slot_unmasked $88 = $13 229copy_slot_masked $87 = Mask($88) 230trace_scope TraceScope(+1) when $87 is true 231trace_line TraceLine(30) when $13 is true 232branch_if_all_lanes_active branch_if_all_lanes_active +22 (label 19 at #238) 233mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 234trace_scope TraceScope(-1) when $87 is true 235load_condition_mask CondMask = $85 236trace_line TraceLine(31) when $13 is true 237copy_slot_unmasked $85 = sum₁ 238copy_slot_unmasked $86 = i₂ 239add_float $85 += $86 240copy_slot_masked sum₁ = Mask($85) 241trace_var TraceVar(sum₁) when $13 is true 242trace_scope TraceScope(-1) when $84 is true 243trace_line TraceLine(29) when $13 is true 244copy_slot_unmasked $84 = i₂ 245add_imm_float $84 += 0x3F800000 (1.0) 246copy_slot_masked i₂ = Mask($84) 247trace_var TraceVar(i₂) when $13 is true 248label label 0x00000014 249copy_slot_unmasked $84 = i₂ 250cmplt_imm_float $84 = lessThan($84, 0x41200000 (10.0)) 251merge_loop_mask LoopMask &= $84 252stack_rewind 253branch_if_any_lanes_active branch_if_any_lanes_active -37 (label 21 at #200) 254label label 0x00000013 255load_loop_mask LoopMask = $83 256trace_scope TraceScope(-1) when $82 is true 257trace_line TraceLine(33) when $13 is true 258copy_slot_unmasked $82 = sum₁ 259copy_slot_masked [break_loop].result = Mask($82) 260trace_var TraceVar([break_loop].result) when $13 is true 261trace_scope TraceScope(-1) when $81 is true 262trace_exit TraceExit(float break_loop(float five)) when $13 is true 263copy_slot_unmasked $81 = [break_loop].result 264label label 0x00000012 265cmpeq_imm_float $81 = equal($81, 0x41700000 (15.0)) 266copy_slot_masked $80 = Mask($81) 267label label 0x00000008 268load_condition_mask CondMask = $89 269copy_constant $73 = 0 270merge_condition_mask CondMask = $79 & $80 271branch_if_no_lanes_active branch_if_no_lanes_active +51 (label 7 at #306) 272trace_enter TraceEnter(float float_loop()) when $13 is true 273copy_constant $74 = 0 274copy_slot_unmasked $75 = $13 275copy_slot_masked $74 = Mask($75) 276trace_scope TraceScope(+1) when $74 is true 277trace_line TraceLine(38) when $13 is true 278copy_constant sum₂ = 0 279trace_var TraceVar(sum₂) when $13 is true 280copy_constant $75 = 0 281copy_slot_unmasked $76 = $13 282copy_slot_masked $75 = Mask($76) 283trace_scope TraceScope(+1) when $75 is true 284branch_if_no_lanes_active branch_if_no_lanes_active +24 (label 23 at #292) 285trace_line TraceLine(39) when $13 is true 286copy_constant i₃ = 0x3DFBE76D (0.123) 287trace_var TraceVar(i₃) when $13 is true 288label label 0x00000018 289copy_constant $76 = 0 290copy_slot_unmasked $77 = $13 291copy_slot_masked $76 = Mask($77) 292trace_scope TraceScope(+1) when $76 is true 293trace_line TraceLine(40) when $13 is true 294copy_2_slots_unmasked $77..78 = sum₂, i₃ 295add_float $77 += $78 296copy_slot_masked sum₂ = Mask($77) 297trace_var TraceVar(sum₂) when $13 is true 298trace_scope TraceScope(-1) when $76 is true 299trace_line TraceLine(39) when $13 is true 300copy_slot_unmasked $76 = i₃ 301add_imm_float $76 += 0x3DE353F8 (0.111) 302copy_slot_masked i₃ = Mask($76) 303trace_var TraceVar(i₃) when $13 is true 304copy_slot_unmasked $76 = i₃ 305cmplt_imm_float $76 = lessThan($76, 0x3F19999A (0.6)) 306stack_rewind 307branch_if_no_active_lanes_eq branch -19 (label 24 at #272) if no lanes of $76 == 0 308label label 0x00000017 309trace_scope TraceScope(-1) when $75 is true 310trace_line TraceLine(42) when $13 is true 311copy_slot_unmasked $75 = sum₂ 312add_imm_float $75 += 0xBFDCCCCD (-1.725) 313copy_slot_masked [float_loop].result = Mask($75) 314trace_var TraceVar([float_loop].result) when $13 is true 315trace_scope TraceScope(-1) when $74 is true 316trace_exit TraceExit(float float_loop()) when $13 is true 317copy_slot_unmasked $74 = [float_loop].result 318label label 0x00000016 319bitwise_and_imm_int $74 &= 0x7FFFFFFF 320cmplt_imm_float $74 = lessThan($74, 0x3CCCCCCD (0.025)) 321copy_slot_masked $73 = Mask($74) 322label label 0x00000007 323load_condition_mask CondMask = $79 324copy_constant $62 = 0 325merge_condition_mask CondMask = $72 & $73 326branch_if_no_lanes_active branch_if_no_lanes_active +53 (label 6 at #363) 327trace_enter TraceEnter(bool loop_operator_le()) when $13 is true 328copy_constant $63 = 0 329copy_slot_unmasked $64 = $13 330copy_slot_masked $63 = Mask($64) 331trace_scope TraceScope(+1) when $63 is true 332trace_line TraceLine(47) when $13 is true 333trace_line TraceLine(48) when $13 is true 334trace_line TraceLine(50) when $13 is true 335splat_4_constants result = 0x41100000 (9.0) 336trace_var TraceVar(result) when $13 is true 337copy_constant $64 = 0 338copy_slot_unmasked $65 = $13 339copy_slot_masked $64 = Mask($65) 340trace_scope TraceScope(+1) when $64 is true 341branch_if_no_lanes_active branch_if_no_lanes_active +23 (label 26 at #348) 342trace_line TraceLine(51) when $13 is true 343copy_constant i₄ = 0x3F800000 (1.0) 344trace_var TraceVar(i₄) when $13 is true 345label label 0x0000001B 346copy_constant $65 = 0 347copy_slot_unmasked $66 = $13 348copy_slot_masked $65 = Mask($66) 349trace_scope TraceScope(+1) when $65 is true 350trace_line TraceLine(52) when $13 is true 351copy_4_slots_unmasked $66..69 = result(1..3), i₄ 352copy_4_slots_masked result = Mask($66..69) 353trace_var TraceVar(result) when $13 is true 354trace_scope TraceScope(-1) when $65 is true 355trace_line TraceLine(51) when $13 is true 356copy_slot_unmasked $65 = i₄ 357add_imm_float $65 += 0x3F800000 (1.0) 358copy_slot_masked i₄ = Mask($65) 359trace_var TraceVar(i₄) when $13 is true 360copy_slot_unmasked $65 = i₄ 361cmple_imm_float $65 = lessThanEqual($65, 0x40400000 (3.0)) 362stack_rewind 363branch_if_no_active_lanes_eq branch -18 (label 27 at #329) if no lanes of $65 == 0 364label label 0x0000001A 365trace_scope TraceScope(-1) when $64 is true 366trace_line TraceLine(54) when $13 is true 367copy_4_slots_unmasked $64..67 = result 368copy_4_immutables_unmasked $68..71 = i0..3 [0x41100000 (9.0), 0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0)] 369cmpeq_4_floats $64..67 = equal($64..67, $68..71) 370bitwise_and_2_ints $64..65 &= $66..67 371bitwise_and_int $64 &= $65 372copy_slot_masked [loop_operator_le].result = Mask($64) 373trace_var TraceVar([loop_operator_le].result) when $13 is true 374trace_scope TraceScope(-1) when $63 is true 375trace_exit TraceExit(bool loop_operator_le()) when $13 is true 376copy_slot_unmasked $63 = [loop_operator_le].result 377label label 0x00000019 378copy_slot_masked $62 = Mask($63) 379label label 0x00000006 380load_condition_mask CondMask = $72 381copy_constant $51 = 0 382merge_condition_mask CondMask = $61 & $62 383branch_if_no_lanes_active branch_if_no_lanes_active +53 (label 5 at #420) 384trace_enter TraceEnter(bool loop_operator_lt()) when $13 is true 385copy_constant $52 = 0 386copy_slot_unmasked $53 = $13 387copy_slot_masked $52 = Mask($53) 388trace_scope TraceScope(+1) when $52 is true 389trace_line TraceLine(59) when $13 is true 390trace_line TraceLine(60) when $13 is true 391trace_line TraceLine(62) when $13 is true 392splat_4_constants result₁ = 0x41100000 (9.0) 393trace_var TraceVar(result₁) when $13 is true 394copy_constant $53 = 0 395copy_slot_unmasked $54 = $13 396copy_slot_masked $53 = Mask($54) 397trace_scope TraceScope(+1) when $53 is true 398branch_if_no_lanes_active branch_if_no_lanes_active +23 (label 29 at #405) 399trace_line TraceLine(63) when $13 is true 400copy_constant i₅ = 0x3F800000 (1.0) 401trace_var TraceVar(i₅) when $13 is true 402label label 0x0000001E 403copy_constant $54 = 0 404copy_slot_unmasked $55 = $13 405copy_slot_masked $54 = Mask($55) 406trace_scope TraceScope(+1) when $54 is true 407trace_line TraceLine(64) when $13 is true 408copy_4_slots_unmasked $55..58 = result₁(1..3), i₅ 409copy_4_slots_masked result₁ = Mask($55..58) 410trace_var TraceVar(result₁) when $13 is true 411trace_scope TraceScope(-1) when $54 is true 412trace_line TraceLine(63) when $13 is true 413copy_slot_unmasked $54 = i₅ 414add_imm_float $54 += 0x3F800000 (1.0) 415copy_slot_masked i₅ = Mask($54) 416trace_var TraceVar(i₅) when $13 is true 417copy_slot_unmasked $54 = i₅ 418cmplt_imm_float $54 = lessThan($54, 0x40800000 (4.0)) 419stack_rewind 420branch_if_no_active_lanes_eq branch -18 (label 30 at #386) if no lanes of $54 == 0 421label label 0x0000001D 422trace_scope TraceScope(-1) when $53 is true 423trace_line TraceLine(66) when $13 is true 424copy_4_slots_unmasked $53..56 = result₁ 425copy_4_immutables_unmasked $57..60 = i0..3 [0x41100000 (9.0), 0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0)] 426cmpeq_4_floats $53..56 = equal($53..56, $57..60) 427bitwise_and_2_ints $53..54 &= $55..56 428bitwise_and_int $53 &= $54 429copy_slot_masked [loop_operator_lt].result = Mask($53) 430trace_var TraceVar([loop_operator_lt].result) when $13 is true 431trace_scope TraceScope(-1) when $52 is true 432trace_exit TraceExit(bool loop_operator_lt()) when $13 is true 433copy_slot_unmasked $52 = [loop_operator_lt].result 434label label 0x0000001C 435copy_slot_masked $51 = Mask($52) 436label label 0x00000005 437load_condition_mask CondMask = $61 438copy_constant $40 = 0 439merge_condition_mask CondMask = $50 & $51 440branch_if_no_lanes_active branch_if_no_lanes_active +54 (label 4 at #478) 441trace_enter TraceEnter(bool loop_operator_ge()) when $13 is true 442copy_constant $41 = 0 443copy_slot_unmasked $42 = $13 444copy_slot_masked $41 = Mask($42) 445trace_scope TraceScope(+1) when $41 is true 446trace_line TraceLine(71) when $13 is true 447trace_line TraceLine(72) when $13 is true 448trace_line TraceLine(74) when $13 is true 449splat_4_constants result₂ = 0x41100000 (9.0) 450trace_var TraceVar(result₂) when $13 is true 451copy_constant $42 = 0 452copy_slot_unmasked $43 = $13 453copy_slot_masked $42 = Mask($43) 454trace_scope TraceScope(+1) when $42 is true 455branch_if_no_lanes_active branch_if_no_lanes_active +24 (label 32 at #463) 456trace_line TraceLine(75) when $13 is true 457copy_constant i₆ = 0x40400000 (3.0) 458trace_var TraceVar(i₆) when $13 is true 459label label 0x00000021 460copy_constant $43 = 0 461copy_slot_unmasked $44 = $13 462copy_slot_masked $43 = Mask($44) 463trace_scope TraceScope(+1) when $43 is true 464trace_line TraceLine(76) when $13 is true 465copy_4_slots_unmasked $44..47 = result₂(1..3), i₆ 466copy_4_slots_masked result₂ = Mask($44..47) 467trace_var TraceVar(result₂) when $13 is true 468trace_scope TraceScope(-1) when $43 is true 469trace_line TraceLine(75) when $13 is true 470copy_slot_unmasked $43 = i₆ 471add_imm_float $43 += 0xBF800000 (-1.0) 472copy_slot_masked i₆ = Mask($43) 473trace_var TraceVar(i₆) when $13 is true 474copy_constant $43 = 0x3F800000 (1.0) 475copy_slot_unmasked $44 = i₆ 476cmple_float $43 = lessThanEqual($43, $44) 477stack_rewind 478branch_if_no_active_lanes_eq branch -19 (label 33 at #443) if no lanes of $43 == 0 479label label 0x00000020 480trace_scope TraceScope(-1) when $42 is true 481trace_line TraceLine(78) when $13 is true 482copy_4_slots_unmasked $42..45 = result₂ 483copy_4_immutables_unmasked $46..49 = i4..7 [0x41100000 (9.0), 0x40400000 (3.0), 0x40000000 (2.0), 0x3F800000 (1.0)] 484cmpeq_4_floats $42..45 = equal($42..45, $46..49) 485bitwise_and_2_ints $42..43 &= $44..45 486bitwise_and_int $42 &= $43 487copy_slot_masked [loop_operator_ge].result = Mask($42) 488trace_var TraceVar([loop_operator_ge].result) when $13 is true 489trace_scope TraceScope(-1) when $41 is true 490trace_exit TraceExit(bool loop_operator_ge()) when $13 is true 491copy_slot_unmasked $41 = [loop_operator_ge].result 492label label 0x0000001F 493copy_slot_masked $40 = Mask($41) 494label label 0x00000004 495load_condition_mask CondMask = $50 496copy_constant $29 = 0 497merge_condition_mask CondMask = $39 & $40 498branch_if_no_lanes_active branch_if_no_lanes_active +54 (label 3 at #536) 499trace_enter TraceEnter(bool loop_operator_gt()) when $13 is true 500copy_constant $30 = 0 501copy_slot_unmasked $31 = $13 502copy_slot_masked $30 = Mask($31) 503trace_scope TraceScope(+1) when $30 is true 504trace_line TraceLine(83) when $13 is true 505trace_line TraceLine(84) when $13 is true 506trace_line TraceLine(86) when $13 is true 507splat_4_constants result₃ = 0x41100000 (9.0) 508trace_var TraceVar(result₃) when $13 is true 509copy_constant $31 = 0 510copy_slot_unmasked $32 = $13 511copy_slot_masked $31 = Mask($32) 512trace_scope TraceScope(+1) when $31 is true 513branch_if_no_lanes_active branch_if_no_lanes_active +24 (label 35 at #521) 514trace_line TraceLine(87) when $13 is true 515copy_constant i₇ = 0x40400000 (3.0) 516trace_var TraceVar(i₇) when $13 is true 517label label 0x00000024 518copy_constant $32 = 0 519copy_slot_unmasked $33 = $13 520copy_slot_masked $32 = Mask($33) 521trace_scope TraceScope(+1) when $32 is true 522trace_line TraceLine(88) when $13 is true 523copy_4_slots_unmasked $33..36 = result₃(1..3), i₇ 524copy_4_slots_masked result₃ = Mask($33..36) 525trace_var TraceVar(result₃) when $13 is true 526trace_scope TraceScope(-1) when $32 is true 527trace_line TraceLine(87) when $13 is true 528copy_slot_unmasked $32 = i₇ 529add_imm_float $32 += 0xBF800000 (-1.0) 530copy_slot_masked i₇ = Mask($32) 531trace_var TraceVar(i₇) when $13 is true 532copy_constant $32 = 0 533copy_slot_unmasked $33 = i₇ 534cmplt_float $32 = lessThan($32, $33) 535stack_rewind 536branch_if_no_active_lanes_eq branch -19 (label 36 at #501) if no lanes of $32 == 0 537label label 0x00000023 538trace_scope TraceScope(-1) when $31 is true 539trace_line TraceLine(90) when $13 is true 540copy_4_slots_unmasked $31..34 = result₃ 541copy_4_immutables_unmasked $35..38 = i4..7 [0x41100000 (9.0), 0x40400000 (3.0), 0x40000000 (2.0), 0x3F800000 (1.0)] 542cmpeq_4_floats $31..34 = equal($31..34, $35..38) 543bitwise_and_2_ints $31..32 &= $33..34 544bitwise_and_int $31 &= $32 545copy_slot_masked [loop_operator_gt].result = Mask($31) 546trace_var TraceVar([loop_operator_gt].result) when $13 is true 547trace_scope TraceScope(-1) when $30 is true 548trace_exit TraceExit(bool loop_operator_gt()) when $13 is true 549copy_slot_unmasked $30 = [loop_operator_gt].result 550label label 0x00000022 551copy_slot_masked $29 = Mask($30) 552label label 0x00000003 553load_condition_mask CondMask = $39 554copy_constant $18 = 0 555merge_condition_mask CondMask = $28 & $29 556branch_if_no_lanes_active branch_if_no_lanes_active +44 (label 2 at #584) 557trace_enter TraceEnter(bool loop_operator_eq()) when $13 is true 558copy_constant $19 = 0 559copy_slot_unmasked $20 = $13 560copy_slot_masked $19 = Mask($20) 561trace_scope TraceScope(+1) when $19 is true 562trace_line TraceLine(106) when $13 is true 563trace_line TraceLine(108) when $13 is true 564splat_4_constants result₄ = 0x41100000 (9.0) 565trace_var TraceVar(result₄) when $13 is true 566copy_constant $20 = 0 567copy_slot_unmasked $21 = $13 568copy_slot_masked $20 = Mask($21) 569trace_scope TraceScope(+1) when $20 is true 570branch_if_no_lanes_active branch_if_no_lanes_active +15 (label 38 at #569) 571trace_line TraceLine(109) when $13 is true 572copy_constant i₈ = 0x3F800000 (1.0) 573trace_var TraceVar(i₈) when $13 is true 574label label 0x00000027 575copy_constant $21 = 0 576copy_slot_unmasked $22 = $13 577copy_slot_masked $21 = Mask($22) 578trace_scope TraceScope(+1) when $21 is true 579trace_line TraceLine(110) when $13 is true 580copy_4_slots_unmasked $22..25 = result₄(1..3), i₈ 581copy_4_slots_masked result₄ = Mask($22..25) 582trace_var TraceVar(result₄) when $13 is true 583trace_scope TraceScope(-1) when $21 is true 584trace_line TraceLine(109) when $13 is true 585label label 0x00000026 586trace_scope TraceScope(-1) when $20 is true 587trace_line TraceLine(112) when $13 is true 588copy_4_slots_unmasked $20..23 = result₄ 589copy_4_immutables_unmasked $24..27 = i8..11 [0x41100000 (9.0), 0x41100000 (9.0), 0x41100000 (9.0), 0x3F800000 (1.0)] 590cmpeq_4_floats $20..23 = equal($20..23, $24..27) 591bitwise_and_2_ints $20..21 &= $22..23 592bitwise_and_int $20 &= $21 593copy_slot_masked [loop_operator_eq].result = Mask($20) 594trace_var TraceVar([loop_operator_eq].result) when $13 is true 595trace_scope TraceScope(-1) when $19 is true 596trace_exit TraceExit(bool loop_operator_eq()) when $13 is true 597copy_slot_unmasked $19 = [loop_operator_eq].result 598label label 0x00000025 599copy_slot_masked $18 = Mask($19) 600label label 0x00000002 601load_condition_mask CondMask = $28 602copy_constant $1 = 0 603merge_condition_mask CondMask = $17 & $18 604branch_if_no_lanes_active branch_if_no_lanes_active +52 (label 1 at #640) 605trace_enter TraceEnter(bool loop_operator_ne()) when $13 is true 606copy_constant $2 = 0 607copy_slot_unmasked $3 = $13 608copy_slot_masked $2 = Mask($3) 609trace_scope TraceScope(+1) when $2 is true 610trace_line TraceLine(95) when $13 is true 611trace_line TraceLine(97) when $13 is true 612splat_4_constants result₅ = 0x41100000 (9.0) 613trace_var TraceVar(result₅) when $13 is true 614copy_constant $3 = 0 615copy_slot_unmasked $4 = $13 616copy_slot_masked $3 = Mask($4) 617trace_scope TraceScope(+1) when $3 is true 618branch_if_no_lanes_active branch_if_no_lanes_active +23 (label 41 at #625) 619trace_line TraceLine(98) when $13 is true 620copy_constant i₉ = 0x3F800000 (1.0) 621trace_var TraceVar(i₉) when $13 is true 622label label 0x0000002A 623copy_constant $4 = 0 624copy_slot_unmasked $5 = $13 625copy_slot_masked $4 = Mask($5) 626trace_scope TraceScope(+1) when $4 is true 627trace_line TraceLine(99) when $13 is true 628copy_4_slots_unmasked $5..8 = result₅(1..3), i₉ 629copy_4_slots_masked result₅ = Mask($5..8) 630trace_var TraceVar(result₅) when $13 is true 631trace_scope TraceScope(-1) when $4 is true 632trace_line TraceLine(98) when $13 is true 633copy_slot_unmasked $4 = i₉ 634add_imm_float $4 += 0x3F800000 (1.0) 635copy_slot_masked i₉ = Mask($4) 636trace_var TraceVar(i₉) when $13 is true 637copy_slot_unmasked $4 = i₉ 638cmplt_imm_float $4 = lessThan($4, 0x40800000 (4.0)) 639stack_rewind 640branch_if_no_active_lanes_eq branch -18 (label 42 at #606) if no lanes of $4 == 0 641label label 0x00000029 642trace_scope TraceScope(-1) when $3 is true 643trace_line TraceLine(101) when $13 is true 644copy_4_slots_unmasked $3..6 = result₅ 645copy_4_immutables_unmasked $7..10 = i0..3 [0x41100000 (9.0), 0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0)] 646cmpeq_4_floats $3..6 = equal($3..6, $7..10) 647bitwise_and_2_ints $3..4 &= $5..6 648bitwise_and_int $3 &= $4 649copy_slot_masked [loop_operator_ne].result = Mask($3) 650trace_var TraceVar([loop_operator_ne].result) when $13 is true 651trace_scope TraceScope(-1) when $2 is true 652trace_exit TraceExit(bool loop_operator_ne()) when $13 is true 653copy_slot_unmasked $2 = [loop_operator_ne].result 654label label 0x00000028 655copy_slot_masked $1 = Mask($2) 656label label 0x00000001 657load_condition_mask CondMask = $17 658swizzle_4 $1..4 = ($1..4).xxxx 659copy_4_uniforms $5..8 = colorRed 660copy_4_uniforms $9..12 = colorGreen 661mix_4_ints $1..4 = mix($5..8, $9..12, $1..4) 662copy_4_slots_unmasked [main].result = $1..4 663trace_var TraceVar([main].result) when $13 is true 664trace_scope TraceScope(-1) when $0 is true 665trace_exit TraceExit(half4 main(float2 pos)) when $13 is true 666load_src src.rgba = [main].result 667