1. store_src_rg coords = src.rg 2. init_lane_masks CondMask = LoopMask = RetMask = true 3. zero_2_slots_unmasked s.x, s.y = 0 4. copy_constant $0 = 0x3F800000 (1.0) 5. copy_slot_unmasked s.x = $0 6. copy_constant $0 = 0x00000002 (2.802597e-45) 7. copy_slot_unmasked s.y = $0 8. copy_2_slots_unmasked [returns_a_struct].result.x, [returns_a_struct].result.y = s.x, s.y 9. copy_2_slots_unmasked $0..1 = [returns_a_struct].result.x, [returns_a_struct].result.y 10. label label 0x00000000 11. copy_2_slots_unmasked s.x₁, s.y₁ = $0..1 12. copy_2_slots_unmasked s.x₂, s.y₂ = $0..1 13. copy_2_slots_unmasked $0..1 = s.x₂, s.y₂ 14. cast_to_float_from_int $1 = IntToFloat($1) 15. add_float $0 += $1 16. copy_slot_unmasked [accepts_a_struct].result = $0 17. label label 0x00000001 18. copy_slot_unmasked x = $0 19. copy_2_slots_unmasked s.x₃, s.y₃ = s.x₁, s.y₁ 20. copy_slot_unmasked $0 = s.x₃ 21. copy_constant $1 = 0x3F800000 (1.0) 22. add_float $0 += $1 23. copy_slot_unmasked s.x₃ = $0 24. copy_slot_unmasked $0 = s.y₃ 25. copy_constant $1 = 0x00000001 (1.401298e-45) 26. add_int $0 += $1 27. copy_slot_unmasked s.y₃ = $0 28. copy_2_slots_unmasked $0..1 = s.x₃, s.y₃ 29. copy_2_slots_unmasked s.x₁, s.y₁ = $0..1 30. label label 0x00000002 31. copy_constant [constructs_a_struct].result.x = 0x40000000 (2.0) 32. copy_constant [constructs_a_struct].result.y = 0x00000003 (4.203895e-45) 33. copy_2_slots_unmasked $0..1 = [constructs_a_struct].result.x, [constructs_a_struct].result.y 34. label label 0x00000003 35. copy_2_slots_unmasked expected.x, expected.y = $0..1 36. zero_4_slots_unmasked n1.a.x, n1.a.y, n1.b.x, n1.b.y = 0 37. zero_4_slots_unmasked n2.a.x, n2.a.y, n2.b.x, n2.b.y = 0 38. zero_4_slots_unmasked n3.a.x, n3.a.y, n3.b.x, n3.b.y = 0 39. zero_2_slots_unmasked s.x, s.y = 0 40. copy_constant $0 = 0x3F800000 (1.0) 41. copy_slot_unmasked s.x = $0 42. copy_constant $0 = 0x00000002 (2.802597e-45) 43. copy_slot_unmasked s.y = $0 44. copy_2_slots_unmasked [returns_a_struct].result.x, [returns_a_struct].result.y = s.x, s.y 45. copy_2_slots_unmasked $0..1 = [returns_a_struct].result.x, [returns_a_struct].result.y 46. label label 0x00000004 47. copy_2_slots_unmasked n1.a.x, n1.a.y = $0..1 48. copy_2_slots_unmasked n1.b.x, n1.b.y = $0..1 49. copy_4_slots_unmasked $0..3 = n1.a.x, n1.a.y, n1.b.x, n1.b.y 50. copy_4_slots_unmasked n2.a.x, n2.a.y, n2.b.x, n2.b.y = $0..3 51. copy_4_slots_unmasked n3.a.x, n3.a.y, n3.b.x, n3.b.y = $0..3 52. copy_2_slots_unmasked s.x₃, s.y₃ = n3.b.x, n3.b.y 53. copy_slot_unmasked $0 = s.x₃ 54. copy_constant $1 = 0x3F800000 (1.0) 55. add_float $0 += $1 56. copy_slot_unmasked s.x₃ = $0 57. copy_slot_unmasked $0 = s.y₃ 58. copy_constant $1 = 0x00000001 (1.401298e-45) 59. add_int $0 += $1 60. copy_slot_unmasked s.y₃ = $0 61. copy_2_slots_unmasked $0..1 = s.x₃, s.y₃ 62. copy_2_slots_unmasked n3.b.x, n3.b.y = $0..1 63. label label 0x00000005 64. copy_constant c1.f4(0) = 0x3F800000 (1.0) 65. copy_constant c1.f4(1) = 0x40000000 (2.0) 66. copy_constant c1.f4(2) = 0x40400000 (3.0) 67. copy_constant c1.f4(3) = 0x40800000 (4.0) 68. copy_constant c1.i3(0) = 0x00000005 (7.006492e-45) 69. copy_constant c1.i3(1) = 0x00000006 (8.407791e-45) 70. copy_constant c1.i3(2) = 0x00000007 (9.809089e-45) 71. copy_constant $0 = colorGreen(1) 72. copy_constant c2.f4(1) = 0x40000000 (2.0) 73. copy_constant c2.f4(2) = 0x40400000 (3.0) 74. copy_constant c2.f4(3) = 0x40800000 (4.0) 75. copy_constant c2.i3(0) = 0x00000005 (7.006492e-45) 76. copy_constant c2.i3(1) = 0x00000006 (8.407791e-45) 77. copy_constant c2.i3(2) = 0x00000007 (9.809089e-45) 78. copy_slot_unmasked c2.f4(0) = $0 79. copy_constant $0 = colorGreen(0) 80. copy_constant c3.f4(1) = 0x40000000 (2.0) 81. copy_constant c3.f4(2) = 0x40400000 (3.0) 82. copy_constant c3.f4(3) = 0x40800000 (4.0) 83. copy_constant c3.i3(0) = 0x00000005 (7.006492e-45) 84. copy_constant c3.i3(1) = 0x00000006 (8.407791e-45) 85. copy_constant c3.i3(2) = 0x00000007 (9.809089e-45) 86. copy_slot_unmasked c3.f4(0) = $0 87. store_condition_mask $14 = CondMask 88. copy_slot_unmasked $15 = x 89. copy_constant $16 = 0x40400000 (3.0) 90. cmpeq_float $15 = equal($15, $16) 91. copy_slot_unmasked $16 = s.x₁ 92. copy_constant $17 = 0x40000000 (2.0) 93. cmpeq_float $16 = equal($16, $17) 94. bitwise_and_int $15 &= $16 95. copy_slot_unmasked $16 = s.y₁ 96. copy_constant $17 = 0x00000003 (4.203895e-45) 97. cmpeq_int $16 = equal($16, $17) 98. bitwise_and_int $15 &= $16 99. copy_slot_unmasked $16 = s.x₁ 100. copy_slot_unmasked $17 = expected.x 101. cmpeq_float $16 = equal($16, $17) 102. copy_slot_unmasked $17 = s.y₁ 103. copy_slot_unmasked $18 = expected.y 104. cmpeq_int $17 = equal($17, $18) 105. bitwise_and_int $16 &= $17 106. bitwise_and_int $15 &= $16 107. copy_slot_unmasked $16 = s.x₁ 108. copy_constant $12 = 0x40000000 (2.0) 109. copy_constant $13 = 0x00000003 (4.203895e-45) 110. copy_slot_unmasked $17 = $12 111. cmpeq_float $16 = equal($16, $17) 112. copy_slot_unmasked $17 = s.y₁ 113. copy_slot_unmasked $18 = $13 114. cmpeq_int $17 = equal($17, $18) 115. bitwise_and_int $16 &= $17 116. bitwise_and_int $15 &= $16 117. zero_slot_unmasked $0 = 0 118. merge_condition_mask CondMask = $14 & $15 119. branch_if_no_active_lanes branch_if_no_active_lanes +18 (label 6 at #137) 120. copy_slot_unmasked $1 = s.x₁ 121. branch_if_no_active_lanes branch_if_no_active_lanes +8 (label 7 at #129) 122. zero_2_slots_unmasked s.x, s.y = 0 123. copy_constant $12 = 0x3F800000 (1.0) 124. copy_slot_masked s.x = Mask($12) 125. copy_constant $12 = 0x00000002 (2.802597e-45) 126. copy_slot_masked s.y = Mask($12) 127. copy_2_slots_unmasked $12..13 = s.x, s.y 128. copy_2_slots_masked [returns_a_struct].result.x, [returns_a_struct].result.y = Mask($12..13) 129. label label 0x00000007 130. copy_slot_unmasked $2 = $12 131. cmpne_float $1 = notEqual($1, $2) 132. copy_slot_unmasked $2 = s.y₁ 133. copy_slot_unmasked $3 = $13 134. cmpne_int $2 = notEqual($2, $3) 135. bitwise_or_int $1 |= $2 136. copy_slot_masked $0 = Mask($1) 137. label label 0x00000006 138. load_condition_mask CondMask = $14 139. copy_slot_unmasked $1 = n1.a.x 140. copy_slot_unmasked $2 = n2.a.x 141. cmpeq_float $1 = equal($1, $2) 142. copy_slot_unmasked $2 = n1.a.y 143. copy_slot_unmasked $3 = n2.a.y 144. cmpeq_int $2 = equal($2, $3) 145. bitwise_and_int $1 &= $2 146. copy_slot_unmasked $2 = n1.b.x 147. copy_slot_unmasked $3 = n2.b.x 148. cmpeq_float $2 = equal($2, $3) 149. copy_slot_unmasked $3 = n1.b.y 150. copy_slot_unmasked $4 = n2.b.y 151. cmpeq_int $3 = equal($3, $4) 152. bitwise_and_int $2 &= $3 153. bitwise_and_int $1 &= $2 154. bitwise_and_int $0 &= $1 155. copy_slot_unmasked $1 = n1.a.x 156. copy_slot_unmasked $2 = n3.a.x 157. cmpne_float $1 = notEqual($1, $2) 158. copy_slot_unmasked $2 = n1.a.y 159. copy_slot_unmasked $3 = n3.a.y 160. cmpne_int $2 = notEqual($2, $3) 161. bitwise_or_int $1 |= $2 162. copy_slot_unmasked $2 = n1.b.x 163. copy_slot_unmasked $3 = n3.b.x 164. cmpne_float $2 = notEqual($2, $3) 165. copy_slot_unmasked $3 = n1.b.y 166. copy_slot_unmasked $4 = n3.b.y 167. cmpne_int $3 = notEqual($3, $4) 168. bitwise_or_int $2 |= $3 169. bitwise_or_int $1 |= $2 170. bitwise_and_int $0 &= $1 171. copy_slot_unmasked $1 = n3.a.x 172. copy_constant $14 = 0x3F800000 (1.0) 173. copy_constant $15 = 0x00000002 (2.802597e-45) 174. copy_constant $16 = 0x40000000 (2.0) 175. copy_constant $17 = 0x00000003 (4.203895e-45) 176. copy_slot_unmasked $2 = $14 177. cmpeq_float $1 = equal($1, $2) 178. copy_slot_unmasked $2 = n3.a.y 179. copy_slot_unmasked $3 = $15 180. cmpeq_int $2 = equal($2, $3) 181. bitwise_and_int $1 &= $2 182. copy_slot_unmasked $2 = n3.b.x 183. copy_slot_unmasked $3 = $16 184. cmpeq_float $2 = equal($2, $3) 185. copy_slot_unmasked $3 = n3.b.y 186. copy_slot_unmasked $4 = $17 187. cmpeq_int $3 = equal($3, $4) 188. bitwise_and_int $2 &= $3 189. bitwise_and_int $1 &= $2 190. bitwise_and_int $0 &= $1 191. copy_4_slots_unmasked $1..4 = c1.f4 192. copy_4_slots_unmasked $5..8 = c2.f4 193. cmpeq_4_floats $1..4 = equal($1..4, $5..8) 194. bitwise_and_2_ints $1..2 &= $3..4 195. bitwise_and_int $1 &= $2 196. copy_3_slots_unmasked $2..4 = c1.i3 197. copy_3_slots_unmasked $5..7 = c2.i3 198. cmpeq_3_ints $2..4 = equal($2..4, $5..7) 199. bitwise_and_int $3 &= $4 200. bitwise_and_int $2 &= $3 201. bitwise_and_int $1 &= $2 202. bitwise_and_int $0 &= $1 203. copy_4_slots_unmasked $1..4 = c2.f4 204. copy_4_slots_unmasked $5..8 = c3.f4 205. cmpne_4_floats $1..4 = notEqual($1..4, $5..8) 206. bitwise_or_2_ints $1..2 |= $3..4 207. bitwise_or_int $1 |= $2 208. copy_3_slots_unmasked $2..4 = c2.i3 209. copy_3_slots_unmasked $5..7 = c3.i3 210. cmpne_3_ints $2..4 = notEqual($2..4, $5..7) 211. bitwise_or_int $3 |= $4 212. bitwise_or_int $2 |= $3 213. bitwise_or_int $1 |= $2 214. bitwise_and_int $0 &= $1 215. copy_slot_unmasked valid = $0 216. swizzle_4 $0..3 = ($0..3).xxxx 217. copy_4_constants $4..7 = colorRed 218. copy_4_constants $8..11 = colorGreen 219. mix_4_ints $0..3 = mix($4..7, $8..11, $0..3) 220. copy_4_slots_unmasked [main].result = $0..3 221. load_src src.rgba = [main].result