blob: 7cb21a46010143d3399c44f6acc9710b0240af9c [file] [log] [blame]
1. store_src_rg coords = src.rg
2. init_lane_masks CondMask = LoopMask = RetMask = true
3. copy_constant $0 = colorGreen(0)
4. copy_constant $1 = colorGreen(2)
5. div_float $0 /= $1
6. copy_slot_unmasked NAN1 = $0
7. copy_constant $0 = colorGreen(2)
8. copy_constant $1 = colorGreen(0)
9. div_float $0 /= $1
10. copy_slot_unmasked NAN2 = $0
11. copy_constant $0 = colorGreen(0)
12. copy_constant $1 = colorGreen(2)
13. mul_float $0 *= $1
14. copy_slot_unmasked ZP = $0
15. zero_slot_unmasked $0 = 0
16. copy_constant $1 = colorGreen(0)
17. sub_float $0 -= $1
18. copy_constant $1 = colorGreen(2)
19. mul_float $0 *= $1
20. copy_slot_unmasked ZM = $0
21. copy_constant $0 = colorGreen(1)
22. copy_constant $1 = 0x42280000 (42.0)
23. mul_float $0 *= $1
24. copy_slot_unmasked F42 = $0
25. copy_constant $0 = colorGreen(1)
26. copy_constant $1 = 0x422C0000 (43.0)
27. mul_float $0 *= $1
28. copy_slot_unmasked F43 = $0
29. copy_constant $0 = colorGreen(1)
30. copy_constant $1 = 0x42300000 (44.0)
31. mul_float $0 *= $1
32. copy_slot_unmasked F44 = $0
33. copy_constant $0 = colorGreen(1)
34. copy_constant $1 = 0x42340000 (45.0)
35. mul_float $0 *= $1
36. copy_slot_unmasked F45 = $0
37. copy_constant $0 = colorGreen(1)
38. copy_constant $1 = 0x42380000 (46.0)
39. mul_float $0 *= $1
40. copy_slot_unmasked F46 = $0
41. copy_constant $0 = colorGreen(1)
42. copy_constant $1 = 0x423C0000 (47.0)
43. mul_float $0 *= $1
44. copy_slot_unmasked F47 = $0
45. copy_constant EQ = 0xFFFFFFFF
46. zero_slot_unmasked NE = 0
47. copy_constant $0 = colorGreen(0)
48. copy_constant $1 = 0x3F800000 (1.0)
49. add_float $0 += $1
50. copy_slot_unmasked _0_one = $0
51. zero_4_slots_unmasked _1_a[0].f1, _1_a[0].v2, _1_a[1].f1 = 0
52. zero_2_slots_unmasked _1_a[1].v2 = 0
53. copy_slot_unmasked $0 = F42
54. copy_slot_unmasked _1_a[0].f1 = $0
55. copy_slot_unmasked $0 = ZM
56. copy_slot_unmasked $1 = ZP
57. copy_2_slots_unmasked _1_a[0].v2 = $0..1
58. copy_slot_unmasked $0 = F43
59. copy_slot_unmasked _1_a[1].f1 = $0
60. copy_2_slots_unmasked $0..1 = F44, F45
61. copy_2_slots_unmasked _1_a[1].v2 = $0..1
62. zero_4_slots_unmasked _2_b[0].f1, _2_b[0].v2, _2_b[1].f1 = 0
63. zero_2_slots_unmasked _2_b[1].v2 = 0
64. copy_slot_unmasked $0 = F42
65. copy_slot_unmasked $1 = _0_one
66. mul_float $0 *= $1
67. copy_slot_unmasked _2_b[0].f1 = $0
68. copy_slot_unmasked $0 = ZM
69. copy_slot_unmasked $1 = _0_one
70. mul_float $0 *= $1
71. copy_slot_unmasked $1 = ZP
72. copy_slot_unmasked $2 = _0_one
73. mul_float $1 *= $2
74. copy_2_slots_unmasked _2_b[0].v2 = $0..1
75. copy_slot_unmasked $0 = F43
76. copy_slot_unmasked $1 = _0_one
77. mul_float $0 *= $1
78. copy_slot_unmasked _2_b[1].f1 = $0
79. copy_slot_unmasked $0 = F44
80. copy_slot_unmasked $1 = _0_one
81. mul_float $0 *= $1
82. copy_slot_unmasked $1 = F45
83. copy_slot_unmasked $2 = _0_one
84. mul_float $1 *= $2
85. copy_2_slots_unmasked _2_b[1].v2 = $0..1
86. store_condition_mask $20 = CondMask
87. store_condition_mask $38 = CondMask
88. store_condition_mask $47 = CondMask
89. store_condition_mask $29 = CondMask
90. store_condition_mask $67 = CondMask
91. store_condition_mask $56 = CondMask
92. store_condition_mask $12 = CondMask
93. store_condition_mask $65 = CondMask
94. copy_slot_unmasked $66 = EQ
95. copy_slot_unmasked $13 = _1_a[0].f1
96. copy_slot_unmasked $14 = _2_b[0].f1
97. cmpne_float $13 = notEqual($13, $14)
98. copy_2_slots_unmasked $14..15 = _1_a[0].v2
99. copy_2_slots_unmasked $16..17 = _2_b[0].v2
100. cmpne_2_floats $14..15 = notEqual($14..15, $16..17)
101. bitwise_or_int $14 |= $15
102. bitwise_or_int $13 |= $14
103. copy_slot_unmasked $14 = _1_a[1].f1
104. copy_slot_unmasked $15 = _2_b[1].f1
105. cmpne_float $14 = notEqual($14, $15)
106. copy_2_slots_unmasked $15..16 = _1_a[1].v2
107. copy_2_slots_unmasked $17..18 = _2_b[1].v2
108. cmpne_2_floats $15..16 = notEqual($15..16, $17..18)
109. bitwise_or_int $15 |= $16
110. bitwise_or_int $14 |= $15
111. bitwise_or_int $13 |= $14
112. merge_condition_mask CondMask = $65 & $66
113. branch_if_no_lanes_active branch_if_no_lanes_active +19 (label 8 at #132)
114. copy_slot_unmasked $14 = _1_a[0].f1
115. copy_slot_unmasked $15 = _2_b[0].f1
116. cmpeq_float $14 = equal($14, $15)
117. copy_2_slots_unmasked $15..16 = _1_a[0].v2
118. copy_2_slots_unmasked $17..18 = _2_b[0].v2
119. cmpeq_2_floats $15..16 = equal($15..16, $17..18)
120. bitwise_and_int $15 &= $16
121. bitwise_and_int $14 &= $15
122. copy_slot_unmasked $15 = _1_a[1].f1
123. copy_slot_unmasked $16 = _2_b[1].f1
124. cmpeq_float $15 = equal($15, $16)
125. copy_2_slots_unmasked $16..17 = _1_a[1].v2
126. copy_2_slots_unmasked $18..19 = _2_b[1].v2
127. cmpeq_2_floats $16..17 = equal($16..17, $18..19)
128. bitwise_and_int $16 &= $17
129. bitwise_and_int $15 &= $16
130. bitwise_and_int $14 &= $15
131. copy_slot_masked $13 = Mask($14)
132. label label 0x00000008
133. load_condition_mask CondMask = $65
134. zero_slot_unmasked $57 = 0
135. merge_condition_mask CondMask = $12 & $13
136. branch_if_no_lanes_active branch_if_no_lanes_active +88 (label 7 at #224)
137. copy_slot_unmasked eq = NE
138. copy_slot_unmasked f1 = F42
139. copy_slot_unmasked v2 = ZM
140. copy_slot_unmasked f3 = ZP
141. copy_3_slots_unmasked f4, f5, f6 = F43, F44, F45
142. copy_constant $58 = colorGreen(0)
143. copy_constant $59 = 0x3F800000 (1.0)
144. add_float $58 += $59
145. copy_slot_unmasked one = $58
146. zero_4_slots_unmasked a[0].f1, a[0].v2, a[1].f1 = 0
147. zero_2_slots_unmasked a[1].v2 = 0
148. copy_slot_unmasked $58 = f1
149. copy_slot_masked a[0].f1 = Mask($58)
150. copy_2_slots_unmasked $58..59 = v2, f3
151. copy_2_slots_masked a[0].v2 = Mask($58..59)
152. copy_slot_unmasked $58 = f4
153. copy_slot_masked a[1].f1 = Mask($58)
154. copy_2_slots_unmasked $58..59 = f5, f6
155. copy_2_slots_masked a[1].v2 = Mask($58..59)
156. zero_4_slots_unmasked b[0].f1, b[0].v2, b[1].f1 = 0
157. zero_2_slots_unmasked b[1].v2 = 0
158. copy_slot_unmasked $58 = f1
159. copy_slot_unmasked $59 = one
160. mul_float $58 *= $59
161. copy_slot_masked b[0].f1 = Mask($58)
162. copy_slot_unmasked $58 = v2
163. copy_slot_unmasked $59 = one
164. mul_float $58 *= $59
165. copy_slot_unmasked $59 = f3
166. copy_slot_unmasked $60 = one
167. mul_float $59 *= $60
168. copy_2_slots_masked b[0].v2 = Mask($58..59)
169. copy_slot_unmasked $58 = f4
170. copy_slot_unmasked $59 = one
171. mul_float $58 *= $59
172. copy_slot_masked b[1].f1 = Mask($58)
173. copy_slot_unmasked $58 = f5
174. copy_slot_unmasked $59 = one
175. mul_float $58 *= $59
176. copy_slot_unmasked $59 = f6
177. copy_slot_unmasked $60 = one
178. mul_float $59 *= $60
179. copy_2_slots_masked b[1].v2 = Mask($58..59)
180. store_condition_mask $65 = CondMask
181. copy_slot_unmasked $66 = eq
182. copy_slot_unmasked $58 = a[0].f1
183. copy_slot_unmasked $59 = b[0].f1
184. cmpne_float $58 = notEqual($58, $59)
185. copy_2_slots_unmasked $59..60 = a[0].v2
186. copy_2_slots_unmasked $61..62 = b[0].v2
187. cmpne_2_floats $59..60 = notEqual($59..60, $61..62)
188. bitwise_or_int $59 |= $60
189. bitwise_or_int $58 |= $59
190. copy_slot_unmasked $59 = a[1].f1
191. copy_slot_unmasked $60 = b[1].f1
192. cmpne_float $59 = notEqual($59, $60)
193. copy_2_slots_unmasked $60..61 = a[1].v2
194. copy_2_slots_unmasked $62..63 = b[1].v2
195. cmpne_2_floats $60..61 = notEqual($60..61, $62..63)
196. bitwise_or_int $60 |= $61
197. bitwise_or_int $59 |= $60
198. bitwise_or_int $58 |= $59
199. merge_condition_mask CondMask = $65 & $66
200. branch_if_no_lanes_active branch_if_no_lanes_active +19 (label 10 at #219)
201. copy_slot_unmasked $59 = a[0].f1
202. copy_slot_unmasked $60 = b[0].f1
203. cmpeq_float $59 = equal($59, $60)
204. copy_2_slots_unmasked $60..61 = a[0].v2
205. copy_2_slots_unmasked $62..63 = b[0].v2
206. cmpeq_2_floats $60..61 = equal($60..61, $62..63)
207. bitwise_and_int $60 &= $61
208. bitwise_and_int $59 &= $60
209. copy_slot_unmasked $60 = a[1].f1
210. copy_slot_unmasked $61 = b[1].f1
211. cmpeq_float $60 = equal($60, $61)
212. copy_2_slots_unmasked $61..62 = a[1].v2
213. copy_2_slots_unmasked $63..64 = b[1].v2
214. cmpeq_2_floats $61..62 = equal($61..62, $63..64)
215. bitwise_and_int $61 &= $62
216. bitwise_and_int $60 &= $61
217. bitwise_and_int $59 &= $60
218. copy_slot_masked $58 = Mask($59)
219. label label 0x0000000A
220. load_condition_mask CondMask = $65
221. label label 0x00000009
222. bitwise_not_int $58 = ~$58
223. copy_slot_masked $57 = Mask($58)
224. label label 0x00000007
225. load_condition_mask CondMask = $12
226. zero_slot_unmasked $68 = 0
227. merge_condition_mask CondMask = $56 & $57
228. branch_if_no_lanes_active branch_if_no_lanes_active +86 (label 6 at #314)
229. copy_slot_unmasked eq = NE
230. copy_slot_unmasked f1 = F42
231. copy_2_slots_unmasked v2, f3 = NAN1, NAN2
232. copy_3_slots_unmasked f4, f5, f6 = F43, F44, F45
233. copy_constant $69 = colorGreen(0)
234. copy_constant $70 = 0x3F800000 (1.0)
235. add_float $69 += $70
236. copy_slot_unmasked one = $69
237. zero_4_slots_unmasked a[0].f1, a[0].v2, a[1].f1 = 0
238. zero_2_slots_unmasked a[1].v2 = 0
239. copy_slot_unmasked $69 = f1
240. copy_slot_masked a[0].f1 = Mask($69)
241. copy_2_slots_unmasked $69..70 = v2, f3
242. copy_2_slots_masked a[0].v2 = Mask($69..70)
243. copy_slot_unmasked $69 = f4
244. copy_slot_masked a[1].f1 = Mask($69)
245. copy_2_slots_unmasked $69..70 = f5, f6
246. copy_2_slots_masked a[1].v2 = Mask($69..70)
247. zero_4_slots_unmasked b[0].f1, b[0].v2, b[1].f1 = 0
248. zero_2_slots_unmasked b[1].v2 = 0
249. copy_slot_unmasked $69 = f1
250. copy_slot_unmasked $70 = one
251. mul_float $69 *= $70
252. copy_slot_masked b[0].f1 = Mask($69)
253. copy_slot_unmasked $69 = v2
254. copy_slot_unmasked $70 = one
255. mul_float $69 *= $70
256. copy_slot_unmasked $70 = f3
257. copy_slot_unmasked $71 = one
258. mul_float $70 *= $71
259. copy_2_slots_masked b[0].v2 = Mask($69..70)
260. copy_slot_unmasked $69 = f4
261. copy_slot_unmasked $70 = one
262. mul_float $69 *= $70
263. copy_slot_masked b[1].f1 = Mask($69)
264. copy_slot_unmasked $69 = f5
265. copy_slot_unmasked $70 = one
266. mul_float $69 *= $70
267. copy_slot_unmasked $70 = f6
268. copy_slot_unmasked $71 = one
269. mul_float $70 *= $71
270. copy_2_slots_masked b[1].v2 = Mask($69..70)
271. store_condition_mask $12 = CondMask
272. copy_slot_unmasked $13 = eq
273. copy_slot_unmasked $69 = a[0].f1
274. copy_slot_unmasked $70 = b[0].f1
275. cmpne_float $69 = notEqual($69, $70)
276. copy_2_slots_unmasked $70..71 = a[0].v2
277. copy_2_slots_unmasked $72..73 = b[0].v2
278. cmpne_2_floats $70..71 = notEqual($70..71, $72..73)
279. bitwise_or_int $70 |= $71
280. bitwise_or_int $69 |= $70
281. copy_slot_unmasked $70 = a[1].f1
282. copy_slot_unmasked $71 = b[1].f1
283. cmpne_float $70 = notEqual($70, $71)
284. copy_2_slots_unmasked $71..72 = a[1].v2
285. copy_2_slots_unmasked $73..74 = b[1].v2
286. cmpne_2_floats $71..72 = notEqual($71..72, $73..74)
287. bitwise_or_int $71 |= $72
288. bitwise_or_int $70 |= $71
289. bitwise_or_int $69 |= $70
290. merge_condition_mask CondMask = $12 & $13
291. branch_if_no_lanes_active branch_if_no_lanes_active +19 (label 12 at #310)
292. copy_slot_unmasked $70 = a[0].f1
293. copy_slot_unmasked $71 = b[0].f1
294. cmpeq_float $70 = equal($70, $71)
295. copy_2_slots_unmasked $71..72 = a[0].v2
296. copy_2_slots_unmasked $73..74 = b[0].v2
297. cmpeq_2_floats $71..72 = equal($71..72, $73..74)
298. bitwise_and_int $71 &= $72
299. bitwise_and_int $70 &= $71
300. copy_slot_unmasked $71 = a[1].f1
301. copy_slot_unmasked $72 = b[1].f1
302. cmpeq_float $71 = equal($71, $72)
303. copy_2_slots_unmasked $72..73 = a[1].v2
304. copy_2_slots_unmasked $74..75 = b[1].v2
305. cmpeq_2_floats $72..73 = equal($72..73, $74..75)
306. bitwise_and_int $72 &= $73
307. bitwise_and_int $71 &= $72
308. bitwise_and_int $70 &= $71
309. copy_slot_masked $69 = Mask($70)
310. label label 0x0000000C
311. load_condition_mask CondMask = $12
312. label label 0x0000000B
313. copy_slot_masked $68 = Mask($69)
314. label label 0x00000006
315. load_condition_mask CondMask = $56
316. zero_slot_unmasked $30 = 0
317. merge_condition_mask CondMask = $67 & $68
318. branch_if_no_lanes_active branch_if_no_lanes_active +87 (label 5 at #405)
319. copy_slot_unmasked eq = EQ
320. copy_slot_unmasked f1 = F42
321. copy_2_slots_unmasked v2, f3 = NAN1, NAN2
322. copy_3_slots_unmasked f4, f5, f6 = F43, F44, F45
323. copy_constant $31 = colorGreen(0)
324. copy_constant $32 = 0x3F800000 (1.0)
325. add_float $31 += $32
326. copy_slot_unmasked one = $31
327. zero_4_slots_unmasked a[0].f1, a[0].v2, a[1].f1 = 0
328. zero_2_slots_unmasked a[1].v2 = 0
329. copy_slot_unmasked $31 = f1
330. copy_slot_masked a[0].f1 = Mask($31)
331. copy_2_slots_unmasked $31..32 = v2, f3
332. copy_2_slots_masked a[0].v2 = Mask($31..32)
333. copy_slot_unmasked $31 = f4
334. copy_slot_masked a[1].f1 = Mask($31)
335. copy_2_slots_unmasked $31..32 = f5, f6
336. copy_2_slots_masked a[1].v2 = Mask($31..32)
337. zero_4_slots_unmasked b[0].f1, b[0].v2, b[1].f1 = 0
338. zero_2_slots_unmasked b[1].v2 = 0
339. copy_slot_unmasked $31 = f1
340. copy_slot_unmasked $32 = one
341. mul_float $31 *= $32
342. copy_slot_masked b[0].f1 = Mask($31)
343. copy_slot_unmasked $31 = v2
344. copy_slot_unmasked $32 = one
345. mul_float $31 *= $32
346. copy_slot_unmasked $32 = f3
347. copy_slot_unmasked $33 = one
348. mul_float $32 *= $33
349. copy_2_slots_masked b[0].v2 = Mask($31..32)
350. copy_slot_unmasked $31 = f4
351. copy_slot_unmasked $32 = one
352. mul_float $31 *= $32
353. copy_slot_masked b[1].f1 = Mask($31)
354. copy_slot_unmasked $31 = f5
355. copy_slot_unmasked $32 = one
356. mul_float $31 *= $32
357. copy_slot_unmasked $32 = f6
358. copy_slot_unmasked $33 = one
359. mul_float $32 *= $33
360. copy_2_slots_masked b[1].v2 = Mask($31..32)
361. store_condition_mask $56 = CondMask
362. copy_slot_unmasked $57 = eq
363. copy_slot_unmasked $31 = a[0].f1
364. copy_slot_unmasked $32 = b[0].f1
365. cmpne_float $31 = notEqual($31, $32)
366. copy_2_slots_unmasked $32..33 = a[0].v2
367. copy_2_slots_unmasked $34..35 = b[0].v2
368. cmpne_2_floats $32..33 = notEqual($32..33, $34..35)
369. bitwise_or_int $32 |= $33
370. bitwise_or_int $31 |= $32
371. copy_slot_unmasked $32 = a[1].f1
372. copy_slot_unmasked $33 = b[1].f1
373. cmpne_float $32 = notEqual($32, $33)
374. copy_2_slots_unmasked $33..34 = a[1].v2
375. copy_2_slots_unmasked $35..36 = b[1].v2
376. cmpne_2_floats $33..34 = notEqual($33..34, $35..36)
377. bitwise_or_int $33 |= $34
378. bitwise_or_int $32 |= $33
379. bitwise_or_int $31 |= $32
380. merge_condition_mask CondMask = $56 & $57
381. branch_if_no_lanes_active branch_if_no_lanes_active +19 (label 14 at #400)
382. copy_slot_unmasked $32 = a[0].f1
383. copy_slot_unmasked $33 = b[0].f1
384. cmpeq_float $32 = equal($32, $33)
385. copy_2_slots_unmasked $33..34 = a[0].v2
386. copy_2_slots_unmasked $35..36 = b[0].v2
387. cmpeq_2_floats $33..34 = equal($33..34, $35..36)
388. bitwise_and_int $33 &= $34
389. bitwise_and_int $32 &= $33
390. copy_slot_unmasked $33 = a[1].f1
391. copy_slot_unmasked $34 = b[1].f1
392. cmpeq_float $33 = equal($33, $34)
393. copy_2_slots_unmasked $34..35 = a[1].v2
394. copy_2_slots_unmasked $36..37 = b[1].v2
395. cmpeq_2_floats $34..35 = equal($34..35, $36..37)
396. bitwise_and_int $34 &= $35
397. bitwise_and_int $33 &= $34
398. bitwise_and_int $32 &= $33
399. copy_slot_masked $31 = Mask($32)
400. label label 0x0000000E
401. load_condition_mask CondMask = $56
402. label label 0x0000000D
403. bitwise_not_int $31 = ~$31
404. copy_slot_masked $30 = Mask($31)
405. label label 0x00000005
406. load_condition_mask CondMask = $67
407. zero_slot_unmasked $48 = 0
408. merge_condition_mask CondMask = $29 & $30
409. branch_if_no_lanes_active branch_if_no_lanes_active +83 (label 4 at #492)
410. copy_slot_unmasked eq = NE
411. copy_4_slots_unmasked f1₁, v2₁, f3₁, f4 = F42, F43, F44, F45
412. copy_2_slots_unmasked f5₁, f6 = F46, F47
413. copy_constant $49 = colorGreen(0)
414. copy_constant $50 = 0x40000000 (2.0)
415. add_float $49 += $50
416. copy_slot_unmasked two = $49
417. zero_4_slots_unmasked a[0].f1₁, a[0].v2₁, a[1].f1 = 0
418. zero_2_slots_unmasked a[1].v2 = 0
419. copy_slot_unmasked $49 = f1
420. copy_slot_masked a[0].f1 = Mask($49)
421. copy_2_slots_unmasked $49..50 = v2₁, f3
422. copy_2_slots_masked a[0].v2 = Mask($49..50)
423. copy_slot_unmasked $49 = f4
424. copy_slot_masked a[1].f1 = Mask($49)
425. copy_2_slots_unmasked $49..50 = f5₁, f6
426. copy_2_slots_masked a[1].v2 = Mask($49..50)
427. zero_4_slots_unmasked b[0].f1₁, b[0].v2₁, b[1].f1 = 0
428. zero_2_slots_unmasked b[1].v2 = 0
429. copy_slot_unmasked $49 = f1
430. copy_slot_unmasked $50 = two
431. mul_float $49 *= $50
432. copy_slot_masked b[0].f1 = Mask($49)
433. copy_slot_unmasked $49 = v2
434. copy_slot_unmasked $50 = two
435. mul_float $49 *= $50
436. copy_slot_unmasked $50 = f3
437. copy_slot_unmasked $51 = two
438. mul_float $50 *= $51
439. copy_2_slots_masked b[0].v2 = Mask($49..50)
440. copy_slot_unmasked $49 = f4
441. copy_slot_unmasked $50 = two
442. mul_float $49 *= $50
443. copy_slot_masked b[1].f1 = Mask($49)
444. copy_slot_unmasked $49 = f5
445. copy_slot_unmasked $50 = two
446. mul_float $49 *= $50
447. copy_slot_unmasked $50 = f6
448. copy_2_slots_masked b[1].v2 = Mask($49..50)
449. store_condition_mask $67 = CondMask
450. copy_slot_unmasked $68 = eq
451. copy_slot_unmasked $49 = a[0].f1
452. copy_slot_unmasked $50 = b[0].f1
453. cmpne_float $49 = notEqual($49, $50)
454. copy_2_slots_unmasked $50..51 = a[0].v2
455. copy_2_slots_unmasked $52..53 = b[0].v2
456. cmpne_2_floats $50..51 = notEqual($50..51, $52..53)
457. bitwise_or_int $50 |= $51
458. bitwise_or_int $49 |= $50
459. copy_slot_unmasked $50 = a[1].f1
460. copy_slot_unmasked $51 = b[1].f1
461. cmpne_float $50 = notEqual($50, $51)
462. copy_2_slots_unmasked $51..52 = a[1].v2
463. copy_2_slots_unmasked $53..54 = b[1].v2
464. cmpne_2_floats $51..52 = notEqual($51..52, $53..54)
465. bitwise_or_int $51 |= $52
466. bitwise_or_int $50 |= $51
467. bitwise_or_int $49 |= $50
468. merge_condition_mask CondMask = $67 & $68
469. branch_if_no_lanes_active branch_if_no_lanes_active +19 (label 16 at #488)
470. copy_slot_unmasked $50 = a[0].f1
471. copy_slot_unmasked $51 = b[0].f1
472. cmpeq_float $50 = equal($50, $51)
473. copy_2_slots_unmasked $51..52 = a[0].v2
474. copy_2_slots_unmasked $53..54 = b[0].v2
475. cmpeq_2_floats $51..52 = equal($51..52, $53..54)
476. bitwise_and_int $51 &= $52
477. bitwise_and_int $50 &= $51
478. copy_slot_unmasked $51 = a[1].f1
479. copy_slot_unmasked $52 = b[1].f1
480. cmpeq_float $51 = equal($51, $52)
481. copy_2_slots_unmasked $52..53 = a[1].v2
482. copy_2_slots_unmasked $54..55 = b[1].v2
483. cmpeq_2_floats $52..53 = equal($52..53, $54..55)
484. bitwise_and_int $52 &= $53
485. bitwise_and_int $51 &= $52
486. bitwise_and_int $50 &= $51
487. copy_slot_masked $49 = Mask($50)
488. label label 0x00000010
489. load_condition_mask CondMask = $67
490. label label 0x0000000F
491. copy_slot_masked $48 = Mask($49)
492. label label 0x00000004
493. load_condition_mask CondMask = $29
494. zero_slot_unmasked $39 = 0
495. merge_condition_mask CondMask = $47 & $48
496. branch_if_no_lanes_active branch_if_no_lanes_active +85 (label 3 at #581)
497. copy_slot_unmasked eq = EQ
498. copy_4_slots_unmasked f1₁, v2₁, f3₁, f4 = F42, F43, F44, F45
499. copy_2_slots_unmasked f5₁, f6 = F46, F47
500. copy_constant $40 = colorGreen(0)
501. copy_constant $41 = 0x40000000 (2.0)
502. stack_rewind
503. add_float $40 += $41
504. copy_slot_unmasked two = $40
505. zero_4_slots_unmasked a[0].f1₁, a[0].v2₁, a[1].f1 = 0
506. zero_2_slots_unmasked a[1].v2 = 0
507. copy_slot_unmasked $40 = f1
508. copy_slot_masked a[0].f1 = Mask($40)
509. copy_2_slots_unmasked $40..41 = v2₁, f3
510. copy_2_slots_masked a[0].v2 = Mask($40..41)
511. copy_slot_unmasked $40 = f4
512. copy_slot_masked a[1].f1 = Mask($40)
513. copy_2_slots_unmasked $40..41 = f5₁, f6
514. copy_2_slots_masked a[1].v2 = Mask($40..41)
515. zero_4_slots_unmasked b[0].f1₁, b[0].v2₁, b[1].f1 = 0
516. zero_2_slots_unmasked b[1].v2 = 0
517. copy_slot_unmasked $40 = f1
518. copy_slot_unmasked $41 = two
519. mul_float $40 *= $41
520. copy_slot_masked b[0].f1 = Mask($40)
521. copy_slot_unmasked $40 = v2
522. copy_slot_unmasked $41 = two
523. mul_float $40 *= $41
524. copy_slot_unmasked $41 = f3
525. copy_slot_unmasked $42 = two
526. mul_float $41 *= $42
527. copy_2_slots_masked b[0].v2 = Mask($40..41)
528. copy_slot_unmasked $40 = f4
529. copy_slot_unmasked $41 = two
530. mul_float $40 *= $41
531. copy_slot_masked b[1].f1 = Mask($40)
532. copy_slot_unmasked $40 = f5
533. copy_slot_unmasked $41 = two
534. mul_float $40 *= $41
535. copy_slot_unmasked $41 = f6
536. copy_2_slots_masked b[1].v2 = Mask($40..41)
537. store_condition_mask $29 = CondMask
538. copy_slot_unmasked $30 = eq
539. copy_slot_unmasked $40 = a[0].f1
540. copy_slot_unmasked $41 = b[0].f1
541. cmpne_float $40 = notEqual($40, $41)
542. copy_2_slots_unmasked $41..42 = a[0].v2
543. copy_2_slots_unmasked $43..44 = b[0].v2
544. cmpne_2_floats $41..42 = notEqual($41..42, $43..44)
545. bitwise_or_int $41 |= $42
546. bitwise_or_int $40 |= $41
547. copy_slot_unmasked $41 = a[1].f1
548. copy_slot_unmasked $42 = b[1].f1
549. cmpne_float $41 = notEqual($41, $42)
550. copy_2_slots_unmasked $42..43 = a[1].v2
551. copy_2_slots_unmasked $44..45 = b[1].v2
552. cmpne_2_floats $42..43 = notEqual($42..43, $44..45)
553. bitwise_or_int $42 |= $43
554. bitwise_or_int $41 |= $42
555. bitwise_or_int $40 |= $41
556. merge_condition_mask CondMask = $29 & $30
557. branch_if_no_lanes_active branch_if_no_lanes_active +19 (label 18 at #576)
558. copy_slot_unmasked $41 = a[0].f1
559. copy_slot_unmasked $42 = b[0].f1
560. cmpeq_float $41 = equal($41, $42)
561. copy_2_slots_unmasked $42..43 = a[0].v2
562. copy_2_slots_unmasked $44..45 = b[0].v2
563. cmpeq_2_floats $42..43 = equal($42..43, $44..45)
564. bitwise_and_int $42 &= $43
565. bitwise_and_int $41 &= $42
566. copy_slot_unmasked $42 = a[1].f1
567. copy_slot_unmasked $43 = b[1].f1
568. cmpeq_float $42 = equal($42, $43)
569. copy_2_slots_unmasked $43..44 = a[1].v2
570. copy_2_slots_unmasked $45..46 = b[1].v2
571. cmpeq_2_floats $43..44 = equal($43..44, $45..46)
572. bitwise_and_int $43 &= $44
573. bitwise_and_int $42 &= $43
574. bitwise_and_int $41 &= $42
575. copy_slot_masked $40 = Mask($41)
576. label label 0x00000012
577. load_condition_mask CondMask = $29
578. label label 0x00000011
579. bitwise_not_int $40 = ~$40
580. copy_slot_masked $39 = Mask($40)
581. label label 0x00000003
582. load_condition_mask CondMask = $47
583. zero_slot_unmasked $21 = 0
584. merge_condition_mask CondMask = $38 & $39
585. branch_if_no_lanes_active branch_if_no_lanes_active +85 (label 2 at #670)
586. copy_slot_unmasked eq = NE
587. copy_slot_unmasked f1 = NAN1
588. copy_slot_unmasked v2 = ZM
589. copy_slot_unmasked f3 = ZP
590. copy_3_slots_unmasked f4₁, f5₁, f6 = F42, F43, F44
591. copy_constant $22 = colorGreen(0)
592. copy_constant $23 = 0x40000000 (2.0)
593. add_float $22 += $23
594. copy_slot_unmasked two = $22
595. zero_4_slots_unmasked a[0].f1₁, a[0].v2₁, a[1].f1 = 0
596. zero_2_slots_unmasked a[1].v2 = 0
597. copy_slot_unmasked $22 = f1
598. copy_slot_masked a[0].f1 = Mask($22)
599. copy_2_slots_unmasked $22..23 = v2₁, f3
600. copy_2_slots_masked a[0].v2 = Mask($22..23)
601. copy_slot_unmasked $22 = f4
602. copy_slot_masked a[1].f1 = Mask($22)
603. copy_2_slots_unmasked $22..23 = f5₁, f6
604. copy_2_slots_masked a[1].v2 = Mask($22..23)
605. zero_4_slots_unmasked b[0].f1₁, b[0].v2₁, b[1].f1 = 0
606. zero_2_slots_unmasked b[1].v2 = 0
607. copy_slot_unmasked $22 = f1
608. copy_slot_unmasked $23 = two
609. mul_float $22 *= $23
610. copy_slot_masked b[0].f1 = Mask($22)
611. copy_slot_unmasked $22 = v2
612. copy_slot_unmasked $23 = two
613. mul_float $22 *= $23
614. copy_slot_unmasked $23 = f3
615. copy_slot_unmasked $24 = two
616. mul_float $23 *= $24
617. copy_2_slots_masked b[0].v2 = Mask($22..23)
618. copy_slot_unmasked $22 = f4
619. copy_slot_unmasked $23 = two
620. mul_float $22 *= $23
621. copy_slot_masked b[1].f1 = Mask($22)
622. copy_slot_unmasked $22 = f5
623. copy_slot_unmasked $23 = two
624. mul_float $22 *= $23
625. copy_slot_unmasked $23 = f6
626. copy_2_slots_masked b[1].v2 = Mask($22..23)
627. store_condition_mask $47 = CondMask
628. copy_slot_unmasked $48 = eq
629. copy_slot_unmasked $22 = a[0].f1
630. copy_slot_unmasked $23 = b[0].f1
631. cmpne_float $22 = notEqual($22, $23)
632. copy_2_slots_unmasked $23..24 = a[0].v2
633. copy_2_slots_unmasked $25..26 = b[0].v2
634. cmpne_2_floats $23..24 = notEqual($23..24, $25..26)
635. bitwise_or_int $23 |= $24
636. bitwise_or_int $22 |= $23
637. copy_slot_unmasked $23 = a[1].f1
638. copy_slot_unmasked $24 = b[1].f1
639. cmpne_float $23 = notEqual($23, $24)
640. copy_2_slots_unmasked $24..25 = a[1].v2
641. copy_2_slots_unmasked $26..27 = b[1].v2
642. cmpne_2_floats $24..25 = notEqual($24..25, $26..27)
643. bitwise_or_int $24 |= $25
644. bitwise_or_int $23 |= $24
645. bitwise_or_int $22 |= $23
646. merge_condition_mask CondMask = $47 & $48
647. branch_if_no_lanes_active branch_if_no_lanes_active +19 (label 20 at #666)
648. copy_slot_unmasked $23 = a[0].f1
649. copy_slot_unmasked $24 = b[0].f1
650. cmpeq_float $23 = equal($23, $24)
651. copy_2_slots_unmasked $24..25 = a[0].v2
652. copy_2_slots_unmasked $26..27 = b[0].v2
653. cmpeq_2_floats $24..25 = equal($24..25, $26..27)
654. bitwise_and_int $24 &= $25
655. bitwise_and_int $23 &= $24
656. copy_slot_unmasked $24 = a[1].f1
657. copy_slot_unmasked $25 = b[1].f1
658. cmpeq_float $24 = equal($24, $25)
659. copy_2_slots_unmasked $25..26 = a[1].v2
660. copy_2_slots_unmasked $27..28 = b[1].v2
661. cmpeq_2_floats $25..26 = equal($25..26, $27..28)
662. bitwise_and_int $25 &= $26
663. bitwise_and_int $24 &= $25
664. bitwise_and_int $23 &= $24
665. copy_slot_masked $22 = Mask($23)
666. label label 0x00000014
667. load_condition_mask CondMask = $47
668. label label 0x00000013
669. copy_slot_masked $21 = Mask($22)
670. label label 0x00000002
671. load_condition_mask CondMask = $38
672. zero_slot_unmasked $0 = 0
673. merge_condition_mask CondMask = $20 & $21
674. branch_if_no_lanes_active branch_if_no_lanes_active +86 (label 1 at #760)
675. copy_slot_unmasked eq = EQ
676. copy_slot_unmasked f1 = NAN1
677. copy_slot_unmasked v2 = ZM
678. copy_slot_unmasked f3 = ZP
679. copy_3_slots_unmasked f4₁, f5₁, f6 = F42, F43, F44
680. copy_constant $1 = colorGreen(0)
681. copy_constant $2 = 0x40000000 (2.0)
682. add_float $1 += $2
683. copy_slot_unmasked two = $1
684. zero_4_slots_unmasked a[0].f1₁, a[0].v2₁, a[1].f1 = 0
685. zero_2_slots_unmasked a[1].v2 = 0
686. copy_slot_unmasked $1 = f1
687. copy_slot_masked a[0].f1 = Mask($1)
688. copy_2_slots_unmasked $1..2 = v2₁, f3
689. copy_2_slots_masked a[0].v2 = Mask($1..2)
690. copy_slot_unmasked $1 = f4
691. copy_slot_masked a[1].f1 = Mask($1)
692. copy_2_slots_unmasked $1..2 = f5₁, f6
693. copy_2_slots_masked a[1].v2 = Mask($1..2)
694. zero_4_slots_unmasked b[0].f1₁, b[0].v2₁, b[1].f1 = 0
695. zero_2_slots_unmasked b[1].v2 = 0
696. copy_slot_unmasked $1 = f1
697. copy_slot_unmasked $2 = two
698. mul_float $1 *= $2
699. copy_slot_masked b[0].f1 = Mask($1)
700. copy_slot_unmasked $1 = v2
701. copy_slot_unmasked $2 = two
702. mul_float $1 *= $2
703. copy_slot_unmasked $2 = f3
704. copy_slot_unmasked $3 = two
705. mul_float $2 *= $3
706. copy_2_slots_masked b[0].v2 = Mask($1..2)
707. copy_slot_unmasked $1 = f4
708. copy_slot_unmasked $2 = two
709. mul_float $1 *= $2
710. copy_slot_masked b[1].f1 = Mask($1)
711. copy_slot_unmasked $1 = f5
712. copy_slot_unmasked $2 = two
713. mul_float $1 *= $2
714. copy_slot_unmasked $2 = f6
715. copy_2_slots_masked b[1].v2 = Mask($1..2)
716. store_condition_mask $38 = CondMask
717. copy_slot_unmasked $39 = eq
718. copy_slot_unmasked $1 = a[0].f1
719. copy_slot_unmasked $2 = b[0].f1
720. cmpne_float $1 = notEqual($1, $2)
721. copy_2_slots_unmasked $2..3 = a[0].v2
722. copy_2_slots_unmasked $4..5 = b[0].v2
723. cmpne_2_floats $2..3 = notEqual($2..3, $4..5)
724. bitwise_or_int $2 |= $3
725. bitwise_or_int $1 |= $2
726. copy_slot_unmasked $2 = a[1].f1
727. copy_slot_unmasked $3 = b[1].f1
728. cmpne_float $2 = notEqual($2, $3)
729. copy_2_slots_unmasked $3..4 = a[1].v2
730. copy_2_slots_unmasked $5..6 = b[1].v2
731. cmpne_2_floats $3..4 = notEqual($3..4, $5..6)
732. bitwise_or_int $3 |= $4
733. bitwise_or_int $2 |= $3
734. bitwise_or_int $1 |= $2
735. merge_condition_mask CondMask = $38 & $39
736. branch_if_no_lanes_active branch_if_no_lanes_active +19 (label 22 at #755)
737. copy_slot_unmasked $2 = a[0].f1
738. copy_slot_unmasked $3 = b[0].f1
739. cmpeq_float $2 = equal($2, $3)
740. copy_2_slots_unmasked $3..4 = a[0].v2
741. copy_2_slots_unmasked $5..6 = b[0].v2
742. cmpeq_2_floats $3..4 = equal($3..4, $5..6)
743. bitwise_and_int $3 &= $4
744. bitwise_and_int $2 &= $3
745. copy_slot_unmasked $3 = a[1].f1
746. copy_slot_unmasked $4 = b[1].f1
747. cmpeq_float $3 = equal($3, $4)
748. copy_2_slots_unmasked $4..5 = a[1].v2
749. copy_2_slots_unmasked $6..7 = b[1].v2
750. cmpeq_2_floats $4..5 = equal($4..5, $6..7)
751. bitwise_and_int $4 &= $5
752. bitwise_and_int $3 &= $4
753. bitwise_and_int $2 &= $3
754. copy_slot_masked $1 = Mask($2)
755. label label 0x00000016
756. load_condition_mask CondMask = $38
757. label label 0x00000015
758. bitwise_not_int $1 = ~$1
759. copy_slot_masked $0 = Mask($1)
760. label label 0x00000001
761. load_condition_mask CondMask = $20
762. swizzle_4 $0..3 = ($0..3).xxxx
763. copy_4_constants $4..7 = colorRed
764. copy_4_constants $8..11 = colorGreen
765. mix_4_ints $0..3 = mix($4..7, $8..11, $0..3)
766. load_src src.rgba = $0..3