unplugged-system/external/skia/tests/sksl/folding/MatrixVectorNoOpFolding.skrp

613 lines
36 KiB
Plaintext

1. store_src_rg coords = src.rg
2. init_lane_masks CondMask = LoopMask = RetMask = true
3. store_condition_mask $76 = CondMask
4. store_condition_mask $56 = CondMask
5. store_condition_mask $40 = CondMask
6. store_condition_mask $27 = CondMask
7. store_condition_mask $18 = CondMask
8. branch_if_no_active_lanes branch_if_no_active_lanes +57 (label 6 at #65)
9. store_return_mask $19 = RetMask
10. zero_4_slots_unmasked v, vv = 0
11. copy_2_constants $20..21 = testInputs(0..1)
12. copy_2_slots_masked v = Mask($20..21)
13. copy_2_constants $20..21 = testInputs(0..1)
14. copy_2_slots_masked v = Mask($20..21)
15. store_condition_mask $20 = CondMask
16. copy_2_slots_unmasked $21..22 = v
17. copy_2_constants $23..24 = testInputs(0..1)
18. cmpne_2_floats $21..22 = notEqual($21..22, $23..24)
19. bitwise_or_int $21 |= $22
20. merge_condition_mask CondMask = $20 & $21
21. zero_slot_unmasked $22 = 0
22. copy_slot_masked [test_no_op_mat2_X_vec2].result = Mask($22)
23. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
24. load_condition_mask CondMask = $20
25. store_condition_mask $20 = CondMask
26. copy_2_slots_unmasked $21..22 = v
27. copy_2_constants $23..24 = testInputs(0..1)
28. cmpne_2_floats $21..22 = notEqual($21..22, $23..24)
29. bitwise_or_int $21 |= $22
30. merge_condition_mask CondMask = $20 & $21
31. zero_slot_unmasked $22 = 0
32. copy_slot_masked [test_no_op_mat2_X_vec2].result = Mask($22)
33. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
34. load_condition_mask CondMask = $20
35. zero_2_slots_unmasked $20..21 = 0
36. copy_2_constants $22..23 = testInputs(0..1)
37. sub_2_floats $20..21 -= $22..23
38. copy_2_slots_masked v = Mask($20..21)
39. zero_2_slots_unmasked $20..21 = 0
40. copy_2_constants $22..23 = testInputs(0..1)
41. sub_2_floats $20..21 -= $22..23
42. copy_2_slots_masked v = Mask($20..21)
43. store_condition_mask $20 = CondMask
44. copy_2_slots_unmasked $21..22 = v
45. zero_2_slots_unmasked $23..24 = 0
46. copy_2_constants $25..26 = testInputs(0..1)
47. sub_2_floats $23..24 -= $25..26
48. cmpne_2_floats $21..22 = notEqual($21..22, $23..24)
49. bitwise_or_int $21 |= $22
50. merge_condition_mask CondMask = $20 & $21
51. zero_slot_unmasked $22 = 0
52. copy_slot_masked [test_no_op_mat2_X_vec2].result = Mask($22)
53. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
54. load_condition_mask CondMask = $20
55. zero_2_slots_unmasked $20..21 = 0
56. copy_2_slots_masked vv = Mask($20..21)
57. zero_2_slots_unmasked $20..21 = 0
58. copy_2_slots_masked vv = Mask($20..21)
59. zero_2_slots_unmasked $22..23 = 0
60. cmpeq_2_floats $20..21 = equal($20..21, $22..23)
61. bitwise_and_int $20 &= $21
62. copy_slot_masked [test_no_op_mat2_X_vec2].result = Mask($20)
63. load_return_mask RetMask = $19
64. copy_slot_unmasked $19 = [test_no_op_mat2_X_vec2].result
65. label label 0x00000006
66. zero_slot_unmasked $28 = 0
67. merge_condition_mask CondMask = $18 & $19
68. branch_if_no_active_lanes branch_if_no_active_lanes +64 (label 5 at #132)
69. store_return_mask $29 = RetMask
70. zero_4_slots_unmasked v₁, vv₁(0) = 0
71. zero_2_slots_unmasked vv₁(1..2) = 0
72. copy_3_constants $30..32 = testInputs(0..2)
73. copy_3_slots_masked v₁ = Mask($30..32)
74. copy_3_constants $30..32 = testInputs(0..2)
75. copy_3_slots_masked v₁ = Mask($30..32)
76. store_condition_mask $30 = CondMask
77. copy_3_slots_unmasked $31..33 = v₁
78. copy_3_constants $34..36 = testInputs(0..2)
79. cmpne_3_floats $31..33 = notEqual($31..33, $34..36)
80. bitwise_or_int $32 |= $33
81. bitwise_or_int $31 |= $32
82. merge_condition_mask CondMask = $30 & $31
83. zero_slot_unmasked $32 = 0
84. copy_slot_masked [test_no_op_mat3_X_vec3].result = Mask($32)
85. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
86. load_condition_mask CondMask = $30
87. store_condition_mask $30 = CondMask
88. copy_3_slots_unmasked $31..33 = v₁
89. copy_3_constants $34..36 = testInputs(0..2)
90. cmpne_3_floats $31..33 = notEqual($31..33, $34..36)
91. bitwise_or_int $32 |= $33
92. bitwise_or_int $31 |= $32
93. merge_condition_mask CondMask = $30 & $31
94. zero_slot_unmasked $32 = 0
95. copy_slot_masked [test_no_op_mat3_X_vec3].result = Mask($32)
96. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
97. load_condition_mask CondMask = $30
98. zero_3_slots_unmasked $30..32 = 0
99. copy_3_constants $33..35 = testInputs(0..2)
100. sub_3_floats $30..32 -= $33..35
101. copy_3_slots_masked v₁ = Mask($30..32)
102. zero_3_slots_unmasked $30..32 = 0
103. copy_3_constants $33..35 = testInputs(0..2)
104. sub_3_floats $30..32 -= $33..35
105. copy_3_slots_masked v₁ = Mask($30..32)
106. store_condition_mask $30 = CondMask
107. copy_3_slots_unmasked $31..33 = v₁
108. zero_3_slots_unmasked $34..36 = 0
109. copy_3_constants $37..39 = testInputs(0..2)
110. sub_3_floats $34..36 -= $37..39
111. cmpne_3_floats $31..33 = notEqual($31..33, $34..36)
112. bitwise_or_int $32 |= $33
113. bitwise_or_int $31 |= $32
114. merge_condition_mask CondMask = $30 & $31
115. zero_slot_unmasked $32 = 0
116. copy_slot_masked [test_no_op_mat3_X_vec3].result = Mask($32)
117. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
118. load_condition_mask CondMask = $30
119. zero_3_slots_unmasked $30..32 = 0
120. copy_3_slots_masked vv₁ = Mask($30..32)
121. zero_3_slots_unmasked $30..32 = 0
122. copy_3_slots_masked vv₁ = Mask($30..32)
123. zero_3_slots_unmasked $33..35 = 0
124. cmpeq_3_floats $30..32 = equal($30..32, $33..35)
125. bitwise_and_int $31 &= $32
126. bitwise_and_int $30 &= $31
127. copy_slot_masked [test_no_op_mat3_X_vec3].result = Mask($30)
128. load_return_mask RetMask = $29
129. copy_slot_unmasked $29 = [test_no_op_mat3_X_vec3].result
130. label label 0x00000007
131. copy_slot_masked $28 = Mask($29)
132. label label 0x00000005
133. load_condition_mask CondMask = $18
134. zero_slot_unmasked $41 = 0
135. merge_condition_mask CondMask = $27 & $28
136. branch_if_no_active_lanes branch_if_no_active_lanes +64 (label 4 at #200)
137. store_return_mask $42 = RetMask
138. zero_4_slots_unmasked v₂ = 0
139. zero_4_slots_unmasked vv₂ = 0
140. copy_4_constants $43..46 = testInputs
141. copy_4_slots_masked v₂ = Mask($43..46)
142. copy_4_constants $43..46 = testInputs
143. copy_4_slots_masked v₂ = Mask($43..46)
144. store_condition_mask $43 = CondMask
145. copy_4_slots_unmasked $44..47 = v₂
146. copy_4_constants $48..51 = testInputs
147. cmpne_4_floats $44..47 = notEqual($44..47, $48..51)
148. bitwise_or_2_ints $44..45 |= $46..47
149. bitwise_or_int $44 |= $45
150. merge_condition_mask CondMask = $43 & $44
151. zero_slot_unmasked $45 = 0
152. copy_slot_masked [test_no_op_mat4_X_vec4].result = Mask($45)
153. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
154. load_condition_mask CondMask = $43
155. store_condition_mask $43 = CondMask
156. copy_4_slots_unmasked $44..47 = v₂
157. copy_4_constants $48..51 = testInputs
158. cmpne_4_floats $44..47 = notEqual($44..47, $48..51)
159. bitwise_or_2_ints $44..45 |= $46..47
160. bitwise_or_int $44 |= $45
161. merge_condition_mask CondMask = $43 & $44
162. zero_slot_unmasked $45 = 0
163. copy_slot_masked [test_no_op_mat4_X_vec4].result = Mask($45)
164. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
165. load_condition_mask CondMask = $43
166. zero_4_slots_unmasked $43..46 = 0
167. copy_4_constants $47..50 = testInputs
168. sub_4_floats $43..46 -= $47..50
169. copy_4_slots_masked v₂ = Mask($43..46)
170. zero_4_slots_unmasked $43..46 = 0
171. copy_4_constants $47..50 = testInputs
172. sub_4_floats $43..46 -= $47..50
173. copy_4_slots_masked v₂ = Mask($43..46)
174. store_condition_mask $43 = CondMask
175. copy_4_slots_unmasked $44..47 = v₂
176. zero_4_slots_unmasked $48..51 = 0
177. copy_4_constants $52..55 = testInputs
178. sub_4_floats $48..51 -= $52..55
179. cmpne_4_floats $44..47 = notEqual($44..47, $48..51)
180. bitwise_or_2_ints $44..45 |= $46..47
181. bitwise_or_int $44 |= $45
182. merge_condition_mask CondMask = $43 & $44
183. zero_slot_unmasked $45 = 0
184. copy_slot_masked [test_no_op_mat4_X_vec4].result = Mask($45)
185. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
186. load_condition_mask CondMask = $43
187. zero_4_slots_unmasked $43..46 = 0
188. copy_4_slots_masked vv₂ = Mask($43..46)
189. zero_4_slots_unmasked $43..46 = 0
190. copy_4_slots_masked vv₂ = Mask($43..46)
191. zero_4_slots_unmasked $47..50 = 0
192. cmpeq_4_floats $43..46 = equal($43..46, $47..50)
193. bitwise_and_2_ints $43..44 &= $45..46
194. bitwise_and_int $43 &= $44
195. copy_slot_masked [test_no_op_mat4_X_vec4].result = Mask($43)
196. load_return_mask RetMask = $42
197. copy_slot_unmasked $42 = [test_no_op_mat4_X_vec4].result
198. label label 0x00000008
199. copy_slot_masked $41 = Mask($42)
200. label label 0x00000004
201. load_condition_mask CondMask = $27
202. zero_slot_unmasked $57 = 0
203. merge_condition_mask CondMask = $40 & $41
204. branch_if_no_active_lanes branch_if_no_active_lanes +100 (label 3 at #304)
205. store_return_mask $58 = RetMask
206. copy_constant $59 = 0xBF800000 (-1.0)
207. copy_slot_unmasked $60 = $59
208. copy_2_slots_unmasked n = $59..60
209. copy_constant $59 = 0x3F800000 (1.0)
210. copy_slot_unmasked $60 = $59
211. copy_2_slots_unmasked i = $59..60
212. zero_4_slots_unmasked z, v₃ = 0
213. zero_2_slots_unmasked vv₃ = 0
214. zero_2_slots_unmasked $59..60 = 0
215. copy_2_slots_masked vv₃ = Mask($59..60)
216. zero_2_slots_unmasked $59..60 = 0
217. copy_2_slots_masked vv₃ = Mask($59..60)
218. store_condition_mask $59 = CondMask
219. copy_2_slots_unmasked $60..61 = vv₃
220. copy_2_slots_unmasked $62..63 = z
221. cmpne_2_floats $60..61 = notEqual($60..61, $62..63)
222. bitwise_or_int $60 |= $61
223. merge_condition_mask CondMask = $59 & $60
224. zero_slot_unmasked $61 = 0
225. copy_slot_masked [test_no_op_vec2_X_mat2].result = Mask($61)
226. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
227. load_condition_mask CondMask = $59
228. copy_2_slots_unmasked $27..28 = i
229. copy_4_constants $29..32 = testMatrix2x2
230. copy_4_slots_unmasked $59..62 = $27..30
231. dot_2_floats $59 = dot($59..60, $61..62)
232. copy_2_slots_unmasked $60..61 = $27..28
233. copy_2_slots_unmasked $62..63 = $31..32
234. dot_2_floats $60 = dot($60..61, $62..63)
235. copy_2_slots_masked v₃ = Mask($59..60)
236. store_condition_mask $59 = CondMask
237. copy_2_slots_unmasked $60..61 = v₃
238. copy_constant $62 = 0x40400000 (3.0)
239. copy_constant $63 = 0x40E00000 (7.0)
240. cmpne_2_floats $60..61 = notEqual($60..61, $62..63)
241. bitwise_or_int $60 |= $61
242. merge_condition_mask CondMask = $59 & $60
243. zero_slot_unmasked $61 = 0
244. copy_slot_masked [test_no_op_vec2_X_mat2].result = Mask($61)
245. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
246. load_condition_mask CondMask = $59
247. copy_4_constants $27..30 = testMatrix2x2
248. swizzle_3 $28..30 = ($28..30).yxz
249. copy_2_slots_unmasked $31..32 = i
250. copy_2_slots_unmasked $59..60 = $27..28
251. copy_2_slots_unmasked $61..62 = $31..32
252. dot_2_floats $59 = dot($59..60, $61..62)
253. copy_4_slots_unmasked $60..63 = $29..32
254. dot_2_floats $60 = dot($60..61, $62..63)
255. copy_2_slots_masked v₃ = Mask($59..60)
256. store_condition_mask $59 = CondMask
257. copy_2_slots_unmasked $60..61 = v₃
258. copy_constant $62 = 0x40800000 (4.0)
259. copy_constant $63 = 0x40C00000 (6.0)
260. cmpne_2_floats $60..61 = notEqual($60..61, $62..63)
261. bitwise_or_int $60 |= $61
262. merge_condition_mask CondMask = $59 & $60
263. zero_slot_unmasked $61 = 0
264. copy_slot_masked [test_no_op_vec2_X_mat2].result = Mask($61)
265. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
266. load_condition_mask CondMask = $59
267. copy_2_slots_unmasked $27..28 = n
268. copy_4_constants $29..32 = testMatrix2x2
269. copy_4_slots_unmasked $59..62 = $27..30
270. dot_2_floats $59 = dot($59..60, $61..62)
271. copy_2_slots_unmasked $60..61 = $27..28
272. copy_2_slots_unmasked $62..63 = $31..32
273. dot_2_floats $60 = dot($60..61, $62..63)
274. copy_2_slots_masked v₃ = Mask($59..60)
275. store_condition_mask $59 = CondMask
276. copy_2_slots_unmasked $60..61 = v₃
277. copy_constant $62 = 0xC0400000 (-3.0)
278. copy_constant $63 = 0xC0E00000 (-7.0)
279. cmpne_2_floats $60..61 = notEqual($60..61, $62..63)
280. bitwise_or_int $60 |= $61
281. merge_condition_mask CondMask = $59 & $60
282. zero_slot_unmasked $61 = 0
283. copy_slot_masked [test_no_op_vec2_X_mat2].result = Mask($61)
284. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
285. load_condition_mask CondMask = $59
286. copy_4_constants $27..30 = testMatrix2x2
287. swizzle_3 $28..30 = ($28..30).yxz
288. copy_2_slots_unmasked $31..32 = n
289. copy_2_slots_unmasked $59..60 = $27..28
290. copy_2_slots_unmasked $61..62 = $31..32
291. dot_2_floats $59 = dot($59..60, $61..62)
292. copy_4_slots_unmasked $60..63 = $29..32
293. dot_2_floats $60 = dot($60..61, $62..63)
294. copy_2_slots_masked v₃ = Mask($59..60)
295. copy_constant $61 = 0xC0800000 (-4.0)
296. copy_constant $62 = 0xC0C00000 (-6.0)
297. cmpeq_2_floats $59..60 = equal($59..60, $61..62)
298. bitwise_and_int $59 &= $60
299. copy_slot_masked [test_no_op_vec2_X_mat2].result = Mask($59)
300. load_return_mask RetMask = $58
301. copy_slot_unmasked $58 = [test_no_op_vec2_X_mat2].result
302. label label 0x00000009
303. copy_slot_masked $57 = Mask($58)
304. label label 0x00000003
305. load_condition_mask CondMask = $40
306. zero_slot_unmasked $77 = 0
307. merge_condition_mask CondMask = $56 & $57
308. branch_if_no_active_lanes branch_if_no_active_lanes +134 (label 2 at #442)
309. store_return_mask $78 = RetMask
310. copy_constant $79 = 0xBF800000 (-1.0)
311. swizzle_3 $79..81 = ($79..81).xxx
312. copy_3_slots_unmasked n₁ = $79..81
313. copy_constant $79 = 0x3F800000 (1.0)
314. swizzle_3 $79..81 = ($79..81).xxx
315. copy_3_slots_unmasked i₁ = $79..81
316. zero_4_slots_unmasked z₁, v₄(0) = 0
317. zero_4_slots_unmasked v₄(1..2), vv₄(0..1) = 0
318. zero_slot_unmasked vv₄(2) = 0
319. zero_3_slots_unmasked $79..81 = 0
320. copy_3_slots_masked vv₄ = Mask($79..81)
321. zero_3_slots_unmasked $79..81 = 0
322. copy_3_slots_masked vv₄ = Mask($79..81)
323. store_condition_mask $79 = CondMask
324. copy_3_slots_unmasked $80..82 = vv₄
325. copy_3_slots_unmasked $83..85 = z₁
326. cmpne_3_floats $80..82 = notEqual($80..82, $83..85)
327. bitwise_or_int $81 |= $82
328. bitwise_or_int $80 |= $81
329. merge_condition_mask CondMask = $79 & $80
330. zero_slot_unmasked $81 = 0
331. copy_slot_masked [test_no_op_vec3_X_mat3].result = Mask($81)
332. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
333. load_condition_mask CondMask = $79
334. copy_3_slots_unmasked $40..42 = i₁
335. copy_4_constants $43..46 = testMatrix3x3(0..3)
336. copy_4_constants $47..50 = testMatrix3x3(4..7)
337. copy_constant $51 = testMatrix3x3(8)
338. copy_4_slots_unmasked $79..82 = $40..43
339. copy_2_slots_unmasked $83..84 = $44..45
340. dot_3_floats $79 = dot($79..81, $82..84)
341. copy_3_slots_unmasked $80..82 = $40..42
342. copy_3_slots_unmasked $83..85 = $46..48
343. dot_3_floats $80 = dot($80..82, $83..85)
344. copy_3_slots_unmasked $81..83 = $40..42
345. copy_3_slots_unmasked $84..86 = $49..51
346. dot_3_floats $81 = dot($81..83, $84..86)
347. copy_3_slots_masked v₄ = Mask($79..81)
348. store_condition_mask $79 = CondMask
349. copy_3_slots_unmasked $80..82 = v₄
350. copy_constant $83 = 0x40C00000 (6.0)
351. copy_constant $84 = 0x41700000 (15.0)
352. copy_constant $85 = 0x41C00000 (24.0)
353. cmpne_3_floats $80..82 = notEqual($80..82, $83..85)
354. bitwise_or_int $81 |= $82
355. bitwise_or_int $80 |= $81
356. merge_condition_mask CondMask = $79 & $80
357. zero_slot_unmasked $81 = 0
358. copy_slot_masked [test_no_op_vec3_X_mat3].result = Mask($81)
359. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
360. load_condition_mask CondMask = $79
361. copy_4_constants $40..43 = testMatrix3x3(0..3)
362. copy_4_constants $44..47 = testMatrix3x3(4..7)
363. copy_constant $48 = testMatrix3x3(8)
364. shuffle $41..48 = ($41..48)[2 5 0 3 6 1 4 7]
365. copy_3_slots_unmasked $49..51 = i₁
366. copy_3_slots_unmasked $79..81 = $40..42
367. copy_3_slots_unmasked $82..84 = $49..51
368. dot_3_floats $79 = dot($79..81, $82..84)
369. copy_3_slots_unmasked $80..82 = $43..45
370. copy_3_slots_unmasked $83..85 = $49..51
371. dot_3_floats $80 = dot($80..82, $83..85)
372. copy_4_slots_unmasked $81..84 = $46..49
373. copy_2_slots_unmasked $85..86 = $50..51
374. dot_3_floats $81 = dot($81..83, $84..86)
375. copy_3_slots_masked v₄ = Mask($79..81)
376. store_condition_mask $79 = CondMask
377. copy_3_slots_unmasked $80..82 = v₄
378. copy_constant $83 = 0x41400000 (12.0)
379. copy_constant $84 = 0x41700000 (15.0)
380. copy_constant $85 = 0x41900000 (18.0)
381. cmpne_3_floats $80..82 = notEqual($80..82, $83..85)
382. bitwise_or_int $81 |= $82
383. bitwise_or_int $80 |= $81
384. merge_condition_mask CondMask = $79 & $80
385. zero_slot_unmasked $81 = 0
386. copy_slot_masked [test_no_op_vec3_X_mat3].result = Mask($81)
387. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
388. load_condition_mask CondMask = $79
389. copy_3_slots_unmasked $40..42 = n₁
390. copy_4_constants $43..46 = testMatrix3x3(0..3)
391. copy_4_constants $47..50 = testMatrix3x3(4..7)
392. copy_constant $51 = testMatrix3x3(8)
393. copy_4_slots_unmasked $79..82 = $40..43
394. copy_2_slots_unmasked $83..84 = $44..45
395. dot_3_floats $79 = dot($79..81, $82..84)
396. copy_3_slots_unmasked $80..82 = $40..42
397. copy_3_slots_unmasked $83..85 = $46..48
398. dot_3_floats $80 = dot($80..82, $83..85)
399. copy_3_slots_unmasked $81..83 = $40..42
400. copy_3_slots_unmasked $84..86 = $49..51
401. dot_3_floats $81 = dot($81..83, $84..86)
402. copy_3_slots_masked v₄ = Mask($79..81)
403. store_condition_mask $79 = CondMask
404. copy_3_slots_unmasked $80..82 = v₄
405. copy_constant $83 = 0xC0C00000 (-6.0)
406. copy_constant $84 = 0xC1700000 (-15.0)
407. copy_constant $85 = 0xC1C00000 (-24.0)
408. cmpne_3_floats $80..82 = notEqual($80..82, $83..85)
409. bitwise_or_int $81 |= $82
410. bitwise_or_int $80 |= $81
411. merge_condition_mask CondMask = $79 & $80
412. zero_slot_unmasked $81 = 0
413. copy_slot_masked [test_no_op_vec3_X_mat3].result = Mask($81)
414. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
415. load_condition_mask CondMask = $79
416. copy_4_constants $40..43 = testMatrix3x3(0..3)
417. copy_4_constants $44..47 = testMatrix3x3(4..7)
418. copy_constant $48 = testMatrix3x3(8)
419. shuffle $41..48 = ($41..48)[2 5 0 3 6 1 4 7]
420. copy_3_slots_unmasked $49..51 = n₁
421. copy_3_slots_unmasked $79..81 = $40..42
422. copy_3_slots_unmasked $82..84 = $49..51
423. dot_3_floats $79 = dot($79..81, $82..84)
424. copy_3_slots_unmasked $80..82 = $43..45
425. copy_3_slots_unmasked $83..85 = $49..51
426. dot_3_floats $80 = dot($80..82, $83..85)
427. copy_4_slots_unmasked $81..84 = $46..49
428. copy_2_slots_unmasked $85..86 = $50..51
429. dot_3_floats $81 = dot($81..83, $84..86)
430. copy_3_slots_masked v₄ = Mask($79..81)
431. copy_constant $82 = 0xC1400000 (-12.0)
432. copy_constant $83 = 0xC1700000 (-15.0)
433. copy_constant $84 = 0xC1900000 (-18.0)
434. cmpeq_3_floats $79..81 = equal($79..81, $82..84)
435. bitwise_and_int $80 &= $81
436. bitwise_and_int $79 &= $80
437. copy_slot_masked [test_no_op_vec3_X_mat3].result = Mask($79)
438. load_return_mask RetMask = $78
439. copy_slot_unmasked $78 = [test_no_op_vec3_X_mat3].result
440. label label 0x0000000A
441. copy_slot_masked $77 = Mask($78)
442. label label 0x00000002
443. load_condition_mask CondMask = $56
444. zero_slot_unmasked $0 = 0
445. merge_condition_mask CondMask = $76 & $77
446. branch_if_no_active_lanes branch_if_no_active_lanes +159 (label 1 at #605)
447. store_return_mask $1 = RetMask
448. copy_constant $2 = 0xBF800000 (-1.0)
449. swizzle_4 $2..5 = ($2..5).xxxx
450. copy_4_slots_unmasked n₂ = $2..5
451. copy_constant $2 = 0x3F800000 (1.0)
452. swizzle_4 $2..5 = ($2..5).xxxx
453. copy_4_slots_unmasked i₂ = $2..5
454. zero_4_slots_unmasked z₂ = 0
455. copy_4_constants $2..5 = testMatrix2x2
456. copy_4_constants $6..9 = testMatrix2x2
457. copy_4_constants $10..13 = testMatrix2x2
458. copy_4_constants $14..17 = testMatrix2x2
459. copy_4_slots_unmasked testMatrix4x4(0..3) = $2..5
460. copy_4_slots_unmasked testMatrix4x4(4..7) = $6..9
461. copy_4_slots_unmasked testMatrix4x4(8..11) = $10..13
462. copy_4_slots_unmasked testMatrix4x4(12..15) = $14..17
463. zero_4_slots_unmasked v₅ = 0
464. zero_4_slots_unmasked vv₅ = 0
465. zero_4_slots_unmasked $2..5 = 0
466. copy_4_slots_masked vv₅ = Mask($2..5)
467. zero_4_slots_unmasked $2..5 = 0
468. copy_4_slots_masked vv₅ = Mask($2..5)
469. store_condition_mask $2 = CondMask
470. copy_4_slots_unmasked $3..6 = vv₅
471. copy_4_slots_unmasked $7..10 = z₂
472. cmpne_4_floats $3..6 = notEqual($3..6, $7..10)
473. bitwise_or_2_ints $3..4 |= $5..6
474. bitwise_or_int $3 |= $4
475. merge_condition_mask CondMask = $2 & $3
476. zero_slot_unmasked $4 = 0
477. copy_slot_masked [test_no_op_vec4_X_mat4].result = Mask($4)
478. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
479. load_condition_mask CondMask = $2
480. copy_4_slots_unmasked $56..59 = i₂
481. copy_4_slots_unmasked $60..63 = testMatrix4x4(0..3)
482. copy_4_slots_unmasked $64..67 = testMatrix4x4(4..7)
483. copy_4_slots_unmasked $68..71 = testMatrix4x4(8..11)
484. copy_4_slots_unmasked $72..75 = testMatrix4x4(12..15)
485. copy_4_slots_unmasked $2..5 = $56..59
486. copy_4_slots_unmasked $6..9 = $60..63
487. dot_4_floats $2 = dot($2..5, $6..9)
488. copy_4_slots_unmasked $3..6 = $56..59
489. copy_4_slots_unmasked $7..10 = $64..67
490. dot_4_floats $3 = dot($3..6, $7..10)
491. copy_4_slots_unmasked $4..7 = $56..59
492. copy_4_slots_unmasked $8..11 = $68..71
493. dot_4_floats $4 = dot($4..7, $8..11)
494. copy_4_slots_unmasked $5..8 = $56..59
495. copy_4_slots_unmasked $9..12 = $72..75
496. dot_4_floats $5 = dot($5..8, $9..12)
497. copy_4_slots_masked v₅ = Mask($2..5)
498. store_condition_mask $2 = CondMask
499. copy_4_slots_unmasked $3..6 = v₅
500. copy_constant $7 = 0x41200000 (10.0)
501. swizzle_4 $7..10 = ($7..10).xxxx
502. stack_rewind
503. cmpne_4_floats $3..6 = notEqual($3..6, $7..10)
504. bitwise_or_2_ints $3..4 |= $5..6
505. bitwise_or_int $3 |= $4
506. merge_condition_mask CondMask = $2 & $3
507. zero_slot_unmasked $4 = 0
508. copy_slot_masked [test_no_op_vec4_X_mat4].result = Mask($4)
509. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
510. load_condition_mask CondMask = $2
511. copy_4_slots_unmasked $56..59 = testMatrix4x4(0..3)
512. copy_4_slots_unmasked $60..63 = testMatrix4x4(4..7)
513. copy_4_slots_unmasked $64..67 = testMatrix4x4(8..11)
514. copy_4_slots_unmasked $68..71 = testMatrix4x4(12..15)
515. shuffle $57..71 = ($57..71)[3 7 11 0 4 8 12 1 5 9 13 2 6 10 14]
516. copy_4_slots_unmasked $72..75 = i₂
517. copy_4_slots_unmasked $2..5 = $56..59
518. copy_4_slots_unmasked $6..9 = $72..75
519. dot_4_floats $2 = dot($2..5, $6..9)
520. copy_4_slots_unmasked $3..6 = $60..63
521. copy_4_slots_unmasked $7..10 = $72..75
522. dot_4_floats $3 = dot($3..6, $7..10)
523. copy_4_slots_unmasked $4..7 = $64..67
524. copy_4_slots_unmasked $8..11 = $72..75
525. dot_4_floats $4 = dot($4..7, $8..11)
526. copy_4_slots_unmasked $5..8 = $68..71
527. copy_4_slots_unmasked $9..12 = $72..75
528. dot_4_floats $5 = dot($5..8, $9..12)
529. copy_4_slots_masked v₅ = Mask($2..5)
530. store_condition_mask $2 = CondMask
531. copy_4_slots_unmasked $3..6 = v₅
532. copy_constant $7 = 0x40800000 (4.0)
533. copy_constant $8 = 0x41000000 (8.0)
534. copy_constant $9 = 0x41400000 (12.0)
535. copy_constant $10 = 0x41800000 (16.0)
536. cmpne_4_floats $3..6 = notEqual($3..6, $7..10)
537. bitwise_or_2_ints $3..4 |= $5..6
538. bitwise_or_int $3 |= $4
539. merge_condition_mask CondMask = $2 & $3
540. zero_slot_unmasked $4 = 0
541. copy_slot_masked [test_no_op_vec4_X_mat4].result = Mask($4)
542. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
543. load_condition_mask CondMask = $2
544. copy_4_slots_unmasked $56..59 = n₂
545. copy_4_slots_unmasked $60..63 = testMatrix4x4(0..3)
546. copy_4_slots_unmasked $64..67 = testMatrix4x4(4..7)
547. copy_4_slots_unmasked $68..71 = testMatrix4x4(8..11)
548. copy_4_slots_unmasked $72..75 = testMatrix4x4(12..15)
549. copy_4_slots_unmasked $2..5 = $56..59
550. copy_4_slots_unmasked $6..9 = $60..63
551. dot_4_floats $2 = dot($2..5, $6..9)
552. copy_4_slots_unmasked $3..6 = $56..59
553. copy_4_slots_unmasked $7..10 = $64..67
554. dot_4_floats $3 = dot($3..6, $7..10)
555. copy_4_slots_unmasked $4..7 = $56..59
556. copy_4_slots_unmasked $8..11 = $68..71
557. dot_4_floats $4 = dot($4..7, $8..11)
558. copy_4_slots_unmasked $5..8 = $56..59
559. copy_4_slots_unmasked $9..12 = $72..75
560. dot_4_floats $5 = dot($5..8, $9..12)
561. copy_4_slots_masked v₅ = Mask($2..5)
562. store_condition_mask $2 = CondMask
563. copy_4_slots_unmasked $3..6 = v₅
564. copy_constant $7 = 0xC1200000 (-10.0)
565. swizzle_4 $7..10 = ($7..10).xxxx
566. cmpne_4_floats $3..6 = notEqual($3..6, $7..10)
567. bitwise_or_2_ints $3..4 |= $5..6
568. bitwise_or_int $3 |= $4
569. merge_condition_mask CondMask = $2 & $3
570. zero_slot_unmasked $4 = 0
571. copy_slot_masked [test_no_op_vec4_X_mat4].result = Mask($4)
572. mask_off_return_mask RetMask &= ~(CondMask & LoopMask & RetMask)
573. load_condition_mask CondMask = $2
574. copy_4_slots_unmasked $56..59 = testMatrix4x4(0..3)
575. copy_4_slots_unmasked $60..63 = testMatrix4x4(4..7)
576. copy_4_slots_unmasked $64..67 = testMatrix4x4(8..11)
577. copy_4_slots_unmasked $68..71 = testMatrix4x4(12..15)
578. shuffle $57..71 = ($57..71)[3 7 11 0 4 8 12 1 5 9 13 2 6 10 14]
579. copy_4_slots_unmasked $72..75 = n₂
580. copy_4_slots_unmasked $2..5 = $56..59
581. copy_4_slots_unmasked $6..9 = $72..75
582. dot_4_floats $2 = dot($2..5, $6..9)
583. copy_4_slots_unmasked $3..6 = $60..63
584. copy_4_slots_unmasked $7..10 = $72..75
585. dot_4_floats $3 = dot($3..6, $7..10)
586. copy_4_slots_unmasked $4..7 = $64..67
587. copy_4_slots_unmasked $8..11 = $72..75
588. dot_4_floats $4 = dot($4..7, $8..11)
589. copy_4_slots_unmasked $5..8 = $68..71
590. copy_4_slots_unmasked $9..12 = $72..75
591. dot_4_floats $5 = dot($5..8, $9..12)
592. copy_4_slots_masked v₅ = Mask($2..5)
593. copy_constant $6 = 0xC0800000 (-4.0)
594. copy_constant $7 = 0xC1000000 (-8.0)
595. copy_constant $8 = 0xC1400000 (-12.0)
596. copy_constant $9 = 0xC1800000 (-16.0)
597. cmpeq_4_floats $2..5 = equal($2..5, $6..9)
598. bitwise_and_2_ints $2..3 &= $4..5
599. bitwise_and_int $2 &= $3
600. copy_slot_masked [test_no_op_vec4_X_mat4].result = Mask($2)
601. load_return_mask RetMask = $1
602. copy_slot_unmasked $1 = [test_no_op_vec4_X_mat4].result
603. label label 0x0000000B
604. copy_slot_masked $0 = Mask($1)
605. label label 0x00000001
606. load_condition_mask CondMask = $76
607. swizzle_4 $0..3 = ($0..3).xxxx
608. copy_4_constants $4..7 = colorRed
609. copy_4_constants $8..11 = colorGreen
610. mix_4_ints $0..3 = mix($4..7, $8..11, $0..3)
611. copy_4_slots_unmasked [main].result = $0..3
612. load_src src.rgba = [main].result