blob: b646ffe542655e94db525a8cd868c71a24ce09b2 [file] [log] [blame]
Mike Klein267f5072019-06-03 16:27:46 -05001A8 over A8
Mike Klein3c00d3d2019-06-04 11:47:55 -050023 registers, 15 instructions:
Mike Klein267f5072019-06-03 16:27:46 -05003r0 = load8 arg(0)
Mike Kleinc2d9a312019-06-05 14:12:16 +00004r1 = splat 3B808081 (0.0039215689)
Mike Klein267f5072019-06-03 16:27:46 -05005r0 = to_f32 r0
6r0 = mul_f32 r1 r0
7r2 = load8 arg(1)
8r2 = to_f32 r2
9r2 = mul_f32 r1 r2
10r1 = splat 3F800000 (1)
11r1 = sub_f32 r1 r0
12r1 = mad_f32 r2 r1 r0
13r2 = splat 437F0000 (255)
Mike Kleinc2d9a312019-06-05 14:12:16 +000014r0 = splat 3F000000 (0.5)
Mike Klein267f5072019-06-03 16:27:46 -050015r0 = mad_f32 r1 r2 r0
16r0 = to_i32 r0
17store8 arg(1) r0
18
19A8 over G8
Mike Klein3c00d3d2019-06-04 11:47:55 -0500204 registers, 21 instructions:
Mike Klein12818512019-06-03 16:32:49 -050021r0 = load8 arg(0)
Mike Kleinc2d9a312019-06-05 14:12:16 +000022r1 = splat 3B808081 (0.0039215689)
Mike Klein12818512019-06-03 16:32:49 -050023r0 = to_f32 r0
24r0 = mul_f32 r1 r0
25r2 = load8 arg(1)
26r2 = to_f32 r2
27r2 = mul_f32 r1 r2
28r1 = splat 3F800000 (1)
29r1 = sub_f32 r1 r0
Mike Klein267f5072019-06-03 16:27:46 -050030r1 = mul_f32 r2 r1
Mike Klein12818512019-06-03 16:32:49 -050031r2 = splat 3E59B3D0 (0.21259999)
Mike Klein267f5072019-06-03 16:27:46 -050032r0 = splat 3F371759 (0.71520001)
Mike Klein12818512019-06-03 16:32:49 -050033r3 = splat 3D93DD98 (0.0722)
34r3 = mul_f32 r1 r3
35r3 = mad_f32 r1 r0 r3
36r3 = mad_f32 r1 r2 r3
37r2 = splat 437F0000 (255)
Mike Kleinc2d9a312019-06-05 14:12:16 +000038r1 = splat 3F000000 (0.5)
Mike Klein12818512019-06-03 16:32:49 -050039r1 = mad_f32 r3 r2 r1
40r1 = to_i32 r1
41store8 arg(1) r1
Mike Klein267f5072019-06-03 16:27:46 -050042
43A8 over RGBA_8888
Mike Klein3c00d3d2019-06-04 11:47:55 -0500446 registers, 37 instructions:
Mike Klein12818512019-06-03 16:32:49 -050045r0 = load8 arg(0)
Mike Kleinc2d9a312019-06-05 14:12:16 +000046r1 = splat 3B808081 (0.0039215689)
Mike Klein12818512019-06-03 16:32:49 -050047r0 = to_f32 r0
48r0 = mul_f32 r1 r0
49r2 = load32 arg(1)
Mike Klein9656dce2019-06-04 11:33:25 -050050r3 = extract r2 FF
51r3 = to_f32 r3
52r3 = mul_f32 r1 r3
53r4 = extract r2 FF00
Mike Klein12818512019-06-03 16:32:49 -050054r4 = to_f32 r4
55r4 = mul_f32 r1 r4
Mike Klein9656dce2019-06-04 11:33:25 -050056r5 = extract r2 FF0000
Mike Klein267f5072019-06-03 16:27:46 -050057r5 = to_f32 r5
Mike Klein12818512019-06-03 16:32:49 -050058r5 = mul_f32 r1 r5
Mike Klein1665aaa2019-06-04 10:41:49 -050059r2 = shr r2 24
Mike Klein12818512019-06-03 16:32:49 -050060r2 = to_f32 r2
61r2 = mul_f32 r1 r2
62r1 = splat 3F800000 (1)
63r1 = sub_f32 r1 r0
Mike Klein9656dce2019-06-04 11:33:25 -050064r3 = mul_f32 r3 r1
Mike Klein12818512019-06-03 16:32:49 -050065r4 = mul_f32 r4 r1
66r5 = mul_f32 r5 r1
Mike Klein12818512019-06-03 16:32:49 -050067r1 = mad_f32 r2 r1 r0
68r2 = splat 437F0000 (255)
Mike Kleinc2d9a312019-06-05 14:12:16 +000069r0 = splat 3F000000 (0.5)
Mike Klein9656dce2019-06-04 11:33:25 -050070r3 = mad_f32 r3 r2 r0
71r3 = to_i32 r3
Mike Klein12818512019-06-03 16:32:49 -050072r4 = mad_f32 r4 r2 r0
73r4 = to_i32 r4
Mike Klein267f5072019-06-03 16:27:46 -050074r5 = mad_f32 r5 r2 r0
Mike Klein267f5072019-06-03 16:27:46 -050075r5 = to_i32 r5
Mike Klein12818512019-06-03 16:32:49 -050076r0 = mad_f32 r1 r2 r0
77r0 = to_i32 r0
Mike Klein9656dce2019-06-04 11:33:25 -050078r4 = pack r3 r4 8
79r0 = pack r5 r0 8
80r0 = pack r4 r0 16
Mike Klein1665aaa2019-06-04 10:41:49 -050081store32 arg(1) r0
Mike Klein267f5072019-06-03 16:27:46 -050082
83G8 over A8
Mike Klein3c00d3d2019-06-04 11:47:55 -0500843 registers, 12 instructions:
Mike Kleinc2d9a312019-06-05 14:12:16 +000085r0 = splat 3B808081 (0.0039215689)
Mike Klein267f5072019-06-03 16:27:46 -050086r1 = splat 3F800000 (1)
87r2 = load8 arg(1)
88r2 = to_f32 r2
89r2 = mul_f32 r0 r2
90r0 = sub_f32 r1 r1
91r0 = mad_f32 r2 r0 r1
92r2 = splat 437F0000 (255)
Mike Kleinc2d9a312019-06-05 14:12:16 +000093r1 = splat 3F000000 (0.5)
Mike Klein267f5072019-06-03 16:27:46 -050094r1 = mad_f32 r0 r2 r1
95r1 = to_i32 r1
96store8 arg(1) r1
97
98G8 over G8
Mike Klein3c00d3d2019-06-04 11:47:55 -0500994 registers, 21 instructions:
Mike Klein267f5072019-06-03 16:27:46 -0500100r0 = load8 arg(0)
Mike Kleinc2d9a312019-06-05 14:12:16 +0000101r1 = splat 3B808081 (0.0039215689)
Mike Klein267f5072019-06-03 16:27:46 -0500102r0 = to_f32 r0
103r0 = mul_f32 r1 r0
104r2 = splat 3F800000 (1)
105r3 = load8 arg(1)
106r3 = to_f32 r3
107r3 = mul_f32 r1 r3
108r2 = sub_f32 r2 r2
109r2 = mad_f32 r3 r2 r0
110r3 = splat 3E59B3D0 (0.21259999)
111r0 = splat 3F371759 (0.71520001)
112r1 = splat 3D93DD98 (0.0722)
113r1 = mul_f32 r2 r1
114r1 = mad_f32 r2 r0 r1
115r1 = mad_f32 r2 r3 r1
116r3 = splat 437F0000 (255)
Mike Kleinc2d9a312019-06-05 14:12:16 +0000117r2 = splat 3F000000 (0.5)
Mike Klein267f5072019-06-03 16:27:46 -0500118r2 = mad_f32 r1 r3 r2
119r2 = to_i32 r2
120store8 arg(1) r2
121
122G8 over RGBA_8888
Mike Klein3c00d3d2019-06-04 11:47:55 -05001237 registers, 37 instructions:
Mike Klein267f5072019-06-03 16:27:46 -0500124r0 = load8 arg(0)
Mike Kleinc2d9a312019-06-05 14:12:16 +0000125r1 = splat 3B808081 (0.0039215689)
Mike Klein267f5072019-06-03 16:27:46 -0500126r0 = to_f32 r0
127r0 = mul_f32 r1 r0
128r2 = splat 3F800000 (1)
129r3 = load32 arg(1)
Mike Klein9656dce2019-06-04 11:33:25 -0500130r4 = extract r3 FF
131r4 = to_f32 r4
132r4 = mul_f32 r1 r4
133r5 = extract r3 FF00
Mike Klein267f5072019-06-03 16:27:46 -0500134r5 = to_f32 r5
135r5 = mul_f32 r1 r5
Mike Klein9656dce2019-06-04 11:33:25 -0500136r6 = extract r3 FF0000
Mike Klein267f5072019-06-03 16:27:46 -0500137r6 = to_f32 r6
138r6 = mul_f32 r1 r6
Mike Klein1665aaa2019-06-04 10:41:49 -0500139r3 = shr r3 24
Mike Klein267f5072019-06-03 16:27:46 -0500140r3 = to_f32 r3
141r3 = mul_f32 r1 r3
142r1 = sub_f32 r2 r2
Mike Klein9656dce2019-06-04 11:33:25 -0500143r4 = mad_f32 r4 r1 r0
Mike Klein267f5072019-06-03 16:27:46 -0500144r5 = mad_f32 r5 r1 r0
145r6 = mad_f32 r6 r1 r0
Mike Klein267f5072019-06-03 16:27:46 -0500146r1 = mad_f32 r3 r1 r2
147r3 = splat 437F0000 (255)
Mike Kleinc2d9a312019-06-05 14:12:16 +0000148r2 = splat 3F000000 (0.5)
Mike Klein9656dce2019-06-04 11:33:25 -0500149r4 = mad_f32 r4 r3 r2
150r4 = to_i32 r4
Mike Klein267f5072019-06-03 16:27:46 -0500151r5 = mad_f32 r5 r3 r2
152r5 = to_i32 r5
153r6 = mad_f32 r6 r3 r2
154r6 = to_i32 r6
Mike Klein267f5072019-06-03 16:27:46 -0500155r2 = mad_f32 r1 r3 r2
156r2 = to_i32 r2
Mike Klein9656dce2019-06-04 11:33:25 -0500157r5 = pack r4 r5 8
158r2 = pack r6 r2 8
159r2 = pack r5 r2 16
Mike Klein1665aaa2019-06-04 10:41:49 -0500160store32 arg(1) r2
Mike Klein267f5072019-06-03 16:27:46 -0500161
162RGBA_8888 over A8
Mike Klein3c00d3d2019-06-04 11:47:55 -05001633 registers, 16 instructions:
Mike Klein267f5072019-06-03 16:27:46 -0500164r0 = load32 arg(0)
Mike Kleinc2d9a312019-06-05 14:12:16 +0000165r1 = splat 3B808081 (0.0039215689)
Mike Klein1665aaa2019-06-04 10:41:49 -0500166r0 = shr r0 24
Mike Klein267f5072019-06-03 16:27:46 -0500167r0 = to_f32 r0
168r0 = mul_f32 r1 r0
169r2 = load8 arg(1)
170r2 = to_f32 r2
171r2 = mul_f32 r1 r2
172r1 = splat 3F800000 (1)
173r1 = sub_f32 r1 r0
174r1 = mad_f32 r2 r1 r0
175r2 = splat 437F0000 (255)
Mike Kleinc2d9a312019-06-05 14:12:16 +0000176r0 = splat 3F000000 (0.5)
Mike Klein267f5072019-06-03 16:27:46 -0500177r0 = mad_f32 r1 r2 r0
178r0 = to_i32 r0
179store8 arg(1) r0
180
181RGBA_8888 over G8
Mike Klein3c00d3d2019-06-04 11:47:55 -05001826 registers, 33 instructions:
Mike Klein267f5072019-06-03 16:27:46 -0500183r0 = load32 arg(0)
Mike Klein9656dce2019-06-04 11:33:25 -0500184r1 = extract r0 FF
Mike Kleinc2d9a312019-06-05 14:12:16 +0000185r2 = splat 3B808081 (0.0039215689)
Mike Klein9656dce2019-06-04 11:33:25 -0500186r1 = to_f32 r1
187r1 = mul_f32 r2 r1
188r3 = extract r0 FF00
189r3 = to_f32 r3
190r3 = mul_f32 r2 r3
191r4 = extract r0 FF0000
Mike Klein267f5072019-06-03 16:27:46 -0500192r4 = to_f32 r4
Mike Klein9656dce2019-06-04 11:33:25 -0500193r4 = mul_f32 r2 r4
Mike Klein1665aaa2019-06-04 10:41:49 -0500194r0 = shr r0 24
Mike Klein267f5072019-06-03 16:27:46 -0500195r0 = to_f32 r0
Mike Klein9656dce2019-06-04 11:33:25 -0500196r0 = mul_f32 r2 r0
197r5 = load8 arg(1)
198r5 = to_f32 r5
199r5 = mul_f32 r2 r5
200r2 = splat 3F800000 (1)
201r2 = sub_f32 r2 r0
202r1 = mad_f32 r5 r2 r1
203r3 = mad_f32 r5 r2 r3
204r2 = mad_f32 r5 r2 r4
205r5 = splat 3E59B3D0 (0.21259999)
206r4 = splat 3F371759 (0.71520001)
Mike Klein267f5072019-06-03 16:27:46 -0500207r0 = splat 3D93DD98 (0.0722)
Mike Klein9656dce2019-06-04 11:33:25 -0500208r0 = mul_f32 r2 r0
209r0 = mad_f32 r3 r4 r0
210r0 = mad_f32 r1 r5 r0
211r5 = splat 437F0000 (255)
Mike Kleinc2d9a312019-06-05 14:12:16 +0000212r1 = splat 3F000000 (0.5)
Mike Klein9656dce2019-06-04 11:33:25 -0500213r1 = mad_f32 r0 r5 r1
214r1 = to_i32 r1
215store8 arg(1) r1
Mike Klein267f5072019-06-03 16:27:46 -0500216
217RGBA_8888 over RGBA_8888
Mike Klein3c00d3d2019-06-04 11:47:55 -05002189 registers, 47 instructions:
Mike Klein267f5072019-06-03 16:27:46 -0500219r0 = load32 arg(0)
Mike Klein9656dce2019-06-04 11:33:25 -0500220r1 = extract r0 FF
Mike Kleinc2d9a312019-06-05 14:12:16 +0000221r2 = splat 3B808081 (0.0039215689)
Mike Klein9656dce2019-06-04 11:33:25 -0500222r1 = to_f32 r1
223r1 = mul_f32 r2 r1
224r3 = extract r0 FF00
225r3 = to_f32 r3
226r3 = mul_f32 r2 r3
227r4 = extract r0 FF0000
Mike Klein267f5072019-06-03 16:27:46 -0500228r4 = to_f32 r4
Mike Klein9656dce2019-06-04 11:33:25 -0500229r4 = mul_f32 r2 r4
Mike Klein1665aaa2019-06-04 10:41:49 -0500230r0 = shr r0 24
Mike Klein267f5072019-06-03 16:27:46 -0500231r0 = to_f32 r0
Mike Klein9656dce2019-06-04 11:33:25 -0500232r0 = mul_f32 r2 r0
233r5 = load32 arg(1)
234r6 = extract r5 FF
Mike Klein267f5072019-06-03 16:27:46 -0500235r6 = to_f32 r6
Mike Klein9656dce2019-06-04 11:33:25 -0500236r6 = mul_f32 r2 r6
237r7 = extract r5 FF00
238r7 = to_f32 r7
239r7 = mul_f32 r2 r7
240r8 = extract r5 FF0000
241r8 = to_f32 r8
242r8 = mul_f32 r2 r8
243r5 = shr r5 24
244r5 = to_f32 r5
245r5 = mul_f32 r2 r5
246r2 = splat 3F800000 (1)
247r2 = sub_f32 r2 r0
248r6 = mad_f32 r6 r2 r1
249r7 = mad_f32 r7 r2 r3
250r8 = mad_f32 r8 r2 r4
251r2 = mad_f32 r5 r2 r0
252r5 = splat 437F0000 (255)
Mike Kleinc2d9a312019-06-05 14:12:16 +0000253r0 = splat 3F000000 (0.5)
Mike Klein9656dce2019-06-04 11:33:25 -0500254r6 = mad_f32 r6 r5 r0
255r6 = to_i32 r6
256r7 = mad_f32 r7 r5 r0
Mike Klein267f5072019-06-03 16:27:46 -0500257r7 = to_i32 r7
Mike Klein9656dce2019-06-04 11:33:25 -0500258r8 = mad_f32 r8 r5 r0
Mike Klein267f5072019-06-03 16:27:46 -0500259r8 = to_i32 r8
Mike Klein9656dce2019-06-04 11:33:25 -0500260r0 = mad_f32 r2 r5 r0
Mike Klein267f5072019-06-03 16:27:46 -0500261r0 = to_i32 r0
Mike Klein9656dce2019-06-04 11:33:25 -0500262r7 = pack r6 r7 8
263r0 = pack r8 r0 8
264r0 = pack r7 r0 16
Mike Klein1665aaa2019-06-04 10:41:49 -0500265store32 arg(1) r0
Mike Klein267f5072019-06-03 16:27:46 -0500266
Mike Klein7b7077c2019-06-03 17:10:59 -0500267I32 8888 over 8888
Mike Klein3c00d3d2019-06-04 11:47:55 -05002689 registers, 24 instructions:
Mike Klein7b7077c2019-06-03 17:10:59 -0500269r0 = load32 arg(0)
Mike Klein9656dce2019-06-04 11:33:25 -0500270r1 = extract r0 FF
271r2 = extract r0 FF00
272r3 = extract r0 FF0000
Mike Klein1665aaa2019-06-04 10:41:49 -0500273r0 = shr r0 24
Mike Klein9656dce2019-06-04 11:33:25 -0500274r4 = load32 arg(1)
275r5 = extract r4 FF
276r6 = extract r4 FF00
277r7 = extract r4 FF0000
278r4 = shr r4 24
279r8 = splat FF (3.5733111e-43)
280r8 = sub_i32 r8 r0
281r5 = mul_unorm8 r5 r8
282r5 = add_i32 r1 r5
283r6 = mul_unorm8 r6 r8
Mike Klein7b7077c2019-06-03 17:10:59 -0500284r6 = add_i32 r2 r6
Mike Klein9656dce2019-06-04 11:33:25 -0500285r7 = mul_unorm8 r7 r8
Mike Klein7b7077c2019-06-03 17:10:59 -0500286r7 = add_i32 r3 r7
Mike Klein9656dce2019-06-04 11:33:25 -0500287r8 = mul_unorm8 r4 r8
288r8 = add_i32 r0 r8
289r6 = pack r5 r6 8
290r8 = pack r7 r8 8
291r8 = pack r6 r8 16
292store32 arg(1) r8
Mike Klein7b7077c2019-06-03 17:10:59 -0500293
294I32 (SWAR) 8888 over 8888
Mike Klein3c00d3d2019-06-04 11:47:55 -05002956 registers, 20 instructions:
Mike Klein7b7077c2019-06-03 17:10:59 -0500296r0 = load32 arg(0)
Mike Klein9656dce2019-06-04 11:33:25 -0500297r1 = extract r0 FF00FF
298r0 = extract r0 FF00FF00
299r2 = load32 arg(1)
300r3 = extract r2 FF00FF
301r2 = extract r2 FF00FF00
302r4 = splat FF (3.5733111e-43)
303r5 = shr r0 16
304r5 = sub_i32 r4 r5
305r4 = splat FF00FF (2.3418409e-38)
306r3 = mul_i32 r3 r5
307r3 = add_i32 r3 r4
308r3 = extract r3 FF00FF00
309r3 = add_i32 r1 r3
310r5 = mul_i32 r2 r5
311r5 = add_i32 r5 r4
312r5 = extract r5 FF00FF00
313r5 = add_i32 r0 r5
314r5 = pack r3 r5 8
315store32 arg(1) r5
Mike Klein7b7077c2019-06-03 17:10:59 -0500316