1373 instructions 2 3[immutable slots] 4i0 = 0x40000000 (2.0) 5i1 = 0 6i2 = 0 7i3 = 0x40000000 (2.0) 8i4 = 0x40400000 (3.0) 9i5 = 0 10i6 = 0 11i7 = 0 12i8 = 0x40400000 (3.0) 13i9 = 0 14i10 = 0 15i11 = 0 16i12 = 0x40400000 (3.0) 17i13 = 0x40800000 (4.0) 18i14 = 0 19i15 = 0 20i16 = 0 21i17 = 0 22i18 = 0x40800000 (4.0) 23i19 = 0 24i20 = 0 25i21 = 0 26i22 = 0 27i23 = 0x40800000 (4.0) 28i24 = 0 29i25 = 0 30i26 = 0 31i27 = 0 32i28 = 0x40800000 (4.0) 33i29 = 0 34i30 = 0x3F800000 (1.0) 35 36store_device_xy01 $13..16 = DeviceCoords.xy01 37cmpeq_imm_float $13 = equal($13, 0x3F000000 (0.5)) 38cmpeq_imm_float $14 = equal($14, 0x3F000000 (0.5)) 39bitwise_and_int $13 &= $14 40store_src_rg coords = src.rg 41init_lane_masks CondMask = LoopMask = RetMask = true 42copy_4_uniforms colorGreen = colorGreen 43trace_var TraceVar(colorGreen) when $13 is true 44copy_4_uniforms colorRed = colorRed 45trace_var TraceVar(colorRed) when $13 is true 46trace_enter TraceEnter(vec4 main(vec2 coords)) when $13 is true 47trace_var TraceVar(coords) when $13 is true 48copy_constant $0 = 0 49copy_slot_unmasked $1 = $13 50copy_slot_masked $0 = Mask($1) 51trace_scope TraceScope(+1) when $0 is true 52trace_line TraceLine(58) when $13 is true 53splat_4_constants zero = 0 54trace_var TraceVar(zero) when $13 is true 55trace_line TraceLine(59) when $13 is true 56splat_4_constants one = 0x3F800000 (1.0) 57trace_var TraceVar(one) when $13 is true 58trace_line TraceLine(60) when $13 is true 59copy_4_uniforms green = colorGreen 60trace_var TraceVar(green) when $13 is true 61trace_line TraceLine(61) when $13 is true 62copy_4_slots_unmasked $1..4 = green 63copy_4_slots_unmasked $5..8 = one 64mul_4_floats $1..4 *= $5..8 65copy_4_slots_unmasked $5..8 = zero 66add_4_floats $1..4 += $5..8 67copy_4_slots_unmasked green = $1..4 68trace_var TraceVar(green) when $13 is true 69trace_line TraceLine(63) when $13 is true 70copy_4_uniforms red = colorRed 71trace_var TraceVar(red) when $13 is true 72trace_line TraceLine(64) when $13 is true 73copy_4_slots_unmasked $1..4 = red 74copy_4_slots_unmasked $5..8 = zero 75add_4_floats $1..4 += $5..8 76copy_4_slots_unmasked $5..8 = one 77mul_4_floats $1..4 *= $5..8 78copy_4_slots_unmasked red = $1..4 79trace_var TraceVar(red) when $13 is true 80trace_line TraceLine(66) when $13 is true 81store_condition_mask $17 = CondMask 82store_condition_mask $21 = CondMask 83store_condition_mask $25 = CondMask 84store_condition_mask $33 = CondMask 85store_condition_mask $69 = CondMask 86store_condition_mask $81 = CondMask 87branch_if_no_lanes_active branch_if_no_lanes_active +29 (label 7 at #81) 88trace_enter TraceEnter(bool test_scalar()) when $13 is true 89copy_constant $82 = 0 90copy_slot_unmasked $83 = $13 91copy_slot_masked $82 = Mask($83) 92trace_scope TraceScope(+1) when $82 is true 93trace_line TraceLine(6) when $13 is true 94copy_constant mp = 0x3F000000 (0.5) 95trace_var TraceVar(mp) when $13 is true 96trace_line TraceLine(7) when $13 is true 97copy_slot_unmasked hp = mp 98trace_var TraceVar(hp) when $13 is true 99trace_line TraceLine(8) when $13 is true 100copy_constant ihp = 0x00000002 (2.802597e-45) 101trace_var TraceVar(ihp) when $13 is true 102trace_line TraceLine(9) when $13 is true 103copy_slot_unmasked imp = ihp 104trace_var TraceVar(imp) when $13 is true 105trace_line TraceLine(11) when $13 is true 106copy_2_slots_unmasked $83..84 = mp, hp 107cmpeq_float $83 = equal($83, $84) 108copy_2_slots_unmasked $84..85 = ihp, imp 109cmpeq_int $84 = equal($84, $85) 110bitwise_and_int $83 &= $84 111copy_slot_masked [test_scalar].result = Mask($83) 112trace_var TraceVar([test_scalar].result) when $13 is true 113trace_scope TraceScope(-1) when $82 is true 114trace_exit TraceExit(bool test_scalar()) when $13 is true 115copy_slot_unmasked $82 = [test_scalar].result 116label label 0x00000007 117copy_constant $70 = 0 118merge_condition_mask CondMask = $81 & $82 119branch_if_no_lanes_active branch_if_no_lanes_active +82 (label 6 at #166) 120trace_enter TraceEnter(bool test_vector()) when $13 is true 121copy_constant $71 = 0 122copy_slot_unmasked $72 = $13 123copy_slot_masked $71 = Mask($72) 124trace_scope TraceScope(+1) when $71 is true 125trace_line TraceLine(15) when $13 is true 126splat_2_constants mp2 = 0x40000000 (2.0) 127trace_var TraceVar(mp2) when $13 is true 128trace_line TraceLine(16) when $13 is true 129copy_2_slots_unmasked hp2 = mp2 130trace_var TraceVar(hp2) when $13 is true 131trace_line TraceLine(17) when $13 is true 132splat_3_constants mp3 = 0x40400000 (3.0) 133trace_var TraceVar(mp3) when $13 is true 134trace_line TraceLine(18) when $13 is true 135copy_3_slots_unmasked hp3 = mp3 136trace_var TraceVar(hp3) when $13 is true 137trace_line TraceLine(19) when $13 is true 138splat_4_constants mp4 = 0x40800000 (4.0) 139trace_var TraceVar(mp4) when $13 is true 140trace_line TraceLine(20) when $13 is true 141copy_4_slots_unmasked hp4 = mp4 142trace_var TraceVar(hp4) when $13 is true 143trace_line TraceLine(22) when $13 is true 144splat_2_constants ihp2 = 0x00000002 (2.802597e-45) 145trace_var TraceVar(ihp2) when $13 is true 146trace_line TraceLine(23) when $13 is true 147copy_2_slots_unmasked imp2 = ihp2 148trace_var TraceVar(imp2) when $13 is true 149trace_line TraceLine(24) when $13 is true 150splat_3_constants ihp3 = 0x00000003 (4.203895e-45) 151trace_var TraceVar(ihp3) when $13 is true 152trace_line TraceLine(25) when $13 is true 153copy_3_slots_unmasked imp3 = ihp3 154trace_var TraceVar(imp3) when $13 is true 155trace_line TraceLine(26) when $13 is true 156splat_4_constants ihp4 = 0x00000004 (5.605194e-45) 157trace_var TraceVar(ihp4) when $13 is true 158trace_line TraceLine(27) when $13 is true 159copy_4_slots_unmasked imp4 = ihp4 160trace_var TraceVar(imp4) when $13 is true 161trace_line TraceLine(29) when $13 is true 162copy_4_slots_unmasked $72..75 = mp2, hp2 163cmpeq_2_floats $72..73 = equal($72..73, $74..75) 164bitwise_and_int $72 &= $73 165copy_3_slots_unmasked $73..75 = hp3 166copy_3_slots_unmasked $76..78 = mp3 167cmpeq_3_floats $73..75 = equal($73..75, $76..78) 168bitwise_and_int $74 &= $75 169bitwise_and_int $73 &= $74 170bitwise_and_int $72 &= $73 171copy_4_slots_unmasked $73..76 = mp4 172copy_4_slots_unmasked $77..80 = hp4 173cmpeq_4_floats $73..76 = equal($73..76, $77..80) 174bitwise_and_2_ints $73..74 &= $75..76 175bitwise_and_int $73 &= $74 176bitwise_and_int $72 &= $73 177copy_2_slots_unmasked $73..74 = imp2 178copy_2_slots_unmasked $75..76 = ihp2 179cmpeq_2_ints $73..74 = equal($73..74, $75..76) 180bitwise_and_int $73 &= $74 181bitwise_and_int $72 &= $73 182copy_4_slots_unmasked $73..76 = ihp3, imp3(0) 183copy_2_slots_unmasked $77..78 = imp3(1..2) 184cmpeq_3_ints $73..75 = equal($73..75, $76..78) 185bitwise_and_int $74 &= $75 186bitwise_and_int $73 &= $74 187bitwise_and_int $72 &= $73 188copy_4_slots_unmasked $73..76 = imp4 189copy_4_slots_unmasked $77..80 = ihp4 190cmpeq_4_ints $73..76 = equal($73..76, $77..80) 191bitwise_and_2_ints $73..74 &= $75..76 192bitwise_and_int $73 &= $74 193bitwise_and_int $72 &= $73 194copy_slot_masked [test_vector].result = Mask($72) 195trace_var TraceVar([test_vector].result) when $13 is true 196trace_scope TraceScope(-1) when $71 is true 197trace_exit TraceExit(bool test_vector()) when $13 is true 198copy_slot_unmasked $71 = [test_vector].result 199label label 0x00000008 200copy_slot_masked $70 = Mask($71) 201label label 0x00000006 202load_condition_mask CondMask = $81 203copy_constant $34 = 0 204merge_condition_mask CondMask = $69 & $70 205branch_if_no_lanes_active branch_if_no_lanes_active +74 (label 5 at #244) 206trace_enter TraceEnter(bool test_matrix()) when $13 is true 207copy_constant $35 = 0 208copy_slot_unmasked $36 = $13 209copy_slot_masked $35 = Mask($36) 210trace_scope TraceScope(+1) when $35 is true 211trace_line TraceLine(34) when $13 is true 212copy_4_immutables_unmasked mp2₁ = i0..3 [0x40000000 (2.0), 0, 0, 0x40000000 (2.0)] 213trace_var TraceVar(mp2₁) when $13 is true 214trace_line TraceLine(35) when $13 is true 215copy_4_slots_unmasked hp2₁ = mp2₁ 216trace_var TraceVar(hp2₁) when $13 is true 217trace_line TraceLine(36) when $13 is true 218copy_4_immutables_unmasked mp3₁(0..3) = i4..7 [0x40400000 (3.0), 0, 0, 0] 219copy_4_immutables_unmasked mp3₁(4..7) = i8..11 [0x40400000 (3.0), 0, 0, 0] 220copy_constant mp3₁(8) = 0x40400000 (3.0) 221trace_var TraceVar(mp3₁) when $13 is true 222trace_line TraceLine(37) when $13 is true 223copy_4_slots_unmasked hp3₁(0..3) = mp3₁(0..3) 224copy_4_slots_unmasked hp3₁(4..7) = mp3₁(4..7) 225copy_slot_unmasked hp3₁(8) = mp3₁(8) 226trace_var TraceVar(hp3₁) when $13 is true 227trace_line TraceLine(38) when $13 is true 228copy_4_immutables_unmasked mp4₁(0..3) = i13..16 [0x40800000 (4.0), 0, 0, 0] 229copy_4_immutables_unmasked mp4₁(4..7) = i17..20 [0, 0x40800000 (4.0), 0, 0] 230copy_4_immutables_unmasked mp4₁(8..11) = i21..24 [0, 0, 0x40800000 (4.0), 0] 231copy_4_immutables_unmasked mp4₁(12..15) = i25..28 [0, 0, 0, 0x40800000 (4.0)] 232trace_var TraceVar(mp4₁) when $13 is true 233trace_line TraceLine(39) when $13 is true 234copy_4_slots_unmasked hp4₁(0..3) = mp4₁(0..3) 235copy_4_slots_unmasked hp4₁(4..7) = mp4₁(4..7) 236copy_4_slots_unmasked hp4₁(8..11) = mp4₁(8..11) 237copy_4_slots_unmasked hp4₁(12..15) = mp4₁(12..15) 238trace_var TraceVar(hp4₁) when $13 is true 239trace_line TraceLine(41) when $13 is true 240copy_4_slots_unmasked $36..39 = mp2₁ 241copy_4_slots_unmasked $40..43 = hp2₁ 242cmpeq_4_floats $36..39 = equal($36..39, $40..43) 243bitwise_and_2_ints $36..37 &= $38..39 244bitwise_and_int $36 &= $37 245copy_4_slots_unmasked $37..40 = hp3₁(0..3) 246copy_4_slots_unmasked $41..44 = hp3₁(4..7) 247copy_slot_unmasked $45 = hp3₁(8) 248copy_4_slots_unmasked $46..49 = mp3₁(0..3) 249copy_4_slots_unmasked $50..53 = mp3₁(4..7) 250copy_slot_unmasked $54 = mp3₁(8) 251cmpeq_n_floats $37..45 = equal($37..45, $46..54) 252bitwise_and_4_ints $38..41 &= $42..45 253bitwise_and_2_ints $38..39 &= $40..41 254bitwise_and_int $38 &= $39 255bitwise_and_int $37 &= $38 256bitwise_and_int $36 &= $37 257copy_4_slots_unmasked $37..40 = mp4₁(0..3) 258copy_4_slots_unmasked $41..44 = mp4₁(4..7) 259copy_4_slots_unmasked $45..48 = mp4₁(8..11) 260copy_4_slots_unmasked $49..52 = mp4₁(12..15) 261copy_4_slots_unmasked $53..56 = hp4₁(0..3) 262copy_4_slots_unmasked $57..60 = hp4₁(4..7) 263copy_4_slots_unmasked $61..64 = hp4₁(8..11) 264copy_4_slots_unmasked $65..68 = hp4₁(12..15) 265cmpeq_n_floats $37..52 = equal($37..52, $53..68) 266bitwise_and_4_ints $45..48 &= $49..52 267bitwise_and_4_ints $41..44 &= $45..48 268bitwise_and_4_ints $37..40 &= $41..44 269bitwise_and_2_ints $37..38 &= $39..40 270bitwise_and_int $37 &= $38 271bitwise_and_int $36 &= $37 272copy_slot_masked [test_matrix].result = Mask($36) 273trace_var TraceVar([test_matrix].result) when $13 is true 274trace_scope TraceScope(-1) when $35 is true 275trace_exit TraceExit(bool test_matrix()) when $13 is true 276copy_slot_unmasked $35 = [test_matrix].result 277label label 0x00000009 278copy_slot_masked $34 = Mask($35) 279label label 0x00000005 280load_condition_mask CondMask = $69 281copy_constant $26 = 0 282merge_condition_mask CondMask = $33 & $34 283branch_if_no_lanes_active branch_if_no_lanes_active +62 (label 4 at #310) 284trace_enter TraceEnter(bool test_array()) when $13 is true 285copy_constant $27 = 0 286copy_slot_unmasked $28 = $13 287copy_slot_masked $27 = Mask($28) 288trace_scope TraceScope(+1) when $27 is true 289trace_line TraceLine(45) when $13 is true 290copy_constant mf[0] = 0 291trace_var TraceVar(mf[0]) when $13 is true 292trace_line TraceLine(45) when $13 is true 293copy_constant $28 = 0x3F800000 (1.0) 294copy_slot_masked mf[0] = Mask($28) 295trace_var TraceVar(mf[0]) when $13 is true 296trace_line TraceLine(46) when $13 is true 297copy_constant hf[0] = 0 298trace_var TraceVar(hf[0]) when $13 is true 299trace_line TraceLine(46) when $13 is true 300copy_constant $28 = 0x3F800000 (1.0) 301copy_slot_masked hf[0] = Mask($28) 302trace_var TraceVar(hf[0]) when $13 is true 303trace_line TraceLine(47) when $13 is true 304splat_4_constants mv[0], mv[1] = 0 305trace_var TraceVar(mv[0], mv[1]) when $13 is true 306trace_line TraceLine(47) when $13 is true 307copy_2_immutables_unmasked $28..29 = i29..30 [0, 0x3F800000 (1.0)] 308copy_2_slots_masked mv[0] = Mask($28..29) 309trace_var TraceVar(mv[0]) when $13 is true 310trace_line TraceLine(47) when $13 is true 311copy_2_immutables_unmasked $28..29 = i3..4 [0x40000000 (2.0), 0x40400000 (3.0)] 312copy_2_slots_masked mv[1] = Mask($28..29) 313trace_var TraceVar(mv[1]) when $13 is true 314trace_line TraceLine(48) when $13 is true 315splat_4_constants hv[0], hv[1] = 0 316trace_var TraceVar(hv[0], hv[1]) when $13 is true 317trace_line TraceLine(48) when $13 is true 318copy_2_immutables_unmasked $28..29 = i29..30 [0, 0x3F800000 (1.0)] 319copy_2_slots_masked hv[0] = Mask($28..29) 320trace_var TraceVar(hv[0]) when $13 is true 321trace_line TraceLine(48) when $13 is true 322copy_2_immutables_unmasked $28..29 = i3..4 [0x40000000 (2.0), 0x40400000 (3.0)] 323copy_2_slots_masked hv[1] = Mask($28..29) 324trace_var TraceVar(hv[1]) when $13 is true 325trace_line TraceLine(50) when $13 is true 326copy_2_slots_unmasked $28..29 = mf[0], hf[0] 327cmpeq_float $28 = equal($28, $29) 328copy_2_slots_unmasked $29..30 = hv[0] 329copy_2_slots_unmasked $31..32 = mv[0] 330cmpeq_2_floats $29..30 = equal($29..30, $31..32) 331bitwise_and_int $29 &= $30 332bitwise_and_int $28 &= $29 333copy_2_slots_unmasked $29..30 = mv[1] 334copy_2_slots_unmasked $31..32 = hv[1] 335cmpeq_2_floats $29..30 = equal($29..30, $31..32) 336bitwise_and_int $29 &= $30 337bitwise_and_int $28 &= $29 338copy_slot_masked [test_array].result = Mask($28) 339trace_var TraceVar([test_array].result) when $13 is true 340trace_scope TraceScope(-1) when $27 is true 341trace_exit TraceExit(bool test_array()) when $13 is true 342copy_slot_unmasked $27 = [test_array].result 343label label 0x0000000A 344copy_slot_masked $26 = Mask($27) 345label label 0x00000004 346load_condition_mask CondMask = $33 347copy_constant $22 = 0 348merge_condition_mask CondMask = $25 & $26 349branch_if_no_lanes_active branch_if_no_lanes_active +18 (label 3 at #332) 350trace_enter TraceEnter(bool highp_param(float value)) when $13 is true 351copy_constant value = 0x3F800000 (1.0) 352trace_var TraceVar(value) when $13 is true 353copy_constant $23 = 0 354copy_slot_unmasked $24 = $13 355copy_slot_masked $23 = Mask($24) 356trace_scope TraceScope(+1) when $23 is true 357trace_line TraceLine(53) when $13 is true 358copy_slot_unmasked $24 = value 359cmpeq_imm_float $24 = equal($24, 0x3F800000 (1.0)) 360copy_slot_masked [highp_param].result = Mask($24) 361trace_var TraceVar([highp_param].result) when $13 is true 362trace_scope TraceScope(-1) when $23 is true 363trace_exit TraceExit(bool highp_param(float value)) when $13 is true 364copy_slot_unmasked $23 = [highp_param].result 365label label 0x0000000B 366copy_slot_masked $22 = Mask($23) 367label label 0x00000003 368load_condition_mask CondMask = $25 369copy_constant $18 = 0 370merge_condition_mask CondMask = $21 & $22 371branch_if_no_lanes_active branch_if_no_lanes_active +18 (label 2 at #354) 372trace_enter TraceEnter(bool mediump_param(half value)) when $13 is true 373copy_constant value₁ = 0x40000000 (2.0) 374trace_var TraceVar(value₁) when $13 is true 375copy_constant $19 = 0 376copy_slot_unmasked $20 = $13 377copy_slot_masked $19 = Mask($20) 378trace_scope TraceScope(+1) when $19 is true 379trace_line TraceLine(54) when $13 is true 380copy_slot_unmasked $20 = value₁ 381cmpeq_imm_float $20 = equal($20, 0x40000000 (2.0)) 382copy_slot_masked [mediump_param].result = Mask($20) 383trace_var TraceVar([mediump_param].result) when $13 is true 384trace_scope TraceScope(-1) when $19 is true 385trace_exit TraceExit(bool mediump_param(half value)) when $13 is true 386copy_slot_unmasked $19 = [mediump_param].result 387label label 0x0000000C 388copy_slot_masked $18 = Mask($19) 389label label 0x00000002 390load_condition_mask CondMask = $21 391copy_constant $1 = 0 392merge_condition_mask CondMask = $17 & $18 393branch_if_no_lanes_active branch_if_no_lanes_active +18 (label 1 at #376) 394trace_enter TraceEnter(bool lowp_param(half value)) when $13 is true 395copy_constant value₂ = 0x40400000 (3.0) 396trace_var TraceVar(value₂) when $13 is true 397copy_constant $2 = 0 398copy_slot_unmasked $3 = $13 399copy_slot_masked $2 = Mask($3) 400trace_scope TraceScope(+1) when $2 is true 401trace_line TraceLine(55) when $13 is true 402copy_slot_unmasked $3 = value₂ 403cmpeq_imm_float $3 = equal($3, 0x40400000 (3.0)) 404copy_slot_masked [lowp_param].result = Mask($3) 405trace_var TraceVar([lowp_param].result) when $13 is true 406trace_scope TraceScope(-1) when $2 is true 407trace_exit TraceExit(bool lowp_param(half value)) when $13 is true 408copy_slot_unmasked $2 = [lowp_param].result 409label label 0x0000000D 410copy_slot_masked $1 = Mask($2) 411label label 0x00000001 412load_condition_mask CondMask = $17 413swizzle_4 $1..4 = ($1..4).xxxx 414copy_4_slots_unmasked $5..8 = red 415copy_4_slots_unmasked $9..12 = green 416mix_4_ints $1..4 = mix($5..8, $9..12, $1..4) 417copy_4_slots_unmasked [main].result = $1..4 418trace_var TraceVar([main].result) when $13 is true 419trace_scope TraceScope(-1) when $0 is true 420trace_exit TraceExit(vec4 main(vec2 coords)) when $13 is true 421load_src src.rgba = [main].result 422