1. store_src_rg pos = src.rg | |
2. init_lane_masks CondMask = LoopMask = RetMask = true | |
3. zero_slot_unmasked kZero = 0 | |
4. copy_constant kTen = 0x41200000 (10.0) | |
5. copy_slot_unmasked $6 = pos(0) | |
6. copy_constant $7 = colorGreen(1) | |
7. max_float $6 = max($6, $7) | |
8. copy_constant $7 = colorGreen(3) | |
9. min_float $6 = min($6, $7) | |
10. copy_constant $7 = 0x40A00000 (5.0) | |
11. mul_float $6 *= $7 | |
12. copy_slot_unmasked five = $6 | |
13. store_condition_mask $25 = CondMask | |
14. store_condition_mask $45 = CondMask | |
15. store_condition_mask $55 = CondMask | |
16. store_condition_mask $35 = CondMask | |
17. store_condition_mask $81 = CondMask | |
18. store_condition_mask $65 = CondMask | |
19. store_condition_mask $20 = CondMask | |
20. store_condition_mask $75 = CondMask | |
21. store_condition_mask $14 = CondMask | |
22. store_condition_mask $0 = CondMask | |
23. branch_if_no_active_lanes branch_if_no_active_lanes +34 (#57) | |
24. store_return_mask $1 = RetMask | |
25. copy_slot_unmasked $2 = five | |
26. copy_slot_unmasked five = $2 | |
27. copy_slot_unmasked $2 = kZero | |
28. copy_slot_unmasked i = $2 | |
29. store_loop_mask $2 = LoopMask | |
30. jump jump +16 (#46) | |
31. zero_slot_unmasked [for-loop continue mask 0] = 0 | |
32. store_condition_mask $3 = CondMask | |
33. copy_slot_unmasked $4 = i | |
34. copy_slot_unmasked $5 = five | |
35. cmpeq_float $4 = equal($4, $5) | |
36. merge_condition_mask CondMask = $3 & $4 | |
37. copy_slot_unmasked $5 = i | |
38. copy_slot_masked [return_loop].result = Mask($5) | |
39. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) | |
40. load_condition_mask CondMask = $3 | |
41. reenable_loop_mask LoopMask |= [for-loop continue mask 0] | |
42. copy_slot_unmasked $3 = i | |
43. copy_constant $4 = 0x3F800000 (1.0) | |
44. add_float $3 += $4 | |
45. copy_slot_masked i = Mask($3) | |
46. copy_slot_unmasked $3 = i | |
47. copy_constant $4 = 0x41200000 (10.0) | |
48. cmplt_float $3 = lessThan($3, $4) | |
49. merge_loop_mask LoopMask &= $3 | |
50. stack_rewind | |
51. branch_if_any_active_lanes branch_if_any_active_lanes -20 (#31) | |
52. load_loop_mask LoopMask = $2 | |
53. zero_slot_unmasked $2 = 0 | |
54. copy_slot_masked [return_loop].result = Mask($2) | |
55. load_return_mask RetMask = $1 | |
56. copy_slot_unmasked $1 = [return_loop].result | |
57. copy_constant $2 = 0x40A00000 (5.0) | |
58. cmpeq_float $1 = equal($1, $2) | |
59. zero_slot_unmasked $15 = 0 | |
60. merge_condition_mask CondMask = $0 & $1 | |
61. branch_if_no_active_lanes branch_if_no_active_lanes +36 (#97) | |
62. copy_slot_unmasked $16 = five | |
63. copy_slot_unmasked five = $16 | |
64. zero_2_slots_unmasked sum(0..1) = 0 | |
65. store_loop_mask $16 = LoopMask | |
66. jump jump +19 (#85) | |
67. zero_slot_unmasked [for-loop continue mask 1] = 0 | |
68. store_condition_mask $17 = CondMask | |
69. copy_slot_unmasked $18 = i | |
70. copy_slot_unmasked $19 = five | |
71. cmplt_float $18 = lessThan($18, $19) | |
72. merge_condition_mask CondMask = $17 & $18 | |
73. copy_constant $19 = 0xFFFFFFFF | |
74. copy_slot_masked [for-loop continue mask 1] = Mask($19) | |
75. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) | |
76. load_condition_mask CondMask = $17 | |
77. copy_2_slots_unmasked $17..18 = sum(0..1) | |
78. add_float $17 += $18 | |
79. copy_slot_masked sum = Mask($17) | |
80. reenable_loop_mask LoopMask |= [for-loop continue mask 1] | |
81. copy_slot_unmasked $17 = i | |
82. copy_constant $18 = 0x3F800000 (1.0) | |
83. add_float $17 += $18 | |
84. copy_slot_masked i = Mask($17) | |
85. copy_slot_unmasked $17 = i | |
86. copy_slot_unmasked $18 = kTen | |
87. cmplt_float $17 = lessThan($17, $18) | |
88. merge_loop_mask LoopMask &= $17 | |
89. stack_rewind | |
90. branch_if_any_active_lanes branch_if_any_active_lanes -23 (#67) | |
91. load_loop_mask LoopMask = $16 | |
92. copy_slot_unmasked $16 = sum | |
93. copy_slot_masked [continue_loop].result = Mask($16) | |
94. copy_constant $17 = 0x420C0000 (35.0) | |
95. cmpeq_float $16 = equal($16, $17) | |
96. copy_slot_masked $15 = Mask($16) | |
97. load_condition_mask CondMask = $0 | |
98. zero_slot_unmasked $76 = 0 | |
99. merge_condition_mask CondMask = $14 & $15 | |
100. branch_if_no_active_lanes branch_if_no_active_lanes +37 (#137) | |
101. copy_slot_unmasked $77 = five | |
102. copy_slot_unmasked five = $77 | |
103. zero_slot_unmasked sum = 0 | |
104. copy_constant kOne = 0x3F800000 (1.0) | |
105. zero_slot_unmasked i = 0 | |
106. store_loop_mask $77 = LoopMask | |
107. jump jump +18 (#125) | |
108. zero_slot_unmasked [for-loop continue mask 2] = 0 | |
109. store_condition_mask $78 = CondMask | |
110. copy_slot_unmasked $79 = five | |
111. copy_slot_unmasked $80 = i | |
112. cmplt_float $79 = lessThan($79, $80) | |
113. merge_condition_mask CondMask = $78 & $79 | |
114. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) | |
115. load_condition_mask CondMask = $78 | |
116. copy_slot_unmasked $78 = sum | |
117. copy_slot_unmasked $79 = i | |
118. add_float $78 += $79 | |
119. copy_slot_masked sum = Mask($78) | |
120. reenable_loop_mask LoopMask |= [for-loop continue mask 2] | |
121. copy_slot_unmasked $78 = i | |
122. copy_slot_unmasked $79 = kOne | |
123. add_float $78 += $79 | |
124. copy_slot_masked i = Mask($78) | |
125. copy_slot_unmasked $78 = i | |
126. copy_constant $79 = 0x41200000 (10.0) | |
127. cmplt_float $78 = lessThan($78, $79) | |
128. merge_loop_mask LoopMask &= $78 | |
129. stack_rewind | |
130. branch_if_any_active_lanes branch_if_any_active_lanes -22 (#108) | |
131. load_loop_mask LoopMask = $77 | |
132. copy_slot_unmasked $77 = sum | |
133. copy_slot_masked [break_loop].result = Mask($77) | |
134. copy_constant $78 = 0x41700000 (15.0) | |
135. cmpeq_float $77 = equal($77, $78) | |
136. copy_slot_masked $76 = Mask($77) | |
137. load_condition_mask CondMask = $14 | |
138. zero_slot_unmasked $21 = 0 | |
139. merge_condition_mask CondMask = $75 & $76 | |
140. branch_if_no_active_lanes branch_if_no_active_lanes +29 (#169) | |
141. zero_slot_unmasked sum = 0 | |
142. copy_constant i = 0x3DFBE76D (0.123) | |
143. store_loop_mask $22 = LoopMask | |
144. jump jump +10 (#154) | |
145. zero_slot_unmasked [for-loop continue mask 3] = 0 | |
146. copy_2_slots_unmasked $23..24 = sum(0..1) | |
147. add_float $23 += $24 | |
148. copy_slot_masked sum = Mask($23) | |
149. reenable_loop_mask LoopMask |= [for-loop continue mask 3] | |
150. copy_slot_unmasked $23 = i | |
151. copy_constant $24 = 0x3DE353F8 (0.111) | |
152. add_float $23 += $24 | |
153. copy_slot_masked i = Mask($23) | |
154. copy_slot_unmasked $23 = i | |
155. copy_constant $24 = 0x3F19999A (0.6) | |
156. cmplt_float $23 = lessThan($23, $24) | |
157. merge_loop_mask LoopMask &= $23 | |
158. stack_rewind | |
159. branch_if_any_active_lanes branch_if_any_active_lanes -14 (#145) | |
160. load_loop_mask LoopMask = $22 | |
161. copy_slot_unmasked $22 = sum | |
162. copy_constant $23 = 0x3FDCCCCD (1.725) | |
163. sub_float $22 -= $23 | |
164. copy_slot_masked [float_loop].result = Mask($22) | |
165. abs_float $22 = abs($22) | |
166. copy_constant $23 = 0x3CCCCCCD (0.025) | |
167. cmplt_float $22 = lessThan($22, $23) | |
168. copy_slot_masked $21 = Mask($22) | |
169. load_condition_mask CondMask = $75 | |
170. zero_slot_unmasked $66 = 0 | |
171. merge_condition_mask CondMask = $20 & $21 | |
172. branch_if_no_active_lanes branch_if_no_active_lanes +32 (#204) | |
173. copy_constant $67 = 0x41100000 (9.0) | |
174. swizzle_4 $67..70 = ($67..70).xxxx | |
175. copy_4_slots_unmasked result = $67..70 | |
176. copy_constant i = 0x3F800000 (1.0) | |
177. store_loop_mask $67 = LoopMask | |
178. jump jump +9 (#187) | |
179. zero_slot_unmasked [for-loop continue mask 4] = 0 | |
180. copy_4_slots_unmasked $68..71 = result | |
181. copy_4_slots_masked result = Mask($68..71) | |
182. reenable_loop_mask LoopMask |= [for-loop continue mask 4] | |
183. copy_slot_unmasked $68 = i | |
184. copy_constant $69 = 0x3F800000 (1.0) | |
185. add_float $68 += $69 | |
186. copy_slot_masked i = Mask($68) | |
187. copy_slot_unmasked $68 = i | |
188. copy_constant $69 = 0x40400000 (3.0) | |
189. cmple_float $68 = lessThanEqual($68, $69) | |
190. merge_loop_mask LoopMask &= $68 | |
191. stack_rewind | |
192. branch_if_any_active_lanes branch_if_any_active_lanes -13 (#179) | |
193. load_loop_mask LoopMask = $67 | |
194. copy_4_slots_unmasked $67..70 = result | |
195. copy_constant $71 = 0x41100000 (9.0) | |
196. copy_constant $72 = 0x3F800000 (1.0) | |
197. copy_constant $73 = 0x40000000 (2.0) | |
198. copy_constant $74 = 0x40400000 (3.0) | |
199. cmpeq_4_floats $67..70 = equal($67..70, $71..74) | |
200. bitwise_and_2_ints $67..68 &= $69..70 | |
201. bitwise_and_int $67 &= $68 | |
202. copy_slot_masked [loop_operator_le].result = Mask($67) | |
203. copy_slot_masked $66 = Mask($67) | |
204. load_condition_mask CondMask = $20 | |
205. zero_slot_unmasked $82 = 0 | |
206. merge_condition_mask CondMask = $65 & $66 | |
207. branch_if_no_active_lanes branch_if_no_active_lanes +32 (#239) | |
208. copy_constant $83 = 0x41100000 (9.0) | |
209. swizzle_4 $83..86 = ($83..86).xxxx | |
210. copy_4_slots_unmasked result = $83..86 | |
211. copy_constant i = 0x3F800000 (1.0) | |
212. store_loop_mask $83 = LoopMask | |
213. jump jump +9 (#222) | |
214. zero_slot_unmasked [for-loop continue mask 5] = 0 | |
215. copy_4_slots_unmasked $84..87 = result | |
216. copy_4_slots_masked result = Mask($84..87) | |
217. reenable_loop_mask LoopMask |= [for-loop continue mask 5] | |
218. copy_slot_unmasked $84 = i | |
219. copy_constant $85 = 0x3F800000 (1.0) | |
220. add_float $84 += $85 | |
221. copy_slot_masked i = Mask($84) | |
222. copy_slot_unmasked $84 = i | |
223. copy_constant $85 = 0x40800000 (4.0) | |
224. cmplt_float $84 = lessThan($84, $85) | |
225. merge_loop_mask LoopMask &= $84 | |
226. stack_rewind | |
227. branch_if_any_active_lanes branch_if_any_active_lanes -13 (#214) | |
228. load_loop_mask LoopMask = $83 | |
229. copy_4_slots_unmasked $83..86 = result | |
230. copy_constant $87 = 0x41100000 (9.0) | |
231. copy_constant $88 = 0x3F800000 (1.0) | |
232. copy_constant $89 = 0x40000000 (2.0) | |
233. copy_constant $90 = 0x40400000 (3.0) | |
234. cmpeq_4_floats $83..86 = equal($83..86, $87..90) | |
235. bitwise_and_2_ints $83..84 &= $85..86 | |
236. bitwise_and_int $83 &= $84 | |
237. copy_slot_masked [loop_operator_lt].result = Mask($83) | |
238. copy_slot_masked $82 = Mask($83) | |
239. load_condition_mask CondMask = $65 | |
240. zero_slot_unmasked $36 = 0 | |
241. merge_condition_mask CondMask = $81 & $82 | |
242. branch_if_no_active_lanes branch_if_no_active_lanes +32 (#274) | |
243. copy_constant $37 = 0x41100000 (9.0) | |
244. swizzle_4 $37..40 = ($37..40).xxxx | |
245. copy_4_slots_unmasked result = $37..40 | |
246. copy_constant i = 0x40400000 (3.0) | |
247. store_loop_mask $37 = LoopMask | |
248. jump jump +9 (#257) | |
249. zero_slot_unmasked [for-loop continue mask 6] = 0 | |
250. copy_4_slots_unmasked $38..41 = result | |
251. copy_4_slots_masked result = Mask($38..41) | |
252. reenable_loop_mask LoopMask |= [for-loop continue mask 6] | |
253. copy_slot_unmasked $38 = i | |
254. copy_constant $39 = 0x3F800000 (1.0) | |
255. sub_float $38 -= $39 | |
256. copy_slot_masked i = Mask($38) | |
257. copy_constant $38 = 0x3F800000 (1.0) | |
258. copy_slot_unmasked $39 = i | |
259. cmple_float $38 = lessThanEqual($38, $39) | |
260. merge_loop_mask LoopMask &= $38 | |
261. stack_rewind | |
262. branch_if_any_active_lanes branch_if_any_active_lanes -13 (#249) | |
263. load_loop_mask LoopMask = $37 | |
264. copy_4_slots_unmasked $37..40 = result | |
265. copy_constant $41 = 0x41100000 (9.0) | |
266. copy_constant $42 = 0x40400000 (3.0) | |
267. copy_constant $43 = 0x40000000 (2.0) | |
268. copy_constant $44 = 0x3F800000 (1.0) | |
269. cmpeq_4_floats $37..40 = equal($37..40, $41..44) | |
270. bitwise_and_2_ints $37..38 &= $39..40 | |
271. bitwise_and_int $37 &= $38 | |
272. copy_slot_masked [loop_operator_ge].result = Mask($37) | |
273. copy_slot_masked $36 = Mask($37) | |
274. load_condition_mask CondMask = $81 | |
275. zero_slot_unmasked $56 = 0 | |
276. merge_condition_mask CondMask = $35 & $36 | |
277. branch_if_no_active_lanes branch_if_no_active_lanes +32 (#309) | |
278. copy_constant $57 = 0x41100000 (9.0) | |
279. swizzle_4 $57..60 = ($57..60).xxxx | |
280. copy_4_slots_unmasked result = $57..60 | |
281. copy_constant i = 0x40400000 (3.0) | |
282. store_loop_mask $57 = LoopMask | |
283. jump jump +9 (#292) | |
284. zero_slot_unmasked [for-loop continue mask 7] = 0 | |
285. copy_4_slots_unmasked $58..61 = result | |
286. copy_4_slots_masked result = Mask($58..61) | |
287. reenable_loop_mask LoopMask |= [for-loop continue mask 7] | |
288. copy_slot_unmasked $58 = i | |
289. copy_constant $59 = 0x3F800000 (1.0) | |
290. sub_float $58 -= $59 | |
291. copy_slot_masked i = Mask($58) | |
292. zero_slot_unmasked $58 = 0 | |
293. copy_slot_unmasked $59 = i | |
294. cmplt_float $58 = lessThan($58, $59) | |
295. merge_loop_mask LoopMask &= $58 | |
296. stack_rewind | |
297. branch_if_any_active_lanes branch_if_any_active_lanes -13 (#284) | |
298. load_loop_mask LoopMask = $57 | |
299. copy_4_slots_unmasked $57..60 = result | |
300. copy_constant $61 = 0x41100000 (9.0) | |
301. copy_constant $62 = 0x40400000 (3.0) | |
302. copy_constant $63 = 0x40000000 (2.0) | |
303. copy_constant $64 = 0x3F800000 (1.0) | |
304. cmpeq_4_floats $57..60 = equal($57..60, $61..64) | |
305. bitwise_and_2_ints $57..58 &= $59..60 | |
306. bitwise_and_int $57 &= $58 | |
307. copy_slot_masked [loop_operator_gt].result = Mask($57) | |
308. copy_slot_masked $56 = Mask($57) | |
309. load_condition_mask CondMask = $35 | |
310. zero_slot_unmasked $46 = 0 | |
311. merge_condition_mask CondMask = $55 & $56 | |
312. branch_if_no_active_lanes branch_if_no_active_lanes +32 (#344) | |
313. copy_constant $47 = 0x41100000 (9.0) | |
314. swizzle_4 $47..50 = ($47..50).xxxx | |
315. copy_4_slots_unmasked result = $47..50 | |
316. copy_constant i = 0x3F800000 (1.0) | |
317. store_loop_mask $47 = LoopMask | |
318. jump jump +9 (#327) | |
319. zero_slot_unmasked [for-loop continue mask 8] = 0 | |
320. copy_4_slots_unmasked $48..51 = result | |
321. copy_4_slots_masked result = Mask($48..51) | |
322. reenable_loop_mask LoopMask |= [for-loop continue mask 8] | |
323. copy_slot_unmasked $48 = i | |
324. copy_constant $49 = 0x3F800000 (1.0) | |
325. add_float $48 += $49 | |
326. copy_slot_masked i = Mask($48) | |
327. copy_slot_unmasked $48 = i | |
328. copy_constant $49 = 0x3F800000 (1.0) | |
329. cmpeq_float $48 = equal($48, $49) | |
330. merge_loop_mask LoopMask &= $48 | |
331. stack_rewind | |
332. branch_if_any_active_lanes branch_if_any_active_lanes -13 (#319) | |
333. load_loop_mask LoopMask = $47 | |
334. copy_4_slots_unmasked $47..50 = result | |
335. copy_constant $51 = 0x41100000 (9.0) | |
336. copy_constant $52 = 0x41100000 (9.0) | |
337. copy_constant $53 = 0x41100000 (9.0) | |
338. copy_constant $54 = 0x3F800000 (1.0) | |
339. cmpeq_4_floats $47..50 = equal($47..50, $51..54) | |
340. bitwise_and_2_ints $47..48 &= $49..50 | |
341. bitwise_and_int $47 &= $48 | |
342. copy_slot_masked [loop_operator_eq].result = Mask($47) | |
343. copy_slot_masked $46 = Mask($47) | |
344. load_condition_mask CondMask = $55 | |
345. zero_slot_unmasked $26 = 0 | |
346. merge_condition_mask CondMask = $45 & $46 | |
347. branch_if_no_active_lanes branch_if_no_active_lanes +32 (#379) | |
348. copy_constant $27 = 0x41100000 (9.0) | |
349. swizzle_4 $27..30 = ($27..30).xxxx | |
350. copy_4_slots_unmasked result = $27..30 | |
351. copy_constant i = 0x3F800000 (1.0) | |
352. store_loop_mask $27 = LoopMask | |
353. jump jump +9 (#362) | |
354. zero_slot_unmasked [for-loop continue mask 9] = 0 | |
355. copy_4_slots_unmasked $28..31 = result | |
356. copy_4_slots_masked result = Mask($28..31) | |
357. reenable_loop_mask LoopMask |= [for-loop continue mask 9] | |
358. copy_slot_unmasked $28 = i | |
359. copy_constant $29 = 0x3F800000 (1.0) | |
360. add_float $28 += $29 | |
361. copy_slot_masked i = Mask($28) | |
362. copy_slot_unmasked $28 = i | |
363. copy_constant $29 = 0x40800000 (4.0) | |
364. cmpne_float $28 = notEqual($28, $29) | |
365. merge_loop_mask LoopMask &= $28 | |
366. stack_rewind | |
367. branch_if_any_active_lanes branch_if_any_active_lanes -13 (#354) | |
368. load_loop_mask LoopMask = $27 | |
369. copy_4_slots_unmasked $27..30 = result | |
370. copy_constant $31 = 0x41100000 (9.0) | |
371. copy_constant $32 = 0x3F800000 (1.0) | |
372. copy_constant $33 = 0x40000000 (2.0) | |
373. copy_constant $34 = 0x40400000 (3.0) | |
374. cmpeq_4_floats $27..30 = equal($27..30, $31..34) | |
375. bitwise_and_2_ints $27..28 &= $29..30 | |
376. bitwise_and_int $27 &= $28 | |
377. copy_slot_masked [loop_operator_ne].result = Mask($27) | |
378. copy_slot_masked $26 = Mask($27) | |
379. load_condition_mask CondMask = $45 | |
380. copy_4_constants $6..9 = colorRed | |
381. merge_condition_mask CondMask = $25 & $26 | |
382. copy_4_constants $10..13 = colorGreen | |
383. copy_4_slots_masked $6..9 = Mask($10..13) | |
384. load_condition_mask CondMask = $25 | |
385. copy_4_slots_unmasked [main].result = $6..9 | |
386. load_src src.rgba = [main].result |