1 1. store_src_rg coords = src.rg 2 2. init_lane_masks CondMask = LoopMask = RetMask = true 3 3. zero_4_slots_unmasked zero = 0 4 4. copy_constant $0 = 0x3F800000 (1.0) 5 5. swizzle_4 $0..3 = ($0..3).xxxx 6 6. copy_4_slots_unmasked one = $0..3 7 7. copy_4_constants $0..3 = colorGreen 8 8. copy_4_slots_unmasked green = $0..3 9 9. copy_4_slots_unmasked $4..7 = one 10 10. mul_4_floats $0..3 *= $4..7 11 11. copy_4_slots_unmasked $4..7 = zero 12 12. add_4_floats $0..3 += $4..7 13 13. copy_4_slots_unmasked green = $0..3 14 14. copy_4_constants $0..3 = colorRed 15 15. copy_4_slots_unmasked red = $0..3 16 16. copy_4_slots_unmasked $4..7 = zero 17 17. add_4_floats $0..3 += $4..7 18 18. copy_4_slots_unmasked $4..7 = one 19 19. mul_4_floats $0..3 *= $4..7 20 20. copy_4_slots_unmasked red = $0..3 21 21. store_condition_mask $12 = CondMask 22 22. store_condition_mask $51 = CondMask 23 23. store_condition_mask $55 = CondMask 24 24. store_condition_mask $16 = CondMask 25 25. store_condition_mask $66 = CondMask 26 26. store_condition_mask $62 = CondMask 27 27. branch_if_no_active_lanes branch_if_no_active_lanes +11 (label 7 at #38) 28 28. copy_constant mp = 0x3F000000 (0.5) 29 29. copy_slot_unmasked hp = mp 30 30. copy_constant ihp = 0x00000002 (2.802597e-45) 31 31. copy_slot_unmasked imp = ihp 32 32. copy_2_slots_unmasked $63..64 = mp, hp 33 33. cmpeq_float $63 = equal($63, $64) 34 34. copy_2_slots_unmasked $64..65 = ihp, imp 35 35. cmpeq_int $64 = equal($64, $65) 36 36. bitwise_and_int $63 &= $64 37 37. copy_slot_masked [test_scalar].result = Mask($63) 38 38. label label 0x00000007 39 39. zero_slot_unmasked $67 = 0 40 40. merge_condition_mask CondMask = $62 & $63 41 41. branch_if_no_active_lanes branch_if_no_active_lanes +60 (label 6 at #101) 42 42. copy_constant $68 = 0x40000000 (2.0) 43 43. copy_slot_unmasked $69 = $68 44 44. copy_2_slots_unmasked mp2 = $68..69 45 45. copy_2_slots_unmasked hp2 = $68..69 46 46. copy_constant $68 = 0x40400000 (3.0) 47 47. swizzle_3 $68..70 = ($68..70).xxx 48 48. copy_3_slots_unmasked mp3 = $68..70 49 49. copy_3_slots_unmasked hp3 = $68..70 50 50. copy_constant $68 = 0x40800000 (4.0) 51 51. swizzle_4 $68..71 = ($68..71).xxxx 52 52. copy_4_slots_unmasked mp4 = $68..71 53 53. copy_4_slots_unmasked hp4 = $68..71 54 54. copy_constant $68 = 0x00000002 (2.802597e-45) 55 55. copy_slot_unmasked $69 = $68 56 56. copy_2_slots_unmasked ihp2 = $68..69 57 57. copy_2_slots_unmasked imp2 = $68..69 58 58. copy_constant $68 = 0x00000003 (4.203895e-45) 59 59. swizzle_3 $68..70 = ($68..70).xxx 60 60. copy_3_slots_unmasked ihp3 = $68..70 61 61. copy_3_slots_unmasked imp3 = $68..70 62 62. copy_constant $68 = 0x00000004 (5.605194e-45) 63 63. swizzle_4 $68..71 = ($68..71).xxxx 64 64. copy_4_slots_unmasked ihp4 = $68..71 65 65. copy_4_slots_unmasked imp4 = $68..71 66 66. copy_4_slots_unmasked $68..71 = mp2, hp2 67 67. cmpeq_2_floats $68..69 = equal($68..69, $70..71) 68 68. bitwise_and_int $68 &= $69 69 69. copy_3_slots_unmasked $69..71 = hp3 70 70. copy_3_slots_unmasked $72..74 = mp3 71 71. cmpeq_3_floats $69..71 = equal($69..71, $72..74) 72 72. bitwise_and_int $70 &= $71 73 73. bitwise_and_int $69 &= $70 74 74. bitwise_and_int $68 &= $69 75 75. copy_4_slots_unmasked $69..72 = mp4 76 76. copy_4_slots_unmasked $73..76 = hp4 77 77. cmpeq_4_floats $69..72 = equal($69..72, $73..76) 78 78. bitwise_and_2_ints $69..70 &= $71..72 79 79. bitwise_and_int $69 &= $70 80 80. bitwise_and_int $68 &= $69 81 81. copy_2_slots_unmasked $69..70 = imp2 82 82. copy_2_slots_unmasked $71..72 = ihp2 83 83. cmpeq_2_ints $69..70 = equal($69..70, $71..72) 84 84. bitwise_and_int $69 &= $70 85 85. bitwise_and_int $68 &= $69 86 86. copy_4_slots_unmasked $69..72 = ihp3, imp3(0) 87 87. copy_2_slots_unmasked $73..74 = imp3(1..2) 88 88. cmpeq_3_ints $69..71 = equal($69..71, $72..74) 89 89. bitwise_and_int $70 &= $71 90 90. bitwise_and_int $69 &= $70 91 91. bitwise_and_int $68 &= $69 92 92. copy_4_slots_unmasked $69..72 = imp4 93 93. copy_4_slots_unmasked $73..76 = ihp4 94 94. cmpeq_4_ints $69..72 = equal($69..72, $73..76) 95 95. bitwise_and_2_ints $69..70 &= $71..72 96 96. bitwise_and_int $69 &= $70 97 97. bitwise_and_int $68 &= $69 98 98. copy_slot_masked [test_vector].result = Mask($68) 99 99. label label 0x00000008 100 100. copy_slot_masked $67 = Mask($68) 101 101. label label 0x00000006 102 102. load_condition_mask CondMask = $62 103 103. zero_slot_unmasked $17 = 0 104 104. merge_condition_mask CondMask = $66 & $67 105 105. branch_if_no_active_lanes branch_if_no_active_lanes +61 (label 5 at #166) 106 106. zero_slot_unmasked $18 = 0 107 107. copy_constant $19 = 0x40000000 (2.0) 108 108. swizzle_4 $18..21 = ($18..21).yxxy 109 109. copy_4_slots_unmasked mp2₁ = $18..21 110 110. copy_4_slots_unmasked hp2₁ = $18..21 111 111. zero_slot_unmasked $18 = 0 112 112. copy_constant $19 = 0x40400000 (3.0) 113 113. shuffle $18..26 = ($18..26)[1 0 0 0 1 0 0 0 1] 114 114. copy_4_slots_unmasked mp3₁(0..3) = $18..21 115 115. copy_4_slots_unmasked mp3₁(4..7) = $22..25 116 116. copy_slot_unmasked mp3₁(8) = $26 117 117. copy_4_slots_unmasked hp3₁(0..3) = $18..21 118 118. copy_4_slots_unmasked hp3₁(4..7) = $22..25 119 119. copy_slot_unmasked hp3₁(8) = $26 120 120. zero_slot_unmasked $18 = 0 121 121. copy_constant $19 = 0x40800000 (4.0) 122 122. shuffle $18..33 = ($18..33)[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1] 123 123. copy_4_slots_unmasked mp4₁(0..3) = $18..21 124 124. copy_4_slots_unmasked mp4₁(4..7) = $22..25 125 125. copy_4_slots_unmasked mp4₁(8..11) = $26..29 126 126. copy_4_slots_unmasked mp4₁(12..15) = $30..33 127 127. copy_4_slots_unmasked hp4₁(0..3) = $18..21 128 128. copy_4_slots_unmasked hp4₁(4..7) = $22..25 129 129. copy_4_slots_unmasked hp4₁(8..11) = $26..29 130 130. copy_4_slots_unmasked hp4₁(12..15) = $30..33 131 131. copy_4_slots_unmasked $18..21 = mp2₁ 132 132. copy_4_slots_unmasked $22..25 = hp2₁ 133 133. cmpeq_4_floats $18..21 = equal($18..21, $22..25) 134 134. bitwise_and_2_ints $18..19 &= $20..21 135 135. bitwise_and_int $18 &= $19 136 136. copy_4_slots_unmasked $19..22 = hp3₁(0..3) 137 137. copy_4_slots_unmasked $23..26 = hp3₁(4..7) 138 138. copy_slot_unmasked $27 = hp3₁(8) 139 139. copy_4_slots_unmasked $28..31 = mp3₁(0..3) 140 140. copy_4_slots_unmasked $32..35 = mp3₁(4..7) 141 141. copy_slot_unmasked $36 = mp3₁(8) 142 142. cmpeq_n_floats $19..27 = equal($19..27, $28..36) 143 143. bitwise_and_4_ints $20..23 &= $24..27 144 144. bitwise_and_2_ints $20..21 &= $22..23 145 145. bitwise_and_int $20 &= $21 146 146. bitwise_and_int $19 &= $20 147 147. bitwise_and_int $18 &= $19 148 148. copy_4_slots_unmasked $19..22 = mp4₁(0..3) 149 149. copy_4_slots_unmasked $23..26 = mp4₁(4..7) 150 150. copy_4_slots_unmasked $27..30 = mp4₁(8..11) 151 151. copy_4_slots_unmasked $31..34 = mp4₁(12..15) 152 152. copy_4_slots_unmasked $35..38 = hp4₁(0..3) 153 153. copy_4_slots_unmasked $39..42 = hp4₁(4..7) 154 154. copy_4_slots_unmasked $43..46 = hp4₁(8..11) 155 155. copy_4_slots_unmasked $47..50 = hp4₁(12..15) 156 156. cmpeq_n_floats $19..34 = equal($19..34, $35..50) 157 157. bitwise_and_4_ints $27..30 &= $31..34 158 158. bitwise_and_4_ints $23..26 &= $27..30 159 159. bitwise_and_4_ints $19..22 &= $23..26 160 160. bitwise_and_2_ints $19..20 &= $21..22 161 161. bitwise_and_int $19 &= $20 162 162. bitwise_and_int $18 &= $19 163 163. copy_slot_masked [test_matrix].result = Mask($18) 164 164. label label 0x00000009 165 165. copy_slot_masked $17 = Mask($18) 166 166. label label 0x00000005 167 167. load_condition_mask CondMask = $66 168 168. zero_slot_unmasked $56 = 0 169 169. merge_condition_mask CondMask = $16 & $17 170 170. branch_if_no_active_lanes branch_if_no_active_lanes +36 (label 4 at #206) 171 171. zero_slot_unmasked mf[0] = 0 172 172. copy_constant $57 = 0x3F800000 (1.0) 173 173. copy_slot_masked mf[0] = Mask($57) 174 174. zero_slot_unmasked hf[0] = 0 175 175. copy_constant $57 = 0x3F800000 (1.0) 176 176. copy_slot_masked hf[0] = Mask($57) 177 177. zero_4_slots_unmasked mv[0], mv[1] = 0 178 178. zero_slot_unmasked $57 = 0 179 179. copy_constant $58 = 0x3F800000 (1.0) 180 180. copy_2_slots_masked mv[0] = Mask($57..58) 181 181. copy_constant $57 = 0x40000000 (2.0) 182 182. copy_constant $58 = 0x40400000 (3.0) 183 183. copy_2_slots_masked mv[1] = Mask($57..58) 184 184. zero_4_slots_unmasked hv[0], hv[1] = 0 185 185. zero_slot_unmasked $57 = 0 186 186. copy_constant $58 = 0x3F800000 (1.0) 187 187. copy_2_slots_masked hv[0] = Mask($57..58) 188 188. copy_constant $57 = 0x40000000 (2.0) 189 189. copy_constant $58 = 0x40400000 (3.0) 190 190. copy_2_slots_masked hv[1] = Mask($57..58) 191 191. copy_2_slots_unmasked $57..58 = mf[0], hf[0] 192 192. cmpeq_float $57 = equal($57, $58) 193 193. copy_2_slots_unmasked $58..59 = hv[0] 194 194. copy_2_slots_unmasked $60..61 = mv[0] 195 195. cmpeq_2_floats $58..59 = equal($58..59, $60..61) 196 196. bitwise_and_int $58 &= $59 197 197. bitwise_and_int $57 &= $58 198 198. copy_2_slots_unmasked $58..59 = mv[1] 199 199. copy_2_slots_unmasked $60..61 = hv[1] 200 200. cmpeq_2_floats $58..59 = equal($58..59, $60..61) 201 201. bitwise_and_int $58 &= $59 202 202. bitwise_and_int $57 &= $58 203 203. copy_slot_masked [test_array].result = Mask($57) 204 204. label label 0x0000000A 205 205. copy_slot_masked $56 = Mask($57) 206 206. label label 0x00000004 207 207. load_condition_mask CondMask = $16 208 208. zero_slot_unmasked $52 = 0 209 209. merge_condition_mask CondMask = $55 & $56 210 210. branch_if_no_active_lanes branch_if_no_active_lanes +8 (label 3 at #218) 211 211. copy_constant value = 0x3F800000 (1.0) 212 212. copy_slot_unmasked $53 = value 213 213. copy_constant $54 = 0x3F800000 (1.0) 214 214. cmpeq_float $53 = equal($53, $54) 215 215. copy_slot_masked [highp_param].result = Mask($53) 216 216. label label 0x0000000B 217 217. copy_slot_masked $52 = Mask($53) 218 218. label label 0x00000003 219 219. load_condition_mask CondMask = $55 220 220. zero_slot_unmasked $13 = 0 221 221. merge_condition_mask CondMask = $51 & $52 222 222. branch_if_no_active_lanes branch_if_no_active_lanes +8 (label 2 at #230) 223 223. copy_constant value₁ = 0x40000000 (2.0) 224 224. copy_slot_unmasked $14 = value₁ 225 225. copy_constant $15 = 0x40000000 (2.0) 226 226. cmpeq_float $14 = equal($14, $15) 227 227. copy_slot_masked [mediump_param].result = Mask($14) 228 228. label label 0x0000000C 229 229. copy_slot_masked $13 = Mask($14) 230 230. label label 0x00000002 231 231. load_condition_mask CondMask = $51 232 232. zero_slot_unmasked $0 = 0 233 233. merge_condition_mask CondMask = $12 & $13 234 234. branch_if_no_active_lanes branch_if_no_active_lanes +8 (label 1 at #242) 235 235. copy_constant value₂ = 0x40400000 (3.0) 236 236. copy_slot_unmasked $1 = value₂ 237 237. copy_constant $2 = 0x40400000 (3.0) 238 238. cmpeq_float $1 = equal($1, $2) 239 239. copy_slot_masked [lowp_param].result = Mask($1) 240 240. label label 0x0000000D 241 241. copy_slot_masked $0 = Mask($1) 242 242. label label 0x00000001 243 243. load_condition_mask CondMask = $12 244 244. swizzle_4 $0..3 = ($0..3).xxxx 245 245. copy_4_slots_unmasked $4..7 = red 246 246. copy_4_slots_unmasked $8..11 = green 247 247. mix_4_ints $0..3 = mix($4..7, $8..11, $0..3) 248 248. copy_4_slots_unmasked [main].result = $0..3 249 249. load_src src.rgba = [main].result 250