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 |