1. store_src_rg xy = src.rg | |
2. init_lane_masks CondMask = LoopMask = RetMask = true | |
3. store_condition_mask $12 = CondMask | |
4. store_condition_mask $22 = CondMask | |
5. store_condition_mask $25 = CondMask | |
6. store_condition_mask $17 = CondMask | |
7. store_condition_mask $39 = CondMask | |
8. store_condition_mask $31 = CondMask | |
9. store_condition_mask $8 = CondMask | |
10. store_condition_mask $35 = CondMask | |
11. branch_if_no_active_lanes branch_if_no_active_lanes +13 (#24) | |
12. store_return_mask $36 = RetMask | |
13. store_loop_mask $37 = LoopMask | |
14. copy_constant $38 = 0xFFFFFFFF | |
15. copy_slot_masked [test_return].result = Mask($38) | |
16. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) | |
17. zero_slot_unmasked $38 = 0 | |
18. merge_loop_mask LoopMask &= $38 | |
19. stack_rewind | |
20. branch_if_any_active_lanes branch_if_any_active_lanes -6 (#14) | |
21. load_loop_mask LoopMask = $37 | |
22. load_return_mask RetMask = $36 | |
23. copy_slot_unmasked $36 = [test_return].result | |
24. zero_slot_unmasked $9 = 0 | |
25. merge_condition_mask CondMask = $35 & $36 | |
26. branch_if_no_active_lanes branch_if_no_active_lanes +11 (#37) | |
27. store_loop_mask $10 = LoopMask | |
28. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) | |
29. zero_slot_unmasked $11 = 0 | |
30. merge_loop_mask LoopMask &= $11 | |
31. stack_rewind | |
32. branch_if_any_active_lanes branch_if_any_active_lanes -4 (#28) | |
33. load_loop_mask LoopMask = $10 | |
34. copy_constant $10 = 0xFFFFFFFF | |
35. copy_slot_masked [test_break].result = Mask($10) | |
36. copy_slot_masked $9 = Mask($10) | |
37. load_condition_mask CondMask = $35 | |
38. zero_slot_unmasked $32 = 0 | |
39. merge_condition_mask CondMask = $8 & $9 | |
40. branch_if_no_active_lanes branch_if_no_active_lanes +15 (#55) | |
41. store_loop_mask $33 = LoopMask | |
42. zero_slot_unmasked [temporary 0] = 0 | |
43. copy_constant $34 = 0xFFFFFFFF | |
44. copy_slot_masked [temporary 0] = Mask($34) | |
45. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) | |
46. reenable_loop_mask LoopMask |= [temporary 0] | |
47. zero_slot_unmasked $34 = 0 | |
48. merge_loop_mask LoopMask &= $34 | |
49. stack_rewind | |
50. branch_if_any_active_lanes branch_if_any_active_lanes -8 (#42) | |
51. load_loop_mask LoopMask = $33 | |
52. copy_constant $33 = 0xFFFFFFFF | |
53. copy_slot_masked [test_continue].result = Mask($33) | |
54. copy_slot_masked $32 = Mask($33) | |
55. load_condition_mask CondMask = $8 | |
56. zero_slot_unmasked $40 = 0 | |
57. merge_condition_mask CondMask = $31 & $32 | |
58. branch_if_no_active_lanes branch_if_no_active_lanes +27 (#85) | |
59. store_return_mask $41 = RetMask | |
60. store_loop_mask $42 = LoopMask | |
61. zero_slot_unmasked [temporary 0] = 0 | |
62. zero_slot_unmasked $43 = 0 | |
63. copy_constant $44 = colorGreen(1) | |
64. cmplt_float $43 = lessThan($43, $44) | |
65. branch_if_no_active_lanes_eq branch +5 (#70) if no lanes of $43 == 0xFFFFFFFF | |
66. copy_constant $44 = 0xFFFFFFFF | |
67. copy_slot_masked [test_if_return].result = Mask($44) | |
68. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) | |
69. jump jump +2 (#71) | |
70. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) | |
71. copy_constant $43 = 0xFFFFFFFF | |
72. copy_slot_masked [temporary 0] = Mask($43) | |
73. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) | |
74. reenable_loop_mask LoopMask |= [temporary 0] | |
75. zero_slot_unmasked $43 = 0 | |
76. merge_loop_mask LoopMask &= $43 | |
77. stack_rewind | |
78. branch_if_any_active_lanes branch_if_any_active_lanes -17 (#61) | |
79. load_loop_mask LoopMask = $42 | |
80. zero_slot_unmasked $42 = 0 | |
81. copy_slot_masked [test_if_return].result = Mask($42) | |
82. load_return_mask RetMask = $41 | |
83. copy_slot_unmasked $41 = [test_if_return].result | |
84. copy_slot_masked $40 = Mask($41) | |
85. load_condition_mask CondMask = $31 | |
86. zero_slot_unmasked $18 = 0 | |
87. merge_condition_mask CondMask = $39 & $40 | |
88. branch_if_no_active_lanes branch_if_no_active_lanes +21 (#109) | |
89. store_loop_mask $19 = LoopMask | |
90. zero_slot_unmasked [temporary 0] = 0 | |
91. zero_slot_unmasked $20 = 0 | |
92. copy_constant $21 = colorGreen(1) | |
93. cmplt_float $20 = lessThan($20, $21) | |
94. branch_if_no_active_lanes_eq branch +3 (#97) if no lanes of $20 == 0xFFFFFFFF | |
95. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) | |
96. jump jump +4 (#100) | |
97. copy_constant $21 = 0xFFFFFFFF | |
98. copy_slot_masked [temporary 0] = Mask($21) | |
99. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) | |
100. reenable_loop_mask LoopMask |= [temporary 0] | |
101. zero_slot_unmasked $20 = 0 | |
102. merge_loop_mask LoopMask &= $20 | |
103. stack_rewind | |
104. branch_if_any_active_lanes branch_if_any_active_lanes -14 (#90) | |
105. load_loop_mask LoopMask = $19 | |
106. copy_constant $19 = 0xFFFFFFFF | |
107. copy_slot_masked [test_if_break].result = Mask($19) | |
108. copy_slot_masked $18 = Mask($19) | |
109. load_condition_mask CondMask = $39 | |
110. zero_slot_unmasked $26 = 0 | |
111. merge_condition_mask CondMask = $17 & $18 | |
112. branch_if_no_active_lanes branch_if_no_active_lanes +22 (#134) | |
113. store_return_mask $27 = RetMask | |
114. store_loop_mask $28 = LoopMask | |
115. copy_constant $29 = colorGreen(1) | |
116. zero_slot_unmasked $30 = 0 | |
117. cmpeq_float $29 = equal($29, $30) | |
118. branch_if_no_active_lanes_eq branch +5 (#123) if no lanes of $29 == 0xFFFFFFFF | |
119. zero_slot_unmasked $30 = 0 | |
120. copy_slot_masked [test_else].result = Mask($30) | |
121. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) | |
122. jump jump +4 (#126) | |
123. copy_constant $30 = 0xFFFFFFFF | |
124. copy_slot_masked [test_else].result = Mask($30) | |
125. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask) | |
126. zero_slot_unmasked $29 = 0 | |
127. merge_loop_mask LoopMask &= $29 | |
128. stack_rewind | |
129. branch_if_any_active_lanes branch_if_any_active_lanes -14 (#115) | |
130. load_loop_mask LoopMask = $28 | |
131. load_return_mask RetMask = $27 | |
132. copy_slot_unmasked $27 = [test_else].result | |
133. copy_slot_masked $26 = Mask($27) | |
134. load_condition_mask CondMask = $17 | |
135. zero_slot_unmasked $23 = 0 | |
136. merge_condition_mask CondMask = $25 & $26 | |
137. branch_if_no_active_lanes branch_if_no_active_lanes +4 (#141) | |
138. copy_constant $24 = 0xFFFFFFFF | |
139. copy_slot_masked [test_loop_return].result = Mask($24) | |
140. copy_slot_masked $23 = Mask($24) | |
141. load_condition_mask CondMask = $25 | |
142. zero_slot_unmasked $13 = 0 | |
143. merge_condition_mask CondMask = $22 & $23 | |
144. branch_if_no_active_lanes branch_if_no_active_lanes +19 (#163) | |
145. zero_slot_unmasked x = 0 | |
146. store_loop_mask $14 = LoopMask | |
147. jump jump +6 (#153) | |
148. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) | |
149. copy_slot_unmasked $15 = x | |
150. copy_constant $16 = 0x00000001 (1.401298e-45) | |
151. add_int $15 += $16 | |
152. copy_slot_masked x = Mask($15) | |
153. copy_slot_unmasked $15 = x | |
154. copy_constant $16 = 0x00000001 (1.401298e-45) | |
155. cmple_int $15 = lessThanEqual($15, $16) | |
156. merge_loop_mask LoopMask &= $15 | |
157. stack_rewind | |
158. branch_if_any_active_lanes branch_if_any_active_lanes -10 (#148) | |
159. load_loop_mask LoopMask = $14 | |
160. copy_constant $14 = 0xFFFFFFFF | |
161. copy_slot_masked [test_loop_break].result = Mask($14) | |
162. copy_slot_masked $13 = Mask($14) | |
163. load_condition_mask CondMask = $22 | |
164. copy_4_constants $0..3 = colorRed | |
165. merge_condition_mask CondMask = $12 & $13 | |
166. copy_4_constants $4..7 = colorGreen | |
167. copy_4_slots_masked $0..3 = Mask($4..7) | |
168. load_condition_mask CondMask = $12 | |
169. copy_4_slots_unmasked [main].result = $0..3 | |
170. load_src src.rgba = [main].result |