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