unplugged-system/external/skia/tests/sksl/runtime/LoopInt.skrp

338 lines
20 KiB
Plaintext
Raw Normal View History

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 = 0x0000000A (1.401298e-44)
5. copy_slot_unmasked $0 = pos(0)
6. copy_constant $1 = colorGreen(1)
7. max_float $0 = max($0, $1)
8. copy_constant $1 = colorGreen(3)
9. min_float $0 = min($0, $1)
10. cast_to_int_from_float $0 = FloatToInt($0)
11. copy_constant $1 = 0x00000005 (7.006492e-45)
12. mul_int $0 *= $1
13. copy_slot_unmasked five = $0
14. store_condition_mask $18 = CondMask
15. store_condition_mask $38 = CondMask
16. store_condition_mask $48 = CondMask
17. store_condition_mask $28 = CondMask
18. store_condition_mask $70 = CondMask
19. store_condition_mask $58 = CondMask
20. store_condition_mask $12 = CondMask
21. store_condition_mask $64 = CondMask
22. branch_if_no_active_lanes branch_if_no_active_lanes +32 (label 9 at #54)
23. store_return_mask $65 = RetMask
24. copy_slot_unmasked five₁ = five
25. copy_slot_unmasked i = kZero
26. store_loop_mask $66 = LoopMask
27. jump jump +15 (label 10 at #42)
28. label label 0x0000000B
29. store_condition_mask $67 = CondMask
30. copy_slot_unmasked $68 = i
31. copy_slot_unmasked $69 = five₁
32. cmpeq_int $68 = equal($68, $69)
33. merge_condition_mask CondMask = $67 & $68
34. copy_slot_unmasked $69 = i
35. copy_slot_masked [return_loop].result = Mask($69)
36. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
37. load_condition_mask CondMask = $67
38. copy_slot_unmasked $67 = i
39. copy_constant $68 = 0x00000001 (1.401298e-45)
40. add_int $67 += $68
41. copy_slot_masked i = Mask($67)
42. label label 0x0000000A
43. copy_slot_unmasked $67 = i
44. copy_constant $68 = 0x0000000A (1.401298e-44)
45. cmplt_int $67 = lessThan($67, $68)
46. merge_loop_mask LoopMask &= $67
47. stack_rewind
48. branch_if_any_active_lanes branch_if_any_active_lanes -20 (label 11 at #28)
49. load_loop_mask LoopMask = $66
50. zero_slot_unmasked $66 = 0
51. copy_slot_masked [return_loop].result = Mask($66)
52. load_return_mask RetMask = $65
53. copy_slot_unmasked $65 = [return_loop].result
54. label label 0x00000009
55. copy_constant $66 = 0x00000005 (7.006492e-45)
56. cmpeq_int $65 = equal($65, $66)
57. zero_slot_unmasked $13 = 0
58. merge_condition_mask CondMask = $64 & $65
59. branch_if_no_active_lanes branch_if_no_active_lanes +38 (label 8 at #97)
60. copy_slot_unmasked five₂ = five
61. zero_2_slots_unmasked sum, i₁ = 0
62. store_loop_mask $14 = LoopMask
63. jump jump +20 (label 13 at #83)
64. label label 0x0000000E
65. zero_slot_unmasked [temporary 0] = 0
66. store_condition_mask $15 = CondMask
67. copy_slot_unmasked $16 = i₁
68. copy_slot_unmasked $17 = five₂
69. cmplt_int $16 = lessThan($16, $17)
70. merge_condition_mask CondMask = $15 & $16
71. copy_constant $17 = 0xFFFFFFFF
72. copy_slot_masked [temporary 0] = Mask($17)
73. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask)
74. load_condition_mask CondMask = $15
75. copy_2_slots_unmasked $15..16 = sum, i₁
76. add_int $15 += $16
77. copy_slot_masked sum = Mask($15)
78. reenable_loop_mask LoopMask |= [temporary 0]
79. copy_slot_unmasked $15 = i₁
80. copy_constant $16 = 0x00000001 (1.401298e-45)
81. add_int $15 += $16
82. copy_slot_masked i₁ = Mask($15)
83. label label 0x0000000D
84. copy_slot_unmasked $15 = i₁
85. copy_slot_unmasked $16 = kTen
86. cmplt_int $15 = lessThan($15, $16)
87. merge_loop_mask LoopMask &= $15
88. stack_rewind
89. branch_if_any_active_lanes branch_if_any_active_lanes -25 (label 14 at #64)
90. load_loop_mask LoopMask = $14
91. copy_slot_unmasked $14 = sum
92. copy_slot_masked [continue_loop].result = Mask($14)
93. label label 0x0000000C
94. copy_constant $15 = 0x00000023 (4.904545e-44)
95. cmpeq_int $14 = equal($14, $15)
96. copy_slot_masked $13 = Mask($14)
97. label label 0x00000008
98. load_condition_mask CondMask = $64
99. zero_slot_unmasked $59 = 0
100. merge_condition_mask CondMask = $12 & $13
101. branch_if_no_active_lanes branch_if_no_active_lanes +37 (label 7 at #138)
102. copy_constant five₃ = 0x00000005 (7.006492e-45)
103. zero_slot_unmasked sum₁ = 0
104. copy_constant kOne = 0x00000001 (1.401298e-45)
105. zero_slot_unmasked i₂ = 0
106. store_loop_mask $60 = LoopMask
107. jump jump +17 (label 16 at #124)
108. label label 0x00000011
109. store_condition_mask $61 = CondMask
110. copy_slot_unmasked $62 = five₃
111. copy_slot_unmasked $63 = i₂
112. cmplt_int $62 = lessThan($62, $63)
113. merge_condition_mask CondMask = $61 & $62
114. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask)
115. load_condition_mask CondMask = $61
116. copy_slot_unmasked $61 = sum₁
117. copy_slot_unmasked $62 = i₂
118. add_int $61 += $62
119. copy_slot_masked sum₁ = Mask($61)
120. copy_slot_unmasked $61 = i₂
121. copy_slot_unmasked $62 = kOne
122. add_int $61 += $62
123. copy_slot_masked i₂ = Mask($61)
124. label label 0x00000010
125. copy_slot_unmasked $61 = i₂
126. copy_constant $62 = 0x0000000A (1.401298e-44)
127. cmplt_int $61 = lessThan($61, $62)
128. merge_loop_mask LoopMask &= $61
129. stack_rewind
130. branch_if_any_active_lanes branch_if_any_active_lanes -22 (label 17 at #108)
131. load_loop_mask LoopMask = $60
132. copy_slot_unmasked $60 = sum₁
133. copy_slot_masked [break_loop].result = Mask($60)
134. label label 0x0000000F
135. copy_constant $61 = 0x0000000F (2.101948e-44)
136. cmpeq_int $60 = equal($60, $61)
137. copy_slot_masked $59 = Mask($60)
138. label label 0x00000007
139. load_condition_mask CondMask = $12
140. zero_slot_unmasked $71 = 0
141. merge_condition_mask CondMask = $58 & $59
142. branch_if_no_active_lanes branch_if_no_active_lanes +29 (label 6 at #171)
143. copy_constant $72 = 0x00000009 (1.261169e-44)
144. swizzle_4 $72..75 = ($72..75).xxxx
145. copy_4_slots_unmasked result = $72..75
146. branch_if_no_active_lanes branch_if_no_active_lanes +13 (label 19 at #159)
147. copy_constant i₃ = 0x00000001 (1.401298e-45)
148. label label 0x00000014
149. copy_4_slots_unmasked $72..75 = result(1..3), i₃
150. copy_4_slots_masked result = Mask($72..75)
151. copy_slot_unmasked $72 = i₃
152. copy_constant $73 = 0x00000001 (1.401298e-45)
153. add_int $72 += $73
154. copy_slot_masked i₃ = Mask($72)
155. copy_constant $73 = 0x00000003 (4.203895e-45)
156. cmple_int $72 = lessThanEqual($72, $73)
157. stack_rewind
158. branch_if_no_active_lanes_eq branch -10 (label 20 at #148) if no lanes of $72 == 0x00000000 (0.0)
159. label label 0x00000013
160. copy_4_slots_unmasked $72..75 = result
161. copy_constant $76 = 0x00000009 (1.261169e-44)
162. copy_constant $77 = 0x00000001 (1.401298e-45)
163. copy_constant $78 = 0x00000002 (2.802597e-45)
164. copy_constant $79 = 0x00000003 (4.203895e-45)
165. cmpeq_4_ints $72..75 = equal($72..75, $76..79)
166. bitwise_and_2_ints $72..73 &= $74..75
167. bitwise_and_int $72 &= $73
168. copy_slot_masked [loop_operator_le].result = Mask($72)
169. label label 0x00000012
170. copy_slot_masked $71 = Mask($72)
171. label label 0x00000006
172. load_condition_mask CondMask = $58
173. zero_slot_unmasked $29 = 0
174. merge_condition_mask CondMask = $70 & $71
175. branch_if_no_active_lanes branch_if_no_active_lanes +29 (label 5 at #204)
176. copy_constant $30 = 0x00000009 (1.261169e-44)
177. swizzle_4 $30..33 = ($30..33).xxxx
178. copy_4_slots_unmasked result₁ = $30..33
179. branch_if_no_active_lanes branch_if_no_active_lanes +13 (label 22 at #192)
180. copy_constant i₄ = 0x00000001 (1.401298e-45)
181. label label 0x00000017
182. copy_4_slots_unmasked $30..33 = result₁(1..3), i₄
183. copy_4_slots_masked result₁ = Mask($30..33)
184. copy_slot_unmasked $30 = i₄
185. copy_constant $31 = 0x00000001 (1.401298e-45)
186. add_int $30 += $31
187. copy_slot_masked i₄ = Mask($30)
188. copy_constant $31 = 0x00000004 (5.605194e-45)
189. cmplt_int $30 = lessThan($30, $31)
190. stack_rewind
191. branch_if_no_active_lanes_eq branch -10 (label 23 at #181) if no lanes of $30 == 0x00000000 (0.0)
192. label label 0x00000016
193. copy_4_slots_unmasked $30..33 = result₁
194. copy_constant $34 = 0x00000009 (1.261169e-44)
195. copy_constant $35 = 0x00000001 (1.401298e-45)
196. copy_constant $36 = 0x00000002 (2.802597e-45)
197. copy_constant $37 = 0x00000003 (4.203895e-45)
198. cmpeq_4_ints $30..33 = equal($30..33, $34..37)
199. bitwise_and_2_ints $30..31 &= $32..33
200. bitwise_and_int $30 &= $31
201. copy_slot_masked [loop_operator_lt].result = Mask($30)
202. label label 0x00000015
203. copy_slot_masked $29 = Mask($30)
204. label label 0x00000005
205. load_condition_mask CondMask = $70
206. zero_slot_unmasked $49 = 0
207. merge_condition_mask CondMask = $28 & $29
208. branch_if_no_active_lanes branch_if_no_active_lanes +30 (label 4 at #238)
209. copy_constant $50 = 0x00000009 (1.261169e-44)
210. swizzle_4 $50..53 = ($50..53).xxxx
211. copy_4_slots_unmasked result₂ = $50..53
212. branch_if_no_active_lanes branch_if_no_active_lanes +14 (label 25 at #226)
213. copy_constant i₅ = 0x00000003 (4.203895e-45)
214. label label 0x0000001A
215. copy_4_slots_unmasked $50..53 = result₂(1..3), i₅
216. copy_4_slots_masked result₂ = Mask($50..53)
217. copy_slot_unmasked $50 = i₅
218. copy_constant $51 = 0x00000001 (1.401298e-45)
219. sub_int $50 -= $51
220. copy_slot_masked i₅ = Mask($50)
221. copy_constant $50 = 0x00000001 (1.401298e-45)
222. copy_slot_unmasked $51 = i₅
223. cmple_int $50 = lessThanEqual($50, $51)
224. stack_rewind
225. branch_if_no_active_lanes_eq branch -11 (label 26 at #214) if no lanes of $50 == 0x00000000 (0.0)
226. label label 0x00000019
227. copy_4_slots_unmasked $50..53 = result₂
228. copy_constant $54 = 0x00000009 (1.261169e-44)
229. copy_constant $55 = 0x00000003 (4.203895e-45)
230. copy_constant $56 = 0x00000002 (2.802597e-45)
231. copy_constant $57 = 0x00000001 (1.401298e-45)
232. cmpeq_4_ints $50..53 = equal($50..53, $54..57)
233. bitwise_and_2_ints $50..51 &= $52..53
234. bitwise_and_int $50 &= $51
235. copy_slot_masked [loop_operator_ge].result = Mask($50)
236. label label 0x00000018
237. copy_slot_masked $49 = Mask($50)
238. label label 0x00000004
239. load_condition_mask CondMask = $28
240. zero_slot_unmasked $39 = 0
241. merge_condition_mask CondMask = $48 & $49
242. branch_if_no_active_lanes branch_if_no_active_lanes +30 (label 3 at #272)
243. copy_constant $40 = 0x00000009 (1.261169e-44)
244. swizzle_4 $40..43 = ($40..43).xxxx
245. copy_4_slots_unmasked result₃ = $40..43
246. branch_if_no_active_lanes branch_if_no_active_lanes +14 (label 28 at #260)
247. copy_constant i₆ = 0x00000003 (4.203895e-45)
248. label label 0x0000001D
249. copy_4_slots_unmasked $40..43 = result₃(1..3), i₆
250. copy_4_slots_masked result₃ = Mask($40..43)
251. copy_slot_unmasked $40 = i₆
252. copy_constant $41 = 0x00000001 (1.401298e-45)
253. sub_int $40 -= $41
254. copy_slot_masked i₆ = Mask($40)
255. zero_slot_unmasked $40 = 0
256. copy_slot_unmasked $41 = i₆
257. cmplt_int $40 = lessThan($40, $41)
258. stack_rewind
259. branch_if_no_active_lanes_eq branch -11 (label 29 at #248) if no lanes of $40 == 0x00000000 (0.0)
260. label label 0x0000001C
261. copy_4_slots_unmasked $40..43 = result₃
262. copy_constant $44 = 0x00000009 (1.261169e-44)
263. copy_constant $45 = 0x00000003 (4.203895e-45)
264. copy_constant $46 = 0x00000002 (2.802597e-45)
265. copy_constant $47 = 0x00000001 (1.401298e-45)
266. cmpeq_4_ints $40..43 = equal($40..43, $44..47)
267. bitwise_and_2_ints $40..41 &= $42..43
268. bitwise_and_int $40 &= $41
269. copy_slot_masked [loop_operator_gt].result = Mask($40)
270. label label 0x0000001B
271. copy_slot_masked $39 = Mask($40)
272. label label 0x00000003
273. load_condition_mask CondMask = $48
274. zero_slot_unmasked $19 = 0
275. merge_condition_mask CondMask = $38 & $39
276. branch_if_no_active_lanes branch_if_no_active_lanes +21 (label 2 at #297)
277. copy_constant $20 = 0x00000009 (1.261169e-44)
278. swizzle_4 $20..23 = ($20..23).xxxx
279. copy_4_slots_unmasked result₄ = $20..23
280. branch_if_no_active_lanes branch_if_no_active_lanes +5 (label 31 at #285)
281. copy_constant i₇ = 0x00000001 (1.401298e-45)
282. label label 0x00000020
283. copy_4_slots_unmasked $20..23 = result₄(1..3), i₇
284. copy_4_slots_masked result₄ = Mask($20..23)
285. label label 0x0000001F
286. copy_4_slots_unmasked $20..23 = result₄
287. copy_constant $24 = 0x00000009 (1.261169e-44)
288. copy_constant $25 = 0x00000009 (1.261169e-44)
289. copy_constant $26 = 0x00000009 (1.261169e-44)
290. copy_constant $27 = 0x00000001 (1.401298e-45)
291. cmpeq_4_ints $20..23 = equal($20..23, $24..27)
292. bitwise_and_2_ints $20..21 &= $22..23
293. bitwise_and_int $20 &= $21
294. copy_slot_masked [loop_operator_eq].result = Mask($20)
295. label label 0x0000001E
296. copy_slot_masked $19 = Mask($20)
297. label label 0x00000002
298. load_condition_mask CondMask = $38
299. zero_slot_unmasked $0 = 0
300. merge_condition_mask CondMask = $18 & $19
301. branch_if_no_active_lanes branch_if_no_active_lanes +29 (label 1 at #330)
302. copy_constant $1 = 0x00000009 (1.261169e-44)
303. swizzle_4 $1..4 = ($1..4).xxxx
304. copy_4_slots_unmasked result₅ = $1..4
305. branch_if_no_active_lanes branch_if_no_active_lanes +13 (label 34 at #318)
306. copy_constant i₈ = 0x00000001 (1.401298e-45)
307. label label 0x00000023
308. copy_4_slots_unmasked $1..4 = result₅(1..3), i₈
309. copy_4_slots_masked result₅ = Mask($1..4)
310. copy_slot_unmasked $1 = i₈
311. copy_constant $2 = 0x00000001 (1.401298e-45)
312. add_int $1 += $2
313. copy_slot_masked i₈ = Mask($1)
314. copy_constant $2 = 0x00000004 (5.605194e-45)
315. cmpne_int $1 = notEqual($1, $2)
316. stack_rewind
317. branch_if_no_active_lanes_eq branch -10 (label 35 at #307) if no lanes of $1 == 0x00000000 (0.0)
318. label label 0x00000022
319. copy_4_slots_unmasked $1..4 = result₅
320. copy_constant $5 = 0x00000009 (1.261169e-44)
321. copy_constant $6 = 0x00000001 (1.401298e-45)
322. copy_constant $7 = 0x00000002 (2.802597e-45)
323. copy_constant $8 = 0x00000003 (4.203895e-45)
324. cmpeq_4_ints $1..4 = equal($1..4, $5..8)
325. bitwise_and_2_ints $1..2 &= $3..4
326. bitwise_and_int $1 &= $2
327. copy_slot_masked [loop_operator_ne].result = Mask($1)
328. label label 0x00000021
329. copy_slot_masked $0 = Mask($1)
330. label label 0x00000001
331. load_condition_mask CondMask = $18
332. swizzle_4 $0..3 = ($0..3).xxxx
333. copy_4_constants $4..7 = colorRed
334. copy_4_constants $8..11 = colorGreen
335. mix_4_ints $0..3 = mix($4..7, $8..11, $0..3)
336. copy_4_slots_unmasked [main].result = $0..3
337. load_src src.rgba = [main].result