1256 instructions 2 3[immutable slots] 4i0 = 0x3F800000 (1.0) 5i1 = 0x40000000 (2.0) 6i2 = 0x40400000 (3.0) 7i3 = 0x40800000 (4.0) 8i4 = 0x40C00000 (6.0) 9i5 = 0 10i6 = 0 11i7 = 0x40C00000 (6.0) 12i8 = 0x40C00000 (6.0) 13i9 = 0x41400000 (12.0) 14i10 = 0x41900000 (18.0) 15i11 = 0x41C00000 (24.0) 16i12 = 0x40800000 (4.0) 17i13 = 0 18i14 = 0 19i15 = 0x40800000 (4.0) 20i16 = 0x40A00000 (5.0) 21i17 = 0x40000000 (2.0) 22i18 = 0x40400000 (3.0) 23i19 = 0x41000000 (8.0) 24i20 = 0x41300000 (11.0) 25i21 = 0 26i22 = 0 27i23 = 0 28i24 = 0 29i25 = 0x41300000 (11.0) 30i26 = 0 31i27 = 0 32i28 = 0 33i29 = 0 34i30 = 0x41300000 (11.0) 35i31 = 0 36i32 = 0 37i33 = 0 38i34 = 0 39i35 = 0x41300000 (11.0) 40i36 = 0x41A00000 (20.0) 41i37 = 0x41A00000 (20.0) 42i38 = 0x41A00000 (20.0) 43i39 = 0x41A00000 (20.0) 44i40 = 0x41A00000 (20.0) 45i41 = 0x41A00000 (20.0) 46i42 = 0x41A00000 (20.0) 47i43 = 0x41A00000 (20.0) 48i44 = 0x41A00000 (20.0) 49i45 = 0x41A00000 (20.0) 50i46 = 0x41A00000 (20.0) 51i47 = 0x41A00000 (20.0) 52i48 = 0x41A00000 (20.0) 53i49 = 0x41A00000 (20.0) 54i50 = 0x41A00000 (20.0) 55i51 = 0x41A00000 (20.0) 56i52 = 0x41100000 (9.0) 57i53 = 0x41A00000 (20.0) 58i54 = 0x41A00000 (20.0) 59i55 = 0x41A00000 (20.0) 60i56 = 0x41A00000 (20.0) 61i57 = 0x41100000 (9.0) 62i58 = 0x41A00000 (20.0) 63i59 = 0x41A00000 (20.0) 64i60 = 0x41A00000 (20.0) 65i61 = 0x41A00000 (20.0) 66i62 = 0x41100000 (9.0) 67i63 = 0x41A00000 (20.0) 68i64 = 0x41A00000 (20.0) 69i65 = 0x41A00000 (20.0) 70i66 = 0x41A00000 (20.0) 71i67 = 0x41100000 (9.0) 72i68 = 0x40A00000 (5.0) 73i69 = 0x40C00000 (6.0) 74i70 = 0x40E00000 (7.0) 75i71 = 0x41000000 (8.0) 76i72 = 0x41100000 (9.0) 77i73 = 0 78i74 = 0 79i75 = 0 80i76 = 0x41100000 (9.0) 81i77 = 0 82i78 = 0 83i79 = 0 84i80 = 0x41100000 (9.0) 85 86store_src_rg coords = src.rg 87init_lane_masks CondMask = LoopMask = RetMask = true 88copy_constant _0_ok = 0xFFFFFFFF 89copy_4_immutables_unmasked _1_m1 = i0..3 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x40800000 (4.0)] 90copy_4_slots_unmasked $0..3 = _0_ok, _1_m1(0..2) 91copy_slot_unmasked $4 = _1_m1(3) 92copy_4_immutables_unmasked $5..8 = i0..3 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x40800000 (4.0)] 93cmpeq_4_floats $1..4 = equal($1..4, $5..8) 94bitwise_and_2_ints $1..2 &= $3..4 95bitwise_and_int $1 &= $2 96bitwise_and_int $0 &= $1 97copy_slot_unmasked _0_ok = $0 98copy_4_slots_unmasked _2_m3 = _1_m1 99copy_slot_unmasked $0 = _0_ok 100copy_4_slots_unmasked $1..4 = _2_m3 101copy_4_immutables_unmasked $5..8 = i0..3 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x40800000 (4.0)] 102cmpeq_4_floats $1..4 = equal($1..4, $5..8) 103bitwise_and_2_ints $1..2 &= $3..4 104bitwise_and_int $1 &= $2 105bitwise_and_int $0 &= $1 106copy_slot_unmasked _0_ok = $0 107copy_4_slots_unmasked $4..7 = _2_m3 108copy_4_immutables_unmasked $8..11 = i4..7 [0x40C00000 (6.0), 0, 0, 0x40C00000 (6.0)] 109matrix_multiply_2 mat2x2($0..3) = mat2x2($4..7) * mat2x2($8..11) 110copy_4_slots_unmasked _2_m3 = $0..3 111copy_slot_unmasked $0 = _0_ok 112copy_4_slots_unmasked $1..4 = _2_m3 113copy_4_immutables_unmasked $5..8 = i8..11 [0x40C00000 (6.0), 0x41400000 (12.0), 0x41900000 (18.0), 0x41C00000 (24.0)] 114cmpeq_4_floats $1..4 = equal($1..4, $5..8) 115bitwise_and_2_ints $1..2 &= $3..4 116bitwise_and_int $1 &= $2 117bitwise_and_int $0 &= $1 118copy_slot_unmasked _0_ok = $0 119copy_constant $0 = 0 120copy_2_slots_unmasked $1..2 = _1_m1(2..3) 121copy_slot_unmasked $1 = $2 122swizzle_4 $0..3 = ($0..3).yxxy 123copy_4_slots_unmasked _4_m5 = $0..3 124copy_slot_unmasked $0 = _0_ok 125copy_4_slots_unmasked $1..4 = _4_m5 126copy_4_immutables_unmasked $5..8 = i12..15 [0x40800000 (4.0), 0, 0, 0x40800000 (4.0)] 127cmpeq_4_floats $1..4 = equal($1..4, $5..8) 128bitwise_and_2_ints $1..2 &= $3..4 129bitwise_and_int $1 &= $2 130bitwise_and_int $0 &= $1 131copy_slot_unmasked _0_ok = $0 132copy_4_slots_unmasked $0..3 = _1_m1 133copy_4_slots_unmasked $4..7 = _4_m5 134add_4_floats $0..3 += $4..7 135copy_4_slots_unmasked _1_m1 = $0..3 136copy_4_slots_unmasked $0..3 = _0_ok, _1_m1(0..2) 137copy_slot_unmasked $4 = _1_m1(3) 138copy_4_immutables_unmasked $5..8 = i16..19 [0x40A00000 (5.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x41000000 (8.0)] 139cmpeq_4_floats $1..4 = equal($1..4, $5..8) 140bitwise_and_2_ints $1..2 &= $3..4 141bitwise_and_int $1 &= $2 142bitwise_and_int $0 &= $1 143copy_slot_unmasked _0_ok = $0 144splat_4_constants _8_m11(0..3) = 0x41A00000 (20.0) 145splat_4_constants _8_m11(4..7) = 0x41A00000 (20.0) 146splat_4_constants _8_m11(8..11) = 0x41A00000 (20.0) 147splat_4_constants _8_m11(12..15) = 0x41A00000 (20.0) 148copy_4_slots_unmasked $0..3 = _8_m11(0..3) 149copy_4_slots_unmasked $4..7 = _8_m11(4..7) 150copy_4_slots_unmasked $8..11 = _8_m11(8..11) 151copy_4_slots_unmasked $12..15 = _8_m11(12..15) 152copy_4_immutables_unmasked $16..19 = i20..23 [0x41300000 (11.0), 0, 0, 0] 153copy_4_immutables_unmasked $20..23 = i24..27 [0, 0x41300000 (11.0), 0, 0] 154copy_4_immutables_unmasked $24..27 = i28..31 [0, 0, 0x41300000 (11.0), 0] 155copy_4_immutables_unmasked $28..31 = i32..35 [0, 0, 0, 0x41300000 (11.0)] 156sub_n_floats $0..15 -= $16..31 157copy_4_slots_unmasked _8_m11(0..3) = $0..3 158copy_4_slots_unmasked _8_m11(4..7) = $4..7 159copy_4_slots_unmasked _8_m11(8..11) = $8..11 160copy_4_slots_unmasked _8_m11(12..15) = $12..15 161copy_slot_unmasked $0 = _0_ok 162copy_4_slots_unmasked $1..4 = _8_m11(0..3) 163copy_4_slots_unmasked $5..8 = _8_m11(4..7) 164copy_4_slots_unmasked $9..12 = _8_m11(8..11) 165copy_4_slots_unmasked $13..16 = _8_m11(12..15) 166copy_4_immutables_unmasked $17..20 = i52..55 [0x41100000 (9.0), 0x41A00000 (20.0), 0x41A00000 (20.0), 0x41A00000 (20.0)] 167copy_4_immutables_unmasked $21..24 = i56..59 [0x41A00000 (20.0), 0x41100000 (9.0), 0x41A00000 (20.0), 0x41A00000 (20.0)] 168copy_4_immutables_unmasked $25..28 = i60..63 [0x41A00000 (20.0), 0x41A00000 (20.0), 0x41100000 (9.0), 0x41A00000 (20.0)] 169copy_4_immutables_unmasked $29..32 = i64..67 [0x41A00000 (20.0), 0x41A00000 (20.0), 0x41A00000 (20.0), 0x41100000 (9.0)] 170cmpeq_n_floats $1..16 = equal($1..16, $17..32) 171bitwise_and_4_ints $9..12 &= $13..16 172bitwise_and_4_ints $5..8 &= $9..12 173bitwise_and_4_ints $1..4 &= $5..8 174bitwise_and_2_ints $1..2 &= $3..4 175bitwise_and_int $1 &= $2 176bitwise_and_int $0 &= $1 177copy_slot_unmasked _0_ok = $0 178store_condition_mask $33 = CondMask 179store_condition_mask $68 = CondMask 180copy_slot_unmasked $69 = _0_ok 181copy_constant $34 = 0 182merge_condition_mask CondMask = $68 & $69 183branch_if_no_lanes_active branch_if_no_lanes_active +138 (label 2 at #236) 184copy_constant ok = 0xFFFFFFFF 185copy_4_immutables_unmasked m1 = i0..3 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x40800000 (4.0)] 186copy_4_slots_unmasked $35..38 = ok, m1(0..2) 187copy_slot_unmasked $39 = m1(3) 188copy_4_immutables_unmasked $40..43 = i0..3 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x40800000 (4.0)] 189cmpeq_4_floats $36..39 = equal($36..39, $40..43) 190bitwise_and_2_ints $36..37 &= $38..39 191bitwise_and_int $36 &= $37 192bitwise_and_int $35 &= $36 193copy_slot_masked ok = Mask($35) 194copy_4_slots_unmasked m3 = m1 195copy_slot_unmasked $35 = ok 196copy_4_slots_unmasked $36..39 = m3 197copy_4_immutables_unmasked $40..43 = i0..3 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x40800000 (4.0)] 198cmpeq_4_floats $36..39 = equal($36..39, $40..43) 199bitwise_and_2_ints $36..37 &= $38..39 200bitwise_and_int $36 &= $37 201bitwise_and_int $35 &= $36 202copy_slot_masked ok = Mask($35) 203copy_4_immutables_unmasked $36..39 = i4..7 [0x40C00000 (6.0), 0, 0, 0x40C00000 (6.0)] 204copy_4_immutables_unmasked $40..43 = i4..7 [0x40C00000 (6.0), 0, 0, 0x40C00000 (6.0)] 205cmpeq_4_floats $36..39 = equal($36..39, $40..43) 206bitwise_and_2_ints $36..37 &= $38..39 207bitwise_and_int $36 &= $37 208bitwise_and_int $35 &= $36 209copy_slot_masked ok = Mask($35) 210copy_4_slots_unmasked $39..42 = m3 211copy_4_immutables_unmasked $43..46 = i4..7 [0x40C00000 (6.0), 0, 0, 0x40C00000 (6.0)] 212matrix_multiply_2 mat2x2($35..38) = mat2x2($39..42) * mat2x2($43..46) 213copy_4_slots_masked m3 = Mask($35..38) 214copy_slot_unmasked $35 = ok 215copy_4_slots_unmasked $36..39 = m3 216copy_4_immutables_unmasked $40..43 = i8..11 [0x40C00000 (6.0), 0x41400000 (12.0), 0x41900000 (18.0), 0x41C00000 (24.0)] 217cmpeq_4_floats $36..39 = equal($36..39, $40..43) 218bitwise_and_2_ints $36..37 &= $38..39 219bitwise_and_int $36 &= $37 220bitwise_and_int $35 &= $36 221copy_slot_masked ok = Mask($35) 222copy_constant $35 = 0 223copy_2_slots_unmasked $36..37 = m1(2..3) 224copy_slot_unmasked $36 = $37 225swizzle_4 $35..38 = ($35..38).yxxy 226copy_4_slots_unmasked m5 = $35..38 227copy_slot_unmasked $35 = ok 228copy_4_slots_unmasked $36..39 = m5 229copy_4_immutables_unmasked $40..43 = i12..15 [0x40800000 (4.0), 0, 0, 0x40800000 (4.0)] 230cmpeq_4_floats $36..39 = equal($36..39, $40..43) 231bitwise_and_2_ints $36..37 &= $38..39 232bitwise_and_int $36 &= $37 233bitwise_and_int $35 &= $36 234copy_slot_masked ok = Mask($35) 235copy_4_slots_unmasked $35..38 = m1 236copy_4_slots_unmasked $39..42 = m5 237add_4_floats $35..38 += $39..42 238copy_4_slots_masked m1 = Mask($35..38) 239copy_4_slots_unmasked $35..38 = ok, m1(0..2) 240copy_slot_unmasked $39 = m1(3) 241copy_4_immutables_unmasked $40..43 = i16..19 [0x40A00000 (5.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x41000000 (8.0)] 242cmpeq_4_floats $36..39 = equal($36..39, $40..43) 243bitwise_and_2_ints $36..37 &= $38..39 244bitwise_and_int $36 &= $37 245bitwise_and_int $35 &= $36 246copy_slot_masked ok = Mask($35) 247copy_slot_unmasked $35 = ok 248copy_4_immutables_unmasked $36..39 = i68..71 [0x40A00000 (5.0), 0x40C00000 (6.0), 0x40E00000 (7.0), 0x41000000 (8.0)] 249copy_4_immutables_unmasked $40..43 = i68..71 [0x40A00000 (5.0), 0x40C00000 (6.0), 0x40E00000 (7.0), 0x41000000 (8.0)] 250cmpeq_4_floats $36..39 = equal($36..39, $40..43) 251bitwise_and_2_ints $36..37 &= $38..39 252bitwise_and_int $36 &= $37 253bitwise_and_int $35 &= $36 254copy_slot_masked ok = Mask($35) 255copy_slot_unmasked $35 = ok 256copy_4_immutables_unmasked $36..39 = i72..75 [0x41100000 (9.0), 0, 0, 0] 257copy_4_immutables_unmasked $40..43 = i76..79 [0x41100000 (9.0), 0, 0, 0] 258copy_constant $44 = 0x41100000 (9.0) 259copy_4_immutables_unmasked $45..48 = i72..75 [0x41100000 (9.0), 0, 0, 0] 260copy_4_immutables_unmasked $49..52 = i76..79 [0x41100000 (9.0), 0, 0, 0] 261copy_constant $53 = 0x41100000 (9.0) 262cmpeq_n_floats $36..44 = equal($36..44, $45..53) 263bitwise_and_4_ints $37..40 &= $41..44 264bitwise_and_2_ints $37..38 &= $39..40 265bitwise_and_int $37 &= $38 266bitwise_and_int $36 &= $37 267bitwise_and_int $35 &= $36 268copy_slot_masked ok = Mask($35) 269copy_4_immutables_unmasked $36..39 = i20..23 [0x41300000 (11.0), 0, 0, 0] 270copy_4_immutables_unmasked $40..43 = i24..27 [0, 0x41300000 (11.0), 0, 0] 271copy_4_immutables_unmasked $44..47 = i28..31 [0, 0, 0x41300000 (11.0), 0] 272copy_4_immutables_unmasked $48..51 = i32..35 [0, 0, 0, 0x41300000 (11.0)] 273copy_4_immutables_unmasked $52..55 = i20..23 [0x41300000 (11.0), 0, 0, 0] 274copy_4_immutables_unmasked $56..59 = i24..27 [0, 0x41300000 (11.0), 0, 0] 275copy_4_immutables_unmasked $60..63 = i28..31 [0, 0, 0x41300000 (11.0), 0] 276copy_4_immutables_unmasked $64..67 = i32..35 [0, 0, 0, 0x41300000 (11.0)] 277cmpeq_n_floats $36..51 = equal($36..51, $52..67) 278bitwise_and_4_ints $44..47 &= $48..51 279bitwise_and_4_ints $40..43 &= $44..47 280bitwise_and_4_ints $36..39 &= $40..43 281bitwise_and_2_ints $36..37 &= $38..39 282bitwise_and_int $36 &= $37 283bitwise_and_int $35 &= $36 284copy_slot_masked ok = Mask($35) 285splat_4_constants m11(0..3) = 0x41A00000 (20.0) 286splat_4_constants m11(4..7) = 0x41A00000 (20.0) 287splat_4_constants m11(8..11) = 0x41A00000 (20.0) 288splat_4_constants m11(12..15) = 0x41A00000 (20.0) 289copy_4_slots_unmasked $35..38 = m11(0..3) 290copy_4_slots_unmasked $39..42 = m11(4..7) 291copy_4_slots_unmasked $43..46 = m11(8..11) 292copy_4_slots_unmasked $47..50 = m11(12..15) 293copy_4_immutables_unmasked $51..54 = i20..23 [0x41300000 (11.0), 0, 0, 0] 294copy_4_immutables_unmasked $55..58 = i24..27 [0, 0x41300000 (11.0), 0, 0] 295copy_4_immutables_unmasked $59..62 = i28..31 [0, 0, 0x41300000 (11.0), 0] 296copy_4_immutables_unmasked $63..66 = i32..35 [0, 0, 0, 0x41300000 (11.0)] 297sub_n_floats $35..50 -= $51..66 298copy_4_slots_masked m11(0..3) = Mask($35..38) 299copy_4_slots_masked m11(4..7) = Mask($39..42) 300copy_4_slots_masked m11(8..11) = Mask($43..46) 301copy_4_slots_masked m11(12..15) = Mask($47..50) 302copy_slot_unmasked $35 = ok 303copy_4_slots_unmasked $36..39 = m11(0..3) 304copy_4_slots_unmasked $40..43 = m11(4..7) 305copy_4_slots_unmasked $44..47 = m11(8..11) 306copy_4_slots_unmasked $48..51 = m11(12..15) 307copy_4_immutables_unmasked $52..55 = i52..55 [0x41100000 (9.0), 0x41A00000 (20.0), 0x41A00000 (20.0), 0x41A00000 (20.0)] 308copy_4_immutables_unmasked $56..59 = i56..59 [0x41A00000 (20.0), 0x41100000 (9.0), 0x41A00000 (20.0), 0x41A00000 (20.0)] 309copy_4_immutables_unmasked $60..63 = i60..63 [0x41A00000 (20.0), 0x41A00000 (20.0), 0x41100000 (9.0), 0x41A00000 (20.0)] 310copy_4_immutables_unmasked $64..67 = i64..67 [0x41A00000 (20.0), 0x41A00000 (20.0), 0x41A00000 (20.0), 0x41100000 (9.0)] 311cmpeq_n_floats $36..51 = equal($36..51, $52..67) 312bitwise_and_4_ints $44..47 &= $48..51 313bitwise_and_4_ints $40..43 &= $44..47 314bitwise_and_4_ints $36..39 &= $40..43 315bitwise_and_2_ints $36..37 &= $38..39 316bitwise_and_int $36 &= $37 317bitwise_and_int $35 &= $36 318copy_slot_masked ok = Mask($35) 319label label 0x00000003 320copy_slot_masked $34 = Mask($35) 321label label 0x00000002 322load_condition_mask CondMask = $68 323copy_constant $0 = 0 324merge_condition_mask CondMask = $33 & $34 325branch_if_no_lanes_active branch_if_no_lanes_active +14 (label 1 at #254) 326splat_4_constants x = 0 327splat_4_constants y = 0 328copy_4_immutables_unmasked $1..4 = i0..3 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x40800000 (4.0)] 329copy_4_slots_masked x = Mask($1..4) 330copy_4_immutables_unmasked $1..4 = i0..3 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x40800000 (4.0)] 331copy_4_slots_masked y = Mask($1..4) 332copy_4_slots_unmasked $1..4 = x 333copy_4_slots_unmasked $5..8 = y 334cmpeq_4_floats $1..4 = equal($1..4, $5..8) 335bitwise_and_2_ints $1..2 &= $3..4 336bitwise_and_int $1 &= $2 337label label 0x00000004 338copy_slot_masked $0 = Mask($1) 339label label 0x00000001 340load_condition_mask CondMask = $33 341swizzle_4 $0..3 = ($0..3).xxxx 342copy_4_uniforms $4..7 = colorRed 343copy_4_uniforms $8..11 = colorGreen 344mix_4_ints $0..3 = mix($4..7, $8..11, $0..3) 345load_src src.rgba = $0..3 346