blob: dad3895769f807591a5fb0d702146370b7be0c89 [file] [log] [blame]
Mike Kleind7e06ae2017-03-29 16:33:06 -04001# Copyright 2017 Google Inc.
2#
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6# This file is generated semi-automatically with this command:
7# $ src/jumper/build_stages.py
8
Mike Klein7c4af542017-03-29 18:21:14 -04009#if defined(__MACH__)
10 #define HIDDEN .private_extern
Mike Klein86714282017-04-13 17:37:38 -040011 #define FUNCTION(name)
Mike Klein7c4af542017-03-29 18:21:14 -040012#else
13 #define HIDDEN .hidden
Mike Klein86714282017-04-13 17:37:38 -040014 #define FUNCTION(name) .type name,%function
Mike Klein8517b4c2017-03-30 20:07:52 -040015 .section .note.GNU-stack,"",%progbits
Mike Klein7c4af542017-03-29 18:21:14 -040016#endif
Mike Kleind7e06ae2017-03-29 16:33:06 -040017.text
18#if defined(__aarch64__)
19.balign 4
20
Mike Klein7c4af542017-03-29 18:21:14 -040021HIDDEN _sk_start_pipeline_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -040022.globl _sk_start_pipeline_aarch64
Mike Klein86714282017-04-13 17:37:38 -040023FUNCTION(_sk_start_pipeline_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024_sk_start_pipeline_aarch64:
25 .long 0xa9bd5bf7 // stp x23, x22, [sp, #-48]!
26 .long 0xa90153f5 // stp x21, x20, [sp, #16]
27 .long 0xa9027bf3 // stp x19, x30, [sp, #32]
28 .long 0xaa0103f4 // mov x20, x1
29 .long 0xf8408697 // ldr x23, [x20], #8
30 .long 0xaa0003f5 // mov x21, x0
31 .long 0xaa0303f3 // mov x19, x3
32 .long 0x910012a8 // add x8, x21, #0x4
33 .long 0xeb13011f // cmp x8, x19
34 .long 0xaa0203f6 // mov x22, x2
35 .long 0x54000069 // b.ls 34 <sk_start_pipeline_aarch64+0x34> // b.plast
36 .long 0xaa1503e0 // mov x0, x21
37 .long 0x14000012 // b 78 <sk_start_pipeline_aarch64+0x78>
38 .long 0x6f00e400 // movi v0.2d, #0x0
39 .long 0x6f00e401 // movi v1.2d, #0x0
40 .long 0x6f00e402 // movi v2.2d, #0x0
41 .long 0x6f00e403 // movi v3.2d, #0x0
42 .long 0x6f00e404 // movi v4.2d, #0x0
43 .long 0x6f00e405 // movi v5.2d, #0x0
44 .long 0x6f00e406 // movi v6.2d, #0x0
45 .long 0x6f00e407 // movi v7.2d, #0x0
46 .long 0xaa1503e0 // mov x0, x21
47 .long 0xaa1403e1 // mov x1, x20
48 .long 0xaa1603e2 // mov x2, x22
49 .long 0xd63f02e0 // blr x23
50 .long 0x910012a0 // add x0, x21, #0x4
51 .long 0x910022a8 // add x8, x21, #0x8
52 .long 0xeb13011f // cmp x8, x19
53 .long 0xaa0003f5 // mov x21, x0
54 .long 0x54fffe09 // b.ls 34 <sk_start_pipeline_aarch64+0x34> // b.plast
55 .long 0xa9427bf3 // ldp x19, x30, [sp, #32]
56 .long 0xa94153f5 // ldp x21, x20, [sp, #16]
57 .long 0xa8c35bf7 // ldp x23, x22, [sp], #48
58 .long 0xd65f03c0 // ret
59
Mike Klein7c4af542017-03-29 18:21:14 -040060HIDDEN _sk_just_return_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -040061.globl _sk_just_return_aarch64
Mike Klein86714282017-04-13 17:37:38 -040062FUNCTION(_sk_just_return_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -040063_sk_just_return_aarch64:
64 .long 0xd65f03c0 // ret
65
Mike Klein7c4af542017-03-29 18:21:14 -040066HIDDEN _sk_seed_shader_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -040067.globl _sk_seed_shader_aarch64
Mike Klein86714282017-04-13 17:37:38 -040068FUNCTION(_sk_seed_shader_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -040069_sk_seed_shader_aarch64:
70 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
71 .long 0x3dc00046 // ldr q6, [x2]
72 .long 0x4e040c00 // dup v0.4s, w0
73 .long 0x4f0167e7 // movi v7.4s, #0x3f, lsl #24
74 .long 0x4d40c901 // ld1r {v1.4s}, [x8]
75 .long 0x4e21d800 // scvtf v0.4s, v0.4s
76 .long 0x4e27d400 // fadd v0.4s, v0.4s, v7.4s
77 .long 0x4f03f602 // fmov v2.4s, #1.000000000000000000e+00
78 .long 0x4e21d821 // scvtf v1.4s, v1.4s
79 .long 0x6f00e403 // movi v3.2d, #0x0
80 .long 0x6f00e404 // movi v4.2d, #0x0
81 .long 0x6f00e405 // movi v5.2d, #0x0
82 .long 0x4e26d400 // fadd v0.4s, v0.4s, v6.4s
83 .long 0x6f00e406 // movi v6.2d, #0x0
84 .long 0x4e27d421 // fadd v1.4s, v1.4s, v7.4s
85 .long 0x6f00e407 // movi v7.2d, #0x0
86 .long 0xd61f0060 // br x3
87
Mike Klein7c4af542017-03-29 18:21:14 -040088HIDDEN _sk_constant_color_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -040089.globl _sk_constant_color_aarch64
Mike Klein86714282017-04-13 17:37:38 -040090FUNCTION(_sk_constant_color_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -040091_sk_constant_color_aarch64:
92 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
Mike Klein8a823fa2017-04-05 17:29:26 -040093 .long 0xaa0803ea // mov x10, x8
94 .long 0x4ddfc940 // ld1r {v0.4s}, [x10], #4
95 .long 0x91002109 // add x9, x8, #0x8
96 .long 0x91003108 // add x8, x8, #0xc
97 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
98 .long 0x4d40c903 // ld1r {v3.4s}, [x8]
99 .long 0x4d40c941 // ld1r {v1.4s}, [x10]
Mike Kleind7e06ae2017-03-29 16:33:06 -0400100 .long 0xd61f0060 // br x3
101
Mike Klein7c4af542017-03-29 18:21:14 -0400102HIDDEN _sk_clear_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400103.globl _sk_clear_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400104FUNCTION(_sk_clear_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400105_sk_clear_aarch64:
106 .long 0xf8408423 // ldr x3, [x1], #8
107 .long 0x6f00e400 // movi v0.2d, #0x0
108 .long 0x6f00e401 // movi v1.2d, #0x0
109 .long 0x6f00e402 // movi v2.2d, #0x0
110 .long 0x6f00e403 // movi v3.2d, #0x0
111 .long 0xd61f0060 // br x3
112
Mike Kleinaaca1e42017-03-31 09:29:01 -0400113HIDDEN _sk_srcatop_aarch64
114.globl _sk_srcatop_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400115FUNCTION(_sk_srcatop_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400116_sk_srcatop_aarch64:
117 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
118 .long 0x6e27dc00 // fmul v0.4s, v0.4s, v7.4s
119 .long 0x6e27dc21 // fmul v1.4s, v1.4s, v7.4s
120 .long 0x6e27dc42 // fmul v2.4s, v2.4s, v7.4s
121 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -0400122 .long 0xf8408423 // ldr x3, [x1], #8
Mike Kleinaaca1e42017-03-31 09:29:01 -0400123 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
124 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
125 .long 0x4e30ccc2 // fmla v2.4s, v6.4s, v16.4s
126 .long 0x6e27de10 // fmul v16.4s, v16.4s, v7.4s
127 .long 0x4e23ccf0 // fmla v16.4s, v7.4s, v3.4s
128 .long 0x4eb01e03 // mov v3.16b, v16.16b
129 .long 0xd61f0060 // br x3
130
131HIDDEN _sk_dstatop_aarch64
132.globl _sk_dstatop_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400133FUNCTION(_sk_dstatop_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400134_sk_dstatop_aarch64:
135 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
136 .long 0x4ea7d610 // fsub v16.4s, v16.4s, v7.4s
137 .long 0xf8408423 // ldr x3, [x1], #8
138 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
139 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
140 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
141 .long 0x6e23de10 // fmul v16.4s, v16.4s, v3.4s
142 .long 0x4e23ccf0 // fmla v16.4s, v7.4s, v3.4s
143 .long 0x4e23cc80 // fmla v0.4s, v4.4s, v3.4s
144 .long 0x4e23cca1 // fmla v1.4s, v5.4s, v3.4s
145 .long 0x4e23ccc2 // fmla v2.4s, v6.4s, v3.4s
146 .long 0x4eb01e03 // mov v3.16b, v16.16b
147 .long 0xd61f0060 // br x3
148
149HIDDEN _sk_srcin_aarch64
150.globl _sk_srcin_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400151FUNCTION(_sk_srcin_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400152_sk_srcin_aarch64:
153 .long 0xf8408423 // ldr x3, [x1], #8
154 .long 0x6e27dc00 // fmul v0.4s, v0.4s, v7.4s
155 .long 0x6e27dc21 // fmul v1.4s, v1.4s, v7.4s
156 .long 0x6e27dc42 // fmul v2.4s, v2.4s, v7.4s
157 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
158 .long 0xd61f0060 // br x3
159
160HIDDEN _sk_dstin_aarch64
161.globl _sk_dstin_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400162FUNCTION(_sk_dstin_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400163_sk_dstin_aarch64:
164 .long 0xf8408423 // ldr x3, [x1], #8
165 .long 0x6e24dc60 // fmul v0.4s, v3.4s, v4.4s
166 .long 0x6e25dc61 // fmul v1.4s, v3.4s, v5.4s
167 .long 0x6e26dc62 // fmul v2.4s, v3.4s, v6.4s
168 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
169 .long 0xd61f0060 // br x3
170
171HIDDEN _sk_srcout_aarch64
172.globl _sk_srcout_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400173FUNCTION(_sk_srcout_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400174_sk_srcout_aarch64:
175 .long 0xf8408423 // ldr x3, [x1], #8
176 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
177 .long 0x4ea7d610 // fsub v16.4s, v16.4s, v7.4s
178 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
179 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
180 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
181 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
182 .long 0xd61f0060 // br x3
183
184HIDDEN _sk_dstout_aarch64
185.globl _sk_dstout_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400186FUNCTION(_sk_dstout_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400187_sk_dstout_aarch64:
188 .long 0xf8408423 // ldr x3, [x1], #8
189 .long 0x4f03f600 // fmov v0.4s, #1.000000000000000000e+00
190 .long 0x4ea3d403 // fsub v3.4s, v0.4s, v3.4s
191 .long 0x6e24dc60 // fmul v0.4s, v3.4s, v4.4s
192 .long 0x6e25dc61 // fmul v1.4s, v3.4s, v5.4s
193 .long 0x6e26dc62 // fmul v2.4s, v3.4s, v6.4s
194 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
Mike Kleind7e06ae2017-03-29 16:33:06 -0400195 .long 0xd61f0060 // br x3
196
Mike Klein7c4af542017-03-29 18:21:14 -0400197HIDDEN _sk_srcover_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400198.globl _sk_srcover_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400199FUNCTION(_sk_srcover_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400200_sk_srcover_aarch64:
201 .long 0xf8408423 // ldr x3, [x1], #8
202 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
203 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
204 .long 0x4e24ce00 // fmla v0.4s, v16.4s, v4.4s
205 .long 0x4e25ce01 // fmla v1.4s, v16.4s, v5.4s
206 .long 0x4e26ce02 // fmla v2.4s, v16.4s, v6.4s
207 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
208 .long 0xd61f0060 // br x3
209
Mike Klein7c4af542017-03-29 18:21:14 -0400210HIDDEN _sk_dstover_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400211.globl _sk_dstover_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400212FUNCTION(_sk_dstover_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400213_sk_dstover_aarch64:
214 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
215 .long 0xf8408423 // ldr x3, [x1], #8
216 .long 0x4ea41c90 // mov v16.16b, v4.16b
217 .long 0x4ea7d634 // fsub v20.4s, v17.4s, v7.4s
218 .long 0x4ea51cb1 // mov v17.16b, v5.16b
219 .long 0x4ea61cd2 // mov v18.16b, v6.16b
220 .long 0x4ea71cf3 // mov v19.16b, v7.16b
221 .long 0x4e20ce90 // fmla v16.4s, v20.4s, v0.4s
222 .long 0x4e21ce91 // fmla v17.4s, v20.4s, v1.4s
223 .long 0x4e22ce92 // fmla v18.4s, v20.4s, v2.4s
224 .long 0x4e23ce93 // fmla v19.4s, v20.4s, v3.4s
225 .long 0x4eb01e00 // mov v0.16b, v16.16b
226 .long 0x4eb11e21 // mov v1.16b, v17.16b
227 .long 0x4eb21e42 // mov v2.16b, v18.16b
228 .long 0x4eb31e63 // mov v3.16b, v19.16b
229 .long 0xd61f0060 // br x3
230
Mike Kleinaaca1e42017-03-31 09:29:01 -0400231HIDDEN _sk_modulate_aarch64
232.globl _sk_modulate_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400233FUNCTION(_sk_modulate_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400234_sk_modulate_aarch64:
235 .long 0xf8408423 // ldr x3, [x1], #8
236 .long 0x6e24dc00 // fmul v0.4s, v0.4s, v4.4s
237 .long 0x6e25dc21 // fmul v1.4s, v1.4s, v5.4s
238 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
239 .long 0x6e27dc63 // fmul v3.4s, v3.4s, v7.4s
240 .long 0xd61f0060 // br x3
241
242HIDDEN _sk_multiply_aarch64
243.globl _sk_multiply_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400244FUNCTION(_sk_multiply_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400245_sk_multiply_aarch64:
246 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
247 .long 0x4ea7d613 // fsub v19.4s, v16.4s, v7.4s
248 .long 0x4ea3d614 // fsub v20.4s, v16.4s, v3.4s
249 .long 0x6e20de70 // fmul v16.4s, v19.4s, v0.4s
250 .long 0x6e21de71 // fmul v17.4s, v19.4s, v1.4s
251 .long 0x6e22de72 // fmul v18.4s, v19.4s, v2.4s
252 .long 0x6e23de73 // fmul v19.4s, v19.4s, v3.4s
253 .long 0xf8408423 // ldr x3, [x1], #8
254 .long 0x4e34cc90 // fmla v16.4s, v4.4s, v20.4s
255 .long 0x4e34ccb1 // fmla v17.4s, v5.4s, v20.4s
256 .long 0x4e34ccd2 // fmla v18.4s, v6.4s, v20.4s
257 .long 0x4e34ccf3 // fmla v19.4s, v7.4s, v20.4s
258 .long 0x4e20cc90 // fmla v16.4s, v4.4s, v0.4s
259 .long 0x4e21ccb1 // fmla v17.4s, v5.4s, v1.4s
260 .long 0x4e22ccd2 // fmla v18.4s, v6.4s, v2.4s
261 .long 0x4e23ccf3 // fmla v19.4s, v7.4s, v3.4s
262 .long 0x4eb01e00 // mov v0.16b, v16.16b
263 .long 0x4eb11e21 // mov v1.16b, v17.16b
264 .long 0x4eb21e42 // mov v2.16b, v18.16b
265 .long 0x4eb31e63 // mov v3.16b, v19.16b
266 .long 0xd61f0060 // br x3
267
268HIDDEN _sk_plus__aarch64
269.globl _sk_plus__aarch64
Mike Klein86714282017-04-13 17:37:38 -0400270FUNCTION(_sk_plus__aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400271_sk_plus__aarch64:
272 .long 0xf8408423 // ldr x3, [x1], #8
273 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
274 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
275 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
276 .long 0x4e27d463 // fadd v3.4s, v3.4s, v7.4s
277 .long 0xd61f0060 // br x3
278
279HIDDEN _sk_screen_aarch64
280.globl _sk_screen_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400281FUNCTION(_sk_screen_aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400282_sk_screen_aarch64:
283 .long 0xf8408423 // ldr x3, [x1], #8
284 .long 0x4e24d410 // fadd v16.4s, v0.4s, v4.4s
285 .long 0x4e25d431 // fadd v17.4s, v1.4s, v5.4s
286 .long 0x4e26d452 // fadd v18.4s, v2.4s, v6.4s
287 .long 0x4e27d473 // fadd v19.4s, v3.4s, v7.4s
288 .long 0x4ea4cc10 // fmls v16.4s, v0.4s, v4.4s
289 .long 0x4ea5cc31 // fmls v17.4s, v1.4s, v5.4s
290 .long 0x4ea6cc52 // fmls v18.4s, v2.4s, v6.4s
291 .long 0x4ea7cc73 // fmls v19.4s, v3.4s, v7.4s
292 .long 0x4eb01e00 // mov v0.16b, v16.16b
293 .long 0x4eb11e21 // mov v1.16b, v17.16b
294 .long 0x4eb21e42 // mov v2.16b, v18.16b
295 .long 0x4eb31e63 // mov v3.16b, v19.16b
296 .long 0xd61f0060 // br x3
297
298HIDDEN _sk_xor__aarch64
299.globl _sk_xor__aarch64
Mike Klein86714282017-04-13 17:37:38 -0400300FUNCTION(_sk_xor__aarch64)
Mike Kleinaaca1e42017-03-31 09:29:01 -0400301_sk_xor__aarch64:
302 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
303 .long 0xf8408423 // ldr x3, [x1], #8
304 .long 0x4ea7d611 // fsub v17.4s, v16.4s, v7.4s
305 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
306 .long 0x6e20de20 // fmul v0.4s, v17.4s, v0.4s
307 .long 0x6e21de21 // fmul v1.4s, v17.4s, v1.4s
308 .long 0x6e22de22 // fmul v2.4s, v17.4s, v2.4s
309 .long 0x6e23de23 // fmul v3.4s, v17.4s, v3.4s
310 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
311 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
312 .long 0x4e30ccc2 // fmla v2.4s, v6.4s, v16.4s
313 .long 0x4e30cce3 // fmla v3.4s, v7.4s, v16.4s
314 .long 0xd61f0060 // br x3
315
Mike Klein66b09ab2017-03-31 10:29:40 -0400316HIDDEN _sk_darken_aarch64
317.globl _sk_darken_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400318FUNCTION(_sk_darken_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400319_sk_darken_aarch64:
320 .long 0x6e27dc10 // fmul v16.4s, v0.4s, v7.4s
321 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
322 .long 0x6e27dc32 // fmul v18.4s, v1.4s, v7.4s
323 .long 0x6e25dc73 // fmul v19.4s, v3.4s, v5.4s
324 .long 0x4e31f610 // fmax v16.4s, v16.4s, v17.4s
325 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
326 .long 0xf8408423 // ldr x3, [x1], #8
327 .long 0x6e27dc51 // fmul v17.4s, v2.4s, v7.4s
328 .long 0x4e33f652 // fmax v18.4s, v18.4s, v19.4s
329 .long 0x6e26dc73 // fmul v19.4s, v3.4s, v6.4s
330 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
331 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
332 .long 0x4e33f631 // fmax v17.4s, v17.4s, v19.4s
333 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
334 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
335 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
336 .long 0x4eb2d421 // fsub v1.4s, v1.4s, v18.4s
337 .long 0x4eb1d442 // fsub v2.4s, v2.4s, v17.4s
338 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
339 .long 0xd61f0060 // br x3
340
341HIDDEN _sk_lighten_aarch64
342.globl _sk_lighten_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400343FUNCTION(_sk_lighten_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400344_sk_lighten_aarch64:
345 .long 0x6e27dc10 // fmul v16.4s, v0.4s, v7.4s
346 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
347 .long 0x6e27dc32 // fmul v18.4s, v1.4s, v7.4s
348 .long 0x6e25dc73 // fmul v19.4s, v3.4s, v5.4s
349 .long 0x4eb1f610 // fmin v16.4s, v16.4s, v17.4s
350 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
351 .long 0xf8408423 // ldr x3, [x1], #8
352 .long 0x6e27dc51 // fmul v17.4s, v2.4s, v7.4s
353 .long 0x4eb3f652 // fmin v18.4s, v18.4s, v19.4s
354 .long 0x6e26dc73 // fmul v19.4s, v3.4s, v6.4s
355 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
356 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
357 .long 0x4eb3f631 // fmin v17.4s, v17.4s, v19.4s
358 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
359 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
360 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
361 .long 0x4eb2d421 // fsub v1.4s, v1.4s, v18.4s
362 .long 0x4eb1d442 // fsub v2.4s, v2.4s, v17.4s
363 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
364 .long 0xd61f0060 // br x3
365
366HIDDEN _sk_difference_aarch64
367.globl _sk_difference_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400368FUNCTION(_sk_difference_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400369_sk_difference_aarch64:
370 .long 0x6e27dc10 // fmul v16.4s, v0.4s, v7.4s
371 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
372 .long 0x6e27dc32 // fmul v18.4s, v1.4s, v7.4s
373 .long 0x6e25dc73 // fmul v19.4s, v3.4s, v5.4s
374 .long 0x4eb1f610 // fmin v16.4s, v16.4s, v17.4s
375 .long 0x4eb3f652 // fmin v18.4s, v18.4s, v19.4s
376 .long 0x4e24d400 // fadd v0.4s, v0.4s, v4.4s
377 .long 0x4e30d610 // fadd v16.4s, v16.4s, v16.4s
378 .long 0x6e27dc51 // fmul v17.4s, v2.4s, v7.4s
379 .long 0x6e26dc73 // fmul v19.4s, v3.4s, v6.4s
380 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
381 .long 0x4e25d421 // fadd v1.4s, v1.4s, v5.4s
382 .long 0x4e32d650 // fadd v16.4s, v18.4s, v18.4s
383 .long 0xf8408423 // ldr x3, [x1], #8
384 .long 0x4eb3f631 // fmin v17.4s, v17.4s, v19.4s
385 .long 0x4eb0d421 // fsub v1.4s, v1.4s, v16.4s
386 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
387 .long 0x4e26d442 // fadd v2.4s, v2.4s, v6.4s
388 .long 0x4e31d631 // fadd v17.4s, v17.4s, v17.4s
389 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
390 .long 0x4eb1d442 // fsub v2.4s, v2.4s, v17.4s
391 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
392 .long 0xd61f0060 // br x3
393
394HIDDEN _sk_exclusion_aarch64
395.globl _sk_exclusion_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400396FUNCTION(_sk_exclusion_aarch64)
Mike Klein66b09ab2017-03-31 10:29:40 -0400397_sk_exclusion_aarch64:
398 .long 0x4e24d410 // fadd v16.4s, v0.4s, v4.4s
399 .long 0x6e24dc00 // fmul v0.4s, v0.4s, v4.4s
400 .long 0x4e20d400 // fadd v0.4s, v0.4s, v0.4s
401 .long 0x4ea0d600 // fsub v0.4s, v16.4s, v0.4s
402 .long 0x4e25d430 // fadd v16.4s, v1.4s, v5.4s
403 .long 0x6e25dc21 // fmul v1.4s, v1.4s, v5.4s
404 .long 0x4e21d421 // fadd v1.4s, v1.4s, v1.4s
405 .long 0x4ea1d601 // fsub v1.4s, v16.4s, v1.4s
406 .long 0x4e26d450 // fadd v16.4s, v2.4s, v6.4s
407 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
408 .long 0x4e22d442 // fadd v2.4s, v2.4s, v2.4s
409 .long 0xf8408423 // ldr x3, [x1], #8
410 .long 0x4ea2d602 // fsub v2.4s, v16.4s, v2.4s
411 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
412 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
413 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
414 .long 0xd61f0060 // br x3
415
Mike Klein61b84162017-03-31 11:48:14 -0400416HIDDEN _sk_colorburn_aarch64
417.globl _sk_colorburn_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400418FUNCTION(_sk_colorburn_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400419_sk_colorburn_aarch64:
420 .long 0x4ea4d4f3 // fsub v19.4s, v7.4s, v4.4s
421 .long 0x6e23de73 // fmul v19.4s, v19.4s, v3.4s
422 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
423 .long 0x6e20fe73 // fdiv v19.4s, v19.4s, v0.4s
424 .long 0x4ea7d634 // fsub v20.4s, v17.4s, v7.4s
425 .long 0x4eb3f4f3 // fmin v19.4s, v7.4s, v19.4s
426 .long 0x6e20de95 // fmul v21.4s, v20.4s, v0.4s
427 .long 0x4eb3d4f3 // fsub v19.4s, v7.4s, v19.4s
428 .long 0x4e24d6b6 // fadd v22.4s, v21.4s, v4.4s
429 .long 0x4e33cc75 // fmla v21.4s, v3.4s, v19.4s
430 .long 0x4ea5d4f3 // fsub v19.4s, v7.4s, v5.4s
431 .long 0x6e23de73 // fmul v19.4s, v19.4s, v3.4s
432 .long 0x6e21fe73 // fdiv v19.4s, v19.4s, v1.4s
433 .long 0x4ea0d812 // fcmeq v18.4s, v0.4s, #0.0
434 .long 0x4eb3f4f3 // fmin v19.4s, v7.4s, v19.4s
435 .long 0x6e751c12 // bsl v18.16b, v0.16b, v21.16b
436 .long 0x6e21de80 // fmul v0.4s, v20.4s, v1.4s
437 .long 0x4eb3d4f3 // fsub v19.4s, v7.4s, v19.4s
438 .long 0x4e25d415 // fadd v21.4s, v0.4s, v5.4s
439 .long 0x4e33cc60 // fmla v0.4s, v3.4s, v19.4s
440 .long 0x4ea0d833 // fcmeq v19.4s, v1.4s, #0.0
441 .long 0x6e601c33 // bsl v19.16b, v1.16b, v0.16b
442 .long 0x4ea6d4e0 // fsub v0.4s, v7.4s, v6.4s
443 .long 0x6e23dc00 // fmul v0.4s, v0.4s, v3.4s
444 .long 0x6e22fc00 // fdiv v0.4s, v0.4s, v2.4s
445 .long 0x4ea0f4e0 // fmin v0.4s, v7.4s, v0.4s
446 .long 0x6e22de81 // fmul v1.4s, v20.4s, v2.4s
447 .long 0x4ea0d4e0 // fsub v0.4s, v7.4s, v0.4s
448 .long 0x4e26d434 // fadd v20.4s, v1.4s, v6.4s
449 .long 0x4e20cc61 // fmla v1.4s, v3.4s, v0.4s
450 .long 0x4ea0d840 // fcmeq v0.4s, v2.4s, #0.0
451 .long 0x4ea3d631 // fsub v17.4s, v17.4s, v3.4s
452 .long 0xf8408423 // ldr x3, [x1], #8
453 .long 0x4e27e490 // fcmeq v16.4s, v4.4s, v7.4s
454 .long 0x6e611c40 // bsl v0.16b, v2.16b, v1.16b
455 .long 0x4e31cc92 // fmla v18.4s, v4.4s, v17.4s
456 .long 0x4e27e4a1 // fcmeq v1.4s, v5.4s, v7.4s
457 .long 0x4e27e4c2 // fcmeq v2.4s, v6.4s, v7.4s
458 .long 0x4e31ccb3 // fmla v19.4s, v5.4s, v17.4s
459 .long 0x4e31ccc0 // fmla v0.4s, v6.4s, v17.4s
460 .long 0x6e721ed0 // bsl v16.16b, v22.16b, v18.16b
461 .long 0x6e731ea1 // bsl v1.16b, v21.16b, v19.16b
462 .long 0x6e601e82 // bsl v2.16b, v20.16b, v0.16b
463 .long 0x4e27ce23 // fmla v3.4s, v17.4s, v7.4s
464 .long 0x4eb01e00 // mov v0.16b, v16.16b
465 .long 0xd61f0060 // br x3
466
467HIDDEN _sk_colordodge_aarch64
468.globl _sk_colordodge_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400469FUNCTION(_sk_colordodge_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400470_sk_colordodge_aarch64:
471 .long 0x4f03f612 // fmov v18.4s, #1.000000000000000000e+00
472 .long 0x6e24dc71 // fmul v17.4s, v3.4s, v4.4s
473 .long 0x4ea0d474 // fsub v20.4s, v3.4s, v0.4s
474 .long 0x6e25dc75 // fmul v21.4s, v3.4s, v5.4s
475 .long 0x4ea1d476 // fsub v22.4s, v3.4s, v1.4s
476 .long 0x4ea7d657 // fsub v23.4s, v18.4s, v7.4s
477 .long 0x6e34fe31 // fdiv v17.4s, v17.4s, v20.4s
478 .long 0x6e36feb4 // fdiv v20.4s, v21.4s, v22.4s
479 .long 0x6e20def5 // fmul v21.4s, v23.4s, v0.4s
480 .long 0x4eb1f4f1 // fmin v17.4s, v7.4s, v17.4s
481 .long 0x4e23e413 // fcmeq v19.4s, v0.4s, v3.4s
482 .long 0x4e24d6b6 // fadd v22.4s, v21.4s, v4.4s
483 .long 0x4e31cc75 // fmla v21.4s, v3.4s, v17.4s
484 .long 0x6e751c13 // bsl v19.16b, v0.16b, v21.16b
485 .long 0x6e21dee0 // fmul v0.4s, v23.4s, v1.4s
486 .long 0x4eb4f4f4 // fmin v20.4s, v7.4s, v20.4s
487 .long 0x4e25d415 // fadd v21.4s, v0.4s, v5.4s
488 .long 0x4e34cc60 // fmla v0.4s, v3.4s, v20.4s
489 .long 0x4e23e434 // fcmeq v20.4s, v1.4s, v3.4s
490 .long 0x6e601c34 // bsl v20.16b, v1.16b, v0.16b
491 .long 0x6e26dc60 // fmul v0.4s, v3.4s, v6.4s
492 .long 0x4ea2d461 // fsub v1.4s, v3.4s, v2.4s
493 .long 0x6e21fc00 // fdiv v0.4s, v0.4s, v1.4s
494 .long 0x6e22dee1 // fmul v1.4s, v23.4s, v2.4s
495 .long 0x4ea0f4e0 // fmin v0.4s, v7.4s, v0.4s
496 .long 0x4e26d437 // fadd v23.4s, v1.4s, v6.4s
497 .long 0x4e20cc61 // fmla v1.4s, v3.4s, v0.4s
498 .long 0x4e23e440 // fcmeq v0.4s, v2.4s, v3.4s
499 .long 0x6e611c40 // bsl v0.16b, v2.16b, v1.16b
500 .long 0x4ea3d641 // fsub v1.4s, v18.4s, v3.4s
501 .long 0xf8408423 // ldr x3, [x1], #8
502 .long 0x4ea0d890 // fcmeq v16.4s, v4.4s, #0.0
503 .long 0x4ea0d8b1 // fcmeq v17.4s, v5.4s, #0.0
504 .long 0x4e21cc93 // fmla v19.4s, v4.4s, v1.4s
505 .long 0x4e21ccb4 // fmla v20.4s, v5.4s, v1.4s
506 .long 0x4ea0d8c2 // fcmeq v2.4s, v6.4s, #0.0
507 .long 0x4e21ccc0 // fmla v0.4s, v6.4s, v1.4s
508 .long 0x6e731ed0 // bsl v16.16b, v22.16b, v19.16b
509 .long 0x6e741eb1 // bsl v17.16b, v21.16b, v20.16b
510 .long 0x6e601ee2 // bsl v2.16b, v23.16b, v0.16b
511 .long 0x4e27cc23 // fmla v3.4s, v1.4s, v7.4s
512 .long 0x4eb01e00 // mov v0.16b, v16.16b
513 .long 0x4eb11e21 // mov v1.16b, v17.16b
514 .long 0xd61f0060 // br x3
515
516HIDDEN _sk_hardlight_aarch64
517.globl _sk_hardlight_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400518FUNCTION(_sk_hardlight_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400519_sk_hardlight_aarch64:
520 .long 0x4ea4d4f4 // fsub v20.4s, v7.4s, v4.4s
521 .long 0x4ea0d475 // fsub v21.4s, v3.4s, v0.4s
522 .long 0x6e34deb4 // fmul v20.4s, v21.4s, v20.4s
523 .long 0x4e20d411 // fadd v17.4s, v0.4s, v0.4s
524 .long 0x6e24dc12 // fmul v18.4s, v0.4s, v4.4s
525 .long 0x6e27dc73 // fmul v19.4s, v3.4s, v7.4s
526 .long 0x4e34d694 // fadd v20.4s, v20.4s, v20.4s
527 .long 0x6e31e471 // fcmge v17.4s, v3.4s, v17.4s
528 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
529 .long 0x4eb4d674 // fsub v20.4s, v19.4s, v20.4s
530 .long 0x6e741e51 // bsl v17.16b, v18.16b, v20.16b
531 .long 0x4ea5d4f2 // fsub v18.4s, v7.4s, v5.4s
532 .long 0x4ea1d474 // fsub v20.4s, v3.4s, v1.4s
533 .long 0x6e32de92 // fmul v18.4s, v20.4s, v18.4s
534 .long 0x4e21d436 // fadd v22.4s, v1.4s, v1.4s
535 .long 0x6e25dc35 // fmul v21.4s, v1.4s, v5.4s
536 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
537 .long 0x6e36e476 // fcmge v22.4s, v3.4s, v22.4s
538 .long 0x4e35d6b5 // fadd v21.4s, v21.4s, v21.4s
539 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
540 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
541 .long 0x6e721eb6 // bsl v22.16b, v21.16b, v18.16b
542 .long 0x4ea6d4f2 // fsub v18.4s, v7.4s, v6.4s
543 .long 0x4ea2d475 // fsub v21.4s, v3.4s, v2.4s
544 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
545 .long 0x4ea7d615 // fsub v21.4s, v16.4s, v7.4s
546 .long 0x4e22d454 // fadd v20.4s, v2.4s, v2.4s
547 .long 0x6e20dea0 // fmul v0.4s, v21.4s, v0.4s
548 .long 0x6e21dea1 // fmul v1.4s, v21.4s, v1.4s
549 .long 0x6e22deb5 // fmul v21.4s, v21.4s, v2.4s
550 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
551 .long 0xf8408423 // ldr x3, [x1], #8
552 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
553 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
554 .long 0x6e34e474 // fcmge v20.4s, v3.4s, v20.4s
555 .long 0x4e22d442 // fadd v2.4s, v2.4s, v2.4s
556 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
557 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
558 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
559 .long 0x4e30ccd5 // fmla v21.4s, v6.4s, v16.4s
560 .long 0x6e721c54 // bsl v20.16b, v2.16b, v18.16b
561 .long 0x4e31d400 // fadd v0.4s, v0.4s, v17.4s
562 .long 0x4e36d421 // fadd v1.4s, v1.4s, v22.4s
563 .long 0x4e34d6a2 // fadd v2.4s, v21.4s, v20.4s
564 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
565 .long 0xd61f0060 // br x3
566
567HIDDEN _sk_overlay_aarch64
568.globl _sk_overlay_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400569FUNCTION(_sk_overlay_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400570_sk_overlay_aarch64:
571 .long 0x4ea4d4f4 // fsub v20.4s, v7.4s, v4.4s
572 .long 0x4ea0d475 // fsub v21.4s, v3.4s, v0.4s
573 .long 0x6e34deb4 // fmul v20.4s, v21.4s, v20.4s
574 .long 0x4e24d491 // fadd v17.4s, v4.4s, v4.4s
575 .long 0x6e24dc12 // fmul v18.4s, v0.4s, v4.4s
576 .long 0x6e27dc73 // fmul v19.4s, v3.4s, v7.4s
577 .long 0x4e34d694 // fadd v20.4s, v20.4s, v20.4s
578 .long 0x6e31e4f1 // fcmge v17.4s, v7.4s, v17.4s
579 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
580 .long 0x4eb4d674 // fsub v20.4s, v19.4s, v20.4s
581 .long 0x6e741e51 // bsl v17.16b, v18.16b, v20.16b
582 .long 0x4ea5d4f2 // fsub v18.4s, v7.4s, v5.4s
583 .long 0x4ea1d474 // fsub v20.4s, v3.4s, v1.4s
584 .long 0x6e32de92 // fmul v18.4s, v20.4s, v18.4s
585 .long 0x4e25d4b6 // fadd v22.4s, v5.4s, v5.4s
586 .long 0x6e25dc35 // fmul v21.4s, v1.4s, v5.4s
587 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
588 .long 0x6e36e4f6 // fcmge v22.4s, v7.4s, v22.4s
589 .long 0x4e35d6b5 // fadd v21.4s, v21.4s, v21.4s
590 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
591 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
592 .long 0x6e721eb6 // bsl v22.16b, v21.16b, v18.16b
593 .long 0x4ea6d4f2 // fsub v18.4s, v7.4s, v6.4s
594 .long 0x4ea2d475 // fsub v21.4s, v3.4s, v2.4s
595 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
596 .long 0x4ea7d615 // fsub v21.4s, v16.4s, v7.4s
597 .long 0x4e26d4d4 // fadd v20.4s, v6.4s, v6.4s
598 .long 0x6e20dea0 // fmul v0.4s, v21.4s, v0.4s
599 .long 0x6e21dea1 // fmul v1.4s, v21.4s, v1.4s
600 .long 0x6e22deb5 // fmul v21.4s, v21.4s, v2.4s
601 .long 0x6e26dc42 // fmul v2.4s, v2.4s, v6.4s
602 .long 0xf8408423 // ldr x3, [x1], #8
603 .long 0x4e32d652 // fadd v18.4s, v18.4s, v18.4s
604 .long 0x4ea3d610 // fsub v16.4s, v16.4s, v3.4s
605 .long 0x6e34e4f4 // fcmge v20.4s, v7.4s, v20.4s
606 .long 0x4e22d442 // fadd v2.4s, v2.4s, v2.4s
607 .long 0x4eb2d672 // fsub v18.4s, v19.4s, v18.4s
608 .long 0x4e30cc80 // fmla v0.4s, v4.4s, v16.4s
609 .long 0x4e30cca1 // fmla v1.4s, v5.4s, v16.4s
610 .long 0x4e30ccd5 // fmla v21.4s, v6.4s, v16.4s
611 .long 0x6e721c54 // bsl v20.16b, v2.16b, v18.16b
612 .long 0x4e31d400 // fadd v0.4s, v0.4s, v17.4s
613 .long 0x4e36d421 // fadd v1.4s, v1.4s, v22.4s
614 .long 0x4e34d6a2 // fadd v2.4s, v21.4s, v20.4s
615 .long 0x4e27ce03 // fmla v3.4s, v16.4s, v7.4s
616 .long 0xd61f0060 // br x3
617
618HIDDEN _sk_softlight_aarch64
619.globl _sk_softlight_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400620FUNCTION(_sk_softlight_aarch64)
Mike Klein61b84162017-03-31 11:48:14 -0400621_sk_softlight_aarch64:
622 .long 0x4ea0c8f5 // fcmgt v21.4s, v7.4s, #0.0
623 .long 0x6e27fc96 // fdiv v22.4s, v4.4s, v7.4s
624 .long 0x6e27fcb8 // fdiv v24.4s, v5.4s, v7.4s
625 .long 0x6e27fcd9 // fdiv v25.4s, v6.4s, v7.4s
626 .long 0x4e351ed6 // and v22.16b, v22.16b, v21.16b
627 .long 0x4e351f18 // and v24.16b, v24.16b, v21.16b
628 .long 0x4e351f35 // and v21.16b, v25.16b, v21.16b
629 .long 0x6ea1dad9 // frsqrte v25.4s, v22.4s
630 .long 0x6e39df3d // fmul v29.4s, v25.4s, v25.4s
631 .long 0x4ebdfedd // frsqrts v29.4s, v22.4s, v29.4s
632 .long 0x6e3ddf39 // fmul v25.4s, v25.4s, v29.4s
633 .long 0x4ea1db3d // frecpe v29.4s, v25.4s
634 .long 0x6ea0fada // fneg v26.4s, v22.4s
635 .long 0x6ea1db1b // frsqrte v27.4s, v24.4s
636 .long 0x4e3dff39 // frecps v25.4s, v25.4s, v29.4s
637 .long 0x4e3dcf3a // fmla v26.4s, v25.4s, v29.4s
638 .long 0x6e3bdf7d // fmul v29.4s, v27.4s, v27.4s
639 .long 0x4ebdff1d // frsqrts v29.4s, v24.4s, v29.4s
640 .long 0x6e3ddf7b // fmul v27.4s, v27.4s, v29.4s
641 .long 0x4ea1db7d // frecpe v29.4s, v27.4s
642 .long 0x6ea0fb1c // fneg v28.4s, v24.4s
643 .long 0x6ea1dab9 // frsqrte v25.4s, v21.4s
644 .long 0x4e3dff7b // frecps v27.4s, v27.4s, v29.4s
645 .long 0x4e3dcf7c // fmla v28.4s, v27.4s, v29.4s
646 .long 0x6e39df3d // fmul v29.4s, v25.4s, v25.4s
647 .long 0x4ebdfebd // frsqrts v29.4s, v21.4s, v29.4s
648 .long 0x6e3ddf39 // fmul v25.4s, v25.4s, v29.4s
649 .long 0x4ea1db3d // frecpe v29.4s, v25.4s
650 .long 0x6ea0fabb // fneg v27.4s, v21.4s
651 .long 0x4e3dff39 // frecps v25.4s, v25.4s, v29.4s
652 .long 0x4e3dcf3b // fmla v27.4s, v25.4s, v29.4s
653 .long 0x4e36d6d9 // fadd v25.4s, v22.4s, v22.4s
654 .long 0x4f07f613 // fmov v19.4s, #-1.000000000000000000e+00
655 .long 0x4e39d739 // fadd v25.4s, v25.4s, v25.4s
656 .long 0x4e24d497 // fadd v23.4s, v4.4s, v4.4s
657 .long 0x4e33d6dd // fadd v29.4s, v22.4s, v19.4s
658 .long 0x4e39cf39 // fmla v25.4s, v25.4s, v25.4s
659 .long 0x4f00f794 // fmov v20.4s, #7.000000000000000000e+00
660 .long 0x6e39dfb9 // fmul v25.4s, v29.4s, v25.4s
661 .long 0x4e37d6f7 // fadd v23.4s, v23.4s, v23.4s
662 .long 0x6e37e4f7 // fcmge v23.4s, v7.4s, v23.4s
663 .long 0x4e36ce99 // fmla v25.4s, v20.4s, v22.4s
664 .long 0x6e7a1f37 // bsl v23.16b, v25.16b, v26.16b
665 .long 0x4e38d719 // fadd v25.4s, v24.4s, v24.4s
666 .long 0x4e39d739 // fadd v25.4s, v25.4s, v25.4s
667 .long 0x4e33d71a // fadd v26.4s, v24.4s, v19.4s
668 .long 0x4e39cf39 // fmla v25.4s, v25.4s, v25.4s
669 .long 0x6e39df59 // fmul v25.4s, v26.4s, v25.4s
670 .long 0x4e25d4ba // fadd v26.4s, v5.4s, v5.4s
671 .long 0x4e3ad75a // fadd v26.4s, v26.4s, v26.4s
672 .long 0x6e3ae4fa // fcmge v26.4s, v7.4s, v26.4s
673 .long 0x4e38ce99 // fmla v25.4s, v20.4s, v24.4s
674 .long 0x6e7c1f3a // bsl v26.16b, v25.16b, v28.16b
675 .long 0x4e35d6bc // fadd v28.4s, v21.4s, v21.4s
676 .long 0x4e3cd79c // fadd v28.4s, v28.4s, v28.4s
677 .long 0x4e33d6b3 // fadd v19.4s, v21.4s, v19.4s
678 .long 0x4e3ccf9c // fmla v28.4s, v28.4s, v28.4s
679 .long 0x6e3cde73 // fmul v19.4s, v19.4s, v28.4s
680 .long 0x4e35ce93 // fmla v19.4s, v20.4s, v21.4s
681 .long 0x4e26d4d4 // fadd v20.4s, v6.4s, v6.4s
682 .long 0x4e34d694 // fadd v20.4s, v20.4s, v20.4s
683 .long 0x4f03f612 // fmov v18.4s, #1.000000000000000000e+00
684 .long 0x6e34e4f4 // fcmge v20.4s, v7.4s, v20.4s
685 .long 0x4e20d411 // fadd v17.4s, v0.4s, v0.4s
686 .long 0x6e7b1e74 // bsl v20.16b, v19.16b, v27.16b
687 .long 0x4ea7d65b // fsub v27.4s, v18.4s, v7.4s
688 .long 0x4ea31c70 // mov v16.16b, v3.16b
689 .long 0x4e21d43d // fadd v29.4s, v1.4s, v1.4s
690 .long 0x4e22d45c // fadd v28.4s, v2.4s, v2.4s
691 .long 0x6e20df60 // fmul v0.4s, v27.4s, v0.4s
692 .long 0x6e21df61 // fmul v1.4s, v27.4s, v1.4s
693 .long 0x6e22df62 // fmul v2.4s, v27.4s, v2.4s
694 .long 0x4ea3d63b // fsub v27.4s, v17.4s, v3.4s
695 .long 0x4eb6d656 // fsub v22.4s, v18.4s, v22.4s
696 .long 0x4ea31c79 // mov v25.16b, v3.16b
697 .long 0x4e3bced0 // fmla v16.4s, v22.4s, v27.4s
698 .long 0x4ea3d7b6 // fsub v22.4s, v29.4s, v3.4s
699 .long 0x4eb8d658 // fsub v24.4s, v18.4s, v24.4s
700 .long 0x4ea31c73 // mov v19.16b, v3.16b
701 .long 0x4e36cf19 // fmla v25.4s, v24.4s, v22.4s
702 .long 0x4ea3d798 // fsub v24.4s, v28.4s, v3.4s
703 .long 0x4eb5d655 // fsub v21.4s, v18.4s, v21.4s
704 .long 0x4e38ceb3 // fmla v19.4s, v21.4s, v24.4s
705 .long 0x6e27df7b // fmul v27.4s, v27.4s, v7.4s
706 .long 0x6e27ded6 // fmul v22.4s, v22.4s, v7.4s
707 .long 0x6e27df18 // fmul v24.4s, v24.4s, v7.4s
708 .long 0xf8408423 // ldr x3, [x1], #8
709 .long 0x6e37df77 // fmul v23.4s, v27.4s, v23.4s
710 .long 0x6e3aded6 // fmul v22.4s, v22.4s, v26.4s
711 .long 0x6e34df14 // fmul v20.4s, v24.4s, v20.4s
712 .long 0x4ea3d652 // fsub v18.4s, v18.4s, v3.4s
713 .long 0x6e31e471 // fcmge v17.4s, v3.4s, v17.4s
714 .long 0x6e3de475 // fcmge v21.4s, v3.4s, v29.4s
715 .long 0x6e3ce47c // fcmge v28.4s, v3.4s, v28.4s
716 .long 0x6e24de10 // fmul v16.4s, v16.4s, v4.4s
717 .long 0x6e25df39 // fmul v25.4s, v25.4s, v5.4s
718 .long 0x6e26de73 // fmul v19.4s, v19.4s, v6.4s
719 .long 0x4e23cc97 // fmla v23.4s, v4.4s, v3.4s
720 .long 0x4e23ccb6 // fmla v22.4s, v5.4s, v3.4s
721 .long 0x4e23ccd4 // fmla v20.4s, v6.4s, v3.4s
722 .long 0x4e32cc80 // fmla v0.4s, v4.4s, v18.4s
723 .long 0x4e32cca1 // fmla v1.4s, v5.4s, v18.4s
724 .long 0x4e32ccc2 // fmla v2.4s, v6.4s, v18.4s
725 .long 0x6e771e11 // bsl v17.16b, v16.16b, v23.16b
726 .long 0x6e761f35 // bsl v21.16b, v25.16b, v22.16b
727 .long 0x6e741e7c // bsl v28.16b, v19.16b, v20.16b
728 .long 0x4e31d400 // fadd v0.4s, v0.4s, v17.4s
729 .long 0x4e35d421 // fadd v1.4s, v1.4s, v21.4s
730 .long 0x4e3cd442 // fadd v2.4s, v2.4s, v28.4s
731 .long 0x4e27ce43 // fmla v3.4s, v18.4s, v7.4s
732 .long 0xd61f0060 // br x3
733
Mike Klein7c4af542017-03-29 18:21:14 -0400734HIDDEN _sk_clamp_0_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400735.globl _sk_clamp_0_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400736FUNCTION(_sk_clamp_0_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400737_sk_clamp_0_aarch64:
738 .long 0xf8408423 // ldr x3, [x1], #8
739 .long 0x6f00e410 // movi v16.2d, #0x0
740 .long 0x4e30f400 // fmax v0.4s, v0.4s, v16.4s
741 .long 0x4e30f421 // fmax v1.4s, v1.4s, v16.4s
742 .long 0x4e30f442 // fmax v2.4s, v2.4s, v16.4s
743 .long 0x4e30f463 // fmax v3.4s, v3.4s, v16.4s
744 .long 0xd61f0060 // br x3
745
Mike Klein7c4af542017-03-29 18:21:14 -0400746HIDDEN _sk_clamp_1_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400747.globl _sk_clamp_1_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400748FUNCTION(_sk_clamp_1_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400749_sk_clamp_1_aarch64:
750 .long 0xf8408423 // ldr x3, [x1], #8
751 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
752 .long 0x4eb0f400 // fmin v0.4s, v0.4s, v16.4s
753 .long 0x4eb0f421 // fmin v1.4s, v1.4s, v16.4s
754 .long 0x4eb0f442 // fmin v2.4s, v2.4s, v16.4s
755 .long 0x4eb0f463 // fmin v3.4s, v3.4s, v16.4s
756 .long 0xd61f0060 // br x3
757
Mike Klein7c4af542017-03-29 18:21:14 -0400758HIDDEN _sk_clamp_a_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400759.globl _sk_clamp_a_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400760FUNCTION(_sk_clamp_a_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400761_sk_clamp_a_aarch64:
762 .long 0xf8408423 // ldr x3, [x1], #8
763 .long 0x4f03f610 // fmov v16.4s, #1.000000000000000000e+00
764 .long 0x4eb0f463 // fmin v3.4s, v3.4s, v16.4s
765 .long 0x4ea3f400 // fmin v0.4s, v0.4s, v3.4s
766 .long 0x4ea3f421 // fmin v1.4s, v1.4s, v3.4s
767 .long 0x4ea3f442 // fmin v2.4s, v2.4s, v3.4s
768 .long 0xd61f0060 // br x3
769
Mike Klein7c4af542017-03-29 18:21:14 -0400770HIDDEN _sk_set_rgb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400771.globl _sk_set_rgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400772FUNCTION(_sk_set_rgb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400773_sk_set_rgb_aarch64:
774 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
775 .long 0xaa0803e9 // mov x9, x8
776 .long 0x4ddfc920 // ld1r {v0.4s}, [x9], #4
777 .long 0x91002108 // add x8, x8, #0x8
778 .long 0x4d40c902 // ld1r {v2.4s}, [x8]
779 .long 0x4d40c921 // ld1r {v1.4s}, [x9]
780 .long 0xd61f0060 // br x3
781
Mike Klein7c4af542017-03-29 18:21:14 -0400782HIDDEN _sk_swap_rb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400783.globl _sk_swap_rb_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400784FUNCTION(_sk_swap_rb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400785_sk_swap_rb_aarch64:
786 .long 0xf8408423 // ldr x3, [x1], #8
787 .long 0x4ea01c10 // mov v16.16b, v0.16b
788 .long 0x4ea21c40 // mov v0.16b, v2.16b
789 .long 0x4eb01e02 // mov v2.16b, v16.16b
790 .long 0xd61f0060 // br x3
791
Mike Klein7c4af542017-03-29 18:21:14 -0400792HIDDEN _sk_swap_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400793.globl _sk_swap_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400794FUNCTION(_sk_swap_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400795_sk_swap_aarch64:
796 .long 0xf8408423 // ldr x3, [x1], #8
797 .long 0x4ea31c70 // mov v16.16b, v3.16b
798 .long 0x4ea21c51 // mov v17.16b, v2.16b
799 .long 0x4ea11c32 // mov v18.16b, v1.16b
800 .long 0x4ea01c13 // mov v19.16b, v0.16b
801 .long 0x4ea41c80 // mov v0.16b, v4.16b
802 .long 0x4ea51ca1 // mov v1.16b, v5.16b
803 .long 0x4ea61cc2 // mov v2.16b, v6.16b
804 .long 0x4ea71ce3 // mov v3.16b, v7.16b
805 .long 0x4eb31e64 // mov v4.16b, v19.16b
806 .long 0x4eb21e45 // mov v5.16b, v18.16b
807 .long 0x4eb11e26 // mov v6.16b, v17.16b
808 .long 0x4eb01e07 // mov v7.16b, v16.16b
809 .long 0xd61f0060 // br x3
810
Mike Klein7c4af542017-03-29 18:21:14 -0400811HIDDEN _sk_move_src_dst_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400812.globl _sk_move_src_dst_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400813FUNCTION(_sk_move_src_dst_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400814_sk_move_src_dst_aarch64:
815 .long 0xf8408423 // ldr x3, [x1], #8
816 .long 0x4ea01c04 // mov v4.16b, v0.16b
817 .long 0x4ea11c25 // mov v5.16b, v1.16b
818 .long 0x4ea21c46 // mov v6.16b, v2.16b
819 .long 0x4ea31c67 // mov v7.16b, v3.16b
820 .long 0xd61f0060 // br x3
821
Mike Klein7c4af542017-03-29 18:21:14 -0400822HIDDEN _sk_move_dst_src_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400823.globl _sk_move_dst_src_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400824FUNCTION(_sk_move_dst_src_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400825_sk_move_dst_src_aarch64:
826 .long 0xf8408423 // ldr x3, [x1], #8
827 .long 0x4ea41c80 // mov v0.16b, v4.16b
828 .long 0x4ea51ca1 // mov v1.16b, v5.16b
829 .long 0x4ea61cc2 // mov v2.16b, v6.16b
830 .long 0x4ea71ce3 // mov v3.16b, v7.16b
831 .long 0xd61f0060 // br x3
832
Mike Klein7c4af542017-03-29 18:21:14 -0400833HIDDEN _sk_premul_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400834.globl _sk_premul_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400835FUNCTION(_sk_premul_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400836_sk_premul_aarch64:
837 .long 0xf8408423 // ldr x3, [x1], #8
838 .long 0x6e23dc00 // fmul v0.4s, v0.4s, v3.4s
839 .long 0x6e23dc21 // fmul v1.4s, v1.4s, v3.4s
840 .long 0x6e23dc42 // fmul v2.4s, v2.4s, v3.4s
841 .long 0xd61f0060 // br x3
842
Mike Klein7c4af542017-03-29 18:21:14 -0400843HIDDEN _sk_unpremul_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400844.globl _sk_unpremul_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400845FUNCTION(_sk_unpremul_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400846_sk_unpremul_aarch64:
847 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
848 .long 0xf8408423 // ldr x3, [x1], #8
849 .long 0x4ea0d870 // fcmeq v16.4s, v3.4s, #0.0
850 .long 0x6e23fe31 // fdiv v17.4s, v17.4s, v3.4s
851 .long 0x4e701e30 // bic v16.16b, v17.16b, v16.16b
852 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
853 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
854 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
855 .long 0xd61f0060 // br x3
856
Mike Klein7c4af542017-03-29 18:21:14 -0400857HIDDEN _sk_from_srgb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400858.globl _sk_from_srgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400859FUNCTION(_sk_from_srgb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400860_sk_from_srgb_aarch64:
861 .long 0x52a7d328 // mov w8, #0x3e990000
862 .long 0x72933348 // movk w8, #0x999a
863 .long 0x4e040d10 // dup v16.4s, w8
864 .long 0x52a7e648 // mov w8, #0x3f320000
865 .long 0x7291eb88 // movk w8, #0x8f5c
866 .long 0x4e040d11 // dup v17.4s, w8
867 .long 0x52a76468 // mov w8, #0x3b230000
868 .long 0x729ae148 // movk w8, #0xd70a
869 .long 0x4e040d12 // dup v18.4s, w8
870 .long 0x52a7b3c8 // mov w8, #0x3d9e0000
871 .long 0x72907228 // movk w8, #0x8391
872 .long 0x6e22dc54 // fmul v20.4s, v2.4s, v2.4s
873 .long 0x4eb11e35 // mov v21.16b, v17.16b
874 .long 0x4eb11e37 // mov v23.16b, v17.16b
875 .long 0x4e22ce11 // fmla v17.4s, v16.4s, v2.4s
876 .long 0x4eb21e56 // mov v22.16b, v18.16b
877 .long 0x4eb21e58 // mov v24.16b, v18.16b
878 .long 0x4e34ce32 // fmla v18.4s, v17.4s, v20.4s
879 .long 0x4e040d11 // dup v17.4s, w8
880 .long 0x52a7ac28 // mov w8, #0x3d610000
881 .long 0x6e20dc13 // fmul v19.4s, v0.4s, v0.4s
882 .long 0x7288f5c8 // movk w8, #0x47ae
883 .long 0x4e20ce15 // fmla v21.4s, v16.4s, v0.4s
884 .long 0xf8408423 // ldr x3, [x1], #8
885 .long 0x6e21dc34 // fmul v20.4s, v1.4s, v1.4s
886 .long 0x4e33ceb6 // fmla v22.4s, v21.4s, v19.4s
887 .long 0x4e040d13 // dup v19.4s, w8
888 .long 0x4e21ce17 // fmla v23.4s, v16.4s, v1.4s
889 .long 0x6e31dc15 // fmul v21.4s, v0.4s, v17.4s
890 .long 0x6ea0e660 // fcmgt v0.4s, v19.4s, v0.4s
891 .long 0x6e31dc30 // fmul v16.4s, v1.4s, v17.4s
892 .long 0x6ea1e661 // fcmgt v1.4s, v19.4s, v1.4s
893 .long 0x6e31dc51 // fmul v17.4s, v2.4s, v17.4s
894 .long 0x6ea2e662 // fcmgt v2.4s, v19.4s, v2.4s
895 .long 0x4e34cef8 // fmla v24.4s, v23.4s, v20.4s
896 .long 0x6e761ea0 // bsl v0.16b, v21.16b, v22.16b
897 .long 0x6e781e01 // bsl v1.16b, v16.16b, v24.16b
898 .long 0x6e721e22 // bsl v2.16b, v17.16b, v18.16b
899 .long 0xd61f0060 // br x3
900
Mike Klein7c4af542017-03-29 18:21:14 -0400901HIDDEN _sk_to_srgb_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -0400902.globl _sk_to_srgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400903FUNCTION(_sk_to_srgb_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -0400904_sk_to_srgb_aarch64:
905 .long 0x52a828e8 // mov w8, #0x41470000
906 .long 0x728b8528 // movk w8, #0x5c29
907 .long 0x4e040d12 // dup v18.4s, w8
908 .long 0x52a7e608 // mov w8, #0x3f300000
909 .long 0x728df9c8 // movk w8, #0x6fce
910 .long 0x6ea1d811 // frsqrte v17.4s, v0.4s
911 .long 0x4e040d13 // dup v19.4s, w8
912 .long 0x52b7b948 // mov w8, #0xbdca0000
913 .long 0x728af508 // movk w8, #0x57a8
914 .long 0x6ea1d834 // frsqrte v20.4s, v1.4s
915 .long 0x6e31de36 // fmul v22.4s, v17.4s, v17.4s
916 .long 0x4e040d10 // dup v16.4s, w8
917 .long 0x52a77188 // mov w8, #0x3b8c0000
918 .long 0x6ea1d855 // frsqrte v21.4s, v2.4s
919 .long 0x6e34de98 // fmul v24.4s, v20.4s, v20.4s
920 .long 0x4eb6fc16 // frsqrts v22.4s, v0.4s, v22.4s
921 .long 0x729ce088 // movk w8, #0xe704
922 .long 0x6e35deb9 // fmul v25.4s, v21.4s, v21.4s
923 .long 0x4eb8fc38 // frsqrts v24.4s, v1.4s, v24.4s
924 .long 0x6e36de31 // fmul v17.4s, v17.4s, v22.4s
925 .long 0x4e040d17 // dup v23.4s, w8
926 .long 0x4eb9fc59 // frsqrts v25.4s, v2.4s, v25.4s
927 .long 0x6e38de94 // fmul v20.4s, v20.4s, v24.4s
928 .long 0x4ea1da36 // frecpe v22.4s, v17.4s
929 .long 0x6e32dc1a // fmul v26.4s, v0.4s, v18.4s
930 .long 0x6ea0e6e0 // fcmgt v0.4s, v23.4s, v0.4s
931 .long 0x6e32dc3c // fmul v28.4s, v1.4s, v18.4s
932 .long 0x6ea1e6e1 // fcmgt v1.4s, v23.4s, v1.4s
933 .long 0x6e32dc52 // fmul v18.4s, v2.4s, v18.4s
934 .long 0x6ea2e6e2 // fcmgt v2.4s, v23.4s, v2.4s
935 .long 0x6e39deb5 // fmul v21.4s, v21.4s, v25.4s
936 .long 0x4ea1da97 // frecpe v23.4s, v20.4s
937 .long 0x4e36fe39 // frecps v25.4s, v17.4s, v22.4s
938 .long 0x4ea1dab8 // frecpe v24.4s, v21.4s
939 .long 0x6e39ded6 // fmul v22.4s, v22.4s, v25.4s
940 .long 0x4e37fe99 // frecps v25.4s, v20.4s, v23.4s
941 .long 0x4eb01e1b // mov v27.16b, v16.16b
942 .long 0x6e39def7 // fmul v23.4s, v23.4s, v25.4s
943 .long 0x4e38feb9 // frecps v25.4s, v21.4s, v24.4s
944 .long 0x6e39df18 // fmul v24.4s, v24.4s, v25.4s
945 .long 0x4eb01e19 // mov v25.16b, v16.16b
946 .long 0x4e36ce7b // fmla v27.4s, v19.4s, v22.4s
947 .long 0x6ea1da36 // frsqrte v22.4s, v17.4s
948 .long 0x4e37ce79 // fmla v25.4s, v19.4s, v23.4s
949 .long 0x6ea1da97 // frsqrte v23.4s, v20.4s
950 .long 0x4e38ce70 // fmla v16.4s, v19.4s, v24.4s
951 .long 0x6e36ded8 // fmul v24.4s, v22.4s, v22.4s
952 .long 0x6ea1dab3 // frsqrte v19.4s, v21.4s
953 .long 0x4eb8fe31 // frsqrts v17.4s, v17.4s, v24.4s
954 .long 0x6e37def8 // fmul v24.4s, v23.4s, v23.4s
955 .long 0x4eb8fe94 // frsqrts v20.4s, v20.4s, v24.4s
956 .long 0x6e33de78 // fmul v24.4s, v19.4s, v19.4s
957 .long 0x52a7da48 // mov w8, #0x3ed20000
958 .long 0x4eb8feb5 // frsqrts v21.4s, v21.4s, v24.4s
959 .long 0x7290f848 // movk w8, #0x87c2
960 .long 0x6e31ded1 // fmul v17.4s, v22.4s, v17.4s
961 .long 0x6e34def4 // fmul v20.4s, v23.4s, v20.4s
962 .long 0x6e35de73 // fmul v19.4s, v19.4s, v21.4s
963 .long 0x4e040d15 // dup v21.4s, w8
964 .long 0xf8408423 // ldr x3, [x1], #8
965 .long 0x4e31cebb // fmla v27.4s, v21.4s, v17.4s
966 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
967 .long 0x4e34ceb9 // fmla v25.4s, v21.4s, v20.4s
968 .long 0x4e33ceb0 // fmla v16.4s, v21.4s, v19.4s
969 .long 0x4ebbf633 // fmin v19.4s, v17.4s, v27.4s
970 .long 0x4eb9f634 // fmin v20.4s, v17.4s, v25.4s
971 .long 0x4eb0f630 // fmin v16.4s, v17.4s, v16.4s
972 .long 0x6e731f40 // bsl v0.16b, v26.16b, v19.16b
973 .long 0x6e741f81 // bsl v1.16b, v28.16b, v20.16b
974 .long 0x6e701e42 // bsl v2.16b, v18.16b, v16.16b
975 .long 0xd61f0060 // br x3
976
Mike Klein7125ac62017-04-05 15:27:22 -0400977HIDDEN _sk_from_2dot2_aarch64
978.globl _sk_from_2dot2_aarch64
Mike Klein86714282017-04-13 17:37:38 -0400979FUNCTION(_sk_from_2dot2_aarch64)
Mike Klein7125ac62017-04-05 15:27:22 -0400980_sk_from_2dot2_aarch64:
981 .long 0x6ea1d810 // frsqrte v16.4s, v0.4s
982 .long 0x6ea1d832 // frsqrte v18.4s, v1.4s
983 .long 0x6e30de15 // fmul v21.4s, v16.4s, v16.4s
984 .long 0x6e20dc11 // fmul v17.4s, v0.4s, v0.4s
985 .long 0x6ea1d854 // frsqrte v20.4s, v2.4s
986 .long 0x6e32de56 // fmul v22.4s, v18.4s, v18.4s
987 .long 0x4eb5fc00 // frsqrts v0.4s, v0.4s, v21.4s
988 .long 0x6e21dc33 // fmul v19.4s, v1.4s, v1.4s
989 .long 0x6e34de97 // fmul v23.4s, v20.4s, v20.4s
990 .long 0x4eb6fc21 // frsqrts v1.4s, v1.4s, v22.4s
991 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
992 .long 0x4eb7fc55 // frsqrts v21.4s, v2.4s, v23.4s
993 .long 0x6e21de41 // fmul v1.4s, v18.4s, v1.4s
994 .long 0x6ea1d812 // frsqrte v18.4s, v0.4s
995 .long 0x6e35de90 // fmul v16.4s, v20.4s, v21.4s
996 .long 0x6ea1d834 // frsqrte v20.4s, v1.4s
997 .long 0x6e32de56 // fmul v22.4s, v18.4s, v18.4s
998 .long 0x6ea1da15 // frsqrte v21.4s, v16.4s
999 .long 0x6e34de97 // fmul v23.4s, v20.4s, v20.4s
1000 .long 0x4eb6fc00 // frsqrts v0.4s, v0.4s, v22.4s
1001 .long 0x6e35deb6 // fmul v22.4s, v21.4s, v21.4s
1002 .long 0x4eb7fc21 // frsqrts v1.4s, v1.4s, v23.4s
1003 .long 0x6e20de40 // fmul v0.4s, v18.4s, v0.4s
1004 .long 0x4eb6fe10 // frsqrts v16.4s, v16.4s, v22.4s
1005 .long 0x6e21de81 // fmul v1.4s, v20.4s, v1.4s
1006 .long 0x6ea1d812 // frsqrte v18.4s, v0.4s
1007 .long 0x6e30deb0 // fmul v16.4s, v21.4s, v16.4s
1008 .long 0x6ea1d834 // frsqrte v20.4s, v1.4s
1009 .long 0x6e32de56 // fmul v22.4s, v18.4s, v18.4s
1010 .long 0x6ea1da15 // frsqrte v21.4s, v16.4s
1011 .long 0x6e34de97 // fmul v23.4s, v20.4s, v20.4s
1012 .long 0x4eb6fc00 // frsqrts v0.4s, v0.4s, v22.4s
1013 .long 0x6e35deb6 // fmul v22.4s, v21.4s, v21.4s
1014 .long 0x4eb7fc21 // frsqrts v1.4s, v1.4s, v23.4s
1015 .long 0x6e20de40 // fmul v0.4s, v18.4s, v0.4s
1016 .long 0x4eb6fe10 // frsqrts v16.4s, v16.4s, v22.4s
1017 .long 0x6e21de81 // fmul v1.4s, v20.4s, v1.4s
1018 .long 0x6ea1d812 // frsqrte v18.4s, v0.4s
1019 .long 0x6e30deb0 // fmul v16.4s, v21.4s, v16.4s
1020 .long 0x6ea1d834 // frsqrte v20.4s, v1.4s
1021 .long 0x6e32de56 // fmul v22.4s, v18.4s, v18.4s
1022 .long 0x6ea1da15 // frsqrte v21.4s, v16.4s
1023 .long 0x6e34de97 // fmul v23.4s, v20.4s, v20.4s
1024 .long 0x4eb6fc00 // frsqrts v0.4s, v0.4s, v22.4s
1025 .long 0x6e35deb6 // fmul v22.4s, v21.4s, v21.4s
1026 .long 0x4eb7fc21 // frsqrts v1.4s, v1.4s, v23.4s
1027 .long 0x6e20de40 // fmul v0.4s, v18.4s, v0.4s
1028 .long 0x4eb6fe10 // frsqrts v16.4s, v16.4s, v22.4s
1029 .long 0x6e21de81 // fmul v1.4s, v20.4s, v1.4s
1030 .long 0x6ea1d812 // frsqrte v18.4s, v0.4s
1031 .long 0x6e20dc14 // fmul v20.4s, v0.4s, v0.4s
1032 .long 0x6e30deb0 // fmul v16.4s, v21.4s, v16.4s
1033 .long 0x6ea1d835 // frsqrte v21.4s, v1.4s
1034 .long 0x6e21dc36 // fmul v22.4s, v1.4s, v1.4s
1035 .long 0x6e32de57 // fmul v23.4s, v18.4s, v18.4s
1036 .long 0x6e34dc14 // fmul v20.4s, v0.4s, v20.4s
1037 .long 0x4eb7fc00 // frsqrts v0.4s, v0.4s, v23.4s
1038 .long 0x6ea1da17 // frsqrte v23.4s, v16.4s
1039 .long 0x6e34de31 // fmul v17.4s, v17.4s, v20.4s
1040 .long 0x6e35deb4 // fmul v20.4s, v21.4s, v21.4s
1041 .long 0x6e36dc36 // fmul v22.4s, v1.4s, v22.4s
1042 .long 0x4eb4fc21 // frsqrts v1.4s, v1.4s, v20.4s
1043 .long 0x6e30de14 // fmul v20.4s, v16.4s, v16.4s
1044 .long 0x6e36de73 // fmul v19.4s, v19.4s, v22.4s
1045 .long 0x6e37def6 // fmul v22.4s, v23.4s, v23.4s
1046 .long 0x6e20de40 // fmul v0.4s, v18.4s, v0.4s
1047 .long 0x6e34de14 // fmul v20.4s, v16.4s, v20.4s
1048 .long 0x4eb6fe10 // frsqrts v16.4s, v16.4s, v22.4s
1049 .long 0x6e22dc42 // fmul v2.4s, v2.4s, v2.4s
1050 .long 0x6e21dea1 // fmul v1.4s, v21.4s, v1.4s
1051 .long 0x6ea1d812 // frsqrte v18.4s, v0.4s
1052 .long 0x6e34dc42 // fmul v2.4s, v2.4s, v20.4s
1053 .long 0x6e30def0 // fmul v16.4s, v23.4s, v16.4s
1054 .long 0x6ea1d834 // frsqrte v20.4s, v1.4s
1055 .long 0x6e32de56 // fmul v22.4s, v18.4s, v18.4s
1056 .long 0x6ea1da15 // frsqrte v21.4s, v16.4s
1057 .long 0x4eb6fc00 // frsqrts v0.4s, v0.4s, v22.4s
1058 .long 0x6e34de96 // fmul v22.4s, v20.4s, v20.4s
1059 .long 0x4eb6fc21 // frsqrts v1.4s, v1.4s, v22.4s
1060 .long 0x6e35deb6 // fmul v22.4s, v21.4s, v21.4s
1061 .long 0x4eb6fe10 // frsqrts v16.4s, v16.4s, v22.4s
1062 .long 0xf8408423 // ldr x3, [x1], #8
1063 .long 0x6e20de40 // fmul v0.4s, v18.4s, v0.4s
1064 .long 0x6e21de81 // fmul v1.4s, v20.4s, v1.4s
1065 .long 0x6e30deb0 // fmul v16.4s, v21.4s, v16.4s
1066 .long 0x6f00e412 // movi v18.2d, #0x0
1067 .long 0x6e20de20 // fmul v0.4s, v17.4s, v0.4s
1068 .long 0x6e21de61 // fmul v1.4s, v19.4s, v1.4s
1069 .long 0x6e30dc42 // fmul v2.4s, v2.4s, v16.4s
1070 .long 0x4e32f400 // fmax v0.4s, v0.4s, v18.4s
1071 .long 0x4e32f421 // fmax v1.4s, v1.4s, v18.4s
1072 .long 0x4e32f442 // fmax v2.4s, v2.4s, v18.4s
1073 .long 0xd61f0060 // br x3
1074
1075HIDDEN _sk_to_2dot2_aarch64
1076.globl _sk_to_2dot2_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001077FUNCTION(_sk_to_2dot2_aarch64)
Mike Klein7125ac62017-04-05 15:27:22 -04001078_sk_to_2dot2_aarch64:
1079 .long 0x6ea1d810 // frsqrte v16.4s, v0.4s
1080 .long 0x6e30de13 // fmul v19.4s, v16.4s, v16.4s
1081 .long 0x6ea1d831 // frsqrte v17.4s, v1.4s
1082 .long 0x4eb3fc00 // frsqrts v0.4s, v0.4s, v19.4s
1083 .long 0x6ea1d852 // frsqrte v18.4s, v2.4s
1084 .long 0x6e31de34 // fmul v20.4s, v17.4s, v17.4s
1085 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
1086 .long 0x6e32de55 // fmul v21.4s, v18.4s, v18.4s
1087 .long 0x4eb4fc21 // frsqrts v1.4s, v1.4s, v20.4s
1088 .long 0x6ea1d810 // frsqrte v16.4s, v0.4s
1089 .long 0x4eb5fc42 // frsqrts v2.4s, v2.4s, v21.4s
1090 .long 0x6e21de21 // fmul v1.4s, v17.4s, v1.4s
1091 .long 0x4ea1d811 // frecpe v17.4s, v0.4s
1092 .long 0x6e30de16 // fmul v22.4s, v16.4s, v16.4s
1093 .long 0x6e22de42 // fmul v2.4s, v18.4s, v2.4s
1094 .long 0x6ea1d832 // frsqrte v18.4s, v1.4s
1095 .long 0x4eb6fc16 // frsqrts v22.4s, v0.4s, v22.4s
1096 .long 0x4e31fc00 // frecps v0.4s, v0.4s, v17.4s
1097 .long 0x4ea1d833 // frecpe v19.4s, v1.4s
1098 .long 0x6e20de20 // fmul v0.4s, v17.4s, v0.4s
1099 .long 0x6e32de51 // fmul v17.4s, v18.4s, v18.4s
1100 .long 0x6ea1d854 // frsqrte v20.4s, v2.4s
1101 .long 0x4eb1fc31 // frsqrts v17.4s, v1.4s, v17.4s
1102 .long 0x4e33fc21 // frecps v1.4s, v1.4s, v19.4s
1103 .long 0x6e21de61 // fmul v1.4s, v19.4s, v1.4s
1104 .long 0x6e34de93 // fmul v19.4s, v20.4s, v20.4s
1105 .long 0x4eb3fc53 // frsqrts v19.4s, v2.4s, v19.4s
1106 .long 0x6e36de10 // fmul v16.4s, v16.4s, v22.4s
1107 .long 0x6e31de51 // fmul v17.4s, v18.4s, v17.4s
1108 .long 0x6e33de92 // fmul v18.4s, v20.4s, v19.4s
1109 .long 0x6ea1da13 // frsqrte v19.4s, v16.4s
1110 .long 0x4ea1d855 // frecpe v21.4s, v2.4s
1111 .long 0x6e33de76 // fmul v22.4s, v19.4s, v19.4s
1112 .long 0x4e35fc42 // frecps v2.4s, v2.4s, v21.4s
1113 .long 0x6ea1da34 // frsqrte v20.4s, v17.4s
1114 .long 0x4eb6fe10 // frsqrts v16.4s, v16.4s, v22.4s
1115 .long 0x6e22dea2 // fmul v2.4s, v21.4s, v2.4s
1116 .long 0x6ea1da55 // frsqrte v21.4s, v18.4s
1117 .long 0x6e34de96 // fmul v22.4s, v20.4s, v20.4s
1118 .long 0x6e30de70 // fmul v16.4s, v19.4s, v16.4s
1119 .long 0x4eb6fe31 // frsqrts v17.4s, v17.4s, v22.4s
1120 .long 0x6e35deb6 // fmul v22.4s, v21.4s, v21.4s
1121 .long 0x6ea1da13 // frsqrte v19.4s, v16.4s
1122 .long 0x4eb6fe52 // frsqrts v18.4s, v18.4s, v22.4s
1123 .long 0x6e31de91 // fmul v17.4s, v20.4s, v17.4s
1124 .long 0x6e33de76 // fmul v22.4s, v19.4s, v19.4s
1125 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
1126 .long 0x6ea1da34 // frsqrte v20.4s, v17.4s
1127 .long 0x4eb6fe10 // frsqrts v16.4s, v16.4s, v22.4s
1128 .long 0x6ea1da55 // frsqrte v21.4s, v18.4s
1129 .long 0x6e34de96 // fmul v22.4s, v20.4s, v20.4s
1130 .long 0x6e30de70 // fmul v16.4s, v19.4s, v16.4s
1131 .long 0x4eb6fe31 // frsqrts v17.4s, v17.4s, v22.4s
1132 .long 0x6e35deb6 // fmul v22.4s, v21.4s, v21.4s
1133 .long 0x6ea1da13 // frsqrte v19.4s, v16.4s
1134 .long 0x4eb6fe52 // frsqrts v18.4s, v18.4s, v22.4s
1135 .long 0x6e31de91 // fmul v17.4s, v20.4s, v17.4s
1136 .long 0x6e33de76 // fmul v22.4s, v19.4s, v19.4s
1137 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
1138 .long 0x6ea1da34 // frsqrte v20.4s, v17.4s
1139 .long 0x4eb6fe10 // frsqrts v16.4s, v16.4s, v22.4s
1140 .long 0x6ea1da55 // frsqrte v21.4s, v18.4s
1141 .long 0x6e34de96 // fmul v22.4s, v20.4s, v20.4s
1142 .long 0x6e30de70 // fmul v16.4s, v19.4s, v16.4s
1143 .long 0x4eb6fe31 // frsqrts v17.4s, v17.4s, v22.4s
1144 .long 0x6e35deb6 // fmul v22.4s, v21.4s, v21.4s
1145 .long 0x6ea1da13 // frsqrte v19.4s, v16.4s
1146 .long 0x4eb6fe52 // frsqrts v18.4s, v18.4s, v22.4s
1147 .long 0x6e31de91 // fmul v17.4s, v20.4s, v17.4s
1148 .long 0x6e33de76 // fmul v22.4s, v19.4s, v19.4s
1149 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
1150 .long 0x6ea1da34 // frsqrte v20.4s, v17.4s
1151 .long 0x4eb6fe10 // frsqrts v16.4s, v16.4s, v22.4s
1152 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
1153 .long 0x6e34de96 // fmul v22.4s, v20.4s, v20.4s
1154 .long 0x6e30de70 // fmul v16.4s, v19.4s, v16.4s
1155 .long 0x6e21de21 // fmul v1.4s, v17.4s, v1.4s
1156 .long 0x6ea1da55 // frsqrte v21.4s, v18.4s
1157 .long 0x4eb6fe31 // frsqrts v17.4s, v17.4s, v22.4s
1158 .long 0x4ea1da13 // frecpe v19.4s, v16.4s
1159 .long 0x6e35deb6 // fmul v22.4s, v21.4s, v21.4s
1160 .long 0x6e31de91 // fmul v17.4s, v20.4s, v17.4s
1161 .long 0x4e33fe10 // frecps v16.4s, v16.4s, v19.4s
1162 .long 0x6e22de42 // fmul v2.4s, v18.4s, v2.4s
1163 .long 0x4eb6fe52 // frsqrts v18.4s, v18.4s, v22.4s
1164 .long 0x6e30de70 // fmul v16.4s, v19.4s, v16.4s
1165 .long 0x4ea1da33 // frecpe v19.4s, v17.4s
1166 .long 0x6e32deb2 // fmul v18.4s, v21.4s, v18.4s
1167 .long 0x4e33fe31 // frecps v17.4s, v17.4s, v19.4s
1168 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
1169 .long 0x4ea1da53 // frecpe v19.4s, v18.4s
1170 .long 0x4e33fe52 // frecps v18.4s, v18.4s, v19.4s
1171 .long 0xf8408423 // ldr x3, [x1], #8
1172 .long 0x6e32de72 // fmul v18.4s, v19.4s, v18.4s
1173 .long 0x6f00e413 // movi v19.2d, #0x0
1174 .long 0x6e30dc00 // fmul v0.4s, v0.4s, v16.4s
1175 .long 0x6e31dc21 // fmul v1.4s, v1.4s, v17.4s
1176 .long 0x6e32dc42 // fmul v2.4s, v2.4s, v18.4s
1177 .long 0x4e33f400 // fmax v0.4s, v0.4s, v19.4s
1178 .long 0x4e33f421 // fmax v1.4s, v1.4s, v19.4s
1179 .long 0x4e33f442 // fmax v2.4s, v2.4s, v19.4s
1180 .long 0xd61f0060 // br x3
1181
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001182HIDDEN _sk_rgb_to_hsl_aarch64
1183.globl _sk_rgb_to_hsl_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001184FUNCTION(_sk_rgb_to_hsl_aarch64)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001185_sk_rgb_to_hsl_aarch64:
1186 .long 0x4e21f410 // fmax v16.4s, v0.4s, v1.4s
1187 .long 0x4ea1f411 // fmin v17.4s, v0.4s, v1.4s
1188 .long 0x6ea1e454 // fcmgt v20.4s, v2.4s, v1.4s
1189 .long 0x4f00f715 // fmov v21.4s, #6.000000000000000000e+00
1190 .long 0x4e22f610 // fmax v16.4s, v16.4s, v2.4s
1191 .long 0x4ea2f631 // fmin v17.4s, v17.4s, v2.4s
1192 .long 0x4f03f612 // fmov v18.4s, #1.000000000000000000e+00
1193 .long 0x4e341eb4 // and v20.16b, v21.16b, v20.16b
1194 .long 0x4eb1d615 // fsub v21.4s, v16.4s, v17.4s
1195 .long 0x4ea2d433 // fsub v19.4s, v1.4s, v2.4s
1196 .long 0x4ea0d456 // fsub v22.4s, v2.4s, v0.4s
1197 .long 0x4f026417 // movi v23.4s, #0x40, lsl #24
1198 .long 0x6e35fe42 // fdiv v2.4s, v18.4s, v21.4s
1199 .long 0x4ea1d418 // fsub v24.4s, v0.4s, v1.4s
1200 .long 0x4f00f619 // fmov v25.4s, #4.000000000000000000e+00
1201 .long 0x4f0167fa // movi v26.4s, #0x3f, lsl #24
1202 .long 0x4eb0d6f2 // fsub v18.4s, v23.4s, v16.4s
1203 .long 0x4e36cc57 // fmla v23.4s, v2.4s, v22.4s
1204 .long 0x4e31e616 // fcmeq v22.4s, v16.4s, v17.4s
1205 .long 0x4e20e600 // fcmeq v0.4s, v16.4s, v0.4s
1206 .long 0x4e21e601 // fcmeq v1.4s, v16.4s, v1.4s
1207 .long 0x4e31d610 // fadd v16.4s, v16.4s, v17.4s
1208 .long 0x52a7c548 // mov w8, #0x3e2a0000
1209 .long 0x4e33cc54 // fmla v20.4s, v2.4s, v19.4s
1210 .long 0x4e38cc59 // fmla v25.4s, v2.4s, v24.4s
1211 .long 0x6e3ade02 // fmul v2.4s, v16.4s, v26.4s
1212 .long 0x72955568 // movk w8, #0xaaab
1213 .long 0xf8408423 // ldr x3, [x1], #8
1214 .long 0x4eb1d651 // fsub v17.4s, v18.4s, v17.4s
1215 .long 0x6ebae452 // fcmgt v18.4s, v2.4s, v26.4s
1216 .long 0x6e791ee1 // bsl v1.16b, v23.16b, v25.16b
1217 .long 0x4e040d13 // dup v19.4s, w8
1218 .long 0x6e701e32 // bsl v18.16b, v17.16b, v16.16b
1219 .long 0x6e611e80 // bsl v0.16b, v20.16b, v1.16b
1220 .long 0x6e32fea1 // fdiv v1.4s, v21.4s, v18.4s
1221 .long 0x6e33dc00 // fmul v0.4s, v0.4s, v19.4s
1222 .long 0x4e761c00 // bic v0.16b, v0.16b, v22.16b
1223 .long 0x4e761c21 // bic v1.16b, v1.16b, v22.16b
1224 .long 0xd61f0060 // br x3
1225
1226HIDDEN _sk_hsl_to_rgb_aarch64
1227.globl _sk_hsl_to_rgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001228FUNCTION(_sk_hsl_to_rgb_aarch64)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04001229_sk_hsl_to_rgb_aarch64:
1230 .long 0x52a7d548 // mov w8, #0x3eaa0000
1231 .long 0x72955568 // movk w8, #0xaaab
1232 .long 0x4e040d17 // dup v23.4s, w8
1233 .long 0x52a7c548 // mov w8, #0x3e2a0000
1234 .long 0x72955568 // movk w8, #0xaaab
1235 .long 0x4e040d13 // dup v19.4s, w8
1236 .long 0x52a7e548 // mov w8, #0x3f2a0000
1237 .long 0x4f03f612 // fmov v18.4s, #1.000000000000000000e+00
1238 .long 0x4f07f616 // fmov v22.4s, #-1.000000000000000000e+00
1239 .long 0x72955568 // movk w8, #0xaaab
1240 .long 0x4e22d435 // fadd v21.4s, v1.4s, v2.4s
1241 .long 0x4e040d1a // dup v26.4s, w8
1242 .long 0x52b7d548 // mov w8, #0xbeaa0000
1243 .long 0x6eb2e41d // fcmgt v29.4s, v0.4s, v18.4s
1244 .long 0x4e36d41e // fadd v30.4s, v0.4s, v22.4s
1245 .long 0x4f0167f1 // movi v17.4s, #0x3f, lsl #24
1246 .long 0x4ea0d830 // fcmeq v16.4s, v1.4s, #0.0
1247 .long 0x4ea0e819 // fcmlt v25.4s, v0.4s, #0.0
1248 .long 0x72955568 // movk w8, #0xaaab
1249 .long 0x4e32d43c // fadd v28.4s, v1.4s, v18.4s
1250 .long 0x4ea2cc35 // fmls v21.4s, v1.4s, v2.4s
1251 .long 0x4e32d401 // fadd v1.4s, v0.4s, v18.4s
1252 .long 0x6e601fdd // bsl v29.16b, v30.16b, v0.16b
1253 .long 0x4e37d417 // fadd v23.4s, v0.4s, v23.4s
1254 .long 0x6ea2e63b // fcmgt v27.4s, v17.4s, v2.4s
1255 .long 0x4e040d1e // dup v30.4s, w8
1256 .long 0x6e22df9c // fmul v28.4s, v28.4s, v2.4s
1257 .long 0x6e7d1c39 // bsl v25.16b, v1.16b, v29.16b
1258 .long 0x6eb2e6e1 // fcmgt v1.4s, v23.4s, v18.4s
1259 .long 0x4e36d6fd // fadd v29.4s, v23.4s, v22.4s
1260 .long 0x4e3ed41e // fadd v30.4s, v0.4s, v30.4s
1261 .long 0x6e751f9b // bsl v27.16b, v28.16b, v21.16b
1262 .long 0x4ea0eaf5 // fcmlt v21.4s, v23.4s, #0.0
1263 .long 0x4e32d6fc // fadd v28.4s, v23.4s, v18.4s
1264 .long 0x6e771fa1 // bsl v1.16b, v29.16b, v23.16b
1265 .long 0x4f026414 // movi v20.4s, #0x40, lsl #24
1266 .long 0x6e611f95 // bsl v21.16b, v28.16b, v1.16b
1267 .long 0x4e32d7c1 // fadd v1.4s, v30.4s, v18.4s
1268 .long 0x6eb2e7d2 // fcmgt v18.4s, v30.4s, v18.4s
1269 .long 0x4e36d7d6 // fadd v22.4s, v30.4s, v22.4s
1270 .long 0x6ea0fb7c // fneg v28.4s, v27.4s
1271 .long 0x4ea0ebdd // fcmlt v29.4s, v30.4s, #0.0
1272 .long 0x6e7e1ed2 // bsl v18.16b, v22.16b, v30.16b
1273 .long 0x4e22ce9c // fmla v28.4s, v20.4s, v2.4s
1274 .long 0x4f00f718 // fmov v24.4s, #6.000000000000000000e+00
1275 .long 0x6e721c3d // bsl v29.16b, v1.16b, v18.16b
1276 .long 0x4ebcd761 // fsub v1.4s, v27.4s, v28.4s
1277 .long 0x4eb5d752 // fsub v18.4s, v26.4s, v21.4s
1278 .long 0x4ebc1f94 // mov v20.16b, v28.16b
1279 .long 0x6e38dc38 // fmul v24.4s, v1.4s, v24.4s
1280 .long 0x4eb9d756 // fsub v22.4s, v26.4s, v25.4s
1281 .long 0x4ebc1f9f // mov v31.16b, v28.16b
1282 .long 0x4e32cf14 // fmla v20.4s, v24.4s, v18.4s
1283 .long 0x4ebc1f81 // mov v1.16b, v28.16b
1284 .long 0x4ebc1f92 // mov v18.16b, v28.16b
1285 .long 0x4e38cc1f // fmla v31.4s, v0.4s, v24.4s
1286 .long 0x4e36cf01 // fmla v1.4s, v24.4s, v22.4s
1287 .long 0x4ebdd740 // fsub v0.4s, v26.4s, v29.4s
1288 .long 0x4e3ecf12 // fmla v18.4s, v24.4s, v30.4s
1289 .long 0x4ebc1f96 // mov v22.16b, v28.16b
1290 .long 0x6eb5e75e // fcmgt v30.4s, v26.4s, v21.4s
1291 .long 0x4e20cf16 // fmla v22.4s, v24.4s, v0.4s
1292 .long 0x6e7c1e9e // bsl v30.16b, v20.16b, v28.16b
1293 .long 0x6eb9e754 // fcmgt v20.4s, v26.4s, v25.4s
1294 .long 0x6ebde75a // fcmgt v26.4s, v26.4s, v29.4s
1295 .long 0x6e7c1c34 // bsl v20.16b, v1.16b, v28.16b
1296 .long 0x6e7c1eda // bsl v26.16b, v22.16b, v28.16b
1297 .long 0x4e37cf1c // fmla v28.4s, v24.4s, v23.4s
1298 .long 0x6eb9e637 // fcmgt v23.4s, v17.4s, v25.4s
1299 .long 0x6eb5e678 // fcmgt v24.4s, v19.4s, v21.4s
1300 .long 0x6eb5e635 // fcmgt v21.4s, v17.4s, v21.4s
1301 .long 0x6ebde631 // fcmgt v17.4s, v17.4s, v29.4s
1302 .long 0xf8408423 // ldr x3, [x1], #8
1303 .long 0x6eb9e676 // fcmgt v22.4s, v19.4s, v25.4s
1304 .long 0x6ebde673 // fcmgt v19.4s, v19.4s, v29.4s
1305 .long 0x6e7a1f71 // bsl v17.16b, v27.16b, v26.16b
1306 .long 0x6e7e1f75 // bsl v21.16b, v27.16b, v30.16b
1307 .long 0x6e741f77 // bsl v23.16b, v27.16b, v20.16b
1308 .long 0x6e711e53 // bsl v19.16b, v18.16b, v17.16b
1309 .long 0x4eb01e00 // mov v0.16b, v16.16b
1310 .long 0x4eb01e01 // mov v1.16b, v16.16b
1311 .long 0x6e751f98 // bsl v24.16b, v28.16b, v21.16b
1312 .long 0x6e771ff6 // bsl v22.16b, v31.16b, v23.16b
1313 .long 0x6e731c50 // bsl v16.16b, v2.16b, v19.16b
1314 .long 0x6e781c40 // bsl v0.16b, v2.16b, v24.16b
1315 .long 0x6e761c41 // bsl v1.16b, v2.16b, v22.16b
1316 .long 0x4eb01e02 // mov v2.16b, v16.16b
1317 .long 0xd61f0060 // br x3
1318
Mike Klein7c4af542017-03-29 18:21:14 -04001319HIDDEN _sk_scale_1_float_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001320.globl _sk_scale_1_float_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001321FUNCTION(_sk_scale_1_float_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001322_sk_scale_1_float_aarch64:
1323 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1324 .long 0xbd400110 // ldr s16, [x8]
1325 .long 0x4f909000 // fmul v0.4s, v0.4s, v16.s[0]
1326 .long 0x4f909021 // fmul v1.4s, v1.4s, v16.s[0]
1327 .long 0x4f909042 // fmul v2.4s, v2.4s, v16.s[0]
1328 .long 0x4f909063 // fmul v3.4s, v3.4s, v16.s[0]
1329 .long 0xd61f0060 // br x3
1330
Mike Klein7c4af542017-03-29 18:21:14 -04001331HIDDEN _sk_scale_u8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001332.globl _sk_scale_u8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001333FUNCTION(_sk_scale_u8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001334_sk_scale_u8_aarch64:
1335 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1336 .long 0x52a77009 // mov w9, #0x3b800000
1337 .long 0x72901029 // movk w9, #0x8081
1338 .long 0x4e040d30 // dup v16.4s, w9
1339 .long 0xf9400108 // ldr x8, [x8]
1340 .long 0x8b000108 // add x8, x8, x0
1341 .long 0x39400109 // ldrb w9, [x8]
1342 .long 0x3940050a // ldrb w10, [x8, #1]
1343 .long 0x3940090b // ldrb w11, [x8, #2]
1344 .long 0x39400d08 // ldrb w8, [x8, #3]
1345 .long 0x4e021d31 // mov v17.h[0], w9
1346 .long 0x4e061d51 // mov v17.h[1], w10
1347 .long 0x4e0a1d71 // mov v17.h[2], w11
1348 .long 0x4e0e1d11 // mov v17.h[3], w8
1349 .long 0x2f10a631 // uxtl v17.4s, v17.4h
1350 .long 0x6e21da31 // ucvtf v17.4s, v17.4s
1351 .long 0x6e30de30 // fmul v16.4s, v17.4s, v16.4s
1352 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
1353 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
1354 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
1355 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
1356 .long 0xd61f0060 // br x3
1357
Mike Klein7c4af542017-03-29 18:21:14 -04001358HIDDEN _sk_lerp_1_float_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001359.globl _sk_lerp_1_float_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001360FUNCTION(_sk_lerp_1_float_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001361_sk_lerp_1_float_aarch64:
1362 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1363 .long 0x4ea4d411 // fsub v17.4s, v0.4s, v4.4s
1364 .long 0x4ea41c80 // mov v0.16b, v4.16b
1365 .long 0x4ea5d432 // fsub v18.4s, v1.4s, v5.4s
1366 .long 0xbd400110 // ldr s16, [x8]
1367 .long 0x4ea51ca1 // mov v1.16b, v5.16b
1368 .long 0x4f901220 // fmla v0.4s, v17.4s, v16.s[0]
1369 .long 0x4ea6d451 // fsub v17.4s, v2.4s, v6.4s
1370 .long 0x4f901241 // fmla v1.4s, v18.4s, v16.s[0]
1371 .long 0x4ea61cc2 // mov v2.16b, v6.16b
1372 .long 0x4ea7d472 // fsub v18.4s, v3.4s, v7.4s
1373 .long 0x4ea71ce3 // mov v3.16b, v7.16b
1374 .long 0x4f901222 // fmla v2.4s, v17.4s, v16.s[0]
1375 .long 0x4f901243 // fmla v3.4s, v18.4s, v16.s[0]
1376 .long 0xd61f0060 // br x3
1377
Mike Klein7c4af542017-03-29 18:21:14 -04001378HIDDEN _sk_lerp_u8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001379.globl _sk_lerp_u8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001380FUNCTION(_sk_lerp_u8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001381_sk_lerp_u8_aarch64:
1382 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1383 .long 0x52a77009 // mov w9, #0x3b800000
1384 .long 0x72901029 // movk w9, #0x8081
1385 .long 0x4e040d30 // dup v16.4s, w9
1386 .long 0xf9400108 // ldr x8, [x8]
1387 .long 0x4ea4d412 // fsub v18.4s, v0.4s, v4.4s
1388 .long 0x8b000108 // add x8, x8, x0
1389 .long 0x3940010a // ldrb w10, [x8]
1390 .long 0x39400509 // ldrb w9, [x8, #1]
1391 .long 0x3940090b // ldrb w11, [x8, #2]
1392 .long 0x39400d08 // ldrb w8, [x8, #3]
1393 .long 0x4e021d51 // mov v17.h[0], w10
1394 .long 0x4e061d31 // mov v17.h[1], w9
1395 .long 0x4e0a1d71 // mov v17.h[2], w11
1396 .long 0x4e0e1d11 // mov v17.h[3], w8
1397 .long 0x2f10a620 // uxtl v0.4s, v17.4h
1398 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
1399 .long 0x6e30dc10 // fmul v16.4s, v0.4s, v16.4s
1400 .long 0x4ea41c80 // mov v0.16b, v4.16b
1401 .long 0x4ea5d431 // fsub v17.4s, v1.4s, v5.4s
1402 .long 0x4ea51ca1 // mov v1.16b, v5.16b
1403 .long 0x4e32ce00 // fmla v0.4s, v16.4s, v18.4s
1404 .long 0x4ea6d452 // fsub v18.4s, v2.4s, v6.4s
1405 .long 0x4e31ce01 // fmla v1.4s, v16.4s, v17.4s
1406 .long 0x4ea61cc2 // mov v2.16b, v6.16b
1407 .long 0x4ea7d471 // fsub v17.4s, v3.4s, v7.4s
1408 .long 0x4ea71ce3 // mov v3.16b, v7.16b
1409 .long 0x4e32ce02 // fmla v2.4s, v16.4s, v18.4s
1410 .long 0x4e31ce03 // fmla v3.4s, v16.4s, v17.4s
1411 .long 0xd61f0060 // br x3
1412
Mike Klein7c4af542017-03-29 18:21:14 -04001413HIDDEN _sk_lerp_565_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001414.globl _sk_lerp_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001415FUNCTION(_sk_lerp_565_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001416_sk_lerp_565_aarch64:
1417 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1418 .long 0xd37ff809 // lsl x9, x0, #1
1419 .long 0x4f072710 // movi v16.4s, #0xf8, lsl #8
1420 .long 0x4ea4d413 // fsub v19.4s, v0.4s, v4.4s
1421 .long 0xf9400108 // ldr x8, [x8]
1422 .long 0xfc696903 // ldr d3, [x8, x9]
1423 .long 0x52a6f088 // mov w8, #0x37840000
1424 .long 0x72842108 // movk w8, #0x2108
1425 .long 0x4e040d11 // dup v17.4s, w8
1426 .long 0x2f10a463 // uxtl v3.4s, v3.4h
1427 .long 0x321b17e8 // orr w8, wzr, #0x7e0
1428 .long 0x4e301c60 // and v0.16b, v3.16b, v16.16b
1429 .long 0x4e040d12 // dup v18.4s, w8
1430 .long 0x52a74048 // mov w8, #0x3a020000
1431 .long 0x4e21d800 // scvtf v0.4s, v0.4s
1432 .long 0x72810428 // movk w8, #0x821
1433 .long 0x6e31dc10 // fmul v16.4s, v0.4s, v17.4s
1434 .long 0x4ea41c80 // mov v0.16b, v4.16b
1435 .long 0x4e33ce00 // fmla v0.4s, v16.4s, v19.4s
1436 .long 0x4f0007f0 // movi v16.4s, #0x1f
1437 .long 0x4e040d11 // dup v17.4s, w8
1438 .long 0x52a7a088 // mov w8, #0x3d040000
1439 .long 0x4e321c72 // and v18.16b, v3.16b, v18.16b
1440 .long 0x72842108 // movk w8, #0x2108
1441 .long 0x4e301c63 // and v3.16b, v3.16b, v16.16b
1442 .long 0x4ea6d450 // fsub v16.4s, v2.4s, v6.4s
1443 .long 0x4e21da42 // scvtf v2.4s, v18.4s
1444 .long 0x6e31dc51 // fmul v17.4s, v2.4s, v17.4s
1445 .long 0x4e040d02 // dup v2.4s, w8
1446 .long 0x4e21d863 // scvtf v3.4s, v3.4s
1447 .long 0x4ea5d433 // fsub v19.4s, v1.4s, v5.4s
1448 .long 0x4ea51ca1 // mov v1.16b, v5.16b
1449 .long 0x6e22dc63 // fmul v3.4s, v3.4s, v2.4s
1450 .long 0x4ea61cc2 // mov v2.16b, v6.16b
1451 .long 0x4e33ce21 // fmla v1.4s, v17.4s, v19.4s
1452 .long 0x4e30cc62 // fmla v2.4s, v3.4s, v16.4s
1453 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
1454 .long 0xd61f0060 // br x3
1455
Mike Klein7c4af542017-03-29 18:21:14 -04001456HIDDEN _sk_load_tables_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04001457.globl _sk_load_tables_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001458FUNCTION(_sk_load_tables_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04001459_sk_load_tables_aarch64:
1460 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1461 .long 0xd37ef409 // lsl x9, x0, #2
1462 .long 0x6f00e620 // movi v0.2d, #0xff000000ff
1463 .long 0x52a7700b // mov w11, #0x3b800000
1464 .long 0xa940310a // ldp x10, x12, [x8]
1465 .long 0x7290102b // movk w11, #0x8081
1466 .long 0x4e040d63 // dup v3.4s, w11
1467 .long 0x3ce96942 // ldr q2, [x10, x9]
1468 .long 0xa9412109 // ldp x9, x8, [x8, #16]
1469 .long 0x4e201c41 // and v1.16b, v2.16b, v0.16b
1470 .long 0x1e26002e // fmov w14, s1
1471 .long 0x6f380450 // ushr v16.4s, v2.4s, #8
1472 .long 0x6f300451 // ushr v17.4s, v2.4s, #16
1473 .long 0x8b2e498e // add x14, x12, w14, uxtw #2
1474 .long 0x0e0c3c2a // mov w10, v1.s[1]
1475 .long 0x0e143c2b // mov w11, v1.s[2]
1476 .long 0x0e1c3c2d // mov w13, v1.s[3]
1477 .long 0x4e201e01 // and v1.16b, v16.16b, v0.16b
1478 .long 0x4e201e30 // and v16.16b, v17.16b, v0.16b
1479 .long 0x0d4081c0 // ld1 {v0.s}[0], [x14]
1480 .long 0x8b2a498a // add x10, x12, w10, uxtw #2
1481 .long 0xbc6b5991 // ldr s17, [x12, w11, uxtw #2]
1482 .long 0xbc6d5992 // ldr s18, [x12, w13, uxtw #2]
1483 .long 0x0e0c3c2b // mov w11, v1.s[1]
1484 .long 0x0e143c2c // mov w12, v1.s[2]
1485 .long 0x0e1c3c2d // mov w13, v1.s[3]
1486 .long 0x1e26002e // fmov w14, s1
1487 .long 0x8b2e492e // add x14, x9, w14, uxtw #2
1488 .long 0xbc6c5933 // ldr s19, [x9, w12, uxtw #2]
1489 .long 0xbc6d5934 // ldr s20, [x9, w13, uxtw #2]
1490 .long 0x8b2b4929 // add x9, x9, w11, uxtw #2
1491 .long 0x1e26020b // fmov w11, s16
1492 .long 0x6f280442 // ushr v2.4s, v2.4s, #24
1493 .long 0x0d409140 // ld1 {v0.s}[1], [x10]
1494 .long 0x4e21d842 // scvtf v2.4s, v2.4s
1495 .long 0x8b2b490a // add x10, x8, w11, uxtw #2
1496 .long 0x0d4081c1 // ld1 {v1.s}[0], [x14]
1497 .long 0x6e23dc43 // fmul v3.4s, v2.4s, v3.4s
1498 .long 0x0d408142 // ld1 {v2.s}[0], [x10]
1499 .long 0x0e0c3e0f // mov w15, v16.s[1]
1500 .long 0x0e143e0c // mov w12, v16.s[2]
1501 .long 0x8b2f490a // add x10, x8, w15, uxtw #2
1502 .long 0x0e1c3e0d // mov w13, v16.s[3]
1503 .long 0xbc6c5910 // ldr s16, [x8, w12, uxtw #2]
1504 .long 0x0d409121 // ld1 {v1.s}[1], [x9]
1505 .long 0x0d409142 // ld1 {v2.s}[1], [x10]
1506 .long 0x6e140620 // mov v0.s[2], v17.s[0]
1507 .long 0xbc6d5911 // ldr s17, [x8, w13, uxtw #2]
1508 .long 0x6e140661 // mov v1.s[2], v19.s[0]
1509 .long 0x6e140602 // mov v2.s[2], v16.s[0]
1510 .long 0x6e1c0640 // mov v0.s[3], v18.s[0]
1511 .long 0x6e1c0681 // mov v1.s[3], v20.s[0]
1512 .long 0x6e1c0622 // mov v2.s[3], v17.s[0]
1513 .long 0xd61f0060 // br x3
1514
Mike Kleina3735cd2017-04-17 13:19:05 -04001515HIDDEN _sk_load_tables_u16_be_aarch64
1516.globl _sk_load_tables_u16_be_aarch64
1517FUNCTION(_sk_load_tables_u16_be_aarch64)
1518_sk_load_tables_u16_be_aarch64:
1519 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1520 .long 0x52a6f00a // mov w10, #0x37800000
1521 .long 0x7280100a // movk w10, #0x80
1522 .long 0x4e040d50 // dup v16.4s, w10
1523 .long 0xa9402d09 // ldp x9, x11, [x8]
1524 .long 0x8b000d29 // add x9, x9, x0, lsl #3
1525 .long 0x0c400520 // ld4 {v0.4h-v3.4h}, [x9]
1526 .long 0xa9412109 // ldp x9, x8, [x8, #16]
1527 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
1528 .long 0x2f10a411 // uxtl v17.4s, v0.4h
1529 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1530 .long 0x1e26022e // fmov w14, s17
1531 .long 0x0e0c3e2a // mov w10, v17.s[1]
1532 .long 0x0e143e2c // mov w12, v17.s[2]
1533 .long 0x0e1c3e2d // mov w13, v17.s[3]
1534 .long 0x8b2e496e // add x14, x11, w14, uxtw #2
1535 .long 0x2f10a431 // uxtl v17.4s, v1.4h
1536 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
1537 .long 0x2f10a453 // uxtl v19.4s, v2.4h
1538 .long 0x2f180462 // ushr v2.4h, v3.4h, #8
1539 .long 0x0d4081c0 // ld1 {v0.s}[0], [x14]
1540 .long 0x0f185474 // shl v20.4h, v3.4h, #8
1541 .long 0x0ea21e82 // orr v2.8b, v20.8b, v2.8b
1542 .long 0x8b2a496a // add x10, x11, w10, uxtw #2
1543 .long 0x1e26022e // fmov w14, s17
1544 .long 0x1e26026f // fmov w15, s19
1545 .long 0x2f10a442 // uxtl v2.4s, v2.4h
1546 .long 0x8b2e492e // add x14, x9, w14, uxtw #2
1547 .long 0x0d409140 // ld1 {v0.s}[1], [x10]
1548 .long 0x8b2f490a // add x10, x8, w15, uxtw #2
1549 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
1550 .long 0x0d4081c1 // ld1 {v1.s}[0], [x14]
1551 .long 0x6e30dc43 // fmul v3.4s, v2.4s, v16.4s
1552 .long 0x0d408142 // ld1 {v2.s}[0], [x10]
1553 .long 0xbc6c5972 // ldr s18, [x11, w12, uxtw #2]
1554 .long 0xbc6d5975 // ldr s21, [x11, w13, uxtw #2]
1555 .long 0x0e0c3e2b // mov w11, v17.s[1]
1556 .long 0x0e143e2c // mov w12, v17.s[2]
1557 .long 0x0e1c3e2d // mov w13, v17.s[3]
1558 .long 0x8b2b492b // add x11, x9, w11, uxtw #2
1559 .long 0xbc6c5931 // ldr s17, [x9, w12, uxtw #2]
1560 .long 0xbc6d5936 // ldr s22, [x9, w13, uxtw #2]
1561 .long 0x0e0c3e69 // mov w9, v19.s[1]
1562 .long 0x0e143e6c // mov w12, v19.s[2]
1563 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1564 .long 0x0e1c3e6d // mov w13, v19.s[3]
1565 .long 0xbc6c5913 // ldr s19, [x8, w12, uxtw #2]
1566 .long 0x0d409161 // ld1 {v1.s}[1], [x11]
1567 .long 0x0d409122 // ld1 {v2.s}[1], [x9]
1568 .long 0xbc6d5910 // ldr s16, [x8, w13, uxtw #2]
1569 .long 0x6e140640 // mov v0.s[2], v18.s[0]
1570 .long 0x6e140621 // mov v1.s[2], v17.s[0]
1571 .long 0x6e140662 // mov v2.s[2], v19.s[0]
1572 .long 0x6e1c06a0 // mov v0.s[3], v21.s[0]
1573 .long 0x6e1c06c1 // mov v1.s[3], v22.s[0]
1574 .long 0x6e1c0602 // mov v2.s[3], v16.s[0]
1575 .long 0xd61f0060 // br x3
1576
1577HIDDEN _sk_load_tables_rgb_u16_be_aarch64
1578.globl _sk_load_tables_rgb_u16_be_aarch64
1579FUNCTION(_sk_load_tables_rgb_u16_be_aarch64)
1580_sk_load_tables_rgb_u16_be_aarch64:
1581 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1582 .long 0x321f07ea // orr w10, wzr, #0x6
1583 .long 0xa9402d09 // ldp x9, x11, [x8]
1584 .long 0x9b0a2409 // madd x9, x0, x10, x9
1585 .long 0x0c404521 // ld3 {v1.4h-v3.4h}, [x9]
1586 .long 0xa9412109 // ldp x9, x8, [x8, #16]
1587 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1588 .long 0x2f10a420 // uxtl v0.4s, v1.4h
1589 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
1590 .long 0x1e26000e // fmov w14, s0
1591 .long 0x0e143c0c // mov w12, v0.s[2]
1592 .long 0x8b2e496e // add x14, x11, w14, uxtw #2
1593 .long 0x2f10a450 // uxtl v16.4s, v2.4h
1594 .long 0x0e0c3c0a // mov w10, v0.s[1]
1595 .long 0x0e1c3c0d // mov w13, v0.s[3]
1596 .long 0xbc6c5971 // ldr s17, [x11, w12, uxtw #2]
1597 .long 0x0d4081c0 // ld1 {v0.s}[0], [x14]
1598 .long 0x0e143e0c // mov w12, v16.s[2]
1599 .long 0x1e26020e // fmov w14, s16
1600 .long 0x2f07b7e3 // bic v3.4h, #0xff, lsl #8
1601 .long 0x8b2a496a // add x10, x11, w10, uxtw #2
1602 .long 0xbc6d5972 // ldr s18, [x11, w13, uxtw #2]
1603 .long 0x0e0c3e0b // mov w11, v16.s[1]
1604 .long 0x0e1c3e0d // mov w13, v16.s[3]
1605 .long 0xbc6c5930 // ldr s16, [x9, w12, uxtw #2]
1606 .long 0x8b2e492c // add x12, x9, w14, uxtw #2
1607 .long 0x2f10a462 // uxtl v2.4s, v3.4h
1608 .long 0xbc6d5923 // ldr s3, [x9, w13, uxtw #2]
1609 .long 0x0d408181 // ld1 {v1.s}[0], [x12]
1610 .long 0x0e143c4c // mov w12, v2.s[2]
1611 .long 0x1e26004d // fmov w13, s2
1612 .long 0xbc6c5913 // ldr s19, [x8, w12, uxtw #2]
1613 .long 0x8b2d490c // add x12, x8, w13, uxtw #2
1614 .long 0x8b2b492b // add x11, x9, w11, uxtw #2
1615 .long 0x0e0c3c49 // mov w9, v2.s[1]
1616 .long 0x0d409140 // ld1 {v0.s}[1], [x10]
1617 .long 0x0e1c3c4a // mov w10, v2.s[3]
1618 .long 0x0d408182 // ld1 {v2.s}[0], [x12]
1619 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1620 .long 0x0d409161 // ld1 {v1.s}[1], [x11]
1621 .long 0x6e140620 // mov v0.s[2], v17.s[0]
1622 .long 0x0d409122 // ld1 {v2.s}[1], [x9]
1623 .long 0xbc6a5911 // ldr s17, [x8, w10, uxtw #2]
1624 .long 0x6e140601 // mov v1.s[2], v16.s[0]
1625 .long 0x6e1c0640 // mov v0.s[3], v18.s[0]
1626 .long 0x6e140662 // mov v2.s[2], v19.s[0]
1627 .long 0x6e1c0461 // mov v1.s[3], v3.s[0]
1628 .long 0x6e1c0622 // mov v2.s[3], v17.s[0]
1629 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
1630 .long 0xd61f0060 // br x3
1631
Mike Klein40de6da2017-04-07 13:09:29 -04001632HIDDEN _sk_byte_tables_aarch64
1633.globl _sk_byte_tables_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001634FUNCTION(_sk_byte_tables_aarch64)
Mike Klein40de6da2017-04-07 13:09:29 -04001635_sk_byte_tables_aarch64:
1636 .long 0xd10083ff // sub sp, sp, #0x20
1637 .long 0xaa0103e8 // mov x8, x1
1638 .long 0x91002109 // add x9, x8, #0x8
1639 .long 0xa9014ff4 // stp x20, x19, [sp, #16]
1640 .long 0xf90007e9 // str x9, [sp, #8]
1641 .long 0xf8410429 // ldr x9, [x1], #16
1642 .long 0x52a86fea // mov w10, #0x437f0000
1643 .long 0x4e040d51 // dup v17.4s, w10
1644 .long 0x52a7700b // mov w11, #0x3b800000
1645 .long 0xa9405126 // ldp x6, x20, [x9]
1646 .long 0x6e31dc00 // fmul v0.4s, v0.4s, v17.4s
1647 .long 0x7290102b // movk w11, #0x8081
1648 .long 0x6e21a800 // fcvtnu v0.4s, v0.4s
1649 .long 0x4e040d70 // dup v16.4s, w11
1650 .long 0x0e0c3c0a // mov w10, v0.s[1]
1651 .long 0x0e143c0b // mov w11, v0.s[2]
1652 .long 0x0e1c3c0c // mov w12, v0.s[3]
1653 .long 0x1e26000d // fmov w13, s0
1654 .long 0x386d48cd // ldrb w13, [x6, w13, uxtw]
1655 .long 0x386a48ca // ldrb w10, [x6, w10, uxtw]
1656 .long 0x386b48cb // ldrb w11, [x6, w11, uxtw]
1657 .long 0x386c48cc // ldrb w12, [x6, w12, uxtw]
1658 .long 0xa9412526 // ldp x6, x9, [x9, #16]
1659 .long 0x6e31dc42 // fmul v2.4s, v2.4s, v17.4s
1660 .long 0x6e31dc21 // fmul v1.4s, v1.4s, v17.4s
1661 .long 0x6e31dc63 // fmul v3.4s, v3.4s, v17.4s
1662 .long 0x6e21a842 // fcvtnu v2.4s, v2.4s
1663 .long 0x6e21a821 // fcvtnu v1.4s, v1.4s
1664 .long 0x6e21a863 // fcvtnu v3.4s, v3.4s
1665 .long 0x0e0c3c52 // mov w18, v2.s[1]
1666 .long 0x0e143c43 // mov w3, v2.s[2]
1667 .long 0x0e1c3c44 // mov w4, v2.s[3]
1668 .long 0x1e260045 // fmov w5, s2
1669 .long 0x1e260031 // fmov w17, s1
1670 .long 0x386548c5 // ldrb w5, [x6, w5, uxtw]
1671 .long 0x387248d2 // ldrb w18, [x6, w18, uxtw]
1672 .long 0x386348c3 // ldrb w3, [x6, w3, uxtw]
1673 .long 0x386448c4 // ldrb w4, [x6, w4, uxtw]
1674 .long 0x1e260066 // fmov w6, s3
1675 .long 0x0e0c3c2e // mov w14, v1.s[1]
1676 .long 0x0e0c3c67 // mov w7, v3.s[1]
1677 .long 0x38714a91 // ldrb w17, [x20, w17, uxtw]
1678 .long 0x38664926 // ldrb w6, [x9, w6, uxtw]
1679 .long 0x0e143c2f // mov w15, v1.s[2]
1680 .long 0x0e1c3c30 // mov w16, v1.s[3]
1681 .long 0x0e143c73 // mov w19, v3.s[2]
1682 .long 0x386e4a8e // ldrb w14, [x20, w14, uxtw]
1683 .long 0x38674927 // ldrb w7, [x9, w7, uxtw]
1684 .long 0x386f4a8f // ldrb w15, [x20, w15, uxtw]
1685 .long 0x38704a90 // ldrb w16, [x20, w16, uxtw]
1686 .long 0x0e1c3c74 // mov w20, v3.s[3]
1687 .long 0x38734933 // ldrb w19, [x9, w19, uxtw]
1688 .long 0x38744929 // ldrb w9, [x9, w20, uxtw]
1689 .long 0x4e021da0 // mov v0.h[0], w13
1690 .long 0x4e021e21 // mov v1.h[0], w17
1691 .long 0x4e021ca2 // mov v2.h[0], w5
1692 .long 0x4e021cc3 // mov v3.h[0], w6
1693 .long 0x4e061d40 // mov v0.h[1], w10
1694 .long 0x4e061dc1 // mov v1.h[1], w14
1695 .long 0x4e061e42 // mov v2.h[1], w18
1696 .long 0x4e061ce3 // mov v3.h[1], w7
1697 .long 0x4e0a1d60 // mov v0.h[2], w11
1698 .long 0x4e0a1de1 // mov v1.h[2], w15
1699 .long 0x4e0a1c62 // mov v2.h[2], w3
1700 .long 0x4e0a1e63 // mov v3.h[2], w19
1701 .long 0x4e0e1d80 // mov v0.h[3], w12
1702 .long 0x4e0e1e01 // mov v1.h[3], w16
1703 .long 0x4e0e1c82 // mov v2.h[3], w4
1704 .long 0x4e0e1d23 // mov v3.h[3], w9
1705 .long 0xf9400505 // ldr x5, [x8, #8]
1706 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
1707 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1708 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
1709 .long 0x2f07b7e3 // bic v3.4h, #0xff, lsl #8
1710 .long 0xa9414ff4 // ldp x20, x19, [sp, #16]
1711 .long 0x2f10a400 // uxtl v0.4s, v0.4h
1712 .long 0x2f10a421 // uxtl v1.4s, v1.4h
1713 .long 0x2f10a442 // uxtl v2.4s, v2.4h
1714 .long 0x2f10a463 // uxtl v3.4s, v3.4h
1715 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
1716 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
1717 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
1718 .long 0x6e21d863 // ucvtf v3.4s, v3.4s
1719 .long 0x6e30dc00 // fmul v0.4s, v0.4s, v16.4s
1720 .long 0x6e30dc21 // fmul v1.4s, v1.4s, v16.4s
1721 .long 0x6e30dc42 // fmul v2.4s, v2.4s, v16.4s
1722 .long 0x6e30dc63 // fmul v3.4s, v3.4s, v16.4s
1723 .long 0x910083ff // add sp, sp, #0x20
1724 .long 0xd61f00a0 // br x5
1725
1726HIDDEN _sk_byte_tables_rgb_aarch64
1727.globl _sk_byte_tables_rgb_aarch64
Mike Klein86714282017-04-13 17:37:38 -04001728FUNCTION(_sk_byte_tables_rgb_aarch64)
Mike Klein40de6da2017-04-07 13:09:29 -04001729_sk_byte_tables_rgb_aarch64:
1730 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1731 .long 0x52a77009 // mov w9, #0x3b800000
1732 .long 0x72901029 // movk w9, #0x8081
1733 .long 0x4e040d30 // dup v16.4s, w9
1734 .long 0xb9401909 // ldr w9, [x8, #24]
1735 .long 0xa9402d0a // ldp x10, x11, [x8]
1736 .long 0xf9400908 // ldr x8, [x8, #16]
1737 .long 0x51000529 // sub w9, w9, #0x1
1738 .long 0x4e040d31 // dup v17.4s, w9
1739 .long 0x4e21da31 // scvtf v17.4s, v17.4s
1740 .long 0x6e21de21 // fmul v1.4s, v17.4s, v1.4s
1741 .long 0x6e20de20 // fmul v0.4s, v17.4s, v0.4s
1742 .long 0x6e22de22 // fmul v2.4s, v17.4s, v2.4s
1743 .long 0x6e21a821 // fcvtnu v1.4s, v1.4s
1744 .long 0x6e21a800 // fcvtnu v0.4s, v0.4s
1745 .long 0x6e21a842 // fcvtnu v2.4s, v2.4s
1746 .long 0x0e0c3c2f // mov w15, v1.s[1]
1747 .long 0x0e143c30 // mov w16, v1.s[2]
1748 .long 0x0e1c3c31 // mov w17, v1.s[3]
1749 .long 0x1e260032 // fmov w18, s1
1750 .long 0x1e26000e // fmov w14, s0
1751 .long 0x38724972 // ldrb w18, [x11, w18, uxtw]
1752 .long 0x386f496f // ldrb w15, [x11, w15, uxtw]
1753 .long 0x38704970 // ldrb w16, [x11, w16, uxtw]
1754 .long 0x3871496b // ldrb w11, [x11, w17, uxtw]
1755 .long 0x1e260051 // fmov w17, s2
1756 .long 0x0e0c3c09 // mov w9, v0.s[1]
1757 .long 0x386e494e // ldrb w14, [x10, w14, uxtw]
1758 .long 0x0e0c3c44 // mov w4, v2.s[1]
1759 .long 0x38714911 // ldrb w17, [x8, w17, uxtw]
1760 .long 0x0e143c0c // mov w12, v0.s[2]
1761 .long 0x0e1c3c0d // mov w13, v0.s[3]
1762 .long 0x0e143c45 // mov w5, v2.s[2]
1763 .long 0x38694949 // ldrb w9, [x10, w9, uxtw]
1764 .long 0x38644904 // ldrb w4, [x8, w4, uxtw]
1765 .long 0x386c494c // ldrb w12, [x10, w12, uxtw]
1766 .long 0x386d494a // ldrb w10, [x10, w13, uxtw]
1767 .long 0x0e1c3c4d // mov w13, v2.s[3]
1768 .long 0x38654905 // ldrb w5, [x8, w5, uxtw]
1769 .long 0x386d4908 // ldrb w8, [x8, w13, uxtw]
1770 .long 0x4e021dc0 // mov v0.h[0], w14
1771 .long 0x4e021e41 // mov v1.h[0], w18
1772 .long 0x4e021e22 // mov v2.h[0], w17
1773 .long 0x4e061d20 // mov v0.h[1], w9
1774 .long 0x4e061de1 // mov v1.h[1], w15
1775 .long 0x4e061c82 // mov v2.h[1], w4
1776 .long 0x4e0a1d80 // mov v0.h[2], w12
1777 .long 0x4e0a1e01 // mov v1.h[2], w16
1778 .long 0x4e0a1ca2 // mov v2.h[2], w5
1779 .long 0x4e0e1d40 // mov v0.h[3], w10
1780 .long 0x4e0e1d61 // mov v1.h[3], w11
1781 .long 0x4e0e1d02 // mov v2.h[3], w8
1782 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
1783 .long 0x2f07b7e1 // bic v1.4h, #0xff, lsl #8
1784 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
1785 .long 0x2f10a400 // uxtl v0.4s, v0.4h
1786 .long 0x2f10a421 // uxtl v1.4s, v1.4h
1787 .long 0x2f10a442 // uxtl v2.4s, v2.4h
1788 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
1789 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
1790 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
1791 .long 0x6e30dc00 // fmul v0.4s, v0.4s, v16.4s
1792 .long 0x6e30dc21 // fmul v1.4s, v1.4s, v16.4s
1793 .long 0x6e30dc42 // fmul v2.4s, v2.4s, v16.4s
1794 .long 0xd61f0060 // br x3
1795
Mike Kleinc7d9c0b2017-04-17 14:43:59 -04001796HIDDEN _sk_table_r_aarch64
1797.globl _sk_table_r_aarch64
1798FUNCTION(_sk_table_r_aarch64)
1799_sk_table_r_aarch64:
1800 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1801 .long 0xb9400909 // ldr w9, [x8, #8]
1802 .long 0xf9400108 // ldr x8, [x8]
1803 .long 0x51000529 // sub w9, w9, #0x1
1804 .long 0x4e040d30 // dup v16.4s, w9
1805 .long 0x4e21da10 // scvtf v16.4s, v16.4s
1806 .long 0x6e20de00 // fmul v0.4s, v16.4s, v0.4s
1807 .long 0x6e21a810 // fcvtnu v16.4s, v0.4s
1808 .long 0x1e26020b // fmov w11, s16
1809 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
1810 .long 0x0d408160 // ld1 {v0.s}[0], [x11]
1811 .long 0x0e0c3e09 // mov w9, v16.s[1]
1812 .long 0x0e143e0a // mov w10, v16.s[2]
1813 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1814 .long 0x0e1c3e0b // mov w11, v16.s[3]
1815 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
1816 .long 0x0d409120 // ld1 {v0.s}[1], [x9]
1817 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
1818 .long 0x6e140600 // mov v0.s[2], v16.s[0]
1819 .long 0x6e1c0620 // mov v0.s[3], v17.s[0]
1820 .long 0xd61f0060 // br x3
1821
1822HIDDEN _sk_table_g_aarch64
1823.globl _sk_table_g_aarch64
1824FUNCTION(_sk_table_g_aarch64)
1825_sk_table_g_aarch64:
1826 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1827 .long 0xb9400909 // ldr w9, [x8, #8]
1828 .long 0xf9400108 // ldr x8, [x8]
1829 .long 0x51000529 // sub w9, w9, #0x1
1830 .long 0x4e040d30 // dup v16.4s, w9
1831 .long 0x4e21da10 // scvtf v16.4s, v16.4s
1832 .long 0x6e21de01 // fmul v1.4s, v16.4s, v1.4s
1833 .long 0x6e21a830 // fcvtnu v16.4s, v1.4s
1834 .long 0x1e26020b // fmov w11, s16
1835 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
1836 .long 0x0d408161 // ld1 {v1.s}[0], [x11]
1837 .long 0x0e0c3e09 // mov w9, v16.s[1]
1838 .long 0x0e143e0a // mov w10, v16.s[2]
1839 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1840 .long 0x0e1c3e0b // mov w11, v16.s[3]
1841 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
1842 .long 0x0d409121 // ld1 {v1.s}[1], [x9]
1843 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
1844 .long 0x6e140601 // mov v1.s[2], v16.s[0]
1845 .long 0x6e1c0621 // mov v1.s[3], v17.s[0]
1846 .long 0xd61f0060 // br x3
1847
1848HIDDEN _sk_table_b_aarch64
1849.globl _sk_table_b_aarch64
1850FUNCTION(_sk_table_b_aarch64)
1851_sk_table_b_aarch64:
1852 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1853 .long 0xb9400909 // ldr w9, [x8, #8]
1854 .long 0xf9400108 // ldr x8, [x8]
1855 .long 0x51000529 // sub w9, w9, #0x1
1856 .long 0x4e040d30 // dup v16.4s, w9
1857 .long 0x4e21da10 // scvtf v16.4s, v16.4s
1858 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
1859 .long 0x6e21a850 // fcvtnu v16.4s, v2.4s
1860 .long 0x1e26020b // fmov w11, s16
1861 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
1862 .long 0x0d408162 // ld1 {v2.s}[0], [x11]
1863 .long 0x0e0c3e09 // mov w9, v16.s[1]
1864 .long 0x0e143e0a // mov w10, v16.s[2]
1865 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1866 .long 0x0e1c3e0b // mov w11, v16.s[3]
1867 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
1868 .long 0x0d409122 // ld1 {v2.s}[1], [x9]
1869 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
1870 .long 0x6e140602 // mov v2.s[2], v16.s[0]
1871 .long 0x6e1c0622 // mov v2.s[3], v17.s[0]
1872 .long 0xd61f0060 // br x3
1873
1874HIDDEN _sk_table_a_aarch64
1875.globl _sk_table_a_aarch64
1876FUNCTION(_sk_table_a_aarch64)
1877_sk_table_a_aarch64:
1878 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
1879 .long 0xb9400909 // ldr w9, [x8, #8]
1880 .long 0xf9400108 // ldr x8, [x8]
1881 .long 0x51000529 // sub w9, w9, #0x1
1882 .long 0x4e040d30 // dup v16.4s, w9
1883 .long 0x4e21da10 // scvtf v16.4s, v16.4s
1884 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
1885 .long 0x6e21a870 // fcvtnu v16.4s, v3.4s
1886 .long 0x1e26020b // fmov w11, s16
1887 .long 0x8b2b490b // add x11, x8, w11, uxtw #2
1888 .long 0x0d408163 // ld1 {v3.s}[0], [x11]
1889 .long 0x0e0c3e09 // mov w9, v16.s[1]
1890 .long 0x0e143e0a // mov w10, v16.s[2]
1891 .long 0x8b294909 // add x9, x8, w9, uxtw #2
1892 .long 0x0e1c3e0b // mov w11, v16.s[3]
1893 .long 0xbc6a5910 // ldr s16, [x8, w10, uxtw #2]
1894 .long 0x0d409123 // ld1 {v3.s}[1], [x9]
1895 .long 0xbc6b5911 // ldr s17, [x8, w11, uxtw #2]
1896 .long 0x6e140603 // mov v3.s[2], v16.s[0]
1897 .long 0x6e1c0623 // mov v3.s[3], v17.s[0]
1898 .long 0xd61f0060 // br x3
1899
Mike Klein44375172017-04-17 19:32:05 -04001900HIDDEN _sk_parametric_r_aarch64
1901.globl _sk_parametric_r_aarch64
1902FUNCTION(_sk_parametric_r_aarch64)
1903_sk_parametric_r_aarch64:
1904 .long 0xf9400028 // ldr x8, [x1]
1905 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
1906 .long 0x91004109 // add x9, x8, #0x10
1907 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04001908 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04001909 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04001910 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04001911 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001912 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04001913 .long 0x9100210a // add x10, x8, #0x8
1914 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001915 .long 0x4f911010 // fmla v16.4s, v0.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04001916 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04001917 .long 0x52b85f09 // mov w9, #0xc2f80000
1918 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04001919 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001920 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04001921 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04001922 .long 0x4f951014 // fmla v20.4s, v0.4s, v21.s[0]
1923 .long 0x6e20e640 // fcmge v0.4s, v18.4s, v0.4s
1924 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001925 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04001926 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04001927 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04001928 .long 0x4e21da95 // scvtf v21.4s, v20.4s
1929 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04001930 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04001931 .long 0x52a7fb89 // mov w9, #0x3fdc0000
1932 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
1933 .long 0x729d3469 // movk w9, #0xe9a3
1934 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
1935 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
1936 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001937 .long 0x52a85e49 // mov w9, #0x42f20000
1938 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04001939 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
1940 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001941 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
1942 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04001943 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
1944 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001945 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04001946 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04001947 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04001948 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
1949 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001950 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04001951 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04001952 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04001953 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
1954 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
1955 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
1956 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
1957 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001958 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04001959 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
1960 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
1961 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
1962 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
1963 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04001964 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
1965 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04001966 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
1967 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04001968 .long 0x6e711e00 // bsl v0.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04001969 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
1970 .long 0x4e32f400 // fmax v0.4s, v0.4s, v18.4s
1971 .long 0x4eb5f400 // fmin v0.4s, v0.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04001972 .long 0x91004021 // add x1, x1, #0x10
1973 .long 0xd61f0060 // br x3
1974
1975HIDDEN _sk_parametric_g_aarch64
1976.globl _sk_parametric_g_aarch64
1977FUNCTION(_sk_parametric_g_aarch64)
1978_sk_parametric_g_aarch64:
1979 .long 0xf9400028 // ldr x8, [x1]
1980 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
1981 .long 0x91004109 // add x9, x8, #0x10
1982 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04001983 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04001984 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04001985 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04001986 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001987 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04001988 .long 0x9100210a // add x10, x8, #0x8
1989 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04001990 .long 0x4f911030 // fmla v16.4s, v1.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04001991 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04001992 .long 0x52b85f09 // mov w9, #0xc2f80000
1993 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04001994 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04001995 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04001996 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04001997 .long 0x4f951034 // fmla v20.4s, v1.4s, v21.s[0]
1998 .long 0x6e21e641 // fcmge v1.4s, v18.4s, v1.4s
1999 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002000 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04002001 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04002002 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04002003 .long 0x4e21da95 // scvtf v21.4s, v20.4s
2004 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04002005 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04002006 .long 0x52a7fb89 // mov w9, #0x3fdc0000
2007 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
2008 .long 0x729d3469 // movk w9, #0xe9a3
2009 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
2010 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
2011 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002012 .long 0x52a85e49 // mov w9, #0x42f20000
2013 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04002014 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2015 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002016 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
2017 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04002018 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
2019 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002020 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04002021 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002022 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04002023 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
2024 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002025 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04002026 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002027 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04002028 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
2029 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
2030 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
2031 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
2032 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002033 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04002034 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
2035 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
2036 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
2037 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
2038 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04002039 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2040 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04002041 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2042 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04002043 .long 0x6e711e01 // bsl v1.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04002044 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
2045 .long 0x4e32f421 // fmax v1.4s, v1.4s, v18.4s
2046 .long 0x4eb5f421 // fmin v1.4s, v1.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04002047 .long 0x91004021 // add x1, x1, #0x10
2048 .long 0xd61f0060 // br x3
2049
2050HIDDEN _sk_parametric_b_aarch64
2051.globl _sk_parametric_b_aarch64
2052FUNCTION(_sk_parametric_b_aarch64)
2053_sk_parametric_b_aarch64:
2054 .long 0xf9400028 // ldr x8, [x1]
2055 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
2056 .long 0x91004109 // add x9, x8, #0x10
2057 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04002058 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04002059 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04002060 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04002061 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002062 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04002063 .long 0x9100210a // add x10, x8, #0x8
2064 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002065 .long 0x4f911050 // fmla v16.4s, v2.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04002066 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04002067 .long 0x52b85f09 // mov w9, #0xc2f80000
2068 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04002069 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002070 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04002071 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04002072 .long 0x4f951054 // fmla v20.4s, v2.4s, v21.s[0]
2073 .long 0x6e22e642 // fcmge v2.4s, v18.4s, v2.4s
2074 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002075 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04002076 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04002077 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04002078 .long 0x4e21da95 // scvtf v21.4s, v20.4s
2079 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04002080 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04002081 .long 0x52a7fb89 // mov w9, #0x3fdc0000
2082 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
2083 .long 0x729d3469 // movk w9, #0xe9a3
2084 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
2085 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
2086 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002087 .long 0x52a85e49 // mov w9, #0x42f20000
2088 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04002089 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2090 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002091 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
2092 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04002093 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
2094 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002095 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04002096 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002097 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04002098 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
2099 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002100 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04002101 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002102 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04002103 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
2104 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
2105 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
2106 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
2107 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002108 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04002109 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
2110 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
2111 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
2112 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
2113 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04002114 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2115 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04002116 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2117 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04002118 .long 0x6e711e02 // bsl v2.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04002119 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
2120 .long 0x4e32f442 // fmax v2.4s, v2.4s, v18.4s
2121 .long 0x4eb5f442 // fmin v2.4s, v2.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04002122 .long 0x91004021 // add x1, x1, #0x10
2123 .long 0xd61f0060 // br x3
2124
2125HIDDEN _sk_parametric_a_aarch64
2126.globl _sk_parametric_a_aarch64
2127FUNCTION(_sk_parametric_a_aarch64)
2128_sk_parametric_a_aarch64:
2129 .long 0xf9400028 // ldr x8, [x1]
2130 .long 0x4f016696 // movi v22.4s, #0x34, lsl #24
2131 .long 0x91004109 // add x9, x8, #0x10
2132 .long 0x9100610a // add x10, x8, #0x18
Mike Kleinda164342017-04-19 14:33:58 -04002133 .long 0x4d40c932 // ld1r {v18.4s}, [x9]
Mike Klein44375172017-04-17 19:32:05 -04002134 .long 0xaa0803e9 // mov x9, x8
Mike Kleinda164342017-04-19 14:33:58 -04002135 .long 0xbd400d11 // ldr s17, [x8, #12]
Mike Klein44375172017-04-17 19:32:05 -04002136 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002137 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
Mike Klein44375172017-04-17 19:32:05 -04002138 .long 0x9100210a // add x10, x8, #0x8
2139 .long 0x4d40c954 // ld1r {v20.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04002140 .long 0x4f911070 // fmla v16.4s, v3.4s, v17.s[0]
Mike Klein44375172017-04-17 19:32:05 -04002141 .long 0xbd400135 // ldr s21, [x9]
Mike Kleinda164342017-04-19 14:33:58 -04002142 .long 0x52b85f09 // mov w9, #0xc2f80000
2143 .long 0x728e6ee9 // movk w9, #0x7377
Mike Klein44375172017-04-17 19:32:05 -04002144 .long 0x4e040d37 // dup v23.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002145 .long 0x52a7f7e9 // mov w9, #0x3fbf0000
Mike Klein44375172017-04-17 19:32:05 -04002146 .long 0x7297eea9 // movk w9, #0xbf75
Mike Kleinda164342017-04-19 14:33:58 -04002147 .long 0x4f951074 // fmla v20.4s, v3.4s, v21.s[0]
2148 .long 0x6e23e643 // fcmge v3.4s, v18.4s, v3.4s
2149 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002150 .long 0x52a7d689 // mov w9, #0x3eb40000
Mike Kleinda164342017-04-19 14:33:58 -04002151 .long 0x4f03d7f1 // movi v17.4s, #0x7f, msl #16
Mike Klein44375172017-04-17 19:32:05 -04002152 .long 0x72889f29 // movk w9, #0x44f9
Mike Kleinda164342017-04-19 14:33:58 -04002153 .long 0x4e21da95 // scvtf v21.4s, v20.4s
2154 .long 0x4e311e91 // and v17.16b, v20.16b, v17.16b
Mike Klein44375172017-04-17 19:32:05 -04002155 .long 0x4e040d34 // dup v20.4s, w9
Mike Kleinda164342017-04-19 14:33:58 -04002156 .long 0x52a7fb89 // mov w9, #0x3fdc0000
2157 .long 0x4e35ced7 // fmla v23.4s, v22.4s, v21.4s
2158 .long 0x729d3469 // movk w9, #0xe9a3
2159 .long 0x4f0177f1 // orr v17.4s, #0x3f, lsl #24
2160 .long 0x4eb2ce37 // fmls v23.4s, v17.4s, v18.4s
2161 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002162 .long 0x52a85e49 // mov w9, #0x42f20000
2163 .long 0x72918a29 // movk w9, #0x8c51
Mike Kleinda164342017-04-19 14:33:58 -04002164 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2165 .long 0x4e040d34 // dup v20.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002166 .long 0x52a7f7c9 // mov w9, #0x3fbe0000
2167 .long 0x729791a9 // movk w9, #0xbc8d
Mike Kleinda164342017-04-19 14:33:58 -04002168 .long 0x6e31fe51 // fdiv v17.4s, v18.4s, v17.4s
2169 .long 0x4e040d32 // dup v18.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002170 .long 0x52a81349 // mov w9, #0x409a0000
Mike Kleinda164342017-04-19 14:33:58 -04002171 .long 0x4eb1d6f1 // fsub v17.4s, v23.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002172 .long 0x729ebf09 // movk w9, #0xf5f8
Mike Kleinda164342017-04-19 14:33:58 -04002173 .long 0x6e31de71 // fmul v17.4s, v19.4s, v17.4s
2174 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002175 .long 0x52a83ba9 // mov w9, #0x41dd0000
Mike Kleinda164342017-04-19 14:33:58 -04002176 .long 0x4e219a33 // frintm v19.4s, v17.4s
Mike Klein44375172017-04-17 19:32:05 -04002177 .long 0x729a5fc9 // movk w9, #0xd2fe
Mike Kleinda164342017-04-19 14:33:58 -04002178 .long 0x4e34d634 // fadd v20.4s, v17.4s, v20.4s
2179 .long 0x4eb3d631 // fsub v17.4s, v17.4s, v19.4s
2180 .long 0x4eb2ce34 // fmls v20.4s, v17.4s, v18.4s
2181 .long 0x4eb1d6b1 // fsub v17.4s, v21.4s, v17.4s
2182 .long 0x4e040d35 // dup v21.4s, w9
Mike Klein44375172017-04-17 19:32:05 -04002183 .long 0x91005108 // add x8, x8, #0x14
Mike Kleinda164342017-04-19 14:33:58 -04002184 .long 0x6e31feb1 // fdiv v17.4s, v21.4s, v17.4s
2185 .long 0x4e31d691 // fadd v17.4s, v20.4s, v17.4s
2186 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
2187 .long 0x4f026573 // movi v19.4s, #0x4b, lsl #24
2188 .long 0x6e33de31 // fmul v17.4s, v17.4s, v19.4s
Mike Klein44375172017-04-17 19:32:05 -04002189 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2190 .long 0xf9400423 // ldr x3, [x1, #8]
Mike Kleinda164342017-04-19 14:33:58 -04002191 .long 0x4e34d631 // fadd v17.4s, v17.4s, v20.4s
2192 .long 0x6f00e412 // movi v18.2d, #0x0
Mike Klein44375172017-04-17 19:32:05 -04002193 .long 0x6e711e03 // bsl v3.16b, v16.16b, v17.16b
Mike Kleinda164342017-04-19 14:33:58 -04002194 .long 0x4f03f615 // fmov v21.4s, #1.000000000000000000e+00
2195 .long 0x4e32f463 // fmax v3.4s, v3.4s, v18.4s
2196 .long 0x4eb5f463 // fmin v3.4s, v3.4s, v21.4s
Mike Klein44375172017-04-17 19:32:05 -04002197 .long 0x91004021 // add x1, x1, #0x10
2198 .long 0xd61f0060 // br x3
2199
Mike Klein7c4af542017-03-29 18:21:14 -04002200HIDDEN _sk_load_a8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002201.globl _sk_load_a8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002202FUNCTION(_sk_load_a8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002203_sk_load_a8_aarch64:
2204 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2205 .long 0x52a77009 // mov w9, #0x3b800000
2206 .long 0x72901029 // movk w9, #0x8081
2207 .long 0x4e040d22 // dup v2.4s, w9
2208 .long 0xf9400108 // ldr x8, [x8]
2209 .long 0x6f00e400 // movi v0.2d, #0x0
2210 .long 0x6f00e401 // movi v1.2d, #0x0
2211 .long 0x8b000108 // add x8, x8, x0
2212 .long 0x3940010a // ldrb w10, [x8]
2213 .long 0x3940050b // ldrb w11, [x8, #1]
2214 .long 0x3940090c // ldrb w12, [x8, #2]
2215 .long 0x39400d08 // ldrb w8, [x8, #3]
2216 .long 0x4e021d43 // mov v3.h[0], w10
2217 .long 0x4e061d63 // mov v3.h[1], w11
2218 .long 0x4e0a1d83 // mov v3.h[2], w12
2219 .long 0x4e0e1d03 // mov v3.h[3], w8
2220 .long 0x2f10a463 // uxtl v3.4s, v3.4h
2221 .long 0x6e21d863 // ucvtf v3.4s, v3.4s
2222 .long 0x6e22dc63 // fmul v3.4s, v3.4s, v2.4s
2223 .long 0x6f00e402 // movi v2.2d, #0x0
2224 .long 0xd61f0060 // br x3
2225
Mike Klein21bd3e42017-04-06 16:32:29 -04002226HIDDEN _sk_gather_a8_aarch64
2227.globl _sk_gather_a8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002228FUNCTION(_sk_gather_a8_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002229_sk_gather_a8_aarch64:
2230 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2231 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2232 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2233 .long 0x91004109 // add x9, x8, #0x10
2234 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2235 .long 0xf9400108 // ldr x8, [x8]
2236 .long 0x52a77009 // mov w9, #0x3b800000
2237 .long 0x72901029 // movk w9, #0x8081
2238 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2239 .long 0x1e26000c // fmov w12, s0
2240 .long 0x4e040d23 // dup v3.4s, w9
2241 .long 0x0e0c3c09 // mov w9, v0.s[1]
2242 .long 0x386c490c // ldrb w12, [x8, w12, uxtw]
2243 .long 0x0e143c0a // mov w10, v0.s[2]
2244 .long 0x38694909 // ldrb w9, [x8, w9, uxtw]
2245 .long 0x0e1c3c0b // mov w11, v0.s[3]
2246 .long 0x386a490a // ldrb w10, [x8, w10, uxtw]
2247 .long 0x386b4908 // ldrb w8, [x8, w11, uxtw]
2248 .long 0x4e021d82 // mov v2.h[0], w12
2249 .long 0x4e061d22 // mov v2.h[1], w9
2250 .long 0x4e0a1d42 // mov v2.h[2], w10
2251 .long 0x4e0e1d02 // mov v2.h[3], w8
2252 .long 0x2f07b7e2 // bic v2.4h, #0xff, lsl #8
2253 .long 0x2f10a442 // uxtl v2.4s, v2.4h
2254 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
2255 .long 0x6f00e400 // movi v0.2d, #0x0
2256 .long 0x6f00e401 // movi v1.2d, #0x0
2257 .long 0x6e23dc43 // fmul v3.4s, v2.4s, v3.4s
2258 .long 0x6f00e402 // movi v2.2d, #0x0
2259 .long 0xd61f0060 // br x3
2260
Mike Klein7c4af542017-03-29 18:21:14 -04002261HIDDEN _sk_store_a8_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002262.globl _sk_store_a8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002263FUNCTION(_sk_store_a8_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002264_sk_store_a8_aarch64:
2265 .long 0xf9400028 // ldr x8, [x1]
2266 .long 0x52a86fe9 // mov w9, #0x437f0000
2267 .long 0x4e040d30 // dup v16.4s, w9
2268 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
2269 .long 0xf9400108 // ldr x8, [x8]
2270 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2271 .long 0x0e612a10 // xtn v16.4h, v16.4s
2272 .long 0x0e0e3e09 // umov w9, v16.h[3]
2273 .long 0x8b000108 // add x8, x8, x0
2274 .long 0x39000d09 // strb w9, [x8, #3]
2275 .long 0x0e0a3e09 // umov w9, v16.h[2]
2276 .long 0x39000909 // strb w9, [x8, #2]
2277 .long 0x0e063e09 // umov w9, v16.h[1]
2278 .long 0x39000509 // strb w9, [x8, #1]
2279 .long 0x0e023e09 // umov w9, v16.h[0]
2280 .long 0x39000109 // strb w9, [x8]
2281 .long 0xf9400423 // ldr x3, [x1, #8]
2282 .long 0x91004021 // add x1, x1, #0x10
2283 .long 0xd61f0060 // br x3
2284
Mike Kleinf809fef2017-03-31 13:52:45 -04002285HIDDEN _sk_load_g8_aarch64
2286.globl _sk_load_g8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002287FUNCTION(_sk_load_g8_aarch64)
Mike Kleinf809fef2017-03-31 13:52:45 -04002288_sk_load_g8_aarch64:
2289 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2290 .long 0x52a77009 // mov w9, #0x3b800000
2291 .long 0x72901029 // movk w9, #0x8081
2292 .long 0x4e040d20 // dup v0.4s, w9
2293 .long 0xf9400108 // ldr x8, [x8]
2294 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2295 .long 0x8b000108 // add x8, x8, x0
2296 .long 0x3940010a // ldrb w10, [x8]
2297 .long 0x39400509 // ldrb w9, [x8, #1]
2298 .long 0x3940090b // ldrb w11, [x8, #2]
2299 .long 0x39400d08 // ldrb w8, [x8, #3]
2300 .long 0x4e021d41 // mov v1.h[0], w10
2301 .long 0x4e061d21 // mov v1.h[1], w9
2302 .long 0x4e0a1d61 // mov v1.h[2], w11
2303 .long 0x4e0e1d01 // mov v1.h[3], w8
2304 .long 0x2f10a421 // uxtl v1.4s, v1.4h
2305 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
2306 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2307 .long 0x4ea01c01 // mov v1.16b, v0.16b
2308 .long 0x4ea01c02 // mov v2.16b, v0.16b
2309 .long 0xd61f0060 // br x3
2310
Mike Klein21bd3e42017-04-06 16:32:29 -04002311HIDDEN _sk_gather_g8_aarch64
2312.globl _sk_gather_g8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002313FUNCTION(_sk_gather_g8_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002314_sk_gather_g8_aarch64:
2315 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2316 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2317 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2318 .long 0x91004109 // add x9, x8, #0x10
2319 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2320 .long 0xf9400108 // ldr x8, [x8]
2321 .long 0x52a77009 // mov w9, #0x3b800000
2322 .long 0x72901029 // movk w9, #0x8081
2323 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2324 .long 0x1e26000c // fmov w12, s0
2325 .long 0x4e040d23 // dup v3.4s, w9
2326 .long 0x0e0c3c09 // mov w9, v0.s[1]
2327 .long 0x386c490c // ldrb w12, [x8, w12, uxtw]
2328 .long 0x0e143c0a // mov w10, v0.s[2]
2329 .long 0x38694909 // ldrb w9, [x8, w9, uxtw]
2330 .long 0x0e1c3c0b // mov w11, v0.s[3]
2331 .long 0x386a490a // ldrb w10, [x8, w10, uxtw]
2332 .long 0x386b4908 // ldrb w8, [x8, w11, uxtw]
2333 .long 0x4e021d80 // mov v0.h[0], w12
2334 .long 0x4e061d20 // mov v0.h[1], w9
2335 .long 0x4e0a1d40 // mov v0.h[2], w10
2336 .long 0x4e0e1d00 // mov v0.h[3], w8
2337 .long 0x2f07b7e0 // bic v0.4h, #0xff, lsl #8
2338 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2339 .long 0x6e21d800 // ucvtf v0.4s, v0.4s
2340 .long 0x6e23dc00 // fmul v0.4s, v0.4s, v3.4s
2341 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2342 .long 0x4ea01c01 // mov v1.16b, v0.16b
2343 .long 0x4ea01c02 // mov v2.16b, v0.16b
2344 .long 0xd61f0060 // br x3
2345
Mike Klein7d3d8722017-04-06 17:53:18 -04002346HIDDEN _sk_gather_i8_aarch64
2347.globl _sk_gather_i8_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002348FUNCTION(_sk_gather_i8_aarch64)
Mike Klein7d3d8722017-04-06 17:53:18 -04002349_sk_gather_i8_aarch64:
2350 .long 0xaa0103e8 // mov x8, x1
2351 .long 0xf8408429 // ldr x9, [x1], #8
Mike Kleinda164342017-04-19 14:33:58 -04002352 .long 0xb4000069 // cbz x9, 1f40 <sk_gather_i8_aarch64+0x14>
Mike Klein7d3d8722017-04-06 17:53:18 -04002353 .long 0xaa0903ea // mov x10, x9
Mike Kleinda164342017-04-19 14:33:58 -04002354 .long 0x14000003 // b 1f48 <sk_gather_i8_aarch64+0x1c>
Mike Klein7d3d8722017-04-06 17:53:18 -04002355 .long 0xf940050a // ldr x10, [x8, #8]
2356 .long 0x91004101 // add x1, x8, #0x10
2357 .long 0xf8410548 // ldr x8, [x10], #16
2358 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2359 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2360 .long 0xf9400529 // ldr x9, [x9, #8]
2361 .long 0x4d40c942 // ld1r {v2.4s}, [x10]
2362 .long 0x6f00e623 // movi v3.2d, #0xff000000ff
2363 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2364 .long 0x1e26000d // fmov w13, s0
2365 .long 0x0e0c3c0a // mov w10, v0.s[1]
2366 .long 0x386d490d // ldrb w13, [x8, w13, uxtw]
2367 .long 0x0e143c0b // mov w11, v0.s[2]
2368 .long 0x386a490a // ldrb w10, [x8, w10, uxtw]
2369 .long 0x0e1c3c0c // mov w12, v0.s[3]
2370 .long 0x386b490b // ldrb w11, [x8, w11, uxtw]
2371 .long 0x386c4908 // ldrb w8, [x8, w12, uxtw]
2372 .long 0x4e021da0 // mov v0.h[0], w13
2373 .long 0x4e061d40 // mov v0.h[1], w10
2374 .long 0x4e0a1d60 // mov v0.h[2], w11
2375 .long 0x4e0e1d00 // mov v0.h[3], w8
2376 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2377 .long 0x4e231c00 // and v0.16b, v0.16b, v3.16b
2378 .long 0x1e26000c // fmov w12, s0
2379 .long 0x8b2c492c // add x12, x9, w12, uxtw #2
2380 .long 0x0e0c3c08 // mov w8, v0.s[1]
2381 .long 0x0e143c0a // mov w10, v0.s[2]
2382 .long 0x0e1c3c0b // mov w11, v0.s[3]
2383 .long 0x0d408180 // ld1 {v0.s}[0], [x12]
2384 .long 0x8b284928 // add x8, x9, w8, uxtw #2
2385 .long 0xb86a592a // ldr w10, [x9, w10, uxtw #2]
2386 .long 0x52a7700c // mov w12, #0x3b800000
2387 .long 0x0d409100 // ld1 {v0.s}[1], [x8]
2388 .long 0xb86b5928 // ldr w8, [x9, w11, uxtw #2]
2389 .long 0x7290102c // movk w12, #0x8081
2390 .long 0xf8408423 // ldr x3, [x1], #8
2391 .long 0x4e141d40 // mov v0.s[2], w10
2392 .long 0x4e1c1d00 // mov v0.s[3], w8
2393 .long 0x4e231c01 // and v1.16b, v0.16b, v3.16b
2394 .long 0x6f380402 // ushr v2.4s, v0.4s, #8
2395 .long 0x6f300411 // ushr v17.4s, v0.4s, #16
2396 .long 0x4e040d90 // dup v16.4s, w12
2397 .long 0x6f280400 // ushr v0.4s, v0.4s, #24
2398 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2399 .long 0x4e231c42 // and v2.16b, v2.16b, v3.16b
2400 .long 0x4e231e23 // and v3.16b, v17.16b, v3.16b
2401 .long 0x4e21d811 // scvtf v17.4s, v0.4s
2402 .long 0x6e30dc20 // fmul v0.4s, v1.4s, v16.4s
2403 .long 0x4e21d841 // scvtf v1.4s, v2.4s
2404 .long 0x4e21d862 // scvtf v2.4s, v3.4s
2405 .long 0x6e30dc21 // fmul v1.4s, v1.4s, v16.4s
2406 .long 0x6e30dc42 // fmul v2.4s, v2.4s, v16.4s
2407 .long 0x6e30de23 // fmul v3.4s, v17.4s, v16.4s
2408 .long 0xd61f0060 // br x3
2409
Mike Klein7c4af542017-03-29 18:21:14 -04002410HIDDEN _sk_load_565_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002411.globl _sk_load_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002412FUNCTION(_sk_load_565_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002413_sk_load_565_aarch64:
2414 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2415 .long 0xd37ff809 // lsl x9, x0, #1
2416 .long 0x4f072701 // movi v1.4s, #0xf8, lsl #8
2417 .long 0x4f0007e3 // movi v3.4s, #0x1f
2418 .long 0xf9400108 // ldr x8, [x8]
2419 .long 0xfc696900 // ldr d0, [x8, x9]
2420 .long 0x321b17e8 // orr w8, wzr, #0x7e0
2421 .long 0x4e040d02 // dup v2.4s, w8
2422 .long 0x52a6f088 // mov w8, #0x37840000
2423 .long 0x72842108 // movk w8, #0x2108
2424 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2425 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2426 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2427 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2428 .long 0x4e040d00 // dup v0.4s, w8
2429 .long 0x52a74048 // mov w8, #0x3a020000
2430 .long 0x72810428 // movk w8, #0x821
2431 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2432 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2433 .long 0x4e040d01 // dup v1.4s, w8
2434 .long 0x52a7a088 // mov w8, #0x3d040000
2435 .long 0x72842108 // movk w8, #0x2108
2436 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2437 .long 0x6e21dc41 // fmul v1.4s, v2.4s, v1.4s
2438 .long 0x4e040d02 // dup v2.4s, w8
2439 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2440 .long 0x6e22dc62 // fmul v2.4s, v3.4s, v2.4s
2441 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2442 .long 0xd61f0060 // br x3
2443
Mike Klein21bd3e42017-04-06 16:32:29 -04002444HIDDEN _sk_gather_565_aarch64
2445.globl _sk_gather_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002446FUNCTION(_sk_gather_565_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002447_sk_gather_565_aarch64:
2448 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2449 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2450 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2451 .long 0x91004109 // add x9, x8, #0x10
2452 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2453 .long 0xf9400108 // ldr x8, [x8]
2454 .long 0x321b17e9 // orr w9, wzr, #0x7e0
2455 .long 0x4e040d23 // dup v3.4s, w9
2456 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2457 .long 0x1e26000c // fmov w12, s0
2458 .long 0x0e0c3c09 // mov w9, v0.s[1]
2459 .long 0x8b2c450c // add x12, x8, w12, uxtw #1
2460 .long 0x0e143c0a // mov w10, v0.s[2]
2461 .long 0x0e1c3c0b // mov w11, v0.s[3]
2462 .long 0x0d404180 // ld1 {v0.h}[0], [x12]
2463 .long 0x78695909 // ldrh w9, [x8, w9, uxtw #1]
2464 .long 0x786a590a // ldrh w10, [x8, w10, uxtw #1]
2465 .long 0x786b5908 // ldrh w8, [x8, w11, uxtw #1]
2466 .long 0x4f072701 // movi v1.4s, #0xf8, lsl #8
2467 .long 0x4e061d20 // mov v0.h[1], w9
2468 .long 0x4e0a1d40 // mov v0.h[2], w10
2469 .long 0x4e0e1d00 // mov v0.h[3], w8
2470 .long 0x52a6f08b // mov w11, #0x37840000
2471 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2472 .long 0x7284210b // movk w11, #0x2108
2473 .long 0x52a74049 // mov w9, #0x3a020000
2474 .long 0x4f0007e2 // movi v2.4s, #0x1f
2475 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2476 .long 0x72810429 // movk w9, #0x821
2477 .long 0x52a7a08a // mov w10, #0x3d040000
2478 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2479 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2480 .long 0x4e040d60 // dup v0.4s, w11
2481 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2482 .long 0x7284210a // movk w10, #0x2108
2483 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2484 .long 0x4e040d21 // dup v1.4s, w9
2485 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2486 .long 0x6e21dc61 // fmul v1.4s, v3.4s, v1.4s
2487 .long 0x4e040d43 // dup v3.4s, w10
2488 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2489 .long 0x6e23dc42 // fmul v2.4s, v2.4s, v3.4s
2490 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2491 .long 0xd61f0060 // br x3
2492
Mike Klein7c4af542017-03-29 18:21:14 -04002493HIDDEN _sk_store_565_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002494.globl _sk_store_565_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002495FUNCTION(_sk_store_565_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002496_sk_store_565_aarch64:
2497 .long 0xf9400028 // ldr x8, [x1]
2498 .long 0x52a84f8a // mov w10, #0x427c0000
2499 .long 0x4f01f7f0 // fmov v16.4s, #3.100000000000000000e+01
2500 .long 0x4e040d52 // dup v18.4s, w10
2501 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
2502 .long 0x6e32dc32 // fmul v18.4s, v1.4s, v18.4s
2503 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2504 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2505 .long 0x6e30dc50 // fmul v16.4s, v2.4s, v16.4s
2506 .long 0x4f2b5631 // shl v17.4s, v17.4s, #11
2507 .long 0xf9400108 // ldr x8, [x8]
2508 .long 0x4f255652 // shl v18.4s, v18.4s, #5
2509 .long 0x4eb11e51 // orr v17.16b, v18.16b, v17.16b
2510 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2511 .long 0x4eb01e30 // orr v16.16b, v17.16b, v16.16b
2512 .long 0xd37ff809 // lsl x9, x0, #1
2513 .long 0x0e612a10 // xtn v16.4h, v16.4s
2514 .long 0xfc296910 // str d16, [x8, x9]
2515 .long 0xf9400423 // ldr x3, [x1, #8]
2516 .long 0x91004021 // add x1, x1, #0x10
2517 .long 0xd61f0060 // br x3
2518
Mike Kleinf809fef2017-03-31 13:52:45 -04002519HIDDEN _sk_load_4444_aarch64
2520.globl _sk_load_4444_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002521FUNCTION(_sk_load_4444_aarch64)
Mike Kleinf809fef2017-03-31 13:52:45 -04002522_sk_load_4444_aarch64:
2523 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2524 .long 0xd37ff809 // lsl x9, x0, #1
2525 .long 0x4f072601 // movi v1.4s, #0xf0, lsl #8
2526 .long 0x4f0025e2 // movi v2.4s, #0xf, lsl #8
2527 .long 0xf9400108 // ldr x8, [x8]
2528 .long 0x4f070603 // movi v3.4s, #0xf0
2529 .long 0x4f0005f0 // movi v16.4s, #0xf
2530 .long 0xfc696900 // ldr d0, [x8, x9]
2531 .long 0x52a6f108 // mov w8, #0x37880000
2532 .long 0x72911128 // movk w8, #0x8889
2533 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2534 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2535 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2536 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2537 .long 0x4e301c10 // and v16.16b, v0.16b, v16.16b
2538 .long 0x4e040d00 // dup v0.4s, w8
2539 .long 0x52a73108 // mov w8, #0x39880000
2540 .long 0x72911128 // movk w8, #0x8889
2541 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2542 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2543 .long 0x4e040d01 // dup v1.4s, w8
2544 .long 0x52a77108 // mov w8, #0x3b880000
2545 .long 0x72911128 // movk w8, #0x8889
2546 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2547 .long 0x6e21dc41 // fmul v1.4s, v2.4s, v1.4s
2548 .long 0x4e040d02 // dup v2.4s, w8
2549 .long 0x52a7b108 // mov w8, #0x3d880000
2550 .long 0x72911128 // movk w8, #0x8889
2551 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2552 .long 0x6e22dc62 // fmul v2.4s, v3.4s, v2.4s
2553 .long 0x4e040d03 // dup v3.4s, w8
2554 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2555 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
2556 .long 0xd61f0060 // br x3
2557
Mike Klein21bd3e42017-04-06 16:32:29 -04002558HIDDEN _sk_gather_4444_aarch64
2559.globl _sk_gather_4444_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002560FUNCTION(_sk_gather_4444_aarch64)
Mike Klein21bd3e42017-04-06 16:32:29 -04002561_sk_gather_4444_aarch64:
2562 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2563 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2564 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2565 .long 0x4f070603 // movi v3.4s, #0xf0
2566 .long 0x91004109 // add x9, x8, #0x10
2567 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2568 .long 0xf9400108 // ldr x8, [x8]
2569 .long 0x4f0005f0 // movi v16.4s, #0xf
2570 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2571 .long 0x1e26000c // fmov w12, s0
2572 .long 0x0e0c3c09 // mov w9, v0.s[1]
2573 .long 0x8b2c450c // add x12, x8, w12, uxtw #1
2574 .long 0x0e143c0a // mov w10, v0.s[2]
2575 .long 0x0e1c3c0b // mov w11, v0.s[3]
2576 .long 0x0d404180 // ld1 {v0.h}[0], [x12]
2577 .long 0x78695909 // ldrh w9, [x8, w9, uxtw #1]
2578 .long 0x786a590a // ldrh w10, [x8, w10, uxtw #1]
2579 .long 0x786b5908 // ldrh w8, [x8, w11, uxtw #1]
2580 .long 0x4f072601 // movi v1.4s, #0xf0, lsl #8
2581 .long 0x4e061d20 // mov v0.h[1], w9
2582 .long 0x4e0a1d40 // mov v0.h[2], w10
2583 .long 0x4e0e1d00 // mov v0.h[3], w8
2584 .long 0x52a6f10b // mov w11, #0x37880000
2585 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2586 .long 0x7291112b // movk w11, #0x8889
2587 .long 0x4f0025e2 // movi v2.4s, #0xf, lsl #8
2588 .long 0x52a73109 // mov w9, #0x39880000
2589 .long 0x4e211c01 // and v1.16b, v0.16b, v1.16b
2590 .long 0x72911129 // movk w9, #0x8889
2591 .long 0x52a7710a // mov w10, #0x3b880000
2592 .long 0x4e221c02 // and v2.16b, v0.16b, v2.16b
2593 .long 0x4e231c03 // and v3.16b, v0.16b, v3.16b
2594 .long 0x4e301c10 // and v16.16b, v0.16b, v16.16b
2595 .long 0x4e040d60 // dup v0.4s, w11
2596 .long 0x4e21d821 // scvtf v1.4s, v1.4s
2597 .long 0x7291112a // movk w10, #0x8889
2598 .long 0x52a7b108 // mov w8, #0x3d880000
2599 .long 0x6e20dc20 // fmul v0.4s, v1.4s, v0.4s
2600 .long 0x4e040d21 // dup v1.4s, w9
2601 .long 0x4e21d842 // scvtf v2.4s, v2.4s
2602 .long 0x72911128 // movk w8, #0x8889
2603 .long 0x6e21dc41 // fmul v1.4s, v2.4s, v1.4s
2604 .long 0x4e040d42 // dup v2.4s, w10
2605 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2606 .long 0x6e22dc62 // fmul v2.4s, v3.4s, v2.4s
2607 .long 0x4e040d03 // dup v3.4s, w8
2608 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2609 .long 0x6e23de03 // fmul v3.4s, v16.4s, v3.4s
2610 .long 0xd61f0060 // br x3
2611
Mike Kleinf809fef2017-03-31 13:52:45 -04002612HIDDEN _sk_store_4444_aarch64
2613.globl _sk_store_4444_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002614FUNCTION(_sk_store_4444_aarch64)
Mike Kleinf809fef2017-03-31 13:52:45 -04002615_sk_store_4444_aarch64:
2616 .long 0x4f01f5d0 // fmov v16.4s, #1.500000000000000000e+01
2617 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
2618 .long 0x6e30dc32 // fmul v18.4s, v1.4s, v16.4s
2619 .long 0xf9400028 // ldr x8, [x1]
2620 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2621 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2622 .long 0x4f2c5631 // shl v17.4s, v17.4s, #12
2623 .long 0x4f285652 // shl v18.4s, v18.4s, #8
2624 .long 0x4eb11e51 // orr v17.16b, v18.16b, v17.16b
2625 .long 0x6e30dc52 // fmul v18.4s, v2.4s, v16.4s
2626 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2627 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
2628 .long 0x4f245652 // shl v18.4s, v18.4s, #4
2629 .long 0xf9400108 // ldr x8, [x8]
2630 .long 0x4eb21e31 // orr v17.16b, v17.16b, v18.16b
2631 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2632 .long 0x4eb01e30 // orr v16.16b, v17.16b, v16.16b
2633 .long 0xd37ff809 // lsl x9, x0, #1
2634 .long 0x0e612a10 // xtn v16.4h, v16.4s
2635 .long 0xfc296910 // str d16, [x8, x9]
2636 .long 0xf9400423 // ldr x3, [x1, #8]
2637 .long 0x91004021 // add x1, x1, #0x10
2638 .long 0xd61f0060 // br x3
2639
Mike Klein7c4af542017-03-29 18:21:14 -04002640HIDDEN _sk_load_8888_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002641.globl _sk_load_8888_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002642FUNCTION(_sk_load_8888_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002643_sk_load_8888_aarch64:
2644 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2645 .long 0xd37ef409 // lsl x9, x0, #2
2646 .long 0x6f00e621 // movi v1.2d, #0xff000000ff
2647 .long 0xf9400108 // ldr x8, [x8]
2648 .long 0x3ce96900 // ldr q0, [x8, x9]
2649 .long 0x52a77008 // mov w8, #0x3b800000
2650 .long 0x72901028 // movk w8, #0x8081
2651 .long 0x4e040d02 // dup v2.4s, w8
2652 .long 0x6f380410 // ushr v16.4s, v0.4s, #8
2653 .long 0x6f300411 // ushr v17.4s, v0.4s, #16
2654 .long 0x4e211c03 // and v3.16b, v0.16b, v1.16b
2655 .long 0x6f280400 // ushr v0.4s, v0.4s, #24
2656 .long 0x4e211e10 // and v16.16b, v16.16b, v1.16b
2657 .long 0x4e211e21 // and v1.16b, v17.16b, v1.16b
2658 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2659 .long 0x4e21d811 // scvtf v17.4s, v0.4s
2660 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2661 .long 0x4e21d832 // scvtf v18.4s, v1.4s
2662 .long 0x6e22dc60 // fmul v0.4s, v3.4s, v2.4s
2663 .long 0x6e22de23 // fmul v3.4s, v17.4s, v2.4s
2664 .long 0x6e22de01 // fmul v1.4s, v16.4s, v2.4s
2665 .long 0x6e22de42 // fmul v2.4s, v18.4s, v2.4s
2666 .long 0xd61f0060 // br x3
2667
Mike Kleindec4ea82017-04-06 15:04:05 -04002668HIDDEN _sk_gather_8888_aarch64
2669.globl _sk_gather_8888_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002670FUNCTION(_sk_gather_8888_aarch64)
Mike Kleindec4ea82017-04-06 15:04:05 -04002671_sk_gather_8888_aarch64:
2672 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2673 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2674 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2675 .long 0x91004109 // add x9, x8, #0x10
2676 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2677 .long 0xf9400108 // ldr x8, [x8]
2678 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2679 .long 0x1e26000c // fmov w12, s0
2680 .long 0x8b2c490c // add x12, x8, w12, uxtw #2
2681 .long 0x0e0c3c09 // mov w9, v0.s[1]
2682 .long 0x0e143c0a // mov w10, v0.s[2]
2683 .long 0x0e1c3c0b // mov w11, v0.s[3]
2684 .long 0x0d408180 // ld1 {v0.s}[0], [x12]
2685 .long 0x8b294909 // add x9, x8, w9, uxtw #2
2686 .long 0xb86a590a // ldr w10, [x8, w10, uxtw #2]
2687 .long 0xb86b5908 // ldr w8, [x8, w11, uxtw #2]
2688 .long 0x0d409120 // ld1 {v0.s}[1], [x9]
2689 .long 0x6f00e621 // movi v1.2d, #0xff000000ff
2690 .long 0x52a77009 // mov w9, #0x3b800000
2691 .long 0x72901029 // movk w9, #0x8081
2692 .long 0x4e141d40 // mov v0.s[2], w10
2693 .long 0x4e1c1d00 // mov v0.s[3], w8
2694 .long 0x6f380410 // ushr v16.4s, v0.4s, #8
2695 .long 0x6f300411 // ushr v17.4s, v0.4s, #16
2696 .long 0x4e211c03 // and v3.16b, v0.16b, v1.16b
2697 .long 0x6f280400 // ushr v0.4s, v0.4s, #24
2698 .long 0x4e211e10 // and v16.16b, v16.16b, v1.16b
2699 .long 0x4e211e21 // and v1.16b, v17.16b, v1.16b
2700 .long 0x4e040d22 // dup v2.4s, w9
2701 .long 0x4e21d863 // scvtf v3.4s, v3.4s
2702 .long 0x4e21d811 // scvtf v17.4s, v0.4s
2703 .long 0x4e21da10 // scvtf v16.4s, v16.4s
2704 .long 0x4e21d832 // scvtf v18.4s, v1.4s
2705 .long 0x6e22dc60 // fmul v0.4s, v3.4s, v2.4s
2706 .long 0x6e22de23 // fmul v3.4s, v17.4s, v2.4s
2707 .long 0x6e22de01 // fmul v1.4s, v16.4s, v2.4s
2708 .long 0x6e22de42 // fmul v2.4s, v18.4s, v2.4s
2709 .long 0xd61f0060 // br x3
2710
Mike Klein7c4af542017-03-29 18:21:14 -04002711HIDDEN _sk_store_8888_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002712.globl _sk_store_8888_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002713FUNCTION(_sk_store_8888_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002714_sk_store_8888_aarch64:
2715 .long 0x52a86fea // mov w10, #0x437f0000
2716 .long 0x4e040d50 // dup v16.4s, w10
2717 .long 0xf9400028 // ldr x8, [x1]
2718 .long 0x6e30dc32 // fmul v18.4s, v1.4s, v16.4s
2719 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
2720 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2721 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2722 .long 0x4f285652 // shl v18.4s, v18.4s, #8
2723 .long 0x4eb11e51 // orr v17.16b, v18.16b, v17.16b
2724 .long 0x6e30dc52 // fmul v18.4s, v2.4s, v16.4s
2725 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
2726 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2727 .long 0xf9400108 // ldr x8, [x8]
2728 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2729 .long 0x4f305652 // shl v18.4s, v18.4s, #16
2730 .long 0x4eb21e31 // orr v17.16b, v17.16b, v18.16b
2731 .long 0x4f385610 // shl v16.4s, v16.4s, #24
2732 .long 0xd37ef409 // lsl x9, x0, #2
2733 .long 0x4eb01e30 // orr v16.16b, v17.16b, v16.16b
2734 .long 0x3ca96910 // str q16, [x8, x9]
2735 .long 0xf9400423 // ldr x3, [x1, #8]
2736 .long 0x91004021 // add x1, x1, #0x10
2737 .long 0xd61f0060 // br x3
2738
Mike Klein7c4af542017-03-29 18:21:14 -04002739HIDDEN _sk_load_f16_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002740.globl _sk_load_f16_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002741FUNCTION(_sk_load_f16_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002742_sk_load_f16_aarch64:
2743 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2744 .long 0xf9400108 // ldr x8, [x8]
2745 .long 0x8b000d08 // add x8, x8, x0, lsl #3
2746 .long 0x0c400510 // ld4 {v16.4h-v19.4h}, [x8]
2747 .long 0x0e217a00 // fcvtl v0.4s, v16.4h
2748 .long 0x0e217a21 // fcvtl v1.4s, v17.4h
2749 .long 0x0e217a42 // fcvtl v2.4s, v18.4h
2750 .long 0x0e217a63 // fcvtl v3.4s, v19.4h
2751 .long 0xd61f0060 // br x3
2752
Mike Klein5f055f02017-04-06 20:02:11 -04002753HIDDEN _sk_gather_f16_aarch64
2754.globl _sk_gather_f16_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002755FUNCTION(_sk_gather_f16_aarch64)
Mike Klein5f055f02017-04-06 20:02:11 -04002756_sk_gather_f16_aarch64:
2757 .long 0xa9bf7bfd // stp x29, x30, [sp, #-16]!
2758 .long 0xd100c3e9 // sub x9, sp, #0x30
2759 .long 0x910003fd // mov x29, sp
2760 .long 0x927be93f // and sp, x9, #0xffffffffffffffe0
2761 .long 0xf9400028 // ldr x8, [x1]
2762 .long 0x4ea1b821 // fcvtzs v1.4s, v1.4s
2763 .long 0x4ea1b800 // fcvtzs v0.4s, v0.4s
2764 .long 0x91004109 // add x9, x8, #0x10
2765 .long 0x4d40c922 // ld1r {v2.4s}, [x9]
2766 .long 0xf9400108 // ldr x8, [x8]
2767 .long 0x4ea19440 // mla v0.4s, v2.4s, v1.4s
2768 .long 0x0e143c0a // mov w10, v0.s[2]
2769 .long 0x1e26000c // fmov w12, s0
2770 .long 0x8b2c4d0c // add x12, x8, w12, uxtw #3
2771 .long 0x8b2a4d0a // add x10, x8, w10, uxtw #3
2772 .long 0x0e0c3c09 // mov w9, v0.s[1]
2773 .long 0x0e1c3c0b // mov w11, v0.s[3]
2774 .long 0x0d408540 // ld1 {v0.d}[0], [x10]
2775 .long 0x0d408581 // ld1 {v1.d}[0], [x12]
2776 .long 0x8b294d09 // add x9, x8, w9, uxtw #3
2777 .long 0x8b2b4d08 // add x8, x8, w11, uxtw #3
2778 .long 0x4d408500 // ld1 {v0.d}[1], [x8]
2779 .long 0x4d408521 // ld1 {v1.d}[1], [x9]
2780 .long 0x910003e8 // mov x8, sp
2781 .long 0xad0003e1 // stp q1, q0, [sp]
2782 .long 0x0c400510 // ld4 {v16.4h-v19.4h}, [x8]
2783 .long 0xf9400428 // ldr x8, [x1, #8]
2784 .long 0x91004021 // add x1, x1, #0x10
2785 .long 0x0e217a00 // fcvtl v0.4s, v16.4h
2786 .long 0x0e217a21 // fcvtl v1.4s, v17.4h
2787 .long 0x0e217a42 // fcvtl v2.4s, v18.4h
2788 .long 0x0e217a63 // fcvtl v3.4s, v19.4h
2789 .long 0xd63f0100 // blr x8
2790 .long 0x910003bf // mov sp, x29
2791 .long 0xa8c17bfd // ldp x29, x30, [sp], #16
2792 .long 0xd65f03c0 // ret
2793
Mike Klein7c4af542017-03-29 18:21:14 -04002794HIDDEN _sk_store_f16_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002795.globl _sk_store_f16_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002796FUNCTION(_sk_store_f16_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002797_sk_store_f16_aarch64:
2798 .long 0xf9400028 // ldr x8, [x1]
2799 .long 0x0e216810 // fcvtn v16.4h, v0.4s
2800 .long 0x0e216831 // fcvtn v17.4h, v1.4s
2801 .long 0x0e216852 // fcvtn v18.4h, v2.4s
2802 .long 0xf9400108 // ldr x8, [x8]
2803 .long 0x0e216873 // fcvtn v19.4h, v3.4s
2804 .long 0x8b000d08 // add x8, x8, x0, lsl #3
2805 .long 0x0c000510 // st4 {v16.4h-v19.4h}, [x8]
2806 .long 0xf9400423 // ldr x3, [x1, #8]
2807 .long 0x91004021 // add x1, x1, #0x10
2808 .long 0xd61f0060 // br x3
2809
Mike Klein3146bb92017-04-05 14:45:02 -04002810HIDDEN _sk_load_u16_be_aarch64
2811.globl _sk_load_u16_be_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002812FUNCTION(_sk_load_u16_be_aarch64)
Mike Klein3146bb92017-04-05 14:45:02 -04002813_sk_load_u16_be_aarch64:
2814 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2815 .long 0xf9400108 // ldr x8, [x8]
2816 .long 0x8b000d08 // add x8, x8, x0, lsl #3
2817 .long 0x0c400500 // ld4 {v0.4h-v3.4h}, [x8]
2818 .long 0x52a6f008 // mov w8, #0x37800000
2819 .long 0x72801008 // movk w8, #0x80
2820 .long 0x0f185410 // shl v16.4h, v0.4h, #8
2821 .long 0x2f180411 // ushr v17.4h, v0.4h, #8
2822 .long 0x0f185432 // shl v18.4h, v1.4h, #8
2823 .long 0x2f180433 // ushr v19.4h, v1.4h, #8
2824 .long 0x0f185454 // shl v20.4h, v2.4h, #8
2825 .long 0x2f180455 // ushr v21.4h, v2.4h, #8
2826 .long 0x0f185476 // shl v22.4h, v3.4h, #8
2827 .long 0x2f180460 // ushr v0.4h, v3.4h, #8
2828 .long 0x0eb11e01 // orr v1.8b, v16.8b, v17.8b
2829 .long 0x0eb31e42 // orr v2.8b, v18.8b, v19.8b
2830 .long 0x0eb51e90 // orr v16.8b, v20.8b, v21.8b
2831 .long 0x0ea01ec0 // orr v0.8b, v22.8b, v0.8b
2832 .long 0x2f10a421 // uxtl v1.4s, v1.4h
2833 .long 0x2f10a442 // uxtl v2.4s, v2.4h
2834 .long 0x2f10a610 // uxtl v16.4s, v16.4h
2835 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2836 .long 0x4e040d03 // dup v3.4s, w8
2837 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
2838 .long 0x6e21d842 // ucvtf v2.4s, v2.4s
2839 .long 0x6e21da10 // ucvtf v16.4s, v16.4s
2840 .long 0x6e21d811 // ucvtf v17.4s, v0.4s
2841 .long 0x6e23dc20 // fmul v0.4s, v1.4s, v3.4s
2842 .long 0x6e23dc41 // fmul v1.4s, v2.4s, v3.4s
2843 .long 0x6e23de02 // fmul v2.4s, v16.4s, v3.4s
2844 .long 0x6e23de23 // fmul v3.4s, v17.4s, v3.4s
2845 .long 0xd61f0060 // br x3
2846
Mike Kleinb3821732017-04-17 10:58:05 -04002847HIDDEN _sk_load_rgb_u16_be_aarch64
2848.globl _sk_load_rgb_u16_be_aarch64
2849FUNCTION(_sk_load_rgb_u16_be_aarch64)
2850_sk_load_rgb_u16_be_aarch64:
2851 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2852 .long 0x321f07e9 // orr w9, wzr, #0x6
2853 .long 0xf9400108 // ldr x8, [x8]
2854 .long 0x9b092008 // madd x8, x0, x9, x8
2855 .long 0x0c404500 // ld3 {v0.4h-v2.4h}, [x8]
2856 .long 0x52a6f008 // mov w8, #0x37800000
2857 .long 0x72801008 // movk w8, #0x80
2858 .long 0x0f185403 // shl v3.4h, v0.4h, #8
2859 .long 0x2f180410 // ushr v16.4h, v0.4h, #8
2860 .long 0x0f185431 // shl v17.4h, v1.4h, #8
2861 .long 0x2f180432 // ushr v18.4h, v1.4h, #8
2862 .long 0x0f185453 // shl v19.4h, v2.4h, #8
2863 .long 0x2f180440 // ushr v0.4h, v2.4h, #8
2864 .long 0x0eb01c61 // orr v1.8b, v3.8b, v16.8b
2865 .long 0x0eb21e23 // orr v3.8b, v17.8b, v18.8b
2866 .long 0x0ea01e60 // orr v0.8b, v19.8b, v0.8b
2867 .long 0x2f10a421 // uxtl v1.4s, v1.4h
2868 .long 0x2f10a463 // uxtl v3.4s, v3.4h
2869 .long 0x2f10a400 // uxtl v0.4s, v0.4h
2870 .long 0x4e040d02 // dup v2.4s, w8
2871 .long 0x6e21d821 // ucvtf v1.4s, v1.4s
2872 .long 0x6e21d863 // ucvtf v3.4s, v3.4s
2873 .long 0x6e21d810 // ucvtf v16.4s, v0.4s
2874 .long 0x6e22dc20 // fmul v0.4s, v1.4s, v2.4s
2875 .long 0x6e22dc61 // fmul v1.4s, v3.4s, v2.4s
2876 .long 0x6e22de02 // fmul v2.4s, v16.4s, v2.4s
2877 .long 0x4f03f603 // fmov v3.4s, #1.000000000000000000e+00
2878 .long 0xd61f0060 // br x3
2879
Mike Klein3146bb92017-04-05 14:45:02 -04002880HIDDEN _sk_store_u16_be_aarch64
2881.globl _sk_store_u16_be_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002882FUNCTION(_sk_store_u16_be_aarch64)
Mike Klein3146bb92017-04-05 14:45:02 -04002883_sk_store_u16_be_aarch64:
2884 .long 0x52a8efe9 // mov w9, #0x477f0000
2885 .long 0x729fe009 // movk w9, #0xff00
2886 .long 0x4e040d30 // dup v16.4s, w9
2887 .long 0x6e30dc11 // fmul v17.4s, v0.4s, v16.4s
2888 .long 0xf9400028 // ldr x8, [x1]
2889 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2890 .long 0x0e612a31 // xtn v17.4h, v17.4s
2891 .long 0x6e30dc32 // fmul v18.4s, v1.4s, v16.4s
2892 .long 0x0f185633 // shl v19.4h, v17.4h, #8
2893 .long 0x2f180631 // ushr v17.4h, v17.4h, #8
2894 .long 0x6e21aa52 // fcvtnu v18.4s, v18.4s
2895 .long 0x0eb11e75 // orr v21.8b, v19.8b, v17.8b
2896 .long 0x6e30dc51 // fmul v17.4s, v2.4s, v16.4s
2897 .long 0x0e612a52 // xtn v18.4h, v18.4s
2898 .long 0x6e30dc70 // fmul v16.4s, v3.4s, v16.4s
2899 .long 0x6e21aa31 // fcvtnu v17.4s, v17.4s
2900 .long 0xf9400108 // ldr x8, [x8]
2901 .long 0x0f185654 // shl v20.4h, v18.4h, #8
2902 .long 0x2f180652 // ushr v18.4h, v18.4h, #8
2903 .long 0x6e21aa10 // fcvtnu v16.4s, v16.4s
2904 .long 0x0e612a31 // xtn v17.4h, v17.4s
2905 .long 0x0eb21e96 // orr v22.8b, v20.8b, v18.8b
2906 .long 0x0e612a10 // xtn v16.4h, v16.4s
2907 .long 0x0f185632 // shl v18.4h, v17.4h, #8
2908 .long 0x2f180631 // ushr v17.4h, v17.4h, #8
2909 .long 0x0eb11e57 // orr v23.8b, v18.8b, v17.8b
2910 .long 0x0f185611 // shl v17.4h, v16.4h, #8
2911 .long 0x2f180610 // ushr v16.4h, v16.4h, #8
2912 .long 0x8b000d08 // add x8, x8, x0, lsl #3
2913 .long 0x0eb01e38 // orr v24.8b, v17.8b, v16.8b
2914 .long 0x0c000515 // st4 {v21.4h-v24.4h}, [x8]
2915 .long 0xf9400423 // ldr x3, [x1, #8]
2916 .long 0x91004021 // add x1, x1, #0x10
2917 .long 0xd61f0060 // br x3
2918
Mike Klein14987eb2017-04-06 10:22:26 -04002919HIDDEN _sk_load_f32_aarch64
2920.globl _sk_load_f32_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002921FUNCTION(_sk_load_f32_aarch64)
Mike Klein14987eb2017-04-06 10:22:26 -04002922_sk_load_f32_aarch64:
2923 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2924 .long 0xf9400108 // ldr x8, [x8]
2925 .long 0x8b001108 // add x8, x8, x0, lsl #4
2926 .long 0x4c400900 // ld4 {v0.4s-v3.4s}, [x8]
2927 .long 0xd61f0060 // br x3
2928
Mike Klein7c4af542017-03-29 18:21:14 -04002929HIDDEN _sk_store_f32_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002930.globl _sk_store_f32_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002931FUNCTION(_sk_store_f32_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002932_sk_store_f32_aarch64:
2933 .long 0xf9400028 // ldr x8, [x1]
2934 .long 0xf9400108 // ldr x8, [x8]
2935 .long 0x8b001108 // add x8, x8, x0, lsl #4
2936 .long 0x4c000900 // st4 {v0.4s-v3.4s}, [x8]
2937 .long 0xf9400423 // ldr x3, [x1, #8]
2938 .long 0x91004021 // add x1, x1, #0x10
2939 .long 0xd61f0060 // br x3
2940
Mike Klein7c4af542017-03-29 18:21:14 -04002941HIDDEN _sk_clamp_x_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002942.globl _sk_clamp_x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002943FUNCTION(_sk_clamp_x_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002944_sk_clamp_x_aarch64:
2945 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2946 .long 0x6f00e411 // movi v17.2d, #0x0
2947 .long 0x4e20f620 // fmax v0.4s, v17.4s, v0.4s
2948 .long 0x6f07e7f1 // movi v17.2d, #0xffffffffffffffff
2949 .long 0x4d40c910 // ld1r {v16.4s}, [x8]
2950 .long 0x4eb18610 // add v16.4s, v16.4s, v17.4s
2951 .long 0x4eb0f400 // fmin v0.4s, v0.4s, v16.4s
2952 .long 0xd61f0060 // br x3
2953
Mike Klein7c4af542017-03-29 18:21:14 -04002954HIDDEN _sk_clamp_y_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002955.globl _sk_clamp_y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002956FUNCTION(_sk_clamp_y_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002957_sk_clamp_y_aarch64:
2958 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2959 .long 0x6f00e411 // movi v17.2d, #0x0
2960 .long 0x4e21f621 // fmax v1.4s, v17.4s, v1.4s
2961 .long 0x6f07e7f1 // movi v17.2d, #0xffffffffffffffff
2962 .long 0x4d40c910 // ld1r {v16.4s}, [x8]
2963 .long 0x4eb18610 // add v16.4s, v16.4s, v17.4s
2964 .long 0x4eb0f421 // fmin v1.4s, v1.4s, v16.4s
2965 .long 0xd61f0060 // br x3
2966
Mike Klein7c4af542017-03-29 18:21:14 -04002967HIDDEN _sk_repeat_x_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002968.globl _sk_repeat_x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002969FUNCTION(_sk_repeat_x_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002970_sk_repeat_x_aarch64:
2971 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2972 .long 0x6f07e7f1 // movi v17.2d, #0xffffffffffffffff
2973 .long 0xbd400110 // ldr s16, [x8]
2974 .long 0x4e040612 // dup v18.4s, v16.s[0]
2975 .long 0x4eb18651 // add v17.4s, v18.4s, v17.4s
2976 .long 0x6e32fc12 // fdiv v18.4s, v0.4s, v18.4s
2977 .long 0x4e219a52 // frintm v18.4s, v18.4s
2978 .long 0x4f905240 // fmls v0.4s, v18.4s, v16.s[0]
2979 .long 0x4eb1f400 // fmin v0.4s, v0.4s, v17.4s
2980 .long 0xd61f0060 // br x3
2981
Mike Klein7c4af542017-03-29 18:21:14 -04002982HIDDEN _sk_repeat_y_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002983.globl _sk_repeat_y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002984FUNCTION(_sk_repeat_y_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04002985_sk_repeat_y_aarch64:
2986 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
2987 .long 0x6f07e7f1 // movi v17.2d, #0xffffffffffffffff
2988 .long 0xbd400110 // ldr s16, [x8]
2989 .long 0x4e040612 // dup v18.4s, v16.s[0]
2990 .long 0x4eb18651 // add v17.4s, v18.4s, v17.4s
2991 .long 0x6e32fc32 // fdiv v18.4s, v1.4s, v18.4s
2992 .long 0x4e219a52 // frintm v18.4s, v18.4s
2993 .long 0x4f905241 // fmls v1.4s, v18.4s, v16.s[0]
2994 .long 0x4eb1f421 // fmin v1.4s, v1.4s, v17.4s
2995 .long 0xd61f0060 // br x3
2996
Mike Klein7c4af542017-03-29 18:21:14 -04002997HIDDEN _sk_mirror_x_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04002998.globl _sk_mirror_x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04002999FUNCTION(_sk_mirror_x_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003000_sk_mirror_x_aarch64:
3001 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3002 .long 0xbd400110 // ldr s16, [x8]
3003 .long 0x4e040611 // dup v17.4s, v16.s[0]
3004 .long 0x1e302a10 // fadd s16, s16, s16
3005 .long 0x4eb1d400 // fsub v0.4s, v0.4s, v17.4s
3006 .long 0x4e040612 // dup v18.4s, v16.s[0]
3007 .long 0x6e32fc12 // fdiv v18.4s, v0.4s, v18.4s
3008 .long 0x4e219a52 // frintm v18.4s, v18.4s
3009 .long 0x4f905240 // fmls v0.4s, v18.4s, v16.s[0]
3010 .long 0x6f07e7f0 // movi v16.2d, #0xffffffffffffffff
3011 .long 0x4eb1d400 // fsub v0.4s, v0.4s, v17.4s
3012 .long 0x4eb08630 // add v16.4s, v17.4s, v16.4s
3013 .long 0x4ea0f800 // fabs v0.4s, v0.4s
3014 .long 0x4eb0f400 // fmin v0.4s, v0.4s, v16.4s
3015 .long 0xd61f0060 // br x3
3016
Mike Klein7c4af542017-03-29 18:21:14 -04003017HIDDEN _sk_mirror_y_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003018.globl _sk_mirror_y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003019FUNCTION(_sk_mirror_y_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003020_sk_mirror_y_aarch64:
3021 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3022 .long 0xbd400110 // ldr s16, [x8]
3023 .long 0x4e040611 // dup v17.4s, v16.s[0]
3024 .long 0x1e302a10 // fadd s16, s16, s16
3025 .long 0x4eb1d421 // fsub v1.4s, v1.4s, v17.4s
3026 .long 0x4e040612 // dup v18.4s, v16.s[0]
3027 .long 0x6e32fc32 // fdiv v18.4s, v1.4s, v18.4s
3028 .long 0x4e219a52 // frintm v18.4s, v18.4s
3029 .long 0x4f905241 // fmls v1.4s, v18.4s, v16.s[0]
3030 .long 0x6f07e7f0 // movi v16.2d, #0xffffffffffffffff
3031 .long 0x4eb1d421 // fsub v1.4s, v1.4s, v17.4s
3032 .long 0x4eb08630 // add v16.4s, v17.4s, v16.4s
3033 .long 0x4ea0f821 // fabs v1.4s, v1.4s
3034 .long 0x4eb0f421 // fmin v1.4s, v1.4s, v16.4s
3035 .long 0xd61f0060 // br x3
3036
Mike Klein7c4af542017-03-29 18:21:14 -04003037HIDDEN _sk_luminance_to_alpha_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003038.globl _sk_luminance_to_alpha_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003039FUNCTION(_sk_luminance_to_alpha_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003040_sk_luminance_to_alpha_aarch64:
3041 .long 0x52a7cb28 // mov w8, #0x3e590000
3042 .long 0x72967a08 // movk w8, #0xb3d0
3043 .long 0x4e040d11 // dup v17.4s, w8
3044 .long 0x52a7e6e8 // mov w8, #0x3f370000
3045 .long 0x7282eb28 // movk w8, #0x1759
3046 .long 0x4ea01c10 // mov v16.16b, v0.16b
3047 .long 0x4e040d00 // dup v0.4s, w8
3048 .long 0x52a7b268 // mov w8, #0x3d930000
3049 .long 0xf8408423 // ldr x3, [x1], #8
3050 .long 0x729bb308 // movk w8, #0xdd98
3051 .long 0x6e20dc23 // fmul v3.4s, v1.4s, v0.4s
3052 .long 0x4e30ce23 // fmla v3.4s, v17.4s, v16.4s
3053 .long 0x4e040d10 // dup v16.4s, w8
3054 .long 0x6f00e400 // movi v0.2d, #0x0
3055 .long 0x6f00e401 // movi v1.2d, #0x0
3056 .long 0x4e22ce03 // fmla v3.4s, v16.4s, v2.4s
3057 .long 0x6f00e402 // movi v2.2d, #0x0
3058 .long 0xd61f0060 // br x3
3059
Mike Klein7c4af542017-03-29 18:21:14 -04003060HIDDEN _sk_matrix_2x3_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003061.globl _sk_matrix_2x3_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003062FUNCTION(_sk_matrix_2x3_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003063_sk_matrix_2x3_aarch64:
3064 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3065 .long 0xaa0803e9 // mov x9, x8
3066 .long 0x9100410a // add x10, x8, #0x10
3067 .long 0x4ddfc932 // ld1r {v18.4s}, [x9], #4
3068 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
3069 .long 0x2d415113 // ldp s19, s20, [x8, #8]
3070 .long 0x9100510a // add x10, x8, #0x14
3071 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
3072 .long 0x4f931030 // fmla v16.4s, v1.4s, v19.s[0]
3073 .long 0xbd400133 // ldr s19, [x9]
3074 .long 0x4f941031 // fmla v17.4s, v1.4s, v20.s[0]
3075 .long 0x4e20ce50 // fmla v16.4s, v18.4s, v0.4s
3076 .long 0x4f931011 // fmla v17.4s, v0.4s, v19.s[0]
3077 .long 0x4eb01e00 // mov v0.16b, v16.16b
3078 .long 0x4eb11e21 // mov v1.16b, v17.16b
3079 .long 0xd61f0060 // br x3
3080
Mike Klein7c4af542017-03-29 18:21:14 -04003081HIDDEN _sk_matrix_3x4_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003082.globl _sk_matrix_3x4_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003083FUNCTION(_sk_matrix_3x4_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003084_sk_matrix_3x4_aarch64:
3085 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3086 .long 0xaa0803e9 // mov x9, x8
3087 .long 0x9100910a // add x10, x8, #0x24
3088 .long 0x4ddfc933 // ld1r {v19.4s}, [x9], #4
3089 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
3090 .long 0x9100a10a // add x10, x8, #0x28
3091 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
3092 .long 0x9100b10a // add x10, x8, #0x2c
3093 .long 0x2d435514 // ldp s20, s21, [x8, #24]
3094 .long 0xbd402116 // ldr s22, [x8, #32]
3095 .long 0x4d40c952 // ld1r {v18.4s}, [x10]
3096 .long 0x4f941050 // fmla v16.4s, v2.4s, v20.s[0]
3097 .long 0x4f951051 // fmla v17.4s, v2.4s, v21.s[0]
3098 .long 0x4f961052 // fmla v18.4s, v2.4s, v22.s[0]
3099 .long 0x2d425502 // ldp s2, s21, [x8, #16]
3100 .long 0x2d415d14 // ldp s20, s23, [x8, #8]
3101 .long 0x4f821031 // fmla v17.4s, v1.4s, v2.s[0]
3102 .long 0xbd400122 // ldr s2, [x9]
3103 .long 0x4f971030 // fmla v16.4s, v1.4s, v23.s[0]
3104 .long 0x4f951032 // fmla v18.4s, v1.4s, v21.s[0]
3105 .long 0x4e20ce70 // fmla v16.4s, v19.4s, v0.4s
3106 .long 0x4f941012 // fmla v18.4s, v0.4s, v20.s[0]
3107 .long 0x4f821011 // fmla v17.4s, v0.4s, v2.s[0]
3108 .long 0x4eb01e00 // mov v0.16b, v16.16b
3109 .long 0x4eb11e21 // mov v1.16b, v17.16b
3110 .long 0x4eb21e42 // mov v2.16b, v18.16b
3111 .long 0xd61f0060 // br x3
3112
Mike Klein7c4af542017-03-29 18:21:14 -04003113HIDDEN _sk_matrix_4x5_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003114.globl _sk_matrix_4x5_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003115FUNCTION(_sk_matrix_4x5_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003116_sk_matrix_4x5_aarch64:
3117 .long 0xf9400029 // ldr x9, [x1]
3118 .long 0xaa0903e8 // mov x8, x9
3119 .long 0x9101012a // add x10, x9, #0x40
3120 .long 0x4ddfc914 // ld1r {v20.4s}, [x8], #4
3121 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
3122 .long 0x9101112a // add x10, x9, #0x44
3123 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
3124 .long 0x9101212a // add x10, x9, #0x48
3125 .long 0x4d40c952 // ld1r {v18.4s}, [x10]
3126 .long 0x2d465533 // ldp s19, s21, [x9, #48]
3127 .long 0x2d475d36 // ldp s22, s23, [x9, #56]
3128 .long 0x9101312a // add x10, x9, #0x4c
3129 .long 0xf9400423 // ldr x3, [x1, #8]
3130 .long 0x4f931070 // fmla v16.4s, v3.4s, v19.s[0]
3131 .long 0x4d40c953 // ld1r {v19.4s}, [x10]
3132 .long 0x4f951071 // fmla v17.4s, v3.4s, v21.s[0]
3133 .long 0x4f961072 // fmla v18.4s, v3.4s, v22.s[0]
3134 .long 0x2d445935 // ldp s21, s22, [x9, #32]
3135 .long 0x4f971073 // fmla v19.4s, v3.4s, v23.s[0]
3136 .long 0x2d455d23 // ldp s3, s23, [x9, #40]
3137 .long 0x91004021 // add x1, x1, #0x10
3138 .long 0x4f951050 // fmla v16.4s, v2.4s, v21.s[0]
3139 .long 0x4f961051 // fmla v17.4s, v2.4s, v22.s[0]
3140 .long 0x2d425935 // ldp s21, s22, [x9, #16]
3141 .long 0x4f971053 // fmla v19.4s, v2.4s, v23.s[0]
3142 .long 0x4f831052 // fmla v18.4s, v2.4s, v3.s[0]
3143 .long 0x2d410d22 // ldp s2, s3, [x9, #8]
3144 .long 0x4f951030 // fmla v16.4s, v1.4s, v21.s[0]
3145 .long 0x2d435d35 // ldp s21, s23, [x9, #24]
3146 .long 0x4f961031 // fmla v17.4s, v1.4s, v22.s[0]
3147 .long 0xbd400116 // ldr s22, [x8]
3148 .long 0x4e20ce90 // fmla v16.4s, v20.4s, v0.4s
3149 .long 0x4f951032 // fmla v18.4s, v1.4s, v21.s[0]
3150 .long 0x4f971033 // fmla v19.4s, v1.4s, v23.s[0]
3151 .long 0x4f821012 // fmla v18.4s, v0.4s, v2.s[0]
3152 .long 0x4f831013 // fmla v19.4s, v0.4s, v3.s[0]
3153 .long 0x4f961011 // fmla v17.4s, v0.4s, v22.s[0]
3154 .long 0x4eb01e00 // mov v0.16b, v16.16b
3155 .long 0x4eb11e21 // mov v1.16b, v17.16b
3156 .long 0x4eb21e42 // mov v2.16b, v18.16b
3157 .long 0x4eb31e63 // mov v3.16b, v19.16b
3158 .long 0xd61f0060 // br x3
3159
Mike Klein7c4af542017-03-29 18:21:14 -04003160HIDDEN _sk_matrix_perspective_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003161.globl _sk_matrix_perspective_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003162FUNCTION(_sk_matrix_perspective_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003163_sk_matrix_perspective_aarch64:
3164 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3165 .long 0xaa0803e9 // mov x9, x8
3166 .long 0x9100510a // add x10, x8, #0x14
3167 .long 0x4ddfc930 // ld1r {v16.4s}, [x9], #4
3168 .long 0x4d40c951 // ld1r {v17.4s}, [x10]
3169 .long 0x9100810a // add x10, x8, #0x20
3170 .long 0x4d40c952 // ld1r {v18.4s}, [x10]
3171 .long 0x2d41d113 // ldp s19, s20, [x8, #12]
3172 .long 0x2d435915 // ldp s21, s22, [x8, #24]
3173 .long 0x91002108 // add x8, x8, #0x8
3174 .long 0x4f941031 // fmla v17.4s, v1.4s, v20.s[0]
3175 .long 0x4d40c914 // ld1r {v20.4s}, [x8]
3176 .long 0x4f961032 // fmla v18.4s, v1.4s, v22.s[0]
3177 .long 0xbd400136 // ldr s22, [x9]
3178 .long 0x4f951012 // fmla v18.4s, v0.4s, v21.s[0]
3179 .long 0x4f931011 // fmla v17.4s, v0.4s, v19.s[0]
3180 .long 0x4f961034 // fmla v20.4s, v1.4s, v22.s[0]
3181 .long 0x4ea1da41 // frecpe v1.4s, v18.4s
3182 .long 0x4e21fe52 // frecps v18.4s, v18.4s, v1.4s
3183 .long 0x6e32dc32 // fmul v18.4s, v1.4s, v18.4s
3184 .long 0x4e20ce14 // fmla v20.4s, v16.4s, v0.4s
3185 .long 0x6e32de21 // fmul v1.4s, v17.4s, v18.4s
3186 .long 0x6e32de80 // fmul v0.4s, v20.4s, v18.4s
3187 .long 0xd61f0060 // br x3
3188
Herb Derby7b4202d2017-04-10 10:52:34 -04003189HIDDEN _sk_linear_gradient_aarch64
3190.globl _sk_linear_gradient_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003191FUNCTION(_sk_linear_gradient_aarch64)
Herb Derby7b4202d2017-04-10 10:52:34 -04003192_sk_linear_gradient_aarch64:
3193 .long 0xf9400029 // ldr x9, [x1]
3194 .long 0x91004128 // add x8, x9, #0x10
3195 .long 0x9100512a // add x10, x9, #0x14
3196 .long 0x4d40c910 // ld1r {v16.4s}, [x8]
3197 .long 0x91006128 // add x8, x9, #0x18
3198 .long 0x4d40c941 // ld1r {v1.4s}, [x10]
3199 .long 0x9100712a // add x10, x9, #0x1c
3200 .long 0x4d40c902 // ld1r {v2.4s}, [x8]
3201 .long 0xf9400128 // ldr x8, [x9]
3202 .long 0x4d40c943 // ld1r {v3.4s}, [x10]
Mike Kleinda164342017-04-19 14:33:58 -04003203 .long 0xb40006c8 // cbz x8, 2b14 <sk_linear_gradient_aarch64+0x100>
Herb Derby7b4202d2017-04-10 10:52:34 -04003204 .long 0x6dbf23e9 // stp d9, d8, [sp, #-16]!
3205 .long 0xf9400529 // ldr x9, [x9, #8]
3206 .long 0x6f00e413 // movi v19.2d, #0x0
3207 .long 0x6f00e411 // movi v17.2d, #0x0
3208 .long 0x6f00e412 // movi v18.2d, #0x0
3209 .long 0x91004129 // add x9, x9, #0x10
3210 .long 0x6f00e414 // movi v20.2d, #0x0
3211 .long 0xd100412a // sub x10, x9, #0x10
3212 .long 0x4d40c955 // ld1r {v21.4s}, [x10]
3213 .long 0xd100312b // sub x11, x9, #0xc
3214 .long 0xd100212a // sub x10, x9, #0x8
3215 .long 0x4d40c976 // ld1r {v22.4s}, [x11]
3216 .long 0xd100112b // sub x11, x9, #0x4
3217 .long 0x4d40c957 // ld1r {v23.4s}, [x10]
3218 .long 0xaa0903ea // mov x10, x9
3219 .long 0x4d40c978 // ld1r {v24.4s}, [x11]
3220 .long 0x4ddfc959 // ld1r {v25.4s}, [x10], #4
3221 .long 0x9100412b // add x11, x9, #0x10
3222 .long 0x4ea31c7b // mov v27.16b, v3.16b
3223 .long 0x6ea0e6a3 // fcmgt v3.4s, v21.4s, v0.4s
3224 .long 0x4d40c97a // ld1r {v26.4s}, [x11]
3225 .long 0x4eb41e95 // mov v21.16b, v20.16b
3226 .long 0x4ea31c74 // mov v20.16b, v3.16b
3227 .long 0x9100212b // add x11, x9, #0x8
3228 .long 0x4eb31e69 // mov v9.16b, v19.16b
3229 .long 0x4ea31c73 // mov v19.16b, v3.16b
3230 .long 0x6e771eb4 // bsl v20.16b, v21.16b, v23.16b
3231 .long 0x4d40c975 // ld1r {v21.4s}, [x11]
3232 .long 0x9100312b // add x11, x9, #0xc
3233 .long 0x6e761d33 // bsl v19.16b, v9.16b, v22.16b
3234 .long 0x4d40c976 // ld1r {v22.4s}, [x11]
3235 .long 0x4d40c957 // ld1r {v23.4s}, [x10]
3236 .long 0x4eb21e5c // mov v28.16b, v18.16b
3237 .long 0x4eb11e3d // mov v29.16b, v17.16b
3238 .long 0x4eb01e1e // mov v30.16b, v16.16b
3239 .long 0x4ea11c3f // mov v31.16b, v1.16b
3240 .long 0x4ea21c48 // mov v8.16b, v2.16b
3241 .long 0x4ea31c72 // mov v18.16b, v3.16b
3242 .long 0x4ea31c71 // mov v17.16b, v3.16b
3243 .long 0x4ea31c70 // mov v16.16b, v3.16b
3244 .long 0x4ea31c61 // mov v1.16b, v3.16b
3245 .long 0x4ea31c62 // mov v2.16b, v3.16b
3246 .long 0x6e7a1f63 // bsl v3.16b, v27.16b, v26.16b
3247 .long 0x6e781f92 // bsl v18.16b, v28.16b, v24.16b
3248 .long 0x6e791fb1 // bsl v17.16b, v29.16b, v25.16b
3249 .long 0x6e751fe1 // bsl v1.16b, v31.16b, v21.16b
3250 .long 0x6e761d02 // bsl v2.16b, v8.16b, v22.16b
3251 .long 0xd1000508 // sub x8, x8, #0x1
3252 .long 0x6e771fd0 // bsl v16.16b, v30.16b, v23.16b
3253 .long 0x91009129 // add x9, x9, #0x24
Mike Kleinda164342017-04-19 14:33:58 -04003254 .long 0xb5fffaa8 // cbnz x8, 2a5c <sk_linear_gradient_aarch64+0x48>
Herb Derby7b4202d2017-04-10 10:52:34 -04003255 .long 0x6cc123e9 // ldp d9, d8, [sp], #16
Mike Kleinda164342017-04-19 14:33:58 -04003256 .long 0x14000005 // b 2b24 <sk_linear_gradient_aarch64+0x110>
Herb Derby7b4202d2017-04-10 10:52:34 -04003257 .long 0x6f00e414 // movi v20.2d, #0x0
3258 .long 0x6f00e412 // movi v18.2d, #0x0
3259 .long 0x6f00e411 // movi v17.2d, #0x0
3260 .long 0x6f00e413 // movi v19.2d, #0x0
3261 .long 0xf9400423 // ldr x3, [x1, #8]
3262 .long 0x4e20ce70 // fmla v16.4s, v19.4s, v0.4s
3263 .long 0x4e20ce81 // fmla v1.4s, v20.4s, v0.4s
3264 .long 0x4e20ce42 // fmla v2.4s, v18.4s, v0.4s
3265 .long 0x4e20ce23 // fmla v3.4s, v17.4s, v0.4s
3266 .long 0x91004021 // add x1, x1, #0x10
3267 .long 0x4eb01e00 // mov v0.16b, v16.16b
3268 .long 0xd61f0060 // br x3
3269
Mike Klein7c4af542017-03-29 18:21:14 -04003270HIDDEN _sk_linear_gradient_2stops_aarch64
Mike Kleind7e06ae2017-03-29 16:33:06 -04003271.globl _sk_linear_gradient_2stops_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003272FUNCTION(_sk_linear_gradient_2stops_aarch64)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003273_sk_linear_gradient_2stops_aarch64:
3274 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
Mike Klein8a823fa2017-04-05 17:29:26 -04003275 .long 0xaa0803e9 // mov x9, x8
Herb Derby7b4202d2017-04-10 10:52:34 -04003276 .long 0x9100410a // add x10, x8, #0x10
3277 .long 0x4ddfc931 // ld1r {v17.4s}, [x9], #4
3278 .long 0x4d40c950 // ld1r {v16.4s}, [x10]
3279 .long 0x9100510a // add x10, x8, #0x14
3280 .long 0x4d40c941 // ld1r {v1.4s}, [x10]
3281 .long 0x9100610a // add x10, x8, #0x18
Mike Klein8a823fa2017-04-05 17:29:26 -04003282 .long 0x4d40c942 // ld1r {v2.4s}, [x10]
Herb Derby7b4202d2017-04-10 10:52:34 -04003283 .long 0x9100710a // add x10, x8, #0x1c
3284 .long 0x2d414d12 // ldp s18, s19, [x8, #8]
3285 .long 0x4d40c943 // ld1r {v3.4s}, [x10]
3286 .long 0x4e20ce30 // fmla v16.4s, v17.4s, v0.4s
3287 .long 0xbd400131 // ldr s17, [x9]
Mike Klein8a823fa2017-04-05 17:29:26 -04003288 .long 0x4f921002 // fmla v2.4s, v0.4s, v18.s[0]
3289 .long 0x4f931003 // fmla v3.4s, v0.4s, v19.s[0]
3290 .long 0x4f911001 // fmla v1.4s, v0.4s, v17.s[0]
Mike Kleind7e06ae2017-03-29 16:33:06 -04003291 .long 0x4eb01e00 // mov v0.16b, v16.16b
3292 .long 0xd61f0060 // br x3
Mike Klein0a904492017-04-12 12:52:48 -04003293
3294HIDDEN _sk_save_xy_aarch64
3295.globl _sk_save_xy_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003296FUNCTION(_sk_save_xy_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003297_sk_save_xy_aarch64:
3298 .long 0x4f0167f0 // movi v16.4s, #0x3f, lsl #24
3299 .long 0xf9400028 // ldr x8, [x1]
3300 .long 0x4e30d411 // fadd v17.4s, v0.4s, v16.4s
3301 .long 0x4e30d430 // fadd v16.4s, v1.4s, v16.4s
3302 .long 0x4e219a32 // frintm v18.4s, v17.4s
3303 .long 0x4eb2d631 // fsub v17.4s, v17.4s, v18.4s
3304 .long 0x4e219a12 // frintm v18.4s, v16.4s
3305 .long 0x4eb2d610 // fsub v16.4s, v16.4s, v18.4s
3306 .long 0x3d800100 // str q0, [x8]
3307 .long 0x3d800901 // str q1, [x8, #32]
3308 .long 0x3d801111 // str q17, [x8, #64]
3309 .long 0x3d801910 // str q16, [x8, #96]
3310 .long 0xf9400423 // ldr x3, [x1, #8]
3311 .long 0x91004021 // add x1, x1, #0x10
3312 .long 0xd61f0060 // br x3
3313
3314HIDDEN _sk_accumulate_aarch64
3315.globl _sk_accumulate_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003316FUNCTION(_sk_accumulate_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003317_sk_accumulate_aarch64:
3318 .long 0xa8c10c28 // ldp x8, x3, [x1], #16
3319 .long 0x3dc02110 // ldr q16, [x8, #128]
3320 .long 0x3dc02911 // ldr q17, [x8, #160]
3321 .long 0x6e31de10 // fmul v16.4s, v16.4s, v17.4s
3322 .long 0x4e30cc04 // fmla v4.4s, v0.4s, v16.4s
3323 .long 0x4e30cc25 // fmla v5.4s, v1.4s, v16.4s
3324 .long 0x4e30cc46 // fmla v6.4s, v2.4s, v16.4s
3325 .long 0x4e30cc67 // fmla v7.4s, v3.4s, v16.4s
3326 .long 0xd61f0060 // br x3
3327
3328HIDDEN _sk_bilinear_nx_aarch64
3329.globl _sk_bilinear_nx_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003330FUNCTION(_sk_bilinear_nx_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003331_sk_bilinear_nx_aarch64:
3332 .long 0xf9400028 // ldr x8, [x1]
3333 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
3334 .long 0x3dc01100 // ldr q0, [x8, #64]
3335 .long 0x3dc00110 // ldr q16, [x8]
3336 .long 0x4ea0d620 // fsub v0.4s, v17.4s, v0.4s
3337 .long 0x3d802100 // str q0, [x8, #128]
3338 .long 0xf9400423 // ldr x3, [x1, #8]
3339 .long 0x4f0567e0 // movi v0.4s, #0xbf, lsl #24
3340 .long 0x4e20d600 // fadd v0.4s, v16.4s, v0.4s
3341 .long 0x91004021 // add x1, x1, #0x10
3342 .long 0xd61f0060 // br x3
3343
3344HIDDEN _sk_bilinear_px_aarch64
3345.globl _sk_bilinear_px_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003346FUNCTION(_sk_bilinear_px_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003347_sk_bilinear_px_aarch64:
3348 .long 0xf9400028 // ldr x8, [x1]
3349 .long 0x3dc01100 // ldr q0, [x8, #64]
3350 .long 0x3dc00110 // ldr q16, [x8]
3351 .long 0x3d802100 // str q0, [x8, #128]
3352 .long 0xf9400423 // ldr x3, [x1, #8]
3353 .long 0x4f0167e0 // movi v0.4s, #0x3f, lsl #24
3354 .long 0x4e20d600 // fadd v0.4s, v16.4s, v0.4s
3355 .long 0x91004021 // add x1, x1, #0x10
3356 .long 0xd61f0060 // br x3
3357
3358HIDDEN _sk_bilinear_ny_aarch64
3359.globl _sk_bilinear_ny_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003360FUNCTION(_sk_bilinear_ny_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003361_sk_bilinear_ny_aarch64:
3362 .long 0xf9400028 // ldr x8, [x1]
3363 .long 0x4f03f611 // fmov v17.4s, #1.000000000000000000e+00
3364 .long 0x3dc01901 // ldr q1, [x8, #96]
3365 .long 0x3dc00910 // ldr q16, [x8, #32]
3366 .long 0x4ea1d621 // fsub v1.4s, v17.4s, v1.4s
3367 .long 0x3d802901 // str q1, [x8, #160]
3368 .long 0xf9400423 // ldr x3, [x1, #8]
3369 .long 0x4f0567e1 // movi v1.4s, #0xbf, lsl #24
3370 .long 0x4e21d601 // fadd v1.4s, v16.4s, v1.4s
3371 .long 0x91004021 // add x1, x1, #0x10
3372 .long 0xd61f0060 // br x3
3373
3374HIDDEN _sk_bilinear_py_aarch64
3375.globl _sk_bilinear_py_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003376FUNCTION(_sk_bilinear_py_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003377_sk_bilinear_py_aarch64:
3378 .long 0xf9400028 // ldr x8, [x1]
3379 .long 0x3dc01901 // ldr q1, [x8, #96]
3380 .long 0x3dc00910 // ldr q16, [x8, #32]
3381 .long 0x3d802901 // str q1, [x8, #160]
3382 .long 0xf9400423 // ldr x3, [x1, #8]
3383 .long 0x4f0167e1 // movi v1.4s, #0x3f, lsl #24
3384 .long 0x4e21d601 // fadd v1.4s, v16.4s, v1.4s
3385 .long 0x91004021 // add x1, x1, #0x10
3386 .long 0xd61f0060 // br x3
3387
3388HIDDEN _sk_bicubic_n3x_aarch64
3389.globl _sk_bicubic_n3x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003390FUNCTION(_sk_bicubic_n3x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003391_sk_bicubic_n3x_aarch64:
3392 .long 0xf9400028 // ldr x8, [x1]
3393 .long 0x52a7d8e9 // mov w9, #0x3ec70000
3394 .long 0x72838e49 // movk w9, #0x1c72
3395 .long 0x4e040d30 // dup v16.4s, w9
3396 .long 0x3dc01111 // ldr q17, [x8, #64]
3397 .long 0x52b7d549 // mov w9, #0xbeaa0000
3398 .long 0x4f03f600 // fmov v0.4s, #1.000000000000000000e+00
3399 .long 0x72955569 // movk w9, #0xaaab
3400 .long 0x4e040d32 // dup v18.4s, w9
3401 .long 0x4eb1d400 // fsub v0.4s, v0.4s, v17.4s
3402 .long 0x6e20dc11 // fmul v17.4s, v0.4s, v0.4s
3403 .long 0x4e20ce12 // fmla v18.4s, v16.4s, v0.4s
3404 .long 0x6e32de20 // fmul v0.4s, v17.4s, v18.4s
3405 .long 0x3dc00113 // ldr q19, [x8]
3406 .long 0x3d802100 // str q0, [x8, #128]
3407 .long 0xf9400423 // ldr x3, [x1, #8]
3408 .long 0x4f07f700 // fmov v0.4s, #-1.500000000000000000e+00
3409 .long 0x4e20d660 // fadd v0.4s, v19.4s, v0.4s
3410 .long 0x91004021 // add x1, x1, #0x10
3411 .long 0xd61f0060 // br x3
3412
3413HIDDEN _sk_bicubic_n1x_aarch64
3414.globl _sk_bicubic_n1x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003415FUNCTION(_sk_bicubic_n1x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003416_sk_bicubic_n1x_aarch64:
3417 .long 0xf9400028 // ldr x8, [x1]
3418 .long 0x52b7f2a9 // mov w9, #0xbf950000
3419 .long 0x4f03f600 // fmov v0.4s, #1.000000000000000000e+00
3420 .long 0x728aaaa9 // movk w9, #0x5555
3421 .long 0x3dc01110 // ldr q16, [x8, #64]
3422 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
3423 .long 0x4f0167f2 // movi v18.4s, #0x3f, lsl #24
3424 .long 0x4eb0d400 // fsub v0.4s, v0.4s, v16.4s
3425 .long 0x4e040d30 // dup v16.4s, w9
3426 .long 0x52a7ac69 // mov w9, #0x3d630000
3427 .long 0x7291c729 // movk w9, #0x8e39
3428 .long 0x4e20ce11 // fmla v17.4s, v16.4s, v0.4s
3429 .long 0x4e20ce32 // fmla v18.4s, v17.4s, v0.4s
3430 .long 0x4e040d31 // dup v17.4s, w9
3431 .long 0x4e20ce51 // fmla v17.4s, v18.4s, v0.4s
3432 .long 0x3dc00110 // ldr q16, [x8]
3433 .long 0x3d802111 // str q17, [x8, #128]
3434 .long 0xf9400423 // ldr x3, [x1, #8]
3435 .long 0x4f0567e0 // movi v0.4s, #0xbf, lsl #24
3436 .long 0x4e20d600 // fadd v0.4s, v16.4s, v0.4s
3437 .long 0x91004021 // add x1, x1, #0x10
3438 .long 0xd61f0060 // br x3
3439
3440HIDDEN _sk_bicubic_p1x_aarch64
3441.globl _sk_bicubic_p1x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003442FUNCTION(_sk_bicubic_p1x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003443_sk_bicubic_p1x_aarch64:
3444 .long 0xf9400028 // ldr x8, [x1]
3445 .long 0x52b7f2a9 // mov w9, #0xbf950000
3446 .long 0x728aaaa9 // movk w9, #0x5555
3447 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
3448 .long 0x3dc01112 // ldr q18, [x8, #64]
3449 .long 0x3dc00100 // ldr q0, [x8]
3450 .long 0x4e040d33 // dup v19.4s, w9
3451 .long 0x52a7ac69 // mov w9, #0x3d630000
3452 .long 0x4f0167f0 // movi v16.4s, #0x3f, lsl #24
3453 .long 0x7291c729 // movk w9, #0x8e39
3454 .long 0x4e32ce71 // fmla v17.4s, v19.4s, v18.4s
3455 .long 0x4e30d400 // fadd v0.4s, v0.4s, v16.4s
3456 .long 0x4e32ce30 // fmla v16.4s, v17.4s, v18.4s
3457 .long 0x4e040d31 // dup v17.4s, w9
3458 .long 0x4e32ce11 // fmla v17.4s, v16.4s, v18.4s
3459 .long 0x3d802111 // str q17, [x8, #128]
3460 .long 0xf9400423 // ldr x3, [x1, #8]
3461 .long 0x91004021 // add x1, x1, #0x10
3462 .long 0xd61f0060 // br x3
3463
3464HIDDEN _sk_bicubic_p3x_aarch64
3465.globl _sk_bicubic_p3x_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003466FUNCTION(_sk_bicubic_p3x_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003467_sk_bicubic_p3x_aarch64:
3468 .long 0xf9400028 // ldr x8, [x1]
3469 .long 0x52a7d8e9 // mov w9, #0x3ec70000
3470 .long 0x72838e49 // movk w9, #0x1c72
3471 .long 0x4e040d20 // dup v0.4s, w9
3472 .long 0x3dc01110 // ldr q16, [x8, #64]
3473 .long 0x52b7d549 // mov w9, #0xbeaa0000
3474 .long 0x72955569 // movk w9, #0xaaab
3475 .long 0x4e040d31 // dup v17.4s, w9
3476 .long 0x6e30de13 // fmul v19.4s, v16.4s, v16.4s
3477 .long 0x4e30cc11 // fmla v17.4s, v0.4s, v16.4s
3478 .long 0x6e31de60 // fmul v0.4s, v19.4s, v17.4s
3479 .long 0x3dc00112 // ldr q18, [x8]
3480 .long 0x3d802100 // str q0, [x8, #128]
3481 .long 0xf9400423 // ldr x3, [x1, #8]
3482 .long 0x4f03f700 // fmov v0.4s, #1.500000000000000000e+00
3483 .long 0x4e20d640 // fadd v0.4s, v18.4s, v0.4s
3484 .long 0x91004021 // add x1, x1, #0x10
3485 .long 0xd61f0060 // br x3
3486
3487HIDDEN _sk_bicubic_n3y_aarch64
3488.globl _sk_bicubic_n3y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003489FUNCTION(_sk_bicubic_n3y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003490_sk_bicubic_n3y_aarch64:
3491 .long 0xf9400028 // ldr x8, [x1]
3492 .long 0x52a7d8e9 // mov w9, #0x3ec70000
3493 .long 0x72838e49 // movk w9, #0x1c72
3494 .long 0x4e040d30 // dup v16.4s, w9
3495 .long 0x3dc01911 // ldr q17, [x8, #96]
3496 .long 0x52b7d549 // mov w9, #0xbeaa0000
3497 .long 0x4f03f601 // fmov v1.4s, #1.000000000000000000e+00
3498 .long 0x72955569 // movk w9, #0xaaab
3499 .long 0x4e040d32 // dup v18.4s, w9
3500 .long 0x4eb1d421 // fsub v1.4s, v1.4s, v17.4s
3501 .long 0x6e21dc31 // fmul v17.4s, v1.4s, v1.4s
3502 .long 0x4e21ce12 // fmla v18.4s, v16.4s, v1.4s
3503 .long 0x6e32de21 // fmul v1.4s, v17.4s, v18.4s
3504 .long 0x3dc00913 // ldr q19, [x8, #32]
3505 .long 0x3d802901 // str q1, [x8, #160]
3506 .long 0xf9400423 // ldr x3, [x1, #8]
3507 .long 0x4f07f701 // fmov v1.4s, #-1.500000000000000000e+00
3508 .long 0x4e21d661 // fadd v1.4s, v19.4s, v1.4s
3509 .long 0x91004021 // add x1, x1, #0x10
3510 .long 0xd61f0060 // br x3
3511
3512HIDDEN _sk_bicubic_n1y_aarch64
3513.globl _sk_bicubic_n1y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003514FUNCTION(_sk_bicubic_n1y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003515_sk_bicubic_n1y_aarch64:
3516 .long 0xf9400028 // ldr x8, [x1]
3517 .long 0x52b7f2a9 // mov w9, #0xbf950000
3518 .long 0x4f03f601 // fmov v1.4s, #1.000000000000000000e+00
3519 .long 0x728aaaa9 // movk w9, #0x5555
3520 .long 0x3dc01910 // ldr q16, [x8, #96]
3521 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
3522 .long 0x4f0167f2 // movi v18.4s, #0x3f, lsl #24
3523 .long 0x4eb0d421 // fsub v1.4s, v1.4s, v16.4s
3524 .long 0x4e040d30 // dup v16.4s, w9
3525 .long 0x52a7ac69 // mov w9, #0x3d630000
3526 .long 0x7291c729 // movk w9, #0x8e39
3527 .long 0x4e21ce11 // fmla v17.4s, v16.4s, v1.4s
3528 .long 0x4e21ce32 // fmla v18.4s, v17.4s, v1.4s
3529 .long 0x4e040d31 // dup v17.4s, w9
3530 .long 0x4e21ce51 // fmla v17.4s, v18.4s, v1.4s
3531 .long 0x3dc00910 // ldr q16, [x8, #32]
3532 .long 0x3d802911 // str q17, [x8, #160]
3533 .long 0xf9400423 // ldr x3, [x1, #8]
3534 .long 0x4f0567e1 // movi v1.4s, #0xbf, lsl #24
3535 .long 0x4e21d601 // fadd v1.4s, v16.4s, v1.4s
3536 .long 0x91004021 // add x1, x1, #0x10
3537 .long 0xd61f0060 // br x3
3538
3539HIDDEN _sk_bicubic_p1y_aarch64
3540.globl _sk_bicubic_p1y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003541FUNCTION(_sk_bicubic_p1y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003542_sk_bicubic_p1y_aarch64:
3543 .long 0xf9400028 // ldr x8, [x1]
3544 .long 0x52b7f2a9 // mov w9, #0xbf950000
3545 .long 0x728aaaa9 // movk w9, #0x5555
3546 .long 0x4f03f711 // fmov v17.4s, #1.500000000000000000e+00
3547 .long 0x3dc01912 // ldr q18, [x8, #96]
3548 .long 0x3dc00901 // ldr q1, [x8, #32]
3549 .long 0x4e040d33 // dup v19.4s, w9
3550 .long 0x52a7ac69 // mov w9, #0x3d630000
3551 .long 0x4f0167f0 // movi v16.4s, #0x3f, lsl #24
3552 .long 0x7291c729 // movk w9, #0x8e39
3553 .long 0x4e32ce71 // fmla v17.4s, v19.4s, v18.4s
3554 .long 0x4e30d421 // fadd v1.4s, v1.4s, v16.4s
3555 .long 0x4e32ce30 // fmla v16.4s, v17.4s, v18.4s
3556 .long 0x4e040d31 // dup v17.4s, w9
3557 .long 0x4e32ce11 // fmla v17.4s, v16.4s, v18.4s
3558 .long 0x3d802911 // str q17, [x8, #160]
3559 .long 0xf9400423 // ldr x3, [x1, #8]
3560 .long 0x91004021 // add x1, x1, #0x10
3561 .long 0xd61f0060 // br x3
3562
3563HIDDEN _sk_bicubic_p3y_aarch64
3564.globl _sk_bicubic_p3y_aarch64
Mike Klein86714282017-04-13 17:37:38 -04003565FUNCTION(_sk_bicubic_p3y_aarch64)
Mike Klein0a904492017-04-12 12:52:48 -04003566_sk_bicubic_p3y_aarch64:
3567 .long 0xf9400028 // ldr x8, [x1]
3568 .long 0x52a7d8e9 // mov w9, #0x3ec70000
3569 .long 0x72838e49 // movk w9, #0x1c72
3570 .long 0x4e040d21 // dup v1.4s, w9
3571 .long 0x3dc01910 // ldr q16, [x8, #96]
3572 .long 0x52b7d549 // mov w9, #0xbeaa0000
3573 .long 0x72955569 // movk w9, #0xaaab
3574 .long 0x4e040d31 // dup v17.4s, w9
3575 .long 0x6e30de13 // fmul v19.4s, v16.4s, v16.4s
3576 .long 0x4e30cc31 // fmla v17.4s, v1.4s, v16.4s
3577 .long 0x6e31de61 // fmul v1.4s, v19.4s, v17.4s
3578 .long 0x3dc00912 // ldr q18, [x8, #32]
3579 .long 0x3d802901 // str q1, [x8, #160]
3580 .long 0xf9400423 // ldr x3, [x1, #8]
3581 .long 0x4f03f701 // fmov v1.4s, #1.500000000000000000e+00
3582 .long 0x4e21d641 // fadd v1.4s, v18.4s, v1.4s
3583 .long 0x91004021 // add x1, x1, #0x10
3584 .long 0xd61f0060 // br x3
Mike Klein7fee90c2017-04-07 16:55:09 -04003585
3586HIDDEN _sk_callback_aarch64
3587.globl _sk_callback_aarch64
3588FUNCTION(_sk_callback_aarch64)
3589_sk_callback_aarch64:
3590 .long 0xd10283ff // sub sp, sp, #0xa0
3591 .long 0xa90853f5 // stp x21, x20, [sp, #128]
3592 .long 0xa9097bf3 // stp x19, x30, [sp, #144]
3593 .long 0xad031fe6 // stp q6, q7, [sp, #96]
3594 .long 0xad0217e4 // stp q4, q5, [sp, #64]
3595 .long 0xad010fe2 // stp q2, q3, [sp, #32]
3596 .long 0xad0007e0 // stp q0, q1, [sp]
3597 .long 0xaa0103f4 // mov x20, x1
3598 .long 0xf9400288 // ldr x8, [x20]
3599 .long 0xaa0003f5 // mov x21, x0
3600 .long 0x321e03e1 // orr w1, wzr, #0x4
3601 .long 0xaa0203f3 // mov x19, x2
3602 .long 0xa9402109 // ldp x9, x8, [x8]
3603 .long 0xaa0803e0 // mov x0, x8
3604 .long 0xd63f0120 // blr x9
3605 .long 0xf9400683 // ldr x3, [x20, #8]
3606 .long 0x91004281 // add x1, x20, #0x10
3607 .long 0xaa1503e0 // mov x0, x21
3608 .long 0xaa1303e2 // mov x2, x19
3609 .long 0xad4007e0 // ldp q0, q1, [sp]
3610 .long 0xad410fe2 // ldp q2, q3, [sp, #32]
3611 .long 0xad4217e4 // ldp q4, q5, [sp, #64]
3612 .long 0xad431fe6 // ldp q6, q7, [sp, #96]
3613 .long 0xa9497bf3 // ldp x19, x30, [sp, #144]
3614 .long 0xa94853f5 // ldp x21, x20, [sp, #128]
3615 .long 0x910283ff // add sp, sp, #0xa0
3616 .long 0xd61f0060 // br x3
Mike Kleind7e06ae2017-03-29 16:33:06 -04003617#elif defined(__arm__)
3618.balign 4
3619
Mike Klein7c4af542017-03-29 18:21:14 -04003620HIDDEN _sk_start_pipeline_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003621.globl _sk_start_pipeline_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003622FUNCTION(_sk_start_pipeline_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003623_sk_start_pipeline_vfp4:
3624 .long 0xe92d41f0 // push {r4, r5, r6, r7, r8, lr}
3625 .long 0xe1a04000 // mov r4, r0
3626 .long 0xe2840002 // add r0, r4, #2
3627 .long 0xe1a05003 // mov r5, r3
3628 .long 0xe1a08002 // mov r8, r2
3629 .long 0xe1a07001 // mov r7, r1
3630 .long 0xe1500005 // cmp r0, r5
3631 .long 0x8a000010 // bhi 64 <sk_start_pipeline_vfp4+0x64>
3632 .long 0xe4976004 // ldr r6, [r7], #4
3633 .long 0xf2800010 // vmov.i32 d0, #0
3634 .long 0xe1a00004 // mov r0, r4
3635 .long 0xf2801010 // vmov.i32 d1, #0
3636 .long 0xe1a01007 // mov r1, r7
3637 .long 0xf2802010 // vmov.i32 d2, #0
3638 .long 0xe1a02008 // mov r2, r8
3639 .long 0xf2803010 // vmov.i32 d3, #0
3640 .long 0xf2804010 // vmov.i32 d4, #0
3641 .long 0xf2805010 // vmov.i32 d5, #0
3642 .long 0xf2806010 // vmov.i32 d6, #0
3643 .long 0xf2807010 // vmov.i32 d7, #0
3644 .long 0xe12fff36 // blx r6
3645 .long 0xe2840004 // add r0, r4, #4
3646 .long 0xe2844002 // add r4, r4, #2
3647 .long 0xe1500005 // cmp r0, r5
3648 .long 0x9affffef // bls 24 <sk_start_pipeline_vfp4+0x24>
3649 .long 0xe1a00004 // mov r0, r4
3650 .long 0xe8bd81f0 // pop {r4, r5, r6, r7, r8, pc}
3651
Mike Klein7c4af542017-03-29 18:21:14 -04003652HIDDEN _sk_just_return_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003653.globl _sk_just_return_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003654FUNCTION(_sk_just_return_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003655_sk_just_return_vfp4:
3656 .long 0xe12fff1e // bx lr
3657
Mike Klein7c4af542017-03-29 18:21:14 -04003658HIDDEN _sk_seed_shader_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003659.globl _sk_seed_shader_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003660FUNCTION(_sk_seed_shader_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003661_sk_seed_shader_vfp4:
3662 .long 0xee800b90 // vdup.32 d16, r0
3663 .long 0xe8911008 // ldm r1, {r3, ip}
3664 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
3665 .long 0xf2c3161f // vmov.i32 d17, #1056964608
3666 .long 0xedd23b00 // vldr d19, [r2]
3667 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
3668 .long 0xf2872f10 // vmov.f32 d2, #1
3669 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
3670 .long 0xe2811008 // add r1, r1, #8
3671 .long 0xf2400da1 // vadd.f32 d16, d16, d17
3672 .long 0xf2803010 // vmov.i32 d3, #0
3673 .long 0xf2804010 // vmov.i32 d4, #0
3674 .long 0xf2021da1 // vadd.f32 d1, d18, d17
3675 .long 0xf2000da3 // vadd.f32 d0, d16, d19
3676 .long 0xf2805010 // vmov.i32 d5, #0
3677 .long 0xf2806010 // vmov.i32 d6, #0
3678 .long 0xf2807010 // vmov.i32 d7, #0
3679 .long 0xe12fff1c // bx ip
3680
Mike Klein7c4af542017-03-29 18:21:14 -04003681HIDDEN _sk_constant_color_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003682.globl _sk_constant_color_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003683FUNCTION(_sk_constant_color_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003684_sk_constant_color_vfp4:
Mike Klein8a823fa2017-04-05 17:29:26 -04003685 .long 0xe92d4010 // push {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04003686 .long 0xe8911008 // ldm r1, {r3, ip}
3687 .long 0xe2811008 // add r1, r1, #8
Mike Klein8a823fa2017-04-05 17:29:26 -04003688 .long 0xe283400c // add r4, r3, #12
3689 .long 0xe1a0e003 // mov lr, r3
3690 .long 0xe2833008 // add r3, r3, #8
3691 .long 0xf4ae0c9d // vld1.32 {d0[]}, [lr :32]!
3692 .long 0xf4a43c9f // vld1.32 {d3[]}, [r4 :32]
3693 .long 0xf4a32c9f // vld1.32 {d2[]}, [r3 :32]
3694 .long 0xf4ae1c9f // vld1.32 {d1[]}, [lr :32]
3695 .long 0xe8bd4010 // pop {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04003696 .long 0xe12fff1c // bx ip
3697
Mike Klein7c4af542017-03-29 18:21:14 -04003698HIDDEN _sk_clear_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003699.globl _sk_clear_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003700FUNCTION(_sk_clear_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003701_sk_clear_vfp4:
3702 .long 0xe4913004 // ldr r3, [r1], #4
3703 .long 0xf2800010 // vmov.i32 d0, #0
3704 .long 0xf2801010 // vmov.i32 d1, #0
3705 .long 0xf2802010 // vmov.i32 d2, #0
3706 .long 0xf2803010 // vmov.i32 d3, #0
3707 .long 0xe12fff13 // bx r3
3708
Mike Kleinaaca1e42017-03-31 09:29:01 -04003709HIDDEN _sk_srcatop_vfp4
3710.globl _sk_srcatop_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003711FUNCTION(_sk_srcatop_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003712_sk_srcatop_vfp4:
3713 .long 0xf2c70f10 // vmov.f32 d16, #1
Mike Kleind7e06ae2017-03-29 16:33:06 -04003714 .long 0xe4913004 // ldr r3, [r1], #4
Mike Kleinaaca1e42017-03-31 09:29:01 -04003715 .long 0xf2603d83 // vsub.f32 d19, d16, d3
3716 .long 0xf3033d17 // vmul.f32 d3, d3, d7
3717 .long 0xf3430d94 // vmul.f32 d16, d19, d4
3718 .long 0xf3431d95 // vmul.f32 d17, d19, d5
3719 .long 0xf3432d96 // vmul.f32 d18, d19, d6
3720 .long 0xf2400c17 // vfma.f32 d16, d0, d7
3721 .long 0xf2411c17 // vfma.f32 d17, d1, d7
3722 .long 0xf2422c17 // vfma.f32 d18, d2, d7
3723 .long 0xf2033c97 // vfma.f32 d3, d19, d7
3724 .long 0xf22001b0 // vorr d0, d16, d16
3725 .long 0xf22111b1 // vorr d1, d17, d17
3726 .long 0xf22221b2 // vorr d2, d18, d18
3727 .long 0xe12fff13 // bx r3
3728
3729HIDDEN _sk_dstatop_vfp4
3730.globl _sk_dstatop_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003731FUNCTION(_sk_dstatop_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003732_sk_dstatop_vfp4:
3733 .long 0xf2c70f10 // vmov.f32 d16, #1
3734 .long 0xe4913004 // ldr r3, [r1], #4
3735 .long 0xf3431d15 // vmul.f32 d17, d3, d5
3736 .long 0xf2604d87 // vsub.f32 d20, d16, d7
3737 .long 0xf3430d14 // vmul.f32 d16, d3, d4
3738 .long 0xf3432d16 // vmul.f32 d18, d3, d6
3739 .long 0xf3433d17 // vmul.f32 d19, d3, d7
3740 .long 0xf2440c90 // vfma.f32 d16, d20, d0
3741 .long 0xf2441c91 // vfma.f32 d17, d20, d1
3742 .long 0xf2442c92 // vfma.f32 d18, d20, d2
3743 .long 0xf2443c93 // vfma.f32 d19, d20, d3
3744 .long 0xf22001b0 // vorr d0, d16, d16
3745 .long 0xf22111b1 // vorr d1, d17, d17
3746 .long 0xf22221b2 // vorr d2, d18, d18
3747 .long 0xf22331b3 // vorr d3, d19, d19
3748 .long 0xe12fff13 // bx r3
3749
3750HIDDEN _sk_srcin_vfp4
3751.globl _sk_srcin_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003752FUNCTION(_sk_srcin_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003753_sk_srcin_vfp4:
3754 .long 0xf3000d17 // vmul.f32 d0, d0, d7
3755 .long 0xe4913004 // ldr r3, [r1], #4
3756 .long 0xf3011d17 // vmul.f32 d1, d1, d7
3757 .long 0xf3022d17 // vmul.f32 d2, d2, d7
3758 .long 0xf3033d17 // vmul.f32 d3, d3, d7
3759 .long 0xe12fff13 // bx r3
3760
3761HIDDEN _sk_dstin_vfp4
3762.globl _sk_dstin_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003763FUNCTION(_sk_dstin_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003764_sk_dstin_vfp4:
3765 .long 0xf3030d14 // vmul.f32 d0, d3, d4
3766 .long 0xe4913004 // ldr r3, [r1], #4
3767 .long 0xf3031d15 // vmul.f32 d1, d3, d5
3768 .long 0xf3032d16 // vmul.f32 d2, d3, d6
3769 .long 0xf3033d17 // vmul.f32 d3, d3, d7
3770 .long 0xe12fff13 // bx r3
3771
3772HIDDEN _sk_srcout_vfp4
3773.globl _sk_srcout_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003774FUNCTION(_sk_srcout_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003775_sk_srcout_vfp4:
3776 .long 0xf2c70f10 // vmov.f32 d16, #1
3777 .long 0xe4913004 // ldr r3, [r1], #4
3778 .long 0xf2600d87 // vsub.f32 d16, d16, d7
3779 .long 0xf3000d90 // vmul.f32 d0, d16, d0
3780 .long 0xf3001d91 // vmul.f32 d1, d16, d1
3781 .long 0xf3002d92 // vmul.f32 d2, d16, d2
3782 .long 0xf3003d93 // vmul.f32 d3, d16, d3
3783 .long 0xe12fff13 // bx r3
3784
3785HIDDEN _sk_dstout_vfp4
3786.globl _sk_dstout_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003787FUNCTION(_sk_dstout_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003788_sk_dstout_vfp4:
3789 .long 0xf2c70f10 // vmov.f32 d16, #1
3790 .long 0xe4913004 // ldr r3, [r1], #4
3791 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3792 .long 0xf3000d94 // vmul.f32 d0, d16, d4
3793 .long 0xf3001d95 // vmul.f32 d1, d16, d5
3794 .long 0xf3002d96 // vmul.f32 d2, d16, d6
3795 .long 0xf3003d97 // vmul.f32 d3, d16, d7
Mike Kleind7e06ae2017-03-29 16:33:06 -04003796 .long 0xe12fff13 // bx r3
3797
Mike Klein7c4af542017-03-29 18:21:14 -04003798HIDDEN _sk_srcover_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003799.globl _sk_srcover_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003800FUNCTION(_sk_srcover_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003801_sk_srcover_vfp4:
3802 .long 0xf2c70f10 // vmov.f32 d16, #1
3803 .long 0xe4913004 // ldr r3, [r1], #4
3804 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3805 .long 0xf2040c30 // vfma.f32 d0, d4, d16
3806 .long 0xf2051c30 // vfma.f32 d1, d5, d16
3807 .long 0xf2062c30 // vfma.f32 d2, d6, d16
3808 .long 0xf2073c30 // vfma.f32 d3, d7, d16
3809 .long 0xe12fff13 // bx r3
3810
Mike Klein7c4af542017-03-29 18:21:14 -04003811HIDDEN _sk_dstover_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04003812.globl _sk_dstover_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003813FUNCTION(_sk_dstover_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04003814_sk_dstover_vfp4:
3815 .long 0xf2c70f10 // vmov.f32 d16, #1
3816 .long 0xe4913004 // ldr r3, [r1], #4
3817 .long 0xf2651115 // vorr d17, d5, d5
3818 .long 0xf2604d87 // vsub.f32 d20, d16, d7
3819 .long 0xf2640114 // vorr d16, d4, d4
3820 .long 0xf2662116 // vorr d18, d6, d6
3821 .long 0xf2673117 // vorr d19, d7, d7
3822 .long 0xf2400c34 // vfma.f32 d16, d0, d20
3823 .long 0xf2411c34 // vfma.f32 d17, d1, d20
3824 .long 0xf2422c34 // vfma.f32 d18, d2, d20
3825 .long 0xf2433c34 // vfma.f32 d19, d3, d20
3826 .long 0xf22001b0 // vorr d0, d16, d16
3827 .long 0xf22111b1 // vorr d1, d17, d17
3828 .long 0xf22221b2 // vorr d2, d18, d18
3829 .long 0xf22331b3 // vorr d3, d19, d19
3830 .long 0xe12fff13 // bx r3
3831
Mike Kleinaaca1e42017-03-31 09:29:01 -04003832HIDDEN _sk_modulate_vfp4
3833.globl _sk_modulate_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003834FUNCTION(_sk_modulate_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003835_sk_modulate_vfp4:
3836 .long 0xf3000d14 // vmul.f32 d0, d0, d4
3837 .long 0xe4913004 // ldr r3, [r1], #4
3838 .long 0xf3011d15 // vmul.f32 d1, d1, d5
3839 .long 0xf3022d16 // vmul.f32 d2, d2, d6
3840 .long 0xf3033d17 // vmul.f32 d3, d3, d7
3841 .long 0xe12fff13 // bx r3
3842
3843HIDDEN _sk_multiply_vfp4
3844.globl _sk_multiply_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003845FUNCTION(_sk_multiply_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003846_sk_multiply_vfp4:
3847 .long 0xf2c70f10 // vmov.f32 d16, #1
3848 .long 0xe4913004 // ldr r3, [r1], #4
3849 .long 0xf2601d87 // vsub.f32 d17, d16, d7
3850 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3851 .long 0xf3412d90 // vmul.f32 d18, d17, d0
3852 .long 0xf3403d94 // vmul.f32 d19, d16, d4
3853 .long 0xf3414d91 // vmul.f32 d20, d17, d1
3854 .long 0xf3405d95 // vmul.f32 d21, d16, d5
3855 .long 0xf3416d92 // vmul.f32 d22, d17, d2
3856 .long 0xf3418d93 // vmul.f32 d24, d17, d3
3857 .long 0xf3407d96 // vmul.f32 d23, d16, d6
3858 .long 0xf3409d97 // vmul.f32 d25, d16, d7
3859 .long 0xf2430da2 // vadd.f32 d16, d19, d18
3860 .long 0xf2451da4 // vadd.f32 d17, d21, d20
3861 .long 0xf2472da6 // vadd.f32 d18, d23, d22
3862 .long 0xf2493da8 // vadd.f32 d19, d25, d24
3863 .long 0xf2400c14 // vfma.f32 d16, d0, d4
3864 .long 0xf2411c15 // vfma.f32 d17, d1, d5
3865 .long 0xf2422c16 // vfma.f32 d18, d2, d6
3866 .long 0xf2433c17 // vfma.f32 d19, d3, d7
3867 .long 0xf22001b0 // vorr d0, d16, d16
3868 .long 0xf22111b1 // vorr d1, d17, d17
3869 .long 0xf22221b2 // vorr d2, d18, d18
3870 .long 0xf22331b3 // vorr d3, d19, d19
3871 .long 0xe12fff13 // bx r3
3872
3873HIDDEN _sk_plus__vfp4
3874.globl _sk_plus__vfp4
Mike Klein86714282017-04-13 17:37:38 -04003875FUNCTION(_sk_plus__vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003876_sk_plus__vfp4:
3877 .long 0xf2000d04 // vadd.f32 d0, d0, d4
3878 .long 0xe4913004 // ldr r3, [r1], #4
3879 .long 0xf2011d05 // vadd.f32 d1, d1, d5
3880 .long 0xf2022d06 // vadd.f32 d2, d2, d6
3881 .long 0xf2033d07 // vadd.f32 d3, d3, d7
3882 .long 0xe12fff13 // bx r3
3883
3884HIDDEN _sk_screen_vfp4
3885.globl _sk_screen_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003886FUNCTION(_sk_screen_vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003887_sk_screen_vfp4:
3888 .long 0xf2400d04 // vadd.f32 d16, d0, d4
3889 .long 0xe4913004 // ldr r3, [r1], #4
3890 .long 0xf2411d05 // vadd.f32 d17, d1, d5
3891 .long 0xf2422d06 // vadd.f32 d18, d2, d6
3892 .long 0xf2433d07 // vadd.f32 d19, d3, d7
3893 .long 0xf2600c14 // vfms.f32 d16, d0, d4
3894 .long 0xf2611c15 // vfms.f32 d17, d1, d5
3895 .long 0xf2622c16 // vfms.f32 d18, d2, d6
3896 .long 0xf2633c17 // vfms.f32 d19, d3, d7
3897 .long 0xf22001b0 // vorr d0, d16, d16
3898 .long 0xf22111b1 // vorr d1, d17, d17
3899 .long 0xf22221b2 // vorr d2, d18, d18
3900 .long 0xf22331b3 // vorr d3, d19, d19
3901 .long 0xe12fff13 // bx r3
3902
3903HIDDEN _sk_xor__vfp4
3904.globl _sk_xor__vfp4
Mike Klein86714282017-04-13 17:37:38 -04003905FUNCTION(_sk_xor__vfp4)
Mike Kleinaaca1e42017-03-31 09:29:01 -04003906_sk_xor__vfp4:
3907 .long 0xf2c70f10 // vmov.f32 d16, #1
3908 .long 0xe4913004 // ldr r3, [r1], #4
3909 .long 0xf2603d83 // vsub.f32 d19, d16, d3
3910 .long 0xf2604d87 // vsub.f32 d20, d16, d7
3911 .long 0xf3430d94 // vmul.f32 d16, d19, d4
3912 .long 0xf3431d95 // vmul.f32 d17, d19, d5
3913 .long 0xf3432d96 // vmul.f32 d18, d19, d6
3914 .long 0xf3433d97 // vmul.f32 d19, d19, d7
3915 .long 0xf2440c90 // vfma.f32 d16, d20, d0
3916 .long 0xf2441c91 // vfma.f32 d17, d20, d1
3917 .long 0xf2442c92 // vfma.f32 d18, d20, d2
3918 .long 0xf2443c93 // vfma.f32 d19, d20, d3
3919 .long 0xf22001b0 // vorr d0, d16, d16
3920 .long 0xf22111b1 // vorr d1, d17, d17
3921 .long 0xf22221b2 // vorr d2, d18, d18
3922 .long 0xf22331b3 // vorr d3, d19, d19
3923 .long 0xe12fff13 // bx r3
3924
Mike Klein66b09ab2017-03-31 10:29:40 -04003925HIDDEN _sk_darken_vfp4
3926.globl _sk_darken_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003927FUNCTION(_sk_darken_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04003928_sk_darken_vfp4:
3929 .long 0xf2c70f10 // vmov.f32 d16, #1
3930 .long 0xe4913004 // ldr r3, [r1], #4
3931 .long 0xf3431d14 // vmul.f32 d17, d3, d4
3932 .long 0xf3402d17 // vmul.f32 d18, d0, d7
3933 .long 0xf3433d15 // vmul.f32 d19, d3, d5
3934 .long 0xf3414d17 // vmul.f32 d20, d1, d7
3935 .long 0xf3435d16 // vmul.f32 d21, d3, d6
3936 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3937 .long 0xf3426d17 // vmul.f32 d22, d2, d7
3938 .long 0xf2421fa1 // vmax.f32 d17, d18, d17
3939 .long 0xf2407d04 // vadd.f32 d23, d0, d4
3940 .long 0xf2443fa3 // vmax.f32 d19, d20, d19
3941 .long 0xf2412d05 // vadd.f32 d18, d1, d5
3942 .long 0xf2424d06 // vadd.f32 d20, d2, d6
3943 .long 0xf2465fa5 // vmax.f32 d21, d22, d21
3944 .long 0xf2073c30 // vfma.f32 d3, d7, d16
3945 .long 0xf2270da1 // vsub.f32 d0, d23, d17
3946 .long 0xf2221da3 // vsub.f32 d1, d18, d19
3947 .long 0xf2242da5 // vsub.f32 d2, d20, d21
3948 .long 0xe12fff13 // bx r3
3949
3950HIDDEN _sk_lighten_vfp4
3951.globl _sk_lighten_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003952FUNCTION(_sk_lighten_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04003953_sk_lighten_vfp4:
3954 .long 0xf2c70f10 // vmov.f32 d16, #1
3955 .long 0xe4913004 // ldr r3, [r1], #4
3956 .long 0xf3431d14 // vmul.f32 d17, d3, d4
3957 .long 0xf3402d17 // vmul.f32 d18, d0, d7
3958 .long 0xf3433d15 // vmul.f32 d19, d3, d5
3959 .long 0xf3414d17 // vmul.f32 d20, d1, d7
3960 .long 0xf3435d16 // vmul.f32 d21, d3, d6
3961 .long 0xf2600d83 // vsub.f32 d16, d16, d3
3962 .long 0xf3426d17 // vmul.f32 d22, d2, d7
3963 .long 0xf2621fa1 // vmin.f32 d17, d18, d17
3964 .long 0xf2407d04 // vadd.f32 d23, d0, d4
3965 .long 0xf2643fa3 // vmin.f32 d19, d20, d19
3966 .long 0xf2412d05 // vadd.f32 d18, d1, d5
3967 .long 0xf2424d06 // vadd.f32 d20, d2, d6
3968 .long 0xf2665fa5 // vmin.f32 d21, d22, d21
3969 .long 0xf2073c30 // vfma.f32 d3, d7, d16
3970 .long 0xf2270da1 // vsub.f32 d0, d23, d17
3971 .long 0xf2221da3 // vsub.f32 d1, d18, d19
3972 .long 0xf2242da5 // vsub.f32 d2, d20, d21
3973 .long 0xe12fff13 // bx r3
3974
3975HIDDEN _sk_difference_vfp4
3976.globl _sk_difference_vfp4
Mike Klein86714282017-04-13 17:37:38 -04003977FUNCTION(_sk_difference_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04003978_sk_difference_vfp4:
3979 .long 0xf3430d14 // vmul.f32 d16, d3, d4
3980 .long 0xe4913004 // ldr r3, [r1], #4
3981 .long 0xf3401d17 // vmul.f32 d17, d0, d7
3982 .long 0xf3432d15 // vmul.f32 d18, d3, d5
3983 .long 0xf3413d17 // vmul.f32 d19, d1, d7
3984 .long 0xf3434d16 // vmul.f32 d20, d3, d6
3985 .long 0xf3425d17 // vmul.f32 d21, d2, d7
3986 .long 0xf2c76f10 // vmov.f32 d22, #1
3987 .long 0xf2610fa0 // vmin.f32 d16, d17, d16
3988 .long 0xf2631fa2 // vmin.f32 d17, d19, d18
3989 .long 0xf2662d83 // vsub.f32 d18, d22, d3
3990 .long 0xf2653fa4 // vmin.f32 d19, d21, d20
3991 .long 0xf2404d04 // vadd.f32 d20, d0, d4
3992 .long 0xf2400da0 // vadd.f32 d16, d16, d16
3993 .long 0xf2073c32 // vfma.f32 d3, d7, d18
3994 .long 0xf2415d05 // vadd.f32 d21, d1, d5
3995 .long 0xf2411da1 // vadd.f32 d17, d17, d17
3996 .long 0xf2426d06 // vadd.f32 d22, d2, d6
3997 .long 0xf2432da3 // vadd.f32 d18, d19, d19
3998 .long 0xf2240da0 // vsub.f32 d0, d20, d16
3999 .long 0xf2251da1 // vsub.f32 d1, d21, d17
4000 .long 0xf2262da2 // vsub.f32 d2, d22, d18
4001 .long 0xe12fff13 // bx r3
4002
4003HIDDEN _sk_exclusion_vfp4
4004.globl _sk_exclusion_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004005FUNCTION(_sk_exclusion_vfp4)
Mike Klein66b09ab2017-03-31 10:29:40 -04004006_sk_exclusion_vfp4:
4007 .long 0xf2c70f10 // vmov.f32 d16, #1
4008 .long 0xe4913004 // ldr r3, [r1], #4
4009 .long 0xf3401d14 // vmul.f32 d17, d0, d4
4010 .long 0xf3412d15 // vmul.f32 d18, d1, d5
4011 .long 0xf3423d16 // vmul.f32 d19, d2, d6
4012 .long 0xf2600d83 // vsub.f32 d16, d16, d3
4013 .long 0xf2404d04 // vadd.f32 d20, d0, d4
4014 .long 0xf2411da1 // vadd.f32 d17, d17, d17
4015 .long 0xf2415d05 // vadd.f32 d21, d1, d5
4016 .long 0xf2422da2 // vadd.f32 d18, d18, d18
4017 .long 0xf2426d06 // vadd.f32 d22, d2, d6
4018 .long 0xf2433da3 // vadd.f32 d19, d19, d19
4019 .long 0xf2073c30 // vfma.f32 d3, d7, d16
4020 .long 0xf2240da1 // vsub.f32 d0, d20, d17
4021 .long 0xf2251da2 // vsub.f32 d1, d21, d18
4022 .long 0xf2262da3 // vsub.f32 d2, d22, d19
4023 .long 0xe12fff13 // bx r3
4024
Mike Klein61b84162017-03-31 11:48:14 -04004025HIDDEN _sk_colorburn_vfp4
4026.globl _sk_colorburn_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004027FUNCTION(_sk_colorburn_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004028_sk_colorburn_vfp4:
4029 .long 0xed2d8b08 // vpush {d8-d11}
4030 .long 0xf2670d04 // vsub.f32 d16, d7, d4
4031 .long 0xe4913004 // ldr r3, [r1], #4
4032 .long 0xf2671d06 // vsub.f32 d17, d7, d6
4033 .long 0xf2672d05 // vsub.f32 d18, d7, d5
4034 .long 0xf3008d93 // vmul.f32 d8, d16, d3
4035 .long 0xf3019d93 // vmul.f32 d9, d17, d3
4036 .long 0xf302ad93 // vmul.f32 d10, d18, d3
4037 .long 0xf2c71f10 // vmov.f32 d17, #1
4038 .long 0xeec8baa0 // vdiv.f32 s23, s17, s1
4039 .long 0xee88ba00 // vdiv.f32 s22, s16, s0
4040 .long 0xeec98aa2 // vdiv.f32 s17, s19, s5
4041 .long 0xee898a02 // vdiv.f32 s16, s18, s4
4042 .long 0xeeca9aa1 // vdiv.f32 s19, s21, s3
4043 .long 0xee8a9a01 // vdiv.f32 s18, s20, s2
4044 .long 0xf2672f08 // vmin.f32 d18, d7, d8
4045 .long 0xf2673f09 // vmin.f32 d19, d7, d9
4046 .long 0xf2670f0b // vmin.f32 d16, d7, d11
4047 .long 0xf2614d87 // vsub.f32 d20, d17, d7
4048 .long 0xf2672d22 // vsub.f32 d18, d7, d18
4049 .long 0xf2673d23 // vsub.f32 d19, d7, d19
4050 .long 0xf2611d83 // vsub.f32 d17, d17, d3
4051 .long 0xf2670d20 // vsub.f32 d16, d7, d16
4052 .long 0xf3445d90 // vmul.f32 d21, d20, d0
4053 .long 0xf3446d92 // vmul.f32 d22, d20, d2
4054 .long 0xf3422d93 // vmul.f32 d18, d18, d3
4055 .long 0xf3444d91 // vmul.f32 d20, d20, d1
4056 .long 0xf3433d93 // vmul.f32 d19, d19, d3
4057 .long 0xf3400d93 // vmul.f32 d16, d16, d3
4058 .long 0xf3417d95 // vmul.f32 d23, d17, d5
4059 .long 0xf3418d94 // vmul.f32 d24, d17, d4
4060 .long 0xf3419d96 // vmul.f32 d25, d17, d6
4061 .long 0xf2443da3 // vadd.f32 d19, d20, d19
4062 .long 0xf2462da2 // vadd.f32 d18, d22, d18
4063 .long 0xf245ada0 // vadd.f32 d26, d21, d16
4064 .long 0xf247bd81 // vadd.f32 d27, d23, d1
4065 .long 0xf248cd80 // vadd.f32 d28, d24, d0
4066 .long 0xf249dd82 // vadd.f32 d29, d25, d2
4067 .long 0xf2073c31 // vfma.f32 d3, d7, d17
4068 .long 0xf2499da2 // vadd.f32 d25, d25, d18
4069 .long 0xf2473da3 // vadd.f32 d19, d23, d19
4070 .long 0xf3f97501 // vceq.f32 d23, d1, #0
4071 .long 0xf2455d84 // vadd.f32 d21, d21, d4
4072 .long 0xf2444d85 // vadd.f32 d20, d20, d5
4073 .long 0xf2440e07 // vceq.f32 d16, d4, d7
4074 .long 0xf2466d86 // vadd.f32 d22, d22, d6
4075 .long 0xf2451e07 // vceq.f32 d17, d5, d7
4076 .long 0xf2462e07 // vceq.f32 d18, d6, d7
4077 .long 0xf35b71b3 // vbsl d23, d27, d19
4078 .long 0xf3f93500 // vceq.f32 d19, d0, #0
4079 .long 0xf2488daa // vadd.f32 d24, d24, d26
4080 .long 0xf35c31b8 // vbsl d19, d28, d24
4081 .long 0xf3f98502 // vceq.f32 d24, d2, #0
4082 .long 0xf35d81b9 // vbsl d24, d29, d25
4083 .long 0xf35501b3 // vbsl d16, d21, d19
4084 .long 0xf35411b7 // vbsl d17, d20, d23
4085 .long 0xf35621b8 // vbsl d18, d22, d24
4086 .long 0xf22001b0 // vorr d0, d16, d16
4087 .long 0xf22111b1 // vorr d1, d17, d17
4088 .long 0xf22221b2 // vorr d2, d18, d18
4089 .long 0xecbd8b08 // vpop {d8-d11}
4090 .long 0xe12fff13 // bx r3
4091
4092HIDDEN _sk_colordodge_vfp4
4093.globl _sk_colordodge_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004094FUNCTION(_sk_colordodge_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004095_sk_colordodge_vfp4:
4096 .long 0xed2d8b0e // vpush {d8-d14}
4097 .long 0xf2238d02 // vsub.f32 d8, d3, d2
4098 .long 0xe4913004 // ldr r3, [r1], #4
4099 .long 0xf3039d16 // vmul.f32 d9, d3, d6
4100 .long 0xf223ad01 // vsub.f32 d10, d3, d1
4101 .long 0xf303bd15 // vmul.f32 d11, d3, d5
4102 .long 0xf223cd00 // vsub.f32 d12, d3, d0
4103 .long 0xf303dd14 // vmul.f32 d13, d3, d4
4104 .long 0xeec9eaa8 // vdiv.f32 s29, s19, s17
4105 .long 0xee89ea08 // vdiv.f32 s28, s18, s16
4106 .long 0xeecb8aaa // vdiv.f32 s17, s23, s21
4107 .long 0xeecd9aac // vdiv.f32 s19, s27, s25
4108 .long 0xee8b8a0a // vdiv.f32 s16, s22, s20
4109 .long 0xee8d9a0c // vdiv.f32 s18, s26, s24
4110 .long 0xf2c70f10 // vmov.f32 d16, #1
4111 .long 0xf2672f0e // vmin.f32 d18, d7, d14
4112 .long 0xf2601d87 // vsub.f32 d17, d16, d7
4113 .long 0xf2673f08 // vmin.f32 d19, d7, d8
4114 .long 0xf2674f09 // vmin.f32 d20, d7, d9
4115 .long 0xf2600d83 // vsub.f32 d16, d16, d3
4116 .long 0xf3415d92 // vmul.f32 d21, d17, d2
4117 .long 0xf3422d93 // vmul.f32 d18, d18, d3
4118 .long 0xf3416d91 // vmul.f32 d22, d17, d1
4119 .long 0xf3433d93 // vmul.f32 d19, d19, d3
4120 .long 0xf3411d90 // vmul.f32 d17, d17, d0
4121 .long 0xf3444d93 // vmul.f32 d20, d20, d3
4122 .long 0xf3407d95 // vmul.f32 d23, d16, d5
4123 .long 0xf3408d94 // vmul.f32 d24, d16, d4
4124 .long 0xf3409d96 // vmul.f32 d25, d16, d6
4125 .long 0xf2452da2 // vadd.f32 d18, d21, d18
4126 .long 0xf2463da3 // vadd.f32 d19, d22, d19
4127 .long 0xf2414da4 // vadd.f32 d20, d17, d20
4128 .long 0xf241ae03 // vceq.f32 d26, d1, d3
4129 .long 0xf247bd81 // vadd.f32 d27, d23, d1
4130 .long 0xf3b91505 // vceq.f32 d1, d5, #0
4131 .long 0xf240ce03 // vceq.f32 d28, d0, d3
4132 .long 0xf248dd80 // vadd.f32 d29, d24, d0
4133 .long 0xf3b90504 // vceq.f32 d0, d4, #0
4134 .long 0xf242ee03 // vceq.f32 d30, d2, d3
4135 .long 0xf249fd82 // vadd.f32 d31, d25, d2
4136 .long 0xf3b92506 // vceq.f32 d2, d6, #0
4137 .long 0xf2073c30 // vfma.f32 d3, d7, d16
4138 .long 0xf2410d84 // vadd.f32 d16, d17, d4
4139 .long 0xf2491da2 // vadd.f32 d17, d25, d18
4140 .long 0xf2462d85 // vadd.f32 d18, d22, d5
4141 .long 0xf2455d86 // vadd.f32 d21, d21, d6
4142 .long 0xf2473da3 // vadd.f32 d19, d23, d19
4143 .long 0xf2484da4 // vadd.f32 d20, d24, d20
4144 .long 0xf35fe1b1 // vbsl d30, d31, d17
4145 .long 0xf35ba1b3 // vbsl d26, d27, d19
4146 .long 0xf35dc1b4 // vbsl d28, d29, d20
4147 .long 0xf31001bc // vbsl d0, d16, d28
4148 .long 0xf31211ba // vbsl d1, d18, d26
4149 .long 0xf31521be // vbsl d2, d21, d30
4150 .long 0xecbd8b0e // vpop {d8-d14}
4151 .long 0xe12fff13 // bx r3
4152
4153HIDDEN _sk_hardlight_vfp4
4154.globl _sk_hardlight_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004155FUNCTION(_sk_hardlight_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004156_sk_hardlight_vfp4:
4157 .long 0xf2c71f10 // vmov.f32 d17, #1
4158 .long 0xe4913004 // ldr r3, [r1], #4
4159 .long 0xf2670d04 // vsub.f32 d16, d7, d4
4160 .long 0xf2617d87 // vsub.f32 d23, d17, d7
4161 .long 0xf2611d83 // vsub.f32 d17, d17, d3
4162 .long 0xf2672d05 // vsub.f32 d18, d7, d5
4163 .long 0xf2674d06 // vsub.f32 d20, d7, d6
4164 .long 0xf2633d00 // vsub.f32 d19, d3, d0
4165 .long 0xf2635d01 // vsub.f32 d21, d3, d1
4166 .long 0xf2636d02 // vsub.f32 d22, d3, d2
4167 .long 0xf347bd90 // vmul.f32 d27, d23, d0
4168 .long 0xf341cd94 // vmul.f32 d28, d17, d4
4169 .long 0xf3430db0 // vmul.f32 d16, d19, d16
4170 .long 0xf3463db4 // vmul.f32 d19, d22, d20
4171 .long 0xf3452db2 // vmul.f32 d18, d21, d18
4172 .long 0xf2404d00 // vadd.f32 d20, d0, d0
4173 .long 0xf3405d14 // vmul.f32 d21, d0, d4
4174 .long 0xf2416d01 // vadd.f32 d22, d1, d1
4175 .long 0xf3418d15 // vmul.f32 d24, d1, d5
4176 .long 0xf2429d02 // vadd.f32 d25, d2, d2
4177 .long 0xf342ad16 // vmul.f32 d26, d2, d6
4178 .long 0xf347dd91 // vmul.f32 d29, d23, d1
4179 .long 0xf341fd95 // vmul.f32 d31, d17, d5
4180 .long 0xf24cbdab // vadd.f32 d27, d28, d27
4181 .long 0xf3477d92 // vmul.f32 d23, d23, d2
4182 .long 0xf341cd96 // vmul.f32 d28, d17, d6
4183 .long 0xf2400da0 // vadd.f32 d16, d16, d16
4184 .long 0xf343ed17 // vmul.f32 d30, d3, d7
4185 .long 0xf2422da2 // vadd.f32 d18, d18, d18
4186 .long 0xf2433da3 // vadd.f32 d19, d19, d19
4187 .long 0xf3434e24 // vcge.f32 d20, d3, d20
4188 .long 0xf2455da5 // vadd.f32 d21, d21, d21
4189 .long 0xf3436e26 // vcge.f32 d22, d3, d22
4190 .long 0xf3439e29 // vcge.f32 d25, d3, d25
4191 .long 0xf2488da8 // vadd.f32 d24, d24, d24
4192 .long 0xf24aadaa // vadd.f32 d26, d26, d26
4193 .long 0xf2073c31 // vfma.f32 d3, d7, d17
4194 .long 0xf24fddad // vadd.f32 d29, d31, d29
4195 .long 0xf24c1da7 // vadd.f32 d17, d28, d23
4196 .long 0xf26e0da0 // vsub.f32 d16, d30, d16
4197 .long 0xf26e2da2 // vsub.f32 d18, d30, d18
4198 .long 0xf26e3da3 // vsub.f32 d19, d30, d19
4199 .long 0xf35541b0 // vbsl d20, d21, d16
4200 .long 0xf35861b2 // vbsl d22, d24, d18
4201 .long 0xf35a91b3 // vbsl d25, d26, d19
4202 .long 0xf20b0da4 // vadd.f32 d0, d27, d20
4203 .long 0xf20d1da6 // vadd.f32 d1, d29, d22
4204 .long 0xf2012da9 // vadd.f32 d2, d17, d25
4205 .long 0xe12fff13 // bx r3
4206
4207HIDDEN _sk_overlay_vfp4
4208.globl _sk_overlay_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004209FUNCTION(_sk_overlay_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004210_sk_overlay_vfp4:
4211 .long 0xf2c71f10 // vmov.f32 d17, #1
4212 .long 0xe4913004 // ldr r3, [r1], #4
4213 .long 0xf2670d04 // vsub.f32 d16, d7, d4
4214 .long 0xf2617d87 // vsub.f32 d23, d17, d7
4215 .long 0xf2611d83 // vsub.f32 d17, d17, d3
4216 .long 0xf2672d05 // vsub.f32 d18, d7, d5
4217 .long 0xf2674d06 // vsub.f32 d20, d7, d6
4218 .long 0xf2633d00 // vsub.f32 d19, d3, d0
4219 .long 0xf2635d01 // vsub.f32 d21, d3, d1
4220 .long 0xf2636d02 // vsub.f32 d22, d3, d2
4221 .long 0xf347bd90 // vmul.f32 d27, d23, d0
4222 .long 0xf341cd94 // vmul.f32 d28, d17, d4
4223 .long 0xf3430db0 // vmul.f32 d16, d19, d16
4224 .long 0xf3463db4 // vmul.f32 d19, d22, d20
4225 .long 0xf3452db2 // vmul.f32 d18, d21, d18
4226 .long 0xf2444d04 // vadd.f32 d20, d4, d4
4227 .long 0xf3405d14 // vmul.f32 d21, d0, d4
4228 .long 0xf2456d05 // vadd.f32 d22, d5, d5
4229 .long 0xf3418d15 // vmul.f32 d24, d1, d5
4230 .long 0xf2469d06 // vadd.f32 d25, d6, d6
4231 .long 0xf342ad16 // vmul.f32 d26, d2, d6
4232 .long 0xf347dd91 // vmul.f32 d29, d23, d1
4233 .long 0xf341fd95 // vmul.f32 d31, d17, d5
4234 .long 0xf24cbdab // vadd.f32 d27, d28, d27
4235 .long 0xf3477d92 // vmul.f32 d23, d23, d2
4236 .long 0xf341cd96 // vmul.f32 d28, d17, d6
4237 .long 0xf343ed17 // vmul.f32 d30, d3, d7
4238 .long 0xf2400da0 // vadd.f32 d16, d16, d16
4239 .long 0xf2422da2 // vadd.f32 d18, d18, d18
4240 .long 0xf2433da3 // vadd.f32 d19, d19, d19
4241 .long 0xf3474e24 // vcge.f32 d20, d7, d20
4242 .long 0xf2455da5 // vadd.f32 d21, d21, d21
4243 .long 0xf3476e26 // vcge.f32 d22, d7, d22
4244 .long 0xf2488da8 // vadd.f32 d24, d24, d24
4245 .long 0xf3479e29 // vcge.f32 d25, d7, d25
4246 .long 0xf24aadaa // vadd.f32 d26, d26, d26
4247 .long 0xf2073c31 // vfma.f32 d3, d7, d17
4248 .long 0xf24fddad // vadd.f32 d29, d31, d29
4249 .long 0xf24c1da7 // vadd.f32 d17, d28, d23
4250 .long 0xf26e0da0 // vsub.f32 d16, d30, d16
4251 .long 0xf26e2da2 // vsub.f32 d18, d30, d18
4252 .long 0xf26e3da3 // vsub.f32 d19, d30, d19
4253 .long 0xf35541b0 // vbsl d20, d21, d16
4254 .long 0xf35861b2 // vbsl d22, d24, d18
4255 .long 0xf35a91b3 // vbsl d25, d26, d19
4256 .long 0xf20b0da4 // vadd.f32 d0, d27, d20
4257 .long 0xf20d1da6 // vadd.f32 d1, d29, d22
4258 .long 0xf2012da9 // vadd.f32 d2, d17, d25
4259 .long 0xe12fff13 // bx r3
4260
4261HIDDEN _sk_softlight_vfp4
4262.globl _sk_softlight_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004263FUNCTION(_sk_softlight_vfp4)
Mike Klein61b84162017-03-31 11:48:14 -04004264_sk_softlight_vfp4:
4265 .long 0xed2d8b06 // vpush {d8-d10}
4266 .long 0xeec58aa7 // vdiv.f32 s17, s11, s15
4267 .long 0xf3f90407 // vcgt.f32 d16, d7, #0
4268 .long 0xe4913004 // ldr r3, [r1], #4
4269 .long 0xeec49aa7 // vdiv.f32 s19, s9, s15
4270 .long 0xeec6aaa7 // vdiv.f32 s21, s13, s15
4271 .long 0xee858a07 // vdiv.f32 s16, s10, s14
4272 .long 0xee849a07 // vdiv.f32 s18, s8, s14
4273 .long 0xee86aa07 // vdiv.f32 s20, s12, s14
4274 .long 0xf26021b0 // vorr d18, d16, d16
4275 .long 0xf2c01010 // vmov.i32 d17, #0
4276 .long 0xf3582131 // vbsl d18, d8, d17
4277 .long 0xf26031b0 // vorr d19, d16, d16
4278 .long 0xf3fb45a2 // vrsqrte.f32 d20, d18
4279 .long 0xf3593131 // vbsl d19, d9, d17
4280 .long 0xf35a0131 // vbsl d16, d10, d17
4281 .long 0xf3fb15a3 // vrsqrte.f32 d17, d19
4282 .long 0xf3fb55a0 // vrsqrte.f32 d21, d16
4283 .long 0xf3446db4 // vmul.f32 d22, d20, d20
4284 .long 0xf243ada3 // vadd.f32 d26, d19, d19
4285 .long 0xf240bda0 // vadd.f32 d27, d16, d16
4286 .long 0xf3417db1 // vmul.f32 d23, d17, d17
4287 .long 0xf3458db5 // vmul.f32 d24, d21, d21
4288 .long 0xf2626fb6 // vrsqrts.f32 d22, d18, d22
4289 .long 0xf2429da2 // vadd.f32 d25, d18, d18
4290 .long 0xf2637fb7 // vrsqrts.f32 d23, d19, d23
4291 .long 0xf2608fb8 // vrsqrts.f32 d24, d16, d24
4292 .long 0xf2818f1c // vmov.f32 d8, #7
4293 .long 0xf2499da9 // vadd.f32 d25, d25, d25
4294 .long 0xf3444db6 // vmul.f32 d20, d20, d22
4295 .long 0xf24a6daa // vadd.f32 d22, d26, d26
4296 .long 0xf24badab // vadd.f32 d26, d27, d27
4297 .long 0xf3411db7 // vmul.f32 d17, d17, d23
4298 .long 0xf3455db8 // vmul.f32 d21, d21, d24
4299 .long 0xf3fb7524 // vrecpe.f32 d23, d20
4300 .long 0xf3498db9 // vmul.f32 d24, d25, d25
4301 .long 0xf3fbd521 // vrecpe.f32 d29, d17
4302 .long 0xf34aedba // vmul.f32 d30, d26, d26
4303 .long 0xf3fbf525 // vrecpe.f32 d31, d21
4304 .long 0xf2444fb7 // vrecps.f32 d20, d20, d23
4305 .long 0xf346cdb6 // vmul.f32 d28, d22, d22
4306 .long 0xf2411fbd // vrecps.f32 d17, d17, d29
4307 .long 0xf3c7bf10 // vmov.f32 d27, #-1
4308 .long 0xf2455fbf // vrecps.f32 d21, d21, d31
4309 .long 0xf24aadae // vadd.f32 d26, d26, d30
4310 .long 0xf2498da8 // vadd.f32 d24, d25, d24
4311 .long 0xf2429dab // vadd.f32 d25, d18, d27
4312 .long 0xf2466dac // vadd.f32 d22, d22, d28
4313 .long 0xf243cdab // vadd.f32 d28, d19, d27
4314 .long 0xf240bdab // vadd.f32 d27, d16, d27
4315 .long 0xf3474db4 // vmul.f32 d20, d23, d20
4316 .long 0xf2c7ef10 // vmov.f32 d30, #1
4317 .long 0xf34d1db1 // vmul.f32 d17, d29, d17
4318 .long 0xf34badba // vmul.f32 d26, d27, d26
4319 .long 0xf242bd02 // vadd.f32 d27, d2, d2
4320 .long 0xf26edda0 // vsub.f32 d29, d30, d16
4321 .long 0xf3498db8 // vmul.f32 d24, d25, d24
4322 .long 0xf3429d98 // vmul.f32 d25, d18, d8
4323 .long 0xf34f5db5 // vmul.f32 d21, d31, d21
4324 .long 0xf26efda2 // vsub.f32 d31, d30, d18
4325 .long 0xf2642da2 // vsub.f32 d18, d20, d18
4326 .long 0xf26b4d83 // vsub.f32 d20, d27, d3
4327 .long 0xf2498da8 // vadd.f32 d24, d25, d24
4328 .long 0xf34c6db6 // vmul.f32 d22, d28, d22
4329 .long 0xf3437d98 // vmul.f32 d23, d19, d8
4330 .long 0xf3449dbd // vmul.f32 d25, d20, d29
4331 .long 0xf245dd05 // vadd.f32 d29, d5, d5
4332 .long 0xf340cd98 // vmul.f32 d28, d16, d8
4333 .long 0xf2476da6 // vadd.f32 d22, d23, d22
4334 .long 0xf2611da3 // vsub.f32 d17, d17, d19
4335 .long 0xf24dddad // vadd.f32 d29, d29, d29
4336 .long 0xf24c7daa // vadd.f32 d23, d28, d26
4337 .long 0xf2650da0 // vsub.f32 d16, d21, d16
4338 .long 0xf26e3da3 // vsub.f32 d19, d30, d19
4339 .long 0xf347de2d // vcge.f32 d29, d7, d29
4340 .long 0xf241ad01 // vadd.f32 d26, d1, d1
4341 .long 0xf3444d97 // vmul.f32 d20, d20, d7
4342 .long 0xf358d1b2 // vbsl d29, d24, d18
4343 .long 0xf2448d04 // vadd.f32 d24, d4, d4
4344 .long 0xf2462d06 // vadd.f32 d18, d6, d6
4345 .long 0xf26a5d83 // vsub.f32 d21, d26, d3
4346 .long 0xf2488da8 // vadd.f32 d24, d24, d24
4347 .long 0xf2422da2 // vadd.f32 d18, d18, d18
4348 .long 0xf345cdbf // vmul.f32 d28, d21, d31
4349 .long 0xf3455d97 // vmul.f32 d21, d21, d7
4350 .long 0xf3478e28 // vcge.f32 d24, d7, d24
4351 .long 0xf3472e22 // vcge.f32 d18, d7, d18
4352 .long 0xf343fd14 // vmul.f32 d31, d3, d4
4353 .long 0xf3455dbd // vmul.f32 d21, d21, d29
4354 .long 0xf35681b1 // vbsl d24, d22, d17
4355 .long 0xf2401d00 // vadd.f32 d17, d0, d0
4356 .long 0xf35721b0 // vbsl d18, d23, d16
4357 .long 0xf24c0d83 // vadd.f32 d16, d28, d3
4358 .long 0xf2496d83 // vadd.f32 d22, d25, d3
4359 .long 0xf2617d83 // vsub.f32 d23, d17, d3
4360 .long 0xf3442db2 // vmul.f32 d18, d20, d18
4361 .long 0xf3434e2a // vcge.f32 d20, d3, d26
4362 .long 0xf343ae2b // vcge.f32 d26, d3, d27
4363 .long 0xf3473db3 // vmul.f32 d19, d23, d19
4364 .long 0xf3477d97 // vmul.f32 d23, d23, d7
4365 .long 0xf3431e21 // vcge.f32 d17, d3, d17
4366 .long 0xf3400d95 // vmul.f32 d16, d16, d5
4367 .long 0xf2433d83 // vadd.f32 d19, d19, d3
4368 .long 0xf3477db8 // vmul.f32 d23, d23, d24
4369 .long 0xf26e8d87 // vsub.f32 d24, d30, d7
4370 .long 0xf26eed83 // vsub.f32 d30, d30, d3
4371 .long 0xf3433d94 // vmul.f32 d19, d19, d4
4372 .long 0xf24f7da7 // vadd.f32 d23, d31, d23
4373 .long 0xf3489d91 // vmul.f32 d25, d24, d1
4374 .long 0xf348cd90 // vmul.f32 d28, d24, d0
4375 .long 0xf34edd94 // vmul.f32 d29, d30, d4
4376 .long 0xf34ebd95 // vmul.f32 d27, d30, d5
4377 .long 0xf3488d92 // vmul.f32 d24, d24, d2
4378 .long 0xf34efd96 // vmul.f32 d31, d30, d6
4379 .long 0xf24dcdac // vadd.f32 d28, d29, d28
4380 .long 0xf343dd15 // vmul.f32 d29, d3, d5
4381 .long 0xf24b9da9 // vadd.f32 d25, d27, d25
4382 .long 0xf343bd16 // vmul.f32 d27, d3, d6
4383 .long 0xf3466d96 // vmul.f32 d22, d22, d6
4384 .long 0xf24f8da8 // vadd.f32 d24, d31, d24
4385 .long 0xf24d5da5 // vadd.f32 d21, d29, d21
4386 .long 0xf24b2da2 // vadd.f32 d18, d27, d18
4387 .long 0xf35311b7 // vbsl d17, d19, d23
4388 .long 0xf35041b5 // vbsl d20, d16, d21
4389 .long 0xf356a1b2 // vbsl d26, d22, d18
4390 .long 0xf2073c3e // vfma.f32 d3, d7, d30
4391 .long 0xf20c0da1 // vadd.f32 d0, d28, d17
4392 .long 0xf2091da4 // vadd.f32 d1, d25, d20
4393 .long 0xf2082daa // vadd.f32 d2, d24, d26
4394 .long 0xecbd8b06 // vpop {d8-d10}
4395 .long 0xe12fff13 // bx r3
4396
Mike Klein7c4af542017-03-29 18:21:14 -04004397HIDDEN _sk_clamp_0_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004398.globl _sk_clamp_0_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004399FUNCTION(_sk_clamp_0_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004400_sk_clamp_0_vfp4:
4401 .long 0xf2c00010 // vmov.i32 d16, #0
4402 .long 0xe4913004 // ldr r3, [r1], #4
4403 .long 0xf2000f20 // vmax.f32 d0, d0, d16
4404 .long 0xf2011f20 // vmax.f32 d1, d1, d16
4405 .long 0xf2022f20 // vmax.f32 d2, d2, d16
4406 .long 0xf2033f20 // vmax.f32 d3, d3, d16
4407 .long 0xe12fff13 // bx r3
4408
Mike Klein7c4af542017-03-29 18:21:14 -04004409HIDDEN _sk_clamp_1_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004410.globl _sk_clamp_1_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004411FUNCTION(_sk_clamp_1_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004412_sk_clamp_1_vfp4:
4413 .long 0xf2c70f10 // vmov.f32 d16, #1
4414 .long 0xe4913004 // ldr r3, [r1], #4
4415 .long 0xf2200f20 // vmin.f32 d0, d0, d16
4416 .long 0xf2211f20 // vmin.f32 d1, d1, d16
4417 .long 0xf2222f20 // vmin.f32 d2, d2, d16
4418 .long 0xf2233f20 // vmin.f32 d3, d3, d16
4419 .long 0xe12fff13 // bx r3
4420
Mike Klein7c4af542017-03-29 18:21:14 -04004421HIDDEN _sk_clamp_a_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004422.globl _sk_clamp_a_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004423FUNCTION(_sk_clamp_a_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004424_sk_clamp_a_vfp4:
4425 .long 0xf2c70f10 // vmov.f32 d16, #1
4426 .long 0xe4913004 // ldr r3, [r1], #4
4427 .long 0xf2233f20 // vmin.f32 d3, d3, d16
4428 .long 0xf2200f03 // vmin.f32 d0, d0, d3
4429 .long 0xf2211f03 // vmin.f32 d1, d1, d3
4430 .long 0xf2222f03 // vmin.f32 d2, d2, d3
4431 .long 0xe12fff13 // bx r3
4432
Mike Klein7c4af542017-03-29 18:21:14 -04004433HIDDEN _sk_set_rgb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004434.globl _sk_set_rgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004435FUNCTION(_sk_set_rgb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004436_sk_set_rgb_vfp4:
4437 .long 0xe92d4800 // push {fp, lr}
4438 .long 0xe8911008 // ldm r1, {r3, ip}
4439 .long 0xe2811008 // add r1, r1, #8
4440 .long 0xe283e008 // add lr, r3, #8
4441 .long 0xf4a30c9d // vld1.32 {d0[]}, [r3 :32]!
4442 .long 0xf4ae2c9f // vld1.32 {d2[]}, [lr :32]
4443 .long 0xf4a31c9f // vld1.32 {d1[]}, [r3 :32]
4444 .long 0xe8bd4800 // pop {fp, lr}
4445 .long 0xe12fff1c // bx ip
4446
Mike Klein7c4af542017-03-29 18:21:14 -04004447HIDDEN _sk_swap_rb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004448.globl _sk_swap_rb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004449FUNCTION(_sk_swap_rb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004450_sk_swap_rb_vfp4:
4451 .long 0xeef00b40 // vmov.f64 d16, d0
4452 .long 0xe4913004 // ldr r3, [r1], #4
4453 .long 0xeeb00b42 // vmov.f64 d0, d2
4454 .long 0xeeb02b60 // vmov.f64 d2, d16
4455 .long 0xe12fff13 // bx r3
4456
Mike Klein7c4af542017-03-29 18:21:14 -04004457HIDDEN _sk_swap_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004458.globl _sk_swap_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004459FUNCTION(_sk_swap_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004460_sk_swap_vfp4:
4461 .long 0xeef00b43 // vmov.f64 d16, d3
4462 .long 0xe4913004 // ldr r3, [r1], #4
4463 .long 0xeef01b42 // vmov.f64 d17, d2
4464 .long 0xeef02b41 // vmov.f64 d18, d1
4465 .long 0xeef03b40 // vmov.f64 d19, d0
4466 .long 0xeeb00b44 // vmov.f64 d0, d4
4467 .long 0xeeb01b45 // vmov.f64 d1, d5
4468 .long 0xeeb02b46 // vmov.f64 d2, d6
4469 .long 0xeeb03b47 // vmov.f64 d3, d7
4470 .long 0xeeb04b63 // vmov.f64 d4, d19
4471 .long 0xeeb05b62 // vmov.f64 d5, d18
4472 .long 0xeeb06b61 // vmov.f64 d6, d17
4473 .long 0xeeb07b60 // vmov.f64 d7, d16
4474 .long 0xe12fff13 // bx r3
4475
Mike Klein7c4af542017-03-29 18:21:14 -04004476HIDDEN _sk_move_src_dst_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004477.globl _sk_move_src_dst_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004478FUNCTION(_sk_move_src_dst_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004479_sk_move_src_dst_vfp4:
4480 .long 0xeeb04b40 // vmov.f64 d4, d0
4481 .long 0xe4913004 // ldr r3, [r1], #4
4482 .long 0xeeb05b41 // vmov.f64 d5, d1
4483 .long 0xeeb06b42 // vmov.f64 d6, d2
4484 .long 0xeeb07b43 // vmov.f64 d7, d3
4485 .long 0xe12fff13 // bx r3
4486
Mike Klein7c4af542017-03-29 18:21:14 -04004487HIDDEN _sk_move_dst_src_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004488.globl _sk_move_dst_src_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004489FUNCTION(_sk_move_dst_src_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004490_sk_move_dst_src_vfp4:
4491 .long 0xeeb00b44 // vmov.f64 d0, d4
4492 .long 0xe4913004 // ldr r3, [r1], #4
4493 .long 0xeeb01b45 // vmov.f64 d1, d5
4494 .long 0xeeb02b46 // vmov.f64 d2, d6
4495 .long 0xeeb03b47 // vmov.f64 d3, d7
4496 .long 0xe12fff13 // bx r3
4497
Mike Klein7c4af542017-03-29 18:21:14 -04004498HIDDEN _sk_premul_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004499.globl _sk_premul_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004500FUNCTION(_sk_premul_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004501_sk_premul_vfp4:
4502 .long 0xf3000d13 // vmul.f32 d0, d0, d3
4503 .long 0xe4913004 // ldr r3, [r1], #4
4504 .long 0xf3011d13 // vmul.f32 d1, d1, d3
4505 .long 0xf3022d13 // vmul.f32 d2, d2, d3
4506 .long 0xe12fff13 // bx r3
4507
Mike Klein7c4af542017-03-29 18:21:14 -04004508HIDDEN _sk_unpremul_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004509.globl _sk_unpremul_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004510FUNCTION(_sk_unpremul_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004511_sk_unpremul_vfp4:
4512 .long 0xed2d8b04 // vpush {d8-d9}
4513 .long 0xeeb78a00 // vmov.f32 s16, #112
4514 .long 0xf3f91503 // vceq.f32 d17, d3, #0
4515 .long 0xf2c00010 // vmov.i32 d16, #0
4516 .long 0xe4913004 // ldr r3, [r1], #4
4517 .long 0xeec89a23 // vdiv.f32 s19, s16, s7
4518 .long 0xee889a03 // vdiv.f32 s18, s16, s6
4519 .long 0xf3501199 // vbsl d17, d16, d9
4520 .long 0xf3010d90 // vmul.f32 d0, d17, d0
4521 .long 0xf3011d91 // vmul.f32 d1, d17, d1
4522 .long 0xf3012d92 // vmul.f32 d2, d17, d2
4523 .long 0xecbd8b04 // vpop {d8-d9}
4524 .long 0xe12fff13 // bx r3
Mike Klein61b84162017-03-31 11:48:14 -04004525 .long 0xe320f000 // nop {0}
Mike Kleind7e06ae2017-03-29 16:33:06 -04004526
Mike Klein7c4af542017-03-29 18:21:14 -04004527HIDDEN _sk_from_srgb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004528.globl _sk_from_srgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004529FUNCTION(_sk_from_srgb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004530_sk_from_srgb_vfp4:
4531 .long 0xeddf3b20 // vldr d19, [pc, #128]
4532 .long 0xf3408d10 // vmul.f32 d24, d0, d0
4533 .long 0xeddf0b1c // vldr d16, [pc, #112]
4534 .long 0xf26341b3 // vorr d20, d19, d19
4535 .long 0xf26351b3 // vorr d21, d19, d19
4536 .long 0xeddf9b1f // vldr d25, [pc, #124]
4537 .long 0xf2404c30 // vfma.f32 d20, d0, d16
4538 .long 0xeddf2b1b // vldr d18, [pc, #108]
4539 .long 0xf2415c30 // vfma.f32 d21, d1, d16
4540 .long 0xeddfcb1d // vldr d28, [pc, #116]
4541 .long 0xf2423c30 // vfma.f32 d19, d2, d16
4542 .long 0xe4913004 // ldr r3, [r1], #4
4543 .long 0xf3426d12 // vmul.f32 d22, d2, d2
4544 .long 0xf3417d11 // vmul.f32 d23, d1, d1
4545 .long 0xf3620e80 // vcgt.f32 d16, d18, d0
4546 .long 0xf3621e81 // vcgt.f32 d17, d18, d1
4547 .long 0xf341ad39 // vmul.f32 d26, d1, d25
4548 .long 0xf342bd39 // vmul.f32 d27, d2, d25
4549 .long 0xf3622e82 // vcgt.f32 d18, d18, d2
4550 .long 0xf3409d39 // vmul.f32 d25, d0, d25
4551 .long 0xf26cd1bc // vorr d29, d28, d28
4552 .long 0xf248dcb4 // vfma.f32 d29, d24, d20
4553 .long 0xf26c41bc // vorr d20, d28, d28
4554 .long 0xf2474cb5 // vfma.f32 d20, d23, d21
4555 .long 0xf246ccb3 // vfma.f32 d28, d22, d19
4556 .long 0xf35901bd // vbsl d16, d25, d29
4557 .long 0xf35a11b4 // vbsl d17, d26, d20
4558 .long 0xf35b21bc // vbsl d18, d27, d28
4559 .long 0xf22001b0 // vorr d0, d16, d16
4560 .long 0xf22111b1 // vorr d1, d17, d17
4561 .long 0xf22221b2 // vorr d2, d18, d18
4562 .long 0xe12fff13 // bx r3
4563 .long 0x3e99999a // .word 0x3e99999a
4564 .long 0x3e99999a // .word 0x3e99999a
4565 .long 0x3f328f5c // .word 0x3f328f5c
4566 .long 0x3f328f5c // .word 0x3f328f5c
4567 .long 0x3d6147ae // .word 0x3d6147ae
4568 .long 0x3d6147ae // .word 0x3d6147ae
4569 .long 0x3d9e8391 // .word 0x3d9e8391
4570 .long 0x3d9e8391 // .word 0x3d9e8391
4571 .long 0x3b23d70a // .word 0x3b23d70a
4572 .long 0x3b23d70a // .word 0x3b23d70a
4573
Mike Klein7c4af542017-03-29 18:21:14 -04004574HIDDEN _sk_to_srgb_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04004575.globl _sk_to_srgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004576FUNCTION(_sk_to_srgb_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04004577_sk_to_srgb_vfp4:
4578 .long 0xf3fb0582 // vrsqrte.f32 d16, d2
4579 .long 0xe4913004 // ldr r3, [r1], #4
4580 .long 0xf3fb1581 // vrsqrte.f32 d17, d1
4581 .long 0xf3fb2580 // vrsqrte.f32 d18, d0
4582 .long 0xf3403db0 // vmul.f32 d19, d16, d16
4583 .long 0xf3414db1 // vmul.f32 d20, d17, d17
4584 .long 0xf3425db2 // vmul.f32 d21, d18, d18
4585 .long 0xf2623f33 // vrsqrts.f32 d19, d2, d19
4586 .long 0xf2614f34 // vrsqrts.f32 d20, d1, d20
4587 .long 0xf2605f35 // vrsqrts.f32 d21, d0, d21
4588 .long 0xf3400db3 // vmul.f32 d16, d16, d19
4589 .long 0xf3411db4 // vmul.f32 d17, d17, d20
4590 .long 0xf3422db5 // vmul.f32 d18, d18, d21
4591 .long 0xf3fb3520 // vrecpe.f32 d19, d16
4592 .long 0xf3fb4521 // vrecpe.f32 d20, d17
4593 .long 0xf3fb6522 // vrecpe.f32 d22, d18
4594 .long 0xf3fb55a0 // vrsqrte.f32 d21, d16
4595 .long 0xf3fb75a1 // vrsqrte.f32 d23, d17
4596 .long 0xf3fb85a2 // vrsqrte.f32 d24, d18
4597 .long 0xf2409fb3 // vrecps.f32 d25, d16, d19
4598 .long 0xf241afb4 // vrecps.f32 d26, d17, d20
4599 .long 0xf242bfb6 // vrecps.f32 d27, d18, d22
4600 .long 0xf345cdb5 // vmul.f32 d28, d21, d21
4601 .long 0xf347ddb7 // vmul.f32 d29, d23, d23
4602 .long 0xf348edb8 // vmul.f32 d30, d24, d24
4603 .long 0xf2600fbc // vrsqrts.f32 d16, d16, d28
4604 .long 0xf2611fbd // vrsqrts.f32 d17, d17, d29
4605 .long 0xf2622fbe // vrsqrts.f32 d18, d18, d30
4606 .long 0xf3433db9 // vmul.f32 d19, d19, d25
4607 .long 0xeddf9b21 // vldr d25, [pc, #132]
4608 .long 0xf3444dba // vmul.f32 d20, d20, d26
4609 .long 0xeddfab21 // vldr d26, [pc, #132]
4610 .long 0xf3466dbb // vmul.f32 d22, d22, d27
4611 .long 0xf26ab1ba // vorr d27, d26, d26
4612 .long 0xf243bcb9 // vfma.f32 d27, d19, d25
4613 .long 0xf26a31ba // vorr d19, d26, d26
4614 .long 0xf2443cb9 // vfma.f32 d19, d20, d25
4615 .long 0xeddf4b1d // vldr d20, [pc, #116]
4616 .long 0xf246acb9 // vfma.f32 d26, d22, d25
4617 .long 0xf3450db0 // vmul.f32 d16, d21, d16
4618 .long 0xeddf5b1c // vldr d21, [pc, #112]
4619 .long 0xf3471db1 // vmul.f32 d17, d23, d17
4620 .long 0xf3482db2 // vmul.f32 d18, d24, d18
4621 .long 0xf3406d35 // vmul.f32 d22, d0, d21
4622 .long 0xf240bcb4 // vfma.f32 d27, d16, d20
4623 .long 0xf2413cb4 // vfma.f32 d19, d17, d20
4624 .long 0xf242acb4 // vfma.f32 d26, d18, d20
4625 .long 0xeddf2b17 // vldr d18, [pc, #92]
4626 .long 0xf3417d35 // vmul.f32 d23, d1, d21
4627 .long 0xf3620e80 // vcgt.f32 d16, d18, d0
4628 .long 0xf3621e81 // vcgt.f32 d17, d18, d1
4629 .long 0xf3622e82 // vcgt.f32 d18, d18, d2
4630 .long 0xf3425d35 // vmul.f32 d21, d2, d21
4631 .long 0xf2c74f10 // vmov.f32 d20, #1
4632 .long 0xf2648faa // vmin.f32 d24, d20, d26
4633 .long 0xf2643fa3 // vmin.f32 d19, d20, d19
4634 .long 0xf2644fab // vmin.f32 d20, d20, d27
4635 .long 0xf35601b8 // vbsl d16, d22, d24
4636 .long 0xf35711b3 // vbsl d17, d23, d19
4637 .long 0xf35521b4 // vbsl d18, d21, d20
4638 .long 0xf22001b0 // vorr d0, d16, d16
4639 .long 0xf22111b1 // vorr d1, d17, d17
4640 .long 0xf22221b2 // vorr d2, d18, d18
4641 .long 0xe12fff13 // bx r3
4642 .long 0x3f306fce // .word 0x3f306fce
4643 .long 0x3f306fce // .word 0x3f306fce
4644 .long 0xbdca57a8 // .word 0xbdca57a8
4645 .long 0xbdca57a8 // .word 0xbdca57a8
4646 .long 0x3ed287c2 // .word 0x3ed287c2
4647 .long 0x3ed287c2 // .word 0x3ed287c2
4648 .long 0x41475c29 // .word 0x41475c29
4649 .long 0x41475c29 // .word 0x41475c29
4650 .long 0x3b8ce704 // .word 0x3b8ce704
4651 .long 0x3b8ce704 // .word 0x3b8ce704
4652
Mike Klein7125ac62017-04-05 15:27:22 -04004653HIDDEN _sk_from_2dot2_vfp4
4654.globl _sk_from_2dot2_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004655FUNCTION(_sk_from_2dot2_vfp4)
Mike Klein7125ac62017-04-05 15:27:22 -04004656_sk_from_2dot2_vfp4:
4657 .long 0xf3fb0580 // vrsqrte.f32 d16, d0
4658 .long 0xe4913004 // ldr r3, [r1], #4
4659 .long 0xf3fb1581 // vrsqrte.f32 d17, d1
4660 .long 0xf3fb2582 // vrsqrte.f32 d18, d2
4661 .long 0xf3403db0 // vmul.f32 d19, d16, d16
4662 .long 0xf3414db1 // vmul.f32 d20, d17, d17
4663 .long 0xf3425db2 // vmul.f32 d21, d18, d18
4664 .long 0xf2603f33 // vrsqrts.f32 d19, d0, d19
4665 .long 0xf2614f34 // vrsqrts.f32 d20, d1, d20
4666 .long 0xf2625f35 // vrsqrts.f32 d21, d2, d21
4667 .long 0xf3400db3 // vmul.f32 d16, d16, d19
4668 .long 0xf3411db4 // vmul.f32 d17, d17, d20
4669 .long 0xf3422db5 // vmul.f32 d18, d18, d21
4670 .long 0xf3fb35a0 // vrsqrte.f32 d19, d16
4671 .long 0xf3fb45a1 // vrsqrte.f32 d20, d17
4672 .long 0xf3fb55a2 // vrsqrte.f32 d21, d18
4673 .long 0xf3436db3 // vmul.f32 d22, d19, d19
4674 .long 0xf3447db4 // vmul.f32 d23, d20, d20
4675 .long 0xf3458db5 // vmul.f32 d24, d21, d21
4676 .long 0xf2600fb6 // vrsqrts.f32 d16, d16, d22
4677 .long 0xf2611fb7 // vrsqrts.f32 d17, d17, d23
4678 .long 0xf2622fb8 // vrsqrts.f32 d18, d18, d24
4679 .long 0xf3430db0 // vmul.f32 d16, d19, d16
4680 .long 0xf3441db1 // vmul.f32 d17, d20, d17
4681 .long 0xf3452db2 // vmul.f32 d18, d21, d18
4682 .long 0xf3fb35a0 // vrsqrte.f32 d19, d16
4683 .long 0xf3fb45a1 // vrsqrte.f32 d20, d17
4684 .long 0xf3fb55a2 // vrsqrte.f32 d21, d18
4685 .long 0xf3436db3 // vmul.f32 d22, d19, d19
4686 .long 0xf3447db4 // vmul.f32 d23, d20, d20
4687 .long 0xf3458db5 // vmul.f32 d24, d21, d21
4688 .long 0xf2600fb6 // vrsqrts.f32 d16, d16, d22
4689 .long 0xf2611fb7 // vrsqrts.f32 d17, d17, d23
4690 .long 0xf2622fb8 // vrsqrts.f32 d18, d18, d24
4691 .long 0xf3430db0 // vmul.f32 d16, d19, d16
4692 .long 0xf3441db1 // vmul.f32 d17, d20, d17
4693 .long 0xf3452db2 // vmul.f32 d18, d21, d18
4694 .long 0xf3fb35a0 // vrsqrte.f32 d19, d16
4695 .long 0xf3fb45a1 // vrsqrte.f32 d20, d17
4696 .long 0xf3fb55a2 // vrsqrte.f32 d21, d18
4697 .long 0xf3436db3 // vmul.f32 d22, d19, d19
4698 .long 0xf3447db4 // vmul.f32 d23, d20, d20
4699 .long 0xf3458db5 // vmul.f32 d24, d21, d21
4700 .long 0xf2600fb6 // vrsqrts.f32 d16, d16, d22
4701 .long 0xf2611fb7 // vrsqrts.f32 d17, d17, d23
4702 .long 0xf2622fb8 // vrsqrts.f32 d18, d18, d24
4703 .long 0xf3430db0 // vmul.f32 d16, d19, d16
4704 .long 0xf3441db1 // vmul.f32 d17, d20, d17
4705 .long 0xf3452db2 // vmul.f32 d18, d21, d18
4706 .long 0xf3fb35a0 // vrsqrte.f32 d19, d16
4707 .long 0xf3fb45a1 // vrsqrte.f32 d20, d17
4708 .long 0xf3fb55a2 // vrsqrte.f32 d21, d18
4709 .long 0xf340bdb0 // vmul.f32 d27, d16, d16
4710 .long 0xf341ddb1 // vmul.f32 d29, d17, d17
4711 .long 0xf3436db3 // vmul.f32 d22, d19, d19
4712 .long 0xf3447db4 // vmul.f32 d23, d20, d20
4713 .long 0xf3458db5 // vmul.f32 d24, d21, d21
4714 .long 0xf2606fb6 // vrsqrts.f32 d22, d16, d22
4715 .long 0xf2617fb7 // vrsqrts.f32 d23, d17, d23
4716 .long 0xf2628fb8 // vrsqrts.f32 d24, d18, d24
4717 .long 0xf3400dbb // vmul.f32 d16, d16, d27
4718 .long 0xf3411dbd // vmul.f32 d17, d17, d29
4719 .long 0xf341bd11 // vmul.f32 d27, d1, d1
4720 .long 0xf3433db6 // vmul.f32 d19, d19, d22
4721 .long 0xf3444db7 // vmul.f32 d20, d20, d23
4722 .long 0xf3455db8 // vmul.f32 d21, d21, d24
4723 .long 0xf34b1db1 // vmul.f32 d17, d27, d17
4724 .long 0xf3fb65a3 // vrsqrte.f32 d22, d19
4725 .long 0xf3fb75a4 // vrsqrte.f32 d23, d20
4726 .long 0xf3fb85a5 // vrsqrte.f32 d24, d21
4727 .long 0xf3469db6 // vmul.f32 d25, d22, d22
4728 .long 0xf347adb7 // vmul.f32 d26, d23, d23
4729 .long 0xf348cdb8 // vmul.f32 d28, d24, d24
4730 .long 0xf2633fb9 // vrsqrts.f32 d19, d19, d25
4731 .long 0xf2644fba // vrsqrts.f32 d20, d20, d26
4732 .long 0xf3429db2 // vmul.f32 d25, d18, d18
4733 .long 0xf2655fbc // vrsqrts.f32 d21, d21, d28
4734 .long 0xf340ad10 // vmul.f32 d26, d0, d0
4735 .long 0xf3422db9 // vmul.f32 d18, d18, d25
4736 .long 0xf3429d12 // vmul.f32 d25, d2, d2
4737 .long 0xf3463db3 // vmul.f32 d19, d22, d19
4738 .long 0xf3474db4 // vmul.f32 d20, d23, d20
4739 .long 0xf34a0db0 // vmul.f32 d16, d26, d16
4740 .long 0xf3485db5 // vmul.f32 d21, d24, d21
4741 .long 0xf3492db2 // vmul.f32 d18, d25, d18
4742 .long 0xf3400db3 // vmul.f32 d16, d16, d19
4743 .long 0xf3411db4 // vmul.f32 d17, d17, d20
4744 .long 0xf3422db5 // vmul.f32 d18, d18, d21
4745 .long 0xf2c03010 // vmov.i32 d19, #0
4746 .long 0xf2000fa3 // vmax.f32 d0, d16, d19
4747 .long 0xf2011fa3 // vmax.f32 d1, d17, d19
4748 .long 0xf2022fa3 // vmax.f32 d2, d18, d19
4749 .long 0xe12fff13 // bx r3
4750
4751HIDDEN _sk_to_2dot2_vfp4
4752.globl _sk_to_2dot2_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004753FUNCTION(_sk_to_2dot2_vfp4)
Mike Klein7125ac62017-04-05 15:27:22 -04004754_sk_to_2dot2_vfp4:
4755 .long 0xf3fb0580 // vrsqrte.f32 d16, d0
4756 .long 0xe4913004 // ldr r3, [r1], #4
4757 .long 0xf3fb1581 // vrsqrte.f32 d17, d1
4758 .long 0xf3fb3582 // vrsqrte.f32 d19, d2
4759 .long 0xf3402db0 // vmul.f32 d18, d16, d16
4760 .long 0xf3414db1 // vmul.f32 d20, d17, d17
4761 .long 0xf3435db3 // vmul.f32 d21, d19, d19
4762 .long 0xf2602f32 // vrsqrts.f32 d18, d0, d18
4763 .long 0xf2614f34 // vrsqrts.f32 d20, d1, d20
4764 .long 0xf2625f35 // vrsqrts.f32 d21, d2, d21
4765 .long 0xf3402db2 // vmul.f32 d18, d16, d18
4766 .long 0xf3411db4 // vmul.f32 d17, d17, d20
4767 .long 0xf3430db5 // vmul.f32 d16, d19, d21
4768 .long 0xf3fb35a2 // vrsqrte.f32 d19, d18
4769 .long 0xf3fb45a1 // vrsqrte.f32 d20, d17
4770 .long 0xf3fb55a0 // vrsqrte.f32 d21, d16
4771 .long 0xf3fbc522 // vrecpe.f32 d28, d18
4772 .long 0xf3436db3 // vmul.f32 d22, d19, d19
4773 .long 0xf3447db4 // vmul.f32 d23, d20, d20
4774 .long 0xf3458db5 // vmul.f32 d24, d21, d21
4775 .long 0xf2626fb6 // vrsqrts.f32 d22, d18, d22
4776 .long 0xf2617fb7 // vrsqrts.f32 d23, d17, d23
4777 .long 0xf2608fb8 // vrsqrts.f32 d24, d16, d24
4778 .long 0xf2422fbc // vrecps.f32 d18, d18, d28
4779 .long 0xf3433db6 // vmul.f32 d19, d19, d22
4780 .long 0xf3444db7 // vmul.f32 d20, d20, d23
4781 .long 0xf3455db8 // vmul.f32 d21, d21, d24
4782 .long 0xf34c2db2 // vmul.f32 d18, d28, d18
4783 .long 0xf3fb65a3 // vrsqrte.f32 d22, d19
4784 .long 0xf3fb75a4 // vrsqrte.f32 d23, d20
4785 .long 0xf3fb85a5 // vrsqrte.f32 d24, d21
4786 .long 0xf3469db6 // vmul.f32 d25, d22, d22
4787 .long 0xf347adb7 // vmul.f32 d26, d23, d23
4788 .long 0xf348bdb8 // vmul.f32 d27, d24, d24
4789 .long 0xf2633fb9 // vrsqrts.f32 d19, d19, d25
4790 .long 0xf2644fba // vrsqrts.f32 d20, d20, d26
4791 .long 0xf2655fbb // vrsqrts.f32 d21, d21, d27
4792 .long 0xf3463db3 // vmul.f32 d19, d22, d19
4793 .long 0xf3474db4 // vmul.f32 d20, d23, d20
4794 .long 0xf3485db5 // vmul.f32 d21, d24, d21
4795 .long 0xf3fb65a3 // vrsqrte.f32 d22, d19
4796 .long 0xf3fb75a4 // vrsqrte.f32 d23, d20
4797 .long 0xf3fb85a5 // vrsqrte.f32 d24, d21
4798 .long 0xf3469db6 // vmul.f32 d25, d22, d22
4799 .long 0xf347adb7 // vmul.f32 d26, d23, d23
4800 .long 0xf348bdb8 // vmul.f32 d27, d24, d24
4801 .long 0xf2633fb9 // vrsqrts.f32 d19, d19, d25
4802 .long 0xf2644fba // vrsqrts.f32 d20, d20, d26
4803 .long 0xf2655fbb // vrsqrts.f32 d21, d21, d27
4804 .long 0xf3463db3 // vmul.f32 d19, d22, d19
4805 .long 0xf3474db4 // vmul.f32 d20, d23, d20
4806 .long 0xf3485db5 // vmul.f32 d21, d24, d21
4807 .long 0xf3fb65a3 // vrsqrte.f32 d22, d19
4808 .long 0xf3fb75a4 // vrsqrte.f32 d23, d20
4809 .long 0xf3fb85a5 // vrsqrte.f32 d24, d21
4810 .long 0xf3469db6 // vmul.f32 d25, d22, d22
4811 .long 0xf347adb7 // vmul.f32 d26, d23, d23
4812 .long 0xf348bdb8 // vmul.f32 d27, d24, d24
4813 .long 0xf2633fb9 // vrsqrts.f32 d19, d19, d25
4814 .long 0xf2644fba // vrsqrts.f32 d20, d20, d26
4815 .long 0xf2655fbb // vrsqrts.f32 d21, d21, d27
4816 .long 0xf3463db3 // vmul.f32 d19, d22, d19
4817 .long 0xf3474db4 // vmul.f32 d20, d23, d20
4818 .long 0xf3485db5 // vmul.f32 d21, d24, d21
4819 .long 0xf3fb65a3 // vrsqrte.f32 d22, d19
4820 .long 0xf3fb75a4 // vrsqrte.f32 d23, d20
4821 .long 0xf3fb85a5 // vrsqrte.f32 d24, d21
4822 .long 0xf3432db2 // vmul.f32 d18, d19, d18
4823 .long 0xf3469db6 // vmul.f32 d25, d22, d22
4824 .long 0xf347adb7 // vmul.f32 d26, d23, d23
4825 .long 0xf348bdb8 // vmul.f32 d27, d24, d24
4826 .long 0xf2639fb9 // vrsqrts.f32 d25, d19, d25
4827 .long 0xf264afba // vrsqrts.f32 d26, d20, d26
4828 .long 0xf265bfbb // vrsqrts.f32 d27, d21, d27
4829 .long 0xf3466db9 // vmul.f32 d22, d22, d25
4830 .long 0xf3fb9521 // vrecpe.f32 d25, d17
4831 .long 0xf3477dba // vmul.f32 d23, d23, d26
4832 .long 0xf3fba520 // vrecpe.f32 d26, d16
4833 .long 0xf3488dbb // vmul.f32 d24, d24, d27
4834 .long 0xf2411fb9 // vrecps.f32 d17, d17, d25
4835 .long 0xf3fbb526 // vrecpe.f32 d27, d22
4836 .long 0xf3fbd527 // vrecpe.f32 d29, d23
4837 .long 0xf2400fba // vrecps.f32 d16, d16, d26
4838 .long 0xf3fbe528 // vrecpe.f32 d30, d24
4839 .long 0xf2466fbb // vrecps.f32 d22, d22, d27
4840 .long 0xf2477fbd // vrecps.f32 d23, d23, d29
4841 .long 0xf2488fbe // vrecps.f32 d24, d24, d30
4842 .long 0xf3491db1 // vmul.f32 d17, d25, d17
4843 .long 0xf34a0db0 // vmul.f32 d16, d26, d16
4844 .long 0xf34b6db6 // vmul.f32 d22, d27, d22
4845 .long 0xf3441db1 // vmul.f32 d17, d20, d17
4846 .long 0xf34d3db7 // vmul.f32 d19, d29, d23
4847 .long 0xf34e4db8 // vmul.f32 d20, d30, d24
4848 .long 0xf3450db0 // vmul.f32 d16, d21, d16
4849 .long 0xf3422db6 // vmul.f32 d18, d18, d22
4850 .long 0xf3411db3 // vmul.f32 d17, d17, d19
4851 .long 0xf3400db4 // vmul.f32 d16, d16, d20
4852 .long 0xf2c03010 // vmov.i32 d19, #0
4853 .long 0xf2020fa3 // vmax.f32 d0, d18, d19
4854 .long 0xf2011fa3 // vmax.f32 d1, d17, d19
4855 .long 0xf2002fa3 // vmax.f32 d2, d16, d19
4856 .long 0xe12fff13 // bx r3
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004857 .long 0xe320f000 // nop {0}
4858
4859HIDDEN _sk_rgb_to_hsl_vfp4
4860.globl _sk_rgb_to_hsl_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004861FUNCTION(_sk_rgb_to_hsl_vfp4)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004862_sk_rgb_to_hsl_vfp4:
4863 .long 0xed2d8b08 // vpush {d8-d11}
4864 .long 0xf2401f01 // vmax.f32 d17, d0, d1
4865 .long 0xeddf9b2c // vldr d25, [pc, #176]
4866 .long 0xf2600f01 // vmin.f32 d16, d0, d1
4867 .long 0xe4913004 // ldr r3, [r1], #4
4868 .long 0xeeb78a00 // vmov.f32 s16, #112
4869 .long 0xf2c3461f // vmov.i32 d20, #1056964608
4870 .long 0xf2411f82 // vmax.f32 d17, d17, d2
4871 .long 0xf2602f82 // vmin.f32 d18, d16, d2
4872 .long 0xf2c45610 // vmov.i32 d21, #1073741824
4873 .long 0xf2607d01 // vsub.f32 d23, d0, d1
4874 .long 0xf2656da1 // vsub.f32 d22, d21, d17
4875 .long 0xf221ada2 // vsub.f32 d10, d17, d18
4876 .long 0xf2413da2 // vadd.f32 d19, d17, d18
4877 .long 0xf2c08010 // vmov.i32 d24, #0
4878 .long 0xf2666da2 // vsub.f32 d22, d22, d18
4879 .long 0xf241ae80 // vceq.f32 d26, d17, d0
4880 .long 0xeec8ba2a // vdiv.f32 s23, s16, s21
4881 .long 0xf3430db4 // vmul.f32 d16, d19, d20
4882 .long 0xee88ba0a // vdiv.f32 s22, s16, s20
4883 .long 0xf3209ea4 // vcgt.f32 d9, d16, d20
4884 .long 0xf2614d02 // vsub.f32 d20, d1, d2
4885 .long 0xf3477d9b // vmul.f32 d23, d23, d11
4886 .long 0xf31691b3 // vbsl d9, d22, d19
4887 .long 0xf2623d00 // vsub.f32 d19, d2, d0
4888 .long 0xf3626e01 // vcgt.f32 d22, d2, d1
4889 .long 0xeeca8aa9 // vdiv.f32 s17, s21, s19
4890 .long 0xee8a8a09 // vdiv.f32 s16, s20, s18
4891 .long 0xf3433d9b // vmul.f32 d19, d19, d11
4892 .long 0xf3444d9b // vmul.f32 d20, d20, d11
4893 .long 0xf35961b8 // vbsl d22, d25, d24
4894 .long 0xf2419e81 // vceq.f32 d25, d17, d1
4895 .long 0xf2011ea2 // vceq.f32 d1, d17, d18
4896 .long 0xf2433da5 // vadd.f32 d19, d19, d21
4897 .long 0xf2c15f10 // vmov.f32 d21, #4
4898 .long 0xf2464da4 // vadd.f32 d20, d22, d20
4899 .long 0xf2471da5 // vadd.f32 d17, d23, d21
4900 .long 0xf35391b1 // vbsl d25, d19, d17
4901 .long 0xeddf1b0a // vldr d17, [pc, #40]
4902 .long 0xf2612111 // vorr d18, d1, d1
4903 .long 0xf354a1b9 // vbsl d26, d20, d25
4904 .long 0xf35821ba // vbsl d18, d24, d26
4905 .long 0xf3181198 // vbsl d1, d24, d8
4906 .long 0xf3020db1 // vmul.f32 d0, d18, d17
4907 .long 0xf22021b0 // vorr d2, d16, d16
4908 .long 0xecbd8b08 // vpop {d8-d11}
4909 .long 0xe12fff13 // bx r3
4910 .long 0xe320f000 // nop {0}
4911 .long 0x40c00000 // .word 0x40c00000
4912 .long 0x40c00000 // .word 0x40c00000
4913 .long 0x3e2aaaab // .word 0x3e2aaaab
4914 .long 0x3e2aaaab // .word 0x3e2aaaab
4915
4916HIDDEN _sk_hsl_to_rgb_vfp4
4917.globl _sk_hsl_to_rgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04004918FUNCTION(_sk_hsl_to_rgb_vfp4)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04004919_sk_hsl_to_rgb_vfp4:
4920 .long 0xf2c72f10 // vmov.f32 d18, #1
4921 .long 0xeddf0b4f // vldr d16, [pc, #316]
4922 .long 0xf2c3161f // vmov.i32 d17, #1056964608
4923 .long 0xeddf9b4f // vldr d25, [pc, #316]
4924 .long 0xf2415d22 // vadd.f32 d21, d1, d18
4925 .long 0xe4913004 // ldr r3, [r1], #4
4926 .long 0xf3414d12 // vmul.f32 d20, d1, d2
4927 .long 0xf2416d02 // vadd.f32 d22, d1, d2
4928 .long 0xf2407d20 // vadd.f32 d23, d0, d16
4929 .long 0xf3610e82 // vcgt.f32 d16, d17, d2
4930 .long 0xf3455d92 // vmul.f32 d21, d21, d2
4931 .long 0xf2664da4 // vsub.f32 d20, d22, d20
4932 .long 0xf2426d02 // vadd.f32 d22, d2, d2
4933 .long 0xf3c73f10 // vmov.f32 d19, #-1
4934 .long 0xf35501b4 // vbsl d16, d21, d20
4935 .long 0xf2409d29 // vadd.f32 d25, d0, d25
4936 .long 0xf2408d23 // vadd.f32 d24, d0, d19
4937 .long 0xf3f9e629 // vclt.f32 d30, d25, #0
4938 .long 0xf360ae22 // vcgt.f32 d26, d0, d18
4939 .long 0xf247cda3 // vadd.f32 d28, d23, d19
4940 .long 0xf367dea2 // vcgt.f32 d29, d23, d18
4941 .long 0xf240bd22 // vadd.f32 d27, d0, d18
4942 .long 0xf2666da0 // vsub.f32 d22, d22, d16
4943 .long 0xf2474da2 // vadd.f32 d20, d23, d18
4944 .long 0xf358a190 // vbsl d26, d24, d0
4945 .long 0xf3f98600 // vclt.f32 d24, d0, #0
4946 .long 0xf3695ea2 // vcgt.f32 d21, d25, d18
4947 .long 0xf2493da3 // vadd.f32 d19, d25, d19
4948 .long 0xf35b81ba // vbsl d24, d27, d26
4949 .long 0xf3f9a627 // vclt.f32 d26, d23, #0
4950 .long 0xf35cd1b7 // vbsl d29, d28, d23
4951 .long 0xeddfcb35 // vldr d28, [pc, #212]
4952 .long 0xf2492da2 // vadd.f32 d18, d25, d18
4953 .long 0xf260bda6 // vsub.f32 d27, d16, d22
4954 .long 0xf354a1bd // vbsl d26, d20, d29
4955 .long 0xf2c14f18 // vmov.f32 d20, #6
4956 .long 0xf35351b9 // vbsl d21, d19, d25
4957 .long 0xf26cddaa // vsub.f32 d29, d28, d26
4958 .long 0xf352e1b5 // vbsl d30, d18, d21
4959 .long 0xf34b2db4 // vmul.f32 d18, d27, d20
4960 .long 0xf26c3da8 // vsub.f32 d19, d28, d24
4961 .long 0xf26c4dae // vsub.f32 d20, d28, d30
4962 .long 0xf36cbeaa // vcgt.f32 d27, d28, d26
4963 .long 0xf3425dbd // vmul.f32 d21, d18, d29
4964 .long 0xf3477db2 // vmul.f32 d23, d23, d18
4965 .long 0xf3423db3 // vmul.f32 d19, d18, d19
4966 .long 0xf3444db2 // vmul.f32 d20, d20, d18
4967 .long 0xf2465da5 // vadd.f32 d21, d22, d21
4968 .long 0xf342dd90 // vmul.f32 d29, d18, d0
4969 .long 0xf3210eaa // vcgt.f32 d0, d17, d26
4970 .long 0xf3492db2 // vmul.f32 d18, d25, d18
4971 .long 0xf355b1b6 // vbsl d27, d21, d22
4972 .long 0xeddf5b22 // vldr d21, [pc, #136]
4973 .long 0xf36cfea8 // vcgt.f32 d31, d28, d24
4974 .long 0xf2463da3 // vadd.f32 d19, d22, d19
4975 .long 0xf36cceae // vcgt.f32 d28, d28, d30
4976 .long 0xf2464da4 // vadd.f32 d20, d22, d20
4977 .long 0xf365aeaa // vcgt.f32 d26, d21, d26
4978 .long 0xf2467da7 // vadd.f32 d23, d22, d23
4979 .long 0xf3619ea8 // vcgt.f32 d25, d17, d24
4980 .long 0xf3611eae // vcgt.f32 d17, d17, d30
4981 .long 0xf31001bb // vbsl d0, d16, d27
4982 .long 0xf353f1b6 // vbsl d31, d19, d22
4983 .long 0xf354c1b6 // vbsl d28, d20, d22
4984 .long 0xf357a190 // vbsl d26, d23, d0
4985 .long 0xf3b90501 // vceq.f32 d0, d1, #0
4986 .long 0xf3658ea8 // vcgt.f32 d24, d21, d24
4987 .long 0xf246ddad // vadd.f32 d29, d22, d29
4988 .long 0xf3653eae // vcgt.f32 d19, d21, d30
4989 .long 0xf2462da2 // vadd.f32 d18, d22, d18
4990 .long 0xf35091bf // vbsl d25, d16, d31
4991 .long 0xf35011bc // vbsl d17, d16, d28
4992 .long 0xf2600110 // vorr d16, d0, d0
4993 .long 0xf2201110 // vorr d1, d0, d0
4994 .long 0xf352013a // vbsl d16, d2, d26
4995 .long 0xf35d81b9 // vbsl d24, d29, d25
4996 .long 0xf35231b1 // vbsl d19, d18, d17
4997 .long 0xf3121138 // vbsl d1, d2, d24
4998 .long 0xf3120133 // vbsl d0, d2, d19
4999 .long 0xf22021b0 // vorr d2, d16, d16
5000 .long 0xe12fff13 // bx r3
5001 .long 0xe320f000 // nop {0}
5002 .long 0xbeaaaaab // .word 0xbeaaaaab
5003 .long 0xbeaaaaab // .word 0xbeaaaaab
5004 .long 0x3eaaaaab // .word 0x3eaaaaab
5005 .long 0x3eaaaaab // .word 0x3eaaaaab
5006 .long 0x3f2aaaab // .word 0x3f2aaaab
5007 .long 0x3f2aaaab // .word 0x3f2aaaab
5008 .long 0x3e2aaaab // .word 0x3e2aaaab
5009 .long 0x3e2aaaab // .word 0x3e2aaaab
Mike Klein7125ac62017-04-05 15:27:22 -04005010
Mike Klein7c4af542017-03-29 18:21:14 -04005011HIDDEN _sk_scale_1_float_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005012.globl _sk_scale_1_float_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005013FUNCTION(_sk_scale_1_float_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005014_sk_scale_1_float_vfp4:
5015 .long 0xe8911008 // ldm r1, {r3, ip}
5016 .long 0xe2811008 // add r1, r1, #8
5017 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5018 .long 0xf3000d90 // vmul.f32 d0, d16, d0
5019 .long 0xf3001d91 // vmul.f32 d1, d16, d1
5020 .long 0xf3002d92 // vmul.f32 d2, d16, d2
5021 .long 0xf3003d93 // vmul.f32 d3, d16, d3
5022 .long 0xe12fff1c // bx ip
5023
Mike Klein7c4af542017-03-29 18:21:14 -04005024HIDDEN _sk_scale_u8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005025.globl _sk_scale_u8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005026FUNCTION(_sk_scale_u8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005027_sk_scale_u8_vfp4:
5028 .long 0xe24dd004 // sub sp, sp, #4
5029 .long 0xe8911008 // ldm r1, {r3, ip}
5030 .long 0xe2811008 // add r1, r1, #8
5031 .long 0xe5933000 // ldr r3, [r3]
5032 .long 0xe0833000 // add r3, r3, r0
5033 .long 0xe1d330b0 // ldrh r3, [r3]
5034 .long 0xe1cd30b0 // strh r3, [sp]
5035 .long 0xe1a0300d // mov r3, sp
5036 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
5037 .long 0xf3c80a30 // vmovl.u8 q8, d16
5038 .long 0xf3d00a30 // vmovl.u16 q8, d16
5039 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5040 .long 0xeddf1b06 // vldr d17, [pc, #24]
5041 .long 0xf3400db1 // vmul.f32 d16, d16, d17
5042 .long 0xf3000d90 // vmul.f32 d0, d16, d0
5043 .long 0xf3001d91 // vmul.f32 d1, d16, d1
5044 .long 0xf3002d92 // vmul.f32 d2, d16, d2
5045 .long 0xf3003d93 // vmul.f32 d3, d16, d3
5046 .long 0xe28dd004 // add sp, sp, #4
5047 .long 0xe12fff1c // bx ip
5048 .long 0x3b808081 // .word 0x3b808081
5049 .long 0x3b808081 // .word 0x3b808081
5050
Mike Klein7c4af542017-03-29 18:21:14 -04005051HIDDEN _sk_lerp_1_float_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005052.globl _sk_lerp_1_float_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005053FUNCTION(_sk_lerp_1_float_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005054_sk_lerp_1_float_vfp4:
5055 .long 0xe8911008 // ldm r1, {r3, ip}
5056 .long 0xf2600d04 // vsub.f32 d16, d0, d4
5057 .long 0xf2611d05 // vsub.f32 d17, d1, d5
5058 .long 0xf2622d06 // vsub.f32 d18, d2, d6
5059 .long 0xe2811008 // add r1, r1, #8
5060 .long 0xf2633d07 // vsub.f32 d19, d3, d7
5061 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
5062 .long 0xf2240114 // vorr d0, d4, d4
5063 .long 0xf2251115 // vorr d1, d5, d5
5064 .long 0xf2262116 // vorr d2, d6, d6
5065 .long 0xf2273117 // vorr d3, d7, d7
5066 .long 0xf2000cb4 // vfma.f32 d0, d16, d20
5067 .long 0xf2011cb4 // vfma.f32 d1, d17, d20
5068 .long 0xf2022cb4 // vfma.f32 d2, d18, d20
5069 .long 0xf2033cb4 // vfma.f32 d3, d19, d20
5070 .long 0xe12fff1c // bx ip
5071
Mike Klein7c4af542017-03-29 18:21:14 -04005072HIDDEN _sk_lerp_u8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005073.globl _sk_lerp_u8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005074FUNCTION(_sk_lerp_u8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005075_sk_lerp_u8_vfp4:
5076 .long 0xe24dd004 // sub sp, sp, #4
5077 .long 0xe8911008 // ldm r1, {r3, ip}
5078 .long 0xf2602d04 // vsub.f32 d18, d0, d4
5079 .long 0xf2623d06 // vsub.f32 d19, d2, d6
5080 .long 0xf2634d07 // vsub.f32 d20, d3, d7
5081 .long 0xe2811008 // add r1, r1, #8
5082 .long 0xe5933000 // ldr r3, [r3]
5083 .long 0xf2240114 // vorr d0, d4, d4
5084 .long 0xf2262116 // vorr d2, d6, d6
5085 .long 0xe0833000 // add r3, r3, r0
5086 .long 0xf2273117 // vorr d3, d7, d7
5087 .long 0xe1d330b0 // ldrh r3, [r3]
5088 .long 0xe1cd30b0 // strh r3, [sp]
5089 .long 0xe1a0300d // mov r3, sp
5090 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
5091 .long 0xf3c80a30 // vmovl.u8 q8, d16
5092 .long 0xf3d00a30 // vmovl.u16 q8, d16
5093 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5094 .long 0xeddf1b08 // vldr d17, [pc, #32]
5095 .long 0xf3400db1 // vmul.f32 d16, d16, d17
5096 .long 0xf2611d05 // vsub.f32 d17, d1, d5
5097 .long 0xf2251115 // vorr d1, d5, d5
5098 .long 0xf2020cb0 // vfma.f32 d0, d18, d16
5099 .long 0xf2011cb0 // vfma.f32 d1, d17, d16
5100 .long 0xf2032cb0 // vfma.f32 d2, d19, d16
5101 .long 0xf2043cb0 // vfma.f32 d3, d20, d16
5102 .long 0xe28dd004 // add sp, sp, #4
5103 .long 0xe12fff1c // bx ip
5104 .long 0x3b808081 // .word 0x3b808081
5105 .long 0x3b808081 // .word 0x3b808081
5106
Mike Klein7c4af542017-03-29 18:21:14 -04005107HIDDEN _sk_lerp_565_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005108.globl _sk_lerp_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005109FUNCTION(_sk_lerp_565_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005110_sk_lerp_565_vfp4:
5111 .long 0xe24dd004 // sub sp, sp, #4
5112 .long 0xe8911008 // ldm r1, {r3, ip}
5113 .long 0xf3c72218 // vmov.i32 d18, #63488
5114 .long 0xf2c1101f // vmov.i32 d17, #31
5115 .long 0xf2603d04 // vsub.f32 d19, d0, d4
5116 .long 0xe2811008 // add r1, r1, #8
5117 .long 0xe5933000 // ldr r3, [r3]
5118 .long 0xf2616d05 // vsub.f32 d22, d1, d5
5119 .long 0xf2240114 // vorr d0, d4, d4
5120 .long 0xf2251115 // vorr d1, d5, d5
5121 .long 0xe7933080 // ldr r3, [r3, r0, lsl #1]
5122 .long 0xf2873f10 // vmov.f32 d3, #1
5123 .long 0xe58d3000 // str r3, [sp]
5124 .long 0xe1a0300d // mov r3, sp
5125 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
5126 .long 0xe3a03e7e // mov r3, #2016
5127 .long 0xf3d04a30 // vmovl.u16 q10, d16
5128 .long 0xee803b90 // vdup.32 d16, r3
5129 .long 0xf24421b2 // vand d18, d20, d18
5130 .long 0xf24411b1 // vand d17, d20, d17
5131 .long 0xeddf5b12 // vldr d21, [pc, #72]
5132 .long 0xf24401b0 // vand d16, d20, d16
5133 .long 0xeddf4b0e // vldr d20, [pc, #56]
5134 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5135 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5136 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5137 .long 0xf3422db4 // vmul.f32 d18, d18, d20
5138 .long 0xeddf4b0d // vldr d20, [pc, #52]
5139 .long 0xf3400db5 // vmul.f32 d16, d16, d21
5140 .long 0xf2625d06 // vsub.f32 d21, d2, d6
5141 .long 0xf3411db4 // vmul.f32 d17, d17, d20
5142 .long 0xf2262116 // vorr d2, d6, d6
5143 .long 0xf2030cb2 // vfma.f32 d0, d19, d18
5144 .long 0xf2061cb0 // vfma.f32 d1, d22, d16
5145 .long 0xf2052cb1 // vfma.f32 d2, d21, d17
5146 .long 0xe28dd004 // add sp, sp, #4
5147 .long 0xe12fff1c // bx ip
5148 .long 0xe320f000 // nop {0}
5149 .long 0x37842108 // .word 0x37842108
5150 .long 0x37842108 // .word 0x37842108
5151 .long 0x3a020821 // .word 0x3a020821
5152 .long 0x3a020821 // .word 0x3a020821
5153 .long 0x3d042108 // .word 0x3d042108
5154 .long 0x3d042108 // .word 0x3d042108
5155
Mike Klein7c4af542017-03-29 18:21:14 -04005156HIDDEN _sk_load_tables_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005157.globl _sk_load_tables_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005158FUNCTION(_sk_load_tables_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005159_sk_load_tables_vfp4:
5160 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
5161 .long 0xe8911008 // ldm r1, {r3, ip}
5162 .long 0xf3c7001f // vmov.i32 d16, #255
5163 .long 0xe2811008 // add r1, r1, #8
5164 .long 0xe593e000 // ldr lr, [r3]
5165 .long 0xe99300b0 // ldmib r3, {r4, r5, r7}
5166 .long 0xe08e3100 // add r3, lr, r0, lsl #2
5167 .long 0xedd31b00 // vldr d17, [r3]
5168 .long 0xf24121b0 // vand d18, d17, d16
5169 .long 0xf3f83031 // vshr.u32 d19, d17, #8
5170 .long 0xee323b90 // vmov.32 r3, d18[1]
5171 .long 0xee126b90 // vmov.32 r6, d18[0]
5172 .long 0xf3f02031 // vshr.u32 d18, d17, #16
5173 .long 0xf24221b0 // vand d18, d18, d16
5174 .long 0xf24301b0 // vand d16, d19, d16
5175 .long 0xe0843103 // add r3, r4, r3, lsl #2
5176 .long 0xedd30a00 // vldr s1, [r3]
5177 .long 0xe0843106 // add r3, r4, r6, lsl #2
5178 .long 0xee326b90 // vmov.32 r6, d18[1]
5179 .long 0xed930a00 // vldr s0, [r3]
5180 .long 0xee303b90 // vmov.32 r3, d16[1]
5181 .long 0xee104b90 // vmov.32 r4, d16[0]
5182 .long 0xf3e80031 // vshr.u32 d16, d17, #24
5183 .long 0xeddf1b0d // vldr d17, [pc, #52]
5184 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5185 .long 0xf3003db1 // vmul.f32 d3, d16, d17
5186 .long 0xe087e106 // add lr, r7, r6, lsl #2
5187 .long 0xee126b90 // vmov.32 r6, d18[0]
5188 .long 0xe0853103 // add r3, r5, r3, lsl #2
5189 .long 0xedde2a00 // vldr s5, [lr]
5190 .long 0xedd31a00 // vldr s3, [r3]
5191 .long 0xe0853104 // add r3, r5, r4, lsl #2
5192 .long 0xed931a00 // vldr s2, [r3]
5193 .long 0xe0873106 // add r3, r7, r6, lsl #2
5194 .long 0xed932a00 // vldr s4, [r3]
5195 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
5196 .long 0xe12fff1c // bx ip
5197 .long 0xe320f000 // nop {0}
5198 .long 0x3b808081 // .word 0x3b808081
5199 .long 0x3b808081 // .word 0x3b808081
5200
Mike Kleina3735cd2017-04-17 13:19:05 -04005201HIDDEN _sk_load_tables_u16_be_vfp4
5202.globl _sk_load_tables_u16_be_vfp4
5203FUNCTION(_sk_load_tables_u16_be_vfp4)
5204_sk_load_tables_u16_be_vfp4:
5205 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
5206 .long 0xe8911008 // ldm r1, {r3, ip}
5207 .long 0xf3c7801f // vmov.i32 d24, #255
5208 .long 0xe2811008 // add r1, r1, #8
5209 .long 0xe5936000 // ldr r6, [r3]
5210 .long 0xe9934030 // ldmib r3, {r4, r5, lr}
5211 .long 0xe0863180 // add r3, r6, r0, lsl #3
5212 .long 0xf4e3070d // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]!
5213 .long 0xf4e3074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3]
5214 .long 0xee903bb0 // vmov.u16 r3, d16[0]
5215 .long 0xee926bb0 // vmov.u16 r6, d18[0]
5216 .long 0xee043b90 // vmov.32 d20[0], r3
5217 .long 0xee913bb0 // vmov.u16 r3, d17[0]
5218 .long 0xee056b90 // vmov.32 d21[0], r6
5219 .long 0xee906bf0 // vmov.u16 r6, d16[1]
5220 .long 0xee063b90 // vmov.32 d22[0], r3
5221 .long 0xee933bb0 // vmov.u16 r3, d19[0]
5222 .long 0xee246b90 // vmov.32 d20[1], r6
5223 .long 0xee926bf0 // vmov.u16 r6, d18[1]
5224 .long 0xf24441b8 // vand d20, d20, d24
5225 .long 0xee073b90 // vmov.32 d23[0], r3
5226 .long 0xee913bf0 // vmov.u16 r3, d17[1]
5227 .long 0xee256b90 // vmov.32 d21[1], r6
5228 .long 0xee936bf0 // vmov.u16 r6, d19[1]
5229 .long 0xf24501b8 // vand d16, d21, d24
5230 .long 0xee107b90 // vmov.32 r7, d16[0]
5231 .long 0xee263b90 // vmov.32 d22[1], r3
5232 .long 0xee343b90 // vmov.32 r3, d20[1]
5233 .long 0xf24611b8 // vand d17, d22, d24
5234 .long 0xee276b90 // vmov.32 d23[1], r6
5235 .long 0xee146b90 // vmov.32 r6, d20[0]
5236 .long 0xf2e82537 // vshl.s32 d18, d23, #8
5237 .long 0xe0843103 // add r3, r4, r3, lsl #2
5238 .long 0xedd30a00 // vldr s1, [r3]
5239 .long 0xe0843106 // add r3, r4, r6, lsl #2
5240 .long 0xee304b90 // vmov.32 r4, d16[1]
5241 .long 0xee116b90 // vmov.32 r6, d17[0]
5242 .long 0xf3c70c1f // vmov.i32 d16, #65535
5243 .long 0xed930a00 // vldr s0, [r3]
5244 .long 0xee313b90 // vmov.32 r3, d17[1]
5245 .long 0xf24711b0 // vand d17, d23, d16
5246 .long 0xf3f81031 // vshr.u32 d17, d17, #8
5247 .long 0xf26211b1 // vorr d17, d18, d17
5248 .long 0xf24101b0 // vand d16, d17, d16
5249 .long 0xeddf1b0c // vldr d17, [pc, #48]
5250 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5251 .long 0xf3003db1 // vmul.f32 d3, d16, d17
5252 .long 0xe08e4104 // add r4, lr, r4, lsl #2
5253 .long 0xedd42a00 // vldr s5, [r4]
5254 .long 0xe0853103 // add r3, r5, r3, lsl #2
5255 .long 0xedd31a00 // vldr s3, [r3]
5256 .long 0xe0853106 // add r3, r5, r6, lsl #2
5257 .long 0xed931a00 // vldr s2, [r3]
5258 .long 0xe08e3107 // add r3, lr, r7, lsl #2
5259 .long 0xed932a00 // vldr s4, [r3]
5260 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
5261 .long 0xe12fff1c // bx ip
5262 .long 0xe320f000 // nop {0}
5263 .long 0x37800080 // .word 0x37800080
5264 .long 0x37800080 // .word 0x37800080
5265
5266HIDDEN _sk_load_tables_rgb_u16_be_vfp4
5267.globl _sk_load_tables_rgb_u16_be_vfp4
5268FUNCTION(_sk_load_tables_rgb_u16_be_vfp4)
5269_sk_load_tables_rgb_u16_be_vfp4:
5270 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
5271 .long 0xe8911008 // ldm r1, {r3, ip}
5272 .long 0xf3c7601f // vmov.i32 d22, #255
5273 .long 0xe2811008 // add r1, r1, #8
5274 .long 0xf2873f10 // vmov.f32 d3, #1
5275 .long 0xe5936000 // ldr r6, [r3]
5276 .long 0xe9934030 // ldmib r3, {r4, r5, lr}
5277 .long 0xe0803080 // add r3, r0, r0, lsl #1
5278 .long 0xe0863083 // add r3, r6, r3, lsl #1
5279 .long 0xf4e3060d // vld3.16 {d16[0],d17[0],d18[0]}, [r3]!
5280 .long 0xf4e3064f // vld3.16 {d16[1],d17[1],d18[1]}, [r3]
5281 .long 0xee903bb0 // vmov.u16 r3, d16[0]
5282 .long 0xee926bb0 // vmov.u16 r6, d18[0]
5283 .long 0xee043b90 // vmov.32 d20[0], r3
5284 .long 0xee903bf0 // vmov.u16 r3, d16[1]
5285 .long 0xee056b90 // vmov.32 d21[0], r6
5286 .long 0xee916bb0 // vmov.u16 r6, d17[0]
5287 .long 0xee243b90 // vmov.32 d20[1], r3
5288 .long 0xee923bf0 // vmov.u16 r3, d18[1]
5289 .long 0xf24441b6 // vand d20, d20, d22
5290 .long 0xee076b90 // vmov.32 d23[0], r6
5291 .long 0xee916bf0 // vmov.u16 r6, d17[1]
5292 .long 0xee253b90 // vmov.32 d21[1], r3
5293 .long 0xee343b90 // vmov.32 r3, d20[1]
5294 .long 0xf24501b6 // vand d16, d21, d22
5295 .long 0xee276b90 // vmov.32 d23[1], r6
5296 .long 0xee146b90 // vmov.32 r6, d20[0]
5297 .long 0xf24711b6 // vand d17, d23, d22
5298 .long 0xee107b90 // vmov.32 r7, d16[0]
5299 .long 0xe0843103 // add r3, r4, r3, lsl #2
5300 .long 0xedd30a00 // vldr s1, [r3]
5301 .long 0xe0843106 // add r3, r4, r6, lsl #2
5302 .long 0xee304b90 // vmov.32 r4, d16[1]
5303 .long 0xee116b90 // vmov.32 r6, d17[0]
5304 .long 0xed930a00 // vldr s0, [r3]
5305 .long 0xee313b90 // vmov.32 r3, d17[1]
5306 .long 0xe08e4104 // add r4, lr, r4, lsl #2
5307 .long 0xedd42a00 // vldr s5, [r4]
5308 .long 0xe0853103 // add r3, r5, r3, lsl #2
5309 .long 0xedd31a00 // vldr s3, [r3]
5310 .long 0xe0853106 // add r3, r5, r6, lsl #2
5311 .long 0xed931a00 // vldr s2, [r3]
5312 .long 0xe08e3107 // add r3, lr, r7, lsl #2
5313 .long 0xed932a00 // vldr s4, [r3]
5314 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
5315 .long 0xe12fff1c // bx ip
5316
Mike Klein40de6da2017-04-07 13:09:29 -04005317HIDDEN _sk_byte_tables_vfp4
5318.globl _sk_byte_tables_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005319FUNCTION(_sk_byte_tables_vfp4)
Mike Klein40de6da2017-04-07 13:09:29 -04005320_sk_byte_tables_vfp4:
5321 .long 0xe92d4bf0 // push {r4, r5, r6, r7, r8, r9, fp, lr}
5322 .long 0xeddf0b37 // vldr d16, [pc, #220]
5323 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5324 .long 0xf2c3361f // vmov.i32 d19, #1056964608
5325 .long 0xe8911010 // ldm r1, {r4, ip}
5326 .long 0xf2422c30 // vfma.f32 d18, d2, d16
5327 .long 0xf2413c30 // vfma.f32 d19, d1, d16
5328 .long 0xe2811008 // add r1, r1, #8
5329 .long 0xf2c3461f // vmov.i32 d20, #1056964608
5330 .long 0xe89402e0 // ldm r4, {r5, r6, r7, r9}
5331 .long 0xf2404c30 // vfma.f32 d20, d0, d16
5332 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5333 .long 0xf2431c30 // vfma.f32 d17, d3, d16
5334 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5335 .long 0xf3fb37a3 // vcvt.u32.f32 d19, d19
5336 .long 0xf3fb47a4 // vcvt.u32.f32 d20, d20
5337 .long 0xee123b90 // vmov.32 r3, d18[0]
5338 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5339 .long 0xee13eb90 // vmov.32 lr, d19[0]
5340 .long 0xee144b90 // vmov.32 r4, d20[0]
5341 .long 0xe7d78003 // ldrb r8, [r7, r3]
5342 .long 0xe7d6300e // ldrb r3, [r6, lr]
5343 .long 0xee053b90 // vmov.32 d21[0], r3
5344 .long 0xe7d53004 // ldrb r3, [r5, r4]
5345 .long 0xee344b90 // vmov.32 r4, d20[1]
5346 .long 0xee013b90 // vmov.32 d17[0], r3
5347 .long 0xee103b90 // vmov.32 r3, d16[0]
5348 .long 0xee048b90 // vmov.32 d20[0], r8
5349 .long 0xe7d5e004 // ldrb lr, [r5, r4]
5350 .long 0xee334b90 // vmov.32 r4, d19[1]
5351 .long 0xee325b90 // vmov.32 r5, d18[1]
5352 .long 0xf3c7201f // vmov.i32 d18, #255
5353 .long 0xe7d93003 // ldrb r3, [r9, r3]
5354 .long 0xee21eb90 // vmov.32 d17[1], lr
5355 .long 0xf24111b2 // vand d17, d17, d18
5356 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
5357 .long 0xe7d64004 // ldrb r4, [r6, r4]
5358 .long 0xee306b90 // vmov.32 r6, d16[1]
5359 .long 0xee003b90 // vmov.32 d16[0], r3
5360 .long 0xee254b90 // vmov.32 d21[1], r4
5361 .long 0xe7d74005 // ldrb r4, [r7, r5]
5362 .long 0xf24531b2 // vand d19, d21, d18
5363 .long 0xee244b90 // vmov.32 d20[1], r4
5364 .long 0xf24441b2 // vand d20, d20, d18
5365 .long 0xf3fb46a4 // vcvt.f32.u32 d20, d20
5366 .long 0xe7d93006 // ldrb r3, [r9, r6]
5367 .long 0xee203b90 // vmov.32 d16[1], r3
5368 .long 0xf24001b2 // vand d16, d16, d18
5369 .long 0xf3fb26a3 // vcvt.f32.u32 d18, d19
5370 .long 0xeddf3b09 // vldr d19, [pc, #36]
5371 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5372 .long 0xf3010db3 // vmul.f32 d0, d17, d19
5373 .long 0xf3042db3 // vmul.f32 d2, d20, d19
5374 .long 0xf3021db3 // vmul.f32 d1, d18, d19
5375 .long 0xf3003db3 // vmul.f32 d3, d16, d19
5376 .long 0xe8bd4bf0 // pop {r4, r5, r6, r7, r8, r9, fp, lr}
5377 .long 0xe12fff1c // bx ip
5378 .long 0xe320f000 // nop {0}
5379 .long 0x437f0000 // .word 0x437f0000
5380 .long 0x437f0000 // .word 0x437f0000
5381 .long 0x3b808081 // .word 0x3b808081
5382 .long 0x3b808081 // .word 0x3b808081
5383
5384HIDDEN _sk_byte_tables_rgb_vfp4
5385.globl _sk_byte_tables_rgb_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005386FUNCTION(_sk_byte_tables_rgb_vfp4)
Mike Klein40de6da2017-04-07 13:09:29 -04005387_sk_byte_tables_rgb_vfp4:
5388 .long 0xe92d41f0 // push {r4, r5, r6, r7, r8, lr}
5389 .long 0xe8911008 // ldm r1, {r3, ip}
5390 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5391 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5392 .long 0xf3c7301f // vmov.i32 d19, #255
5393 .long 0xe2811008 // add r1, r1, #8
5394 .long 0xe593e000 // ldr lr, [r3]
5395 .long 0xe9930110 // ldmib r3, {r4, r8}
5396 .long 0xe593300c // ldr r3, [r3, #12]
5397 .long 0xe2433001 // sub r3, r3, #1
5398 .long 0xee803b90 // vdup.32 d16, r3
5399 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5400 .long 0xf2402c30 // vfma.f32 d18, d0, d16
5401 .long 0xf2411c30 // vfma.f32 d17, d1, d16
5402 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5403 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
5404 .long 0xee123b90 // vmov.32 r3, d18[0]
5405 .long 0xee326b90 // vmov.32 r6, d18[1]
5406 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5407 .long 0xf2422c30 // vfma.f32 d18, d2, d16
5408 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
5409 .long 0xee107b90 // vmov.32 r7, d16[0]
5410 .long 0xee305b90 // vmov.32 r5, d16[1]
5411 .long 0xe7de3003 // ldrb r3, [lr, r3]
5412 .long 0xe7dee006 // ldrb lr, [lr, r6]
5413 .long 0xee116b90 // vmov.32 r6, d17[0]
5414 .long 0xee023b90 // vmov.32 d18[0], r3
5415 .long 0xee313b90 // vmov.32 r3, d17[1]
5416 .long 0xee22eb90 // vmov.32 d18[1], lr
5417 .long 0xf24221b3 // vand d18, d18, d19
5418 .long 0xf3fb26a2 // vcvt.f32.u32 d18, d18
5419 .long 0xe7d87007 // ldrb r7, [r8, r7]
5420 .long 0xee017b90 // vmov.32 d17[0], r7
5421 .long 0xe7d46006 // ldrb r6, [r4, r6]
5422 .long 0xe7d43003 // ldrb r3, [r4, r3]
5423 .long 0xee006b90 // vmov.32 d16[0], r6
5424 .long 0xe7d84005 // ldrb r4, [r8, r5]
5425 .long 0xee203b90 // vmov.32 d16[1], r3
5426 .long 0xee214b90 // vmov.32 d17[1], r4
5427 .long 0xf24001b3 // vand d16, d16, d19
5428 .long 0xf24111b3 // vand d17, d17, d19
5429 .long 0xeddf3b07 // vldr d19, [pc, #28]
5430 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5431 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
5432 .long 0xf3020db3 // vmul.f32 d0, d18, d19
5433 .long 0xf3001db3 // vmul.f32 d1, d16, d19
5434 .long 0xf3012db3 // vmul.f32 d2, d17, d19
5435 .long 0xe8bd41f0 // pop {r4, r5, r6, r7, r8, lr}
5436 .long 0xe12fff1c // bx ip
5437 .long 0xe320f000 // nop {0}
5438 .long 0x3b808081 // .word 0x3b808081
5439 .long 0x3b808081 // .word 0x3b808081
5440
Mike Kleinc7d9c0b2017-04-17 14:43:59 -04005441HIDDEN _sk_table_r_vfp4
5442.globl _sk_table_r_vfp4
5443FUNCTION(_sk_table_r_vfp4)
5444_sk_table_r_vfp4:
5445 .long 0xe92d4010 // push {r4, lr}
5446 .long 0xe8911008 // ldm r1, {r3, ip}
5447 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5448 .long 0xe2811008 // add r1, r1, #8
5449 .long 0xe593e000 // ldr lr, [r3]
5450 .long 0xe5933004 // ldr r3, [r3, #4]
5451 .long 0xe2433001 // sub r3, r3, #1
5452 .long 0xee803b90 // vdup.32 d16, r3
5453 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5454 .long 0xf2401c30 // vfma.f32 d17, d0, d16
5455 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5456 .long 0xee303b90 // vmov.32 r3, d16[1]
5457 .long 0xee104b90 // vmov.32 r4, d16[0]
5458 .long 0xe08e3103 // add r3, lr, r3, lsl #2
5459 .long 0xedd30a00 // vldr s1, [r3]
5460 .long 0xe08e3104 // add r3, lr, r4, lsl #2
5461 .long 0xed930a00 // vldr s0, [r3]
5462 .long 0xe8bd4010 // pop {r4, lr}
5463 .long 0xe12fff1c // bx ip
5464
5465HIDDEN _sk_table_g_vfp4
5466.globl _sk_table_g_vfp4
5467FUNCTION(_sk_table_g_vfp4)
5468_sk_table_g_vfp4:
5469 .long 0xe92d4010 // push {r4, lr}
5470 .long 0xe8911008 // ldm r1, {r3, ip}
5471 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5472 .long 0xe2811008 // add r1, r1, #8
5473 .long 0xe593e000 // ldr lr, [r3]
5474 .long 0xe5933004 // ldr r3, [r3, #4]
5475 .long 0xe2433001 // sub r3, r3, #1
5476 .long 0xee803b90 // vdup.32 d16, r3
5477 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5478 .long 0xf2411c30 // vfma.f32 d17, d1, d16
5479 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5480 .long 0xee303b90 // vmov.32 r3, d16[1]
5481 .long 0xee104b90 // vmov.32 r4, d16[0]
5482 .long 0xe08e3103 // add r3, lr, r3, lsl #2
5483 .long 0xedd31a00 // vldr s3, [r3]
5484 .long 0xe08e3104 // add r3, lr, r4, lsl #2
5485 .long 0xed931a00 // vldr s2, [r3]
5486 .long 0xe8bd4010 // pop {r4, lr}
5487 .long 0xe12fff1c // bx ip
5488
5489HIDDEN _sk_table_b_vfp4
5490.globl _sk_table_b_vfp4
5491FUNCTION(_sk_table_b_vfp4)
5492_sk_table_b_vfp4:
5493 .long 0xe92d4010 // push {r4, lr}
5494 .long 0xe8911008 // ldm r1, {r3, ip}
5495 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5496 .long 0xe2811008 // add r1, r1, #8
5497 .long 0xe593e000 // ldr lr, [r3]
5498 .long 0xe5933004 // ldr r3, [r3, #4]
5499 .long 0xe2433001 // sub r3, r3, #1
5500 .long 0xee803b90 // vdup.32 d16, r3
5501 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5502 .long 0xf2421c30 // vfma.f32 d17, d2, d16
5503 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5504 .long 0xee303b90 // vmov.32 r3, d16[1]
5505 .long 0xee104b90 // vmov.32 r4, d16[0]
5506 .long 0xe08e3103 // add r3, lr, r3, lsl #2
5507 .long 0xedd32a00 // vldr s5, [r3]
5508 .long 0xe08e3104 // add r3, lr, r4, lsl #2
5509 .long 0xed932a00 // vldr s4, [r3]
5510 .long 0xe8bd4010 // pop {r4, lr}
5511 .long 0xe12fff1c // bx ip
5512
5513HIDDEN _sk_table_a_vfp4
5514.globl _sk_table_a_vfp4
5515FUNCTION(_sk_table_a_vfp4)
5516_sk_table_a_vfp4:
5517 .long 0xe92d4010 // push {r4, lr}
5518 .long 0xe8911008 // ldm r1, {r3, ip}
5519 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5520 .long 0xe2811008 // add r1, r1, #8
5521 .long 0xe593e000 // ldr lr, [r3]
5522 .long 0xe5933004 // ldr r3, [r3, #4]
5523 .long 0xe2433001 // sub r3, r3, #1
5524 .long 0xee803b90 // vdup.32 d16, r3
5525 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
5526 .long 0xf2431c30 // vfma.f32 d17, d3, d16
5527 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5528 .long 0xee303b90 // vmov.32 r3, d16[1]
5529 .long 0xee104b90 // vmov.32 r4, d16[0]
5530 .long 0xe08e3103 // add r3, lr, r3, lsl #2
5531 .long 0xedd33a00 // vldr s7, [r3]
5532 .long 0xe08e3104 // add r3, lr, r4, lsl #2
5533 .long 0xed933a00 // vldr s6, [r3]
5534 .long 0xe8bd4010 // pop {r4, lr}
5535 .long 0xe12fff1c // bx ip
5536
Mike Klein44375172017-04-17 19:32:05 -04005537HIDDEN _sk_parametric_r_vfp4
5538.globl _sk_parametric_r_vfp4
5539FUNCTION(_sk_parametric_r_vfp4)
5540_sk_parametric_r_vfp4:
5541 .long 0xe92d4800 // push {fp, lr}
5542 .long 0xed2d8b06 // vpush {d8-d10}
5543 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04005544 .long 0xeddf3b41 // vldr d19, [pc, #260]
5545 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04005546 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04005547 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04005548 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
5549 .long 0xe591c004 // ldr ip, [r1, #4]
5550 .long 0xe2811008 // add r1, r1, #8
5551 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5552 .long 0xe28e3008 // add r3, lr, #8
5553 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5554 .long 0xe28e300c // add r3, lr, #12
5555 .long 0xf2412c90 // vfma.f32 d18, d17, d0
5556 .long 0xf2c71d1f // vmov.i32 d17, #8388607
5557 .long 0xf24211b1 // vand d17, d18, d17
5558 .long 0xf2c3171f // vorr.i32 d17, #1056964608
5559 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5560 .long 0xf2019da3 // vadd.f32 d9, d17, d19
5561 .long 0xf2c33614 // vmov.i32 d19, #872415232
5562 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04005563 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04005564 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5565 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04005566 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04005567 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04005568 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04005569 .long 0xeddf4b2e // vldr d20, [pc, #184]
5570 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04005571 .long 0xf2621da1 // vsub.f32 d17, d18, d17
5572 .long 0xf2611d8a // vsub.f32 d17, d17, d10
5573 .long 0xf3400db1 // vmul.f32 d16, d16, d17
5574 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
5575 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5576 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
5577 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04005578 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04005579 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04005580 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04005581 .long 0xf2601da1 // vsub.f32 d17, d16, d17
5582 .long 0xf2400da4 // vadd.f32 d16, d16, d20
5583 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04005584 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04005585 .long 0xf3411db2 // vmul.f32 d17, d17, d18
5586 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5587 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5588 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
5589 .long 0xf2600da1 // vsub.f32 d16, d16, d17
5590 .long 0xf2c4161b // vmov.i32 d17, #1258291200
5591 .long 0xf2400d8a // vadd.f32 d16, d16, d10
5592 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
5593 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5594 .long 0xe28e3018 // add r3, lr, #24
5595 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5596 .long 0xe28e3010 // add r3, lr, #16
5597 .long 0xf2401c90 // vfma.f32 d17, d16, d0
5598 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5599 .long 0xe28e3014 // add r3, lr, #20
5600 .long 0xf3400e80 // vcge.f32 d16, d16, d0
5601 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
5602 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5603 .long 0xf2442da2 // vadd.f32 d18, d20, d18
5604 .long 0xf35101b2 // vbsl d16, d17, d18
5605 .long 0xf2c71f10 // vmov.f32 d17, #1
5606 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
5607 .long 0xf2200fa1 // vmin.f32 d0, d16, d17
5608 .long 0xecbd8b06 // vpop {d8-d10}
5609 .long 0xe8bd4800 // pop {fp, lr}
5610 .long 0xe12fff1c // bx ip
5611 .long 0x3eb444f9 // .word 0x3eb444f9
5612 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04005613 .long 0x3fbfbf75 // .word 0x3fbfbf75
5614 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04005615 .long 0xc2f87377 // .word 0xc2f87377
5616 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04005617 .long 0x3f800000 // .word 0x3f800000
5618 .long 0x3f800000 // .word 0x3f800000
5619 .long 0x409af5f8 // .word 0x409af5f8
5620 .long 0x409af5f8 // .word 0x409af5f8
5621 .long 0x3fbebc8d // .word 0x3fbebc8d
5622 .long 0x3fbebc8d // .word 0x3fbebc8d
5623 .long 0x42f28c51 // .word 0x42f28c51
5624 .long 0x42f28c51 // .word 0x42f28c51
5625 .long 0x3fdce9a3 // .word 0x3fdce9a3
5626 .long 0x41ddd2fe // .word 0x41ddd2fe
5627
5628HIDDEN _sk_parametric_g_vfp4
5629.globl _sk_parametric_g_vfp4
5630FUNCTION(_sk_parametric_g_vfp4)
5631_sk_parametric_g_vfp4:
5632 .long 0xe92d4800 // push {fp, lr}
5633 .long 0xed2d8b06 // vpush {d8-d10}
5634 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04005635 .long 0xeddf3b41 // vldr d19, [pc, #260]
5636 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04005637 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04005638 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04005639 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
5640 .long 0xe591c004 // ldr ip, [r1, #4]
5641 .long 0xe2811008 // add r1, r1, #8
5642 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5643 .long 0xe28e3008 // add r3, lr, #8
5644 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5645 .long 0xe28e300c // add r3, lr, #12
5646 .long 0xf2412c91 // vfma.f32 d18, d17, d1
5647 .long 0xf2c71d1f // vmov.i32 d17, #8388607
5648 .long 0xf24211b1 // vand d17, d18, d17
5649 .long 0xf2c3171f // vorr.i32 d17, #1056964608
5650 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5651 .long 0xf2019da3 // vadd.f32 d9, d17, d19
5652 .long 0xf2c33614 // vmov.i32 d19, #872415232
5653 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04005654 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04005655 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5656 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04005657 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04005658 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04005659 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04005660 .long 0xeddf4b2e // vldr d20, [pc, #184]
5661 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04005662 .long 0xf2621da1 // vsub.f32 d17, d18, d17
5663 .long 0xf2611d8a // vsub.f32 d17, d17, d10
5664 .long 0xf3400db1 // vmul.f32 d16, d16, d17
5665 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
5666 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5667 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
5668 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04005669 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04005670 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04005671 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04005672 .long 0xf2601da1 // vsub.f32 d17, d16, d17
5673 .long 0xf2400da4 // vadd.f32 d16, d16, d20
5674 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04005675 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04005676 .long 0xf3411db2 // vmul.f32 d17, d17, d18
5677 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5678 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5679 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
5680 .long 0xf2600da1 // vsub.f32 d16, d16, d17
5681 .long 0xf2c4161b // vmov.i32 d17, #1258291200
5682 .long 0xf2400d8a // vadd.f32 d16, d16, d10
5683 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
5684 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5685 .long 0xe28e3018 // add r3, lr, #24
5686 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5687 .long 0xe28e3010 // add r3, lr, #16
5688 .long 0xf2401c91 // vfma.f32 d17, d16, d1
5689 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5690 .long 0xe28e3014 // add r3, lr, #20
5691 .long 0xf3400e81 // vcge.f32 d16, d16, d1
5692 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
5693 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5694 .long 0xf2442da2 // vadd.f32 d18, d20, d18
5695 .long 0xf35101b2 // vbsl d16, d17, d18
5696 .long 0xf2c71f10 // vmov.f32 d17, #1
5697 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
5698 .long 0xf2201fa1 // vmin.f32 d1, d16, d17
5699 .long 0xecbd8b06 // vpop {d8-d10}
5700 .long 0xe8bd4800 // pop {fp, lr}
5701 .long 0xe12fff1c // bx ip
5702 .long 0x3eb444f9 // .word 0x3eb444f9
5703 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04005704 .long 0x3fbfbf75 // .word 0x3fbfbf75
5705 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04005706 .long 0xc2f87377 // .word 0xc2f87377
5707 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04005708 .long 0x3f800000 // .word 0x3f800000
5709 .long 0x3f800000 // .word 0x3f800000
5710 .long 0x409af5f8 // .word 0x409af5f8
5711 .long 0x409af5f8 // .word 0x409af5f8
5712 .long 0x3fbebc8d // .word 0x3fbebc8d
5713 .long 0x3fbebc8d // .word 0x3fbebc8d
5714 .long 0x42f28c51 // .word 0x42f28c51
5715 .long 0x42f28c51 // .word 0x42f28c51
5716 .long 0x3fdce9a3 // .word 0x3fdce9a3
5717 .long 0x41ddd2fe // .word 0x41ddd2fe
5718
5719HIDDEN _sk_parametric_b_vfp4
5720.globl _sk_parametric_b_vfp4
5721FUNCTION(_sk_parametric_b_vfp4)
5722_sk_parametric_b_vfp4:
5723 .long 0xe92d4800 // push {fp, lr}
5724 .long 0xed2d8b06 // vpush {d8-d10}
5725 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04005726 .long 0xeddf3b41 // vldr d19, [pc, #260]
5727 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04005728 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04005729 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04005730 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
5731 .long 0xe591c004 // ldr ip, [r1, #4]
5732 .long 0xe2811008 // add r1, r1, #8
5733 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5734 .long 0xe28e3008 // add r3, lr, #8
5735 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5736 .long 0xe28e300c // add r3, lr, #12
5737 .long 0xf2412c92 // vfma.f32 d18, d17, d2
5738 .long 0xf2c71d1f // vmov.i32 d17, #8388607
5739 .long 0xf24211b1 // vand d17, d18, d17
5740 .long 0xf2c3171f // vorr.i32 d17, #1056964608
5741 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5742 .long 0xf2019da3 // vadd.f32 d9, d17, d19
5743 .long 0xf2c33614 // vmov.i32 d19, #872415232
5744 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04005745 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04005746 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5747 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04005748 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04005749 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04005750 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04005751 .long 0xeddf4b2e // vldr d20, [pc, #184]
5752 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04005753 .long 0xf2621da1 // vsub.f32 d17, d18, d17
5754 .long 0xf2611d8a // vsub.f32 d17, d17, d10
5755 .long 0xf3400db1 // vmul.f32 d16, d16, d17
5756 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
5757 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5758 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
5759 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04005760 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04005761 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04005762 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04005763 .long 0xf2601da1 // vsub.f32 d17, d16, d17
5764 .long 0xf2400da4 // vadd.f32 d16, d16, d20
5765 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04005766 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04005767 .long 0xf3411db2 // vmul.f32 d17, d17, d18
5768 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5769 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5770 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
5771 .long 0xf2600da1 // vsub.f32 d16, d16, d17
5772 .long 0xf2c4161b // vmov.i32 d17, #1258291200
5773 .long 0xf2400d8a // vadd.f32 d16, d16, d10
5774 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
5775 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5776 .long 0xe28e3018 // add r3, lr, #24
5777 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5778 .long 0xe28e3010 // add r3, lr, #16
5779 .long 0xf2401c92 // vfma.f32 d17, d16, d2
5780 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5781 .long 0xe28e3014 // add r3, lr, #20
5782 .long 0xf3400e82 // vcge.f32 d16, d16, d2
5783 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
5784 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5785 .long 0xf2442da2 // vadd.f32 d18, d20, d18
5786 .long 0xf35101b2 // vbsl d16, d17, d18
5787 .long 0xf2c71f10 // vmov.f32 d17, #1
5788 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
5789 .long 0xf2202fa1 // vmin.f32 d2, d16, d17
5790 .long 0xecbd8b06 // vpop {d8-d10}
5791 .long 0xe8bd4800 // pop {fp, lr}
5792 .long 0xe12fff1c // bx ip
5793 .long 0x3eb444f9 // .word 0x3eb444f9
5794 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04005795 .long 0x3fbfbf75 // .word 0x3fbfbf75
5796 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04005797 .long 0xc2f87377 // .word 0xc2f87377
5798 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04005799 .long 0x3f800000 // .word 0x3f800000
5800 .long 0x3f800000 // .word 0x3f800000
5801 .long 0x409af5f8 // .word 0x409af5f8
5802 .long 0x409af5f8 // .word 0x409af5f8
5803 .long 0x3fbebc8d // .word 0x3fbebc8d
5804 .long 0x3fbebc8d // .word 0x3fbebc8d
5805 .long 0x42f28c51 // .word 0x42f28c51
5806 .long 0x42f28c51 // .word 0x42f28c51
5807 .long 0x3fdce9a3 // .word 0x3fdce9a3
5808 .long 0x41ddd2fe // .word 0x41ddd2fe
5809
5810HIDDEN _sk_parametric_a_vfp4
5811.globl _sk_parametric_a_vfp4
5812FUNCTION(_sk_parametric_a_vfp4)
5813_sk_parametric_a_vfp4:
5814 .long 0xe92d4800 // push {fp, lr}
5815 .long 0xed2d8b06 // vpush {d8-d10}
5816 .long 0xe591e000 // ldr lr, [r1]
Mike Kleinda164342017-04-19 14:33:58 -04005817 .long 0xeddf3b41 // vldr d19, [pc, #260]
5818 .long 0xed9f8a4e // vldr s16, [pc, #312]
Mike Klein44375172017-04-17 19:32:05 -04005819 .long 0xe1a0300e // mov r3, lr
Mike Kleinda164342017-04-19 14:33:58 -04005820 .long 0xeddf4b42 // vldr d20, [pc, #264]
Mike Klein44375172017-04-17 19:32:05 -04005821 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
5822 .long 0xe591c004 // ldr ip, [r1, #4]
5823 .long 0xe2811008 // add r1, r1, #8
5824 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5825 .long 0xe28e3008 // add r3, lr, #8
5826 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5827 .long 0xe28e300c // add r3, lr, #12
5828 .long 0xf2412c93 // vfma.f32 d18, d17, d3
5829 .long 0xf2c71d1f // vmov.i32 d17, #8388607
5830 .long 0xf24211b1 // vand d17, d18, d17
5831 .long 0xf2c3171f // vorr.i32 d17, #1056964608
5832 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
5833 .long 0xf2019da3 // vadd.f32 d9, d17, d19
5834 .long 0xf2c33614 // vmov.i32 d19, #872415232
5835 .long 0xf3422db3 // vmul.f32 d18, d18, d19
Mike Kleinda164342017-04-19 14:33:58 -04005836 .long 0xeddf3b30 // vldr d19, [pc, #192]
Mike Klein44375172017-04-17 19:32:05 -04005837 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5838 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
Mike Klein44375172017-04-17 19:32:05 -04005839 .long 0xf3411db3 // vmul.f32 d17, d17, d19
Mike Kleinda164342017-04-19 14:33:58 -04005840 .long 0xed9f8a39 // vldr s16, [pc, #228]
Mike Klein44375172017-04-17 19:32:05 -04005841 .long 0xf2422da4 // vadd.f32 d18, d18, d20
Mike Kleinda164342017-04-19 14:33:58 -04005842 .long 0xeddf4b2e // vldr d20, [pc, #184]
5843 .long 0xf2c03010 // vmov.i32 d19, #0
Mike Klein44375172017-04-17 19:32:05 -04005844 .long 0xf2621da1 // vsub.f32 d17, d18, d17
5845 .long 0xf2611d8a // vsub.f32 d17, d17, d10
5846 .long 0xf3400db1 // vmul.f32 d16, d16, d17
5847 .long 0xf3fb1720 // vcvt.s32.f32 d17, d16
5848 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
5849 .long 0xf3612ea0 // vcgt.f32 d18, d17, d16
5850 .long 0xf35421b3 // vbsl d18, d20, d19
Mike Kleinda164342017-04-19 14:33:58 -04005851 .long 0xeddf4b2b // vldr d20, [pc, #172]
Mike Klein44375172017-04-17 19:32:05 -04005852 .long 0xf2611da2 // vsub.f32 d17, d17, d18
Mike Kleinda164342017-04-19 14:33:58 -04005853 .long 0xeddf2b25 // vldr d18, [pc, #148]
Mike Klein44375172017-04-17 19:32:05 -04005854 .long 0xf2601da1 // vsub.f32 d17, d16, d17
5855 .long 0xf2400da4 // vadd.f32 d16, d16, d20
5856 .long 0xf2229da1 // vsub.f32 d9, d18, d17
Mike Kleinda164342017-04-19 14:33:58 -04005857 .long 0xeddf2b23 // vldr d18, [pc, #140]
Mike Klein44375172017-04-17 19:32:05 -04005858 .long 0xf3411db2 // vmul.f32 d17, d17, d18
5859 .long 0xf2c3261f // vmov.i32 d18, #1056964608
5860 .long 0xeec8aa29 // vdiv.f32 s21, s16, s19
5861 .long 0xee88aa09 // vdiv.f32 s20, s16, s18
5862 .long 0xf2600da1 // vsub.f32 d16, d16, d17
5863 .long 0xf2c4161b // vmov.i32 d17, #1258291200
5864 .long 0xf2400d8a // vadd.f32 d16, d16, d10
5865 .long 0xf2402cb1 // vfma.f32 d18, d16, d17
5866 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5867 .long 0xe28e3018 // add r3, lr, #24
5868 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
5869 .long 0xe28e3010 // add r3, lr, #16
5870 .long 0xf2401c93 // vfma.f32 d17, d16, d3
5871 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
5872 .long 0xe28e3014 // add r3, lr, #20
5873 .long 0xf3400e83 // vcge.f32 d16, d16, d3
5874 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
5875 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
5876 .long 0xf2442da2 // vadd.f32 d18, d20, d18
5877 .long 0xf35101b2 // vbsl d16, d17, d18
5878 .long 0xf2c71f10 // vmov.f32 d17, #1
5879 .long 0xf2400fa3 // vmax.f32 d16, d16, d19
5880 .long 0xf2203fa1 // vmin.f32 d3, d16, d17
5881 .long 0xecbd8b06 // vpop {d8-d10}
5882 .long 0xe8bd4800 // pop {fp, lr}
5883 .long 0xe12fff1c // bx ip
5884 .long 0x3eb444f9 // .word 0x3eb444f9
5885 .long 0x3eb444f9 // .word 0x3eb444f9
Mike Klein44375172017-04-17 19:32:05 -04005886 .long 0x3fbfbf75 // .word 0x3fbfbf75
5887 .long 0x3fbfbf75 // .word 0x3fbfbf75
Mike Kleinda164342017-04-19 14:33:58 -04005888 .long 0xc2f87377 // .word 0xc2f87377
5889 .long 0xc2f87377 // .word 0xc2f87377
Mike Klein44375172017-04-17 19:32:05 -04005890 .long 0x3f800000 // .word 0x3f800000
5891 .long 0x3f800000 // .word 0x3f800000
5892 .long 0x409af5f8 // .word 0x409af5f8
5893 .long 0x409af5f8 // .word 0x409af5f8
5894 .long 0x3fbebc8d // .word 0x3fbebc8d
5895 .long 0x3fbebc8d // .word 0x3fbebc8d
5896 .long 0x42f28c51 // .word 0x42f28c51
5897 .long 0x42f28c51 // .word 0x42f28c51
5898 .long 0x3fdce9a3 // .word 0x3fdce9a3
5899 .long 0x41ddd2fe // .word 0x41ddd2fe
5900
Mike Klein7c4af542017-03-29 18:21:14 -04005901HIDDEN _sk_load_a8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005902.globl _sk_load_a8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005903FUNCTION(_sk_load_a8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005904_sk_load_a8_vfp4:
5905 .long 0xe24dd004 // sub sp, sp, #4
5906 .long 0xe8911008 // ldm r1, {r3, ip}
5907 .long 0xe2811008 // add r1, r1, #8
5908 .long 0xf2800010 // vmov.i32 d0, #0
5909 .long 0xf2801010 // vmov.i32 d1, #0
5910 .long 0xe5933000 // ldr r3, [r3]
5911 .long 0xf2802010 // vmov.i32 d2, #0
5912 .long 0xe0833000 // add r3, r3, r0
5913 .long 0xe1d330b0 // ldrh r3, [r3]
5914 .long 0xe1cd30b0 // strh r3, [sp]
5915 .long 0xe1a0300d // mov r3, sp
5916 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
5917 .long 0xf3c80a30 // vmovl.u8 q8, d16
5918 .long 0xf3d00a30 // vmovl.u16 q8, d16
5919 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5920 .long 0xeddf1b03 // vldr d17, [pc, #12]
5921 .long 0xf3003db1 // vmul.f32 d3, d16, d17
5922 .long 0xe28dd004 // add sp, sp, #4
5923 .long 0xe12fff1c // bx ip
5924 .long 0xe320f000 // nop {0}
5925 .long 0x3b808081 // .word 0x3b808081
5926 .long 0x3b808081 // .word 0x3b808081
5927
Mike Klein21bd3e42017-04-06 16:32:29 -04005928HIDDEN _sk_gather_a8_vfp4
5929.globl _sk_gather_a8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005930FUNCTION(_sk_gather_a8_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04005931_sk_gather_a8_vfp4:
5932 .long 0xe92d4010 // push {r4, lr}
5933 .long 0xe8911008 // ldm r1, {r3, ip}
5934 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
5935 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
5936 .long 0xe2811008 // add r1, r1, #8
5937 .long 0xf2800010 // vmov.i32 d0, #0
5938 .long 0xe493e008 // ldr lr, [r3], #8
5939 .long 0xf2801010 // vmov.i32 d1, #0
5940 .long 0xf2802010 // vmov.i32 d2, #0
5941 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
5942 .long 0xf26219a0 // vmla.i32 d17, d18, d16
5943 .long 0xee113b90 // vmov.32 r3, d17[0]
5944 .long 0xee314b90 // vmov.32 r4, d17[1]
5945 .long 0xf3c7101f // vmov.i32 d17, #255
5946 .long 0xe7de3003 // ldrb r3, [lr, r3]
5947 .long 0xe7de4004 // ldrb r4, [lr, r4]
5948 .long 0xee003b90 // vmov.32 d16[0], r3
5949 .long 0xee204b90 // vmov.32 d16[1], r4
5950 .long 0xf24001b1 // vand d16, d16, d17
5951 .long 0xeddf1b03 // vldr d17, [pc, #12]
5952 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5953 .long 0xf3003db1 // vmul.f32 d3, d16, d17
5954 .long 0xe8bd4010 // pop {r4, lr}
5955 .long 0xe12fff1c // bx ip
5956 .long 0x3b808081 // .word 0x3b808081
5957 .long 0x3b808081 // .word 0x3b808081
5958
Mike Klein7c4af542017-03-29 18:21:14 -04005959HIDDEN _sk_store_a8_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04005960.globl _sk_store_a8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005961FUNCTION(_sk_store_a8_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04005962_sk_store_a8_vfp4:
5963 .long 0xe92d4800 // push {fp, lr}
5964 .long 0xeddf0b0d // vldr d16, [pc, #52]
5965 .long 0xf2c3161f // vmov.i32 d17, #1056964608
5966 .long 0xf2431c30 // vfma.f32 d17, d3, d16
5967 .long 0xe5913000 // ldr r3, [r1]
5968 .long 0xe5933000 // ldr r3, [r3]
5969 .long 0xf3fb07a1 // vcvt.u32.f32 d16, d17
5970 .long 0xee10eb90 // vmov.32 lr, d16[0]
5971 .long 0xee30cb90 // vmov.32 ip, d16[1]
5972 .long 0xe7e3e000 // strb lr, [r3, r0]!
5973 .long 0xe5c3c001 // strb ip, [r3, #1]
5974 .long 0xe2813008 // add r3, r1, #8
5975 .long 0xe591c004 // ldr ip, [r1, #4]
5976 .long 0xe1a01003 // mov r1, r3
5977 .long 0xe8bd4800 // pop {fp, lr}
5978 .long 0xe12fff1c // bx ip
5979 .long 0x437f0000 // .word 0x437f0000
5980 .long 0x437f0000 // .word 0x437f0000
5981
Mike Kleinf809fef2017-03-31 13:52:45 -04005982HIDDEN _sk_load_g8_vfp4
5983.globl _sk_load_g8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04005984FUNCTION(_sk_load_g8_vfp4)
Mike Kleinf809fef2017-03-31 13:52:45 -04005985_sk_load_g8_vfp4:
5986 .long 0xe24dd004 // sub sp, sp, #4
5987 .long 0xe8911008 // ldm r1, {r3, ip}
5988 .long 0xe2811008 // add r1, r1, #8
5989 .long 0xf2873f10 // vmov.f32 d3, #1
5990 .long 0xe5933000 // ldr r3, [r3]
5991 .long 0xe0833000 // add r3, r3, r0
5992 .long 0xe1d330b0 // ldrh r3, [r3]
5993 .long 0xe1cd30b0 // strh r3, [sp]
5994 .long 0xe1a0300d // mov r3, sp
5995 .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
5996 .long 0xf3c80a30 // vmovl.u8 q8, d16
5997 .long 0xf3d00a30 // vmovl.u16 q8, d16
5998 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
5999 .long 0xeddf1b05 // vldr d17, [pc, #20]
6000 .long 0xf3000db1 // vmul.f32 d0, d16, d17
6001 .long 0xf2201110 // vorr d1, d0, d0
6002 .long 0xf2202110 // vorr d2, d0, d0
6003 .long 0xe28dd004 // add sp, sp, #4
6004 .long 0xe12fff1c // bx ip
6005 .long 0xe320f000 // nop {0}
6006 .long 0x3b808081 // .word 0x3b808081
6007 .long 0x3b808081 // .word 0x3b808081
6008
Mike Klein21bd3e42017-04-06 16:32:29 -04006009HIDDEN _sk_gather_g8_vfp4
6010.globl _sk_gather_g8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006011FUNCTION(_sk_gather_g8_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04006012_sk_gather_g8_vfp4:
6013 .long 0xe92d4010 // push {r4, lr}
6014 .long 0xe8911008 // ldm r1, {r3, ip}
6015 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
6016 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
6017 .long 0xe2811008 // add r1, r1, #8
6018 .long 0xf2873f10 // vmov.f32 d3, #1
6019 .long 0xe493e008 // ldr lr, [r3], #8
6020 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6021 .long 0xf26219a0 // vmla.i32 d17, d18, d16
6022 .long 0xee113b90 // vmov.32 r3, d17[0]
6023 .long 0xee314b90 // vmov.32 r4, d17[1]
6024 .long 0xf3c7101f // vmov.i32 d17, #255
6025 .long 0xe7de3003 // ldrb r3, [lr, r3]
6026 .long 0xe7de4004 // ldrb r4, [lr, r4]
6027 .long 0xee003b90 // vmov.32 d16[0], r3
6028 .long 0xee204b90 // vmov.32 d16[1], r4
6029 .long 0xf24001b1 // vand d16, d16, d17
6030 .long 0xeddf1b05 // vldr d17, [pc, #20]
6031 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6032 .long 0xf3000db1 // vmul.f32 d0, d16, d17
6033 .long 0xf2201110 // vorr d1, d0, d0
6034 .long 0xf2202110 // vorr d2, d0, d0
6035 .long 0xe8bd4010 // pop {r4, lr}
6036 .long 0xe12fff1c // bx ip
6037 .long 0x3b808081 // .word 0x3b808081
6038 .long 0x3b808081 // .word 0x3b808081
6039
Mike Klein7d3d8722017-04-06 17:53:18 -04006040HIDDEN _sk_gather_i8_vfp4
6041.globl _sk_gather_i8_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006042FUNCTION(_sk_gather_i8_vfp4)
Mike Klein7d3d8722017-04-06 17:53:18 -04006043_sk_gather_i8_vfp4:
6044 .long 0xe92d4010 // push {r4, lr}
6045 .long 0xe1a0e001 // mov lr, r1
6046 .long 0xe491c004 // ldr ip, [r1], #4
6047 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
6048 .long 0xe35c0000 // cmp ip, #0
6049 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
6050 .long 0xe1a0300c // mov r3, ip
6051 .long 0x028e1008 // addeq r1, lr, #8
6052 .long 0x059e3004 // ldreq r3, [lr, #4]
6053 .long 0xe493e008 // ldr lr, [r3], #8
6054 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6055 .long 0xf26219a0 // vmla.i32 d17, d18, d16
6056 .long 0xee113b90 // vmov.32 r3, d17[0]
6057 .long 0xee314b90 // vmov.32 r4, d17[1]
6058 .long 0xf3c7101f // vmov.i32 d17, #255
6059 .long 0xe7de3003 // ldrb r3, [lr, r3]
6060 .long 0xe7de4004 // ldrb r4, [lr, r4]
6061 .long 0xee003b90 // vmov.32 d16[0], r3
6062 .long 0xee204b90 // vmov.32 d16[1], r4
6063 .long 0xe59c4004 // ldr r4, [ip, #4]
6064 .long 0xf24001b1 // vand d16, d16, d17
6065 .long 0xee103b90 // vmov.32 r3, d16[0]
6066 .long 0xee30eb90 // vmov.32 lr, d16[1]
6067 .long 0xe0843103 // add r3, r4, r3, lsl #2
6068 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
6069 .long 0xe084310e // add r3, r4, lr, lsl #2
6070 .long 0xf4e308bf // vld1.32 {d16[1]}, [r3 :32]
6071 .long 0xf24021b1 // vand d18, d16, d17
6072 .long 0xf3f83030 // vshr.u32 d19, d16, #8
6073 .long 0xf3e84030 // vshr.u32 d20, d16, #24
6074 .long 0xe4913004 // ldr r3, [r1], #4
6075 .long 0xf3f00030 // vshr.u32 d16, d16, #16
6076 .long 0xf24331b1 // vand d19, d19, d17
6077 .long 0xf24001b1 // vand d16, d16, d17
6078 .long 0xeddf1b0a // vldr d17, [pc, #40]
6079 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6080 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
6081 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
6082 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6083 .long 0xf3020db1 // vmul.f32 d0, d18, d17
6084 .long 0xf3043db1 // vmul.f32 d3, d20, d17
6085 .long 0xf3031db1 // vmul.f32 d1, d19, d17
6086 .long 0xf3002db1 // vmul.f32 d2, d16, d17
6087 .long 0xe8bd4010 // pop {r4, lr}
6088 .long 0xe12fff13 // bx r3
6089 .long 0xe320f000 // nop {0}
6090 .long 0x3b808081 // .word 0x3b808081
6091 .long 0x3b808081 // .word 0x3b808081
6092
Mike Klein7c4af542017-03-29 18:21:14 -04006093HIDDEN _sk_load_565_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006094.globl _sk_load_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006095FUNCTION(_sk_load_565_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006096_sk_load_565_vfp4:
6097 .long 0xe24dd004 // sub sp, sp, #4
6098 .long 0xe8911008 // ldm r1, {r3, ip}
6099 .long 0xf2c1101f // vmov.i32 d17, #31
6100 .long 0xf3c72218 // vmov.i32 d18, #63488
6101 .long 0xeddf3b16 // vldr d19, [pc, #88]
6102 .long 0xe2811008 // add r1, r1, #8
6103 .long 0xe5933000 // ldr r3, [r3]
6104 .long 0xf2873f10 // vmov.f32 d3, #1
6105 .long 0xe7933080 // ldr r3, [r3, r0, lsl #1]
6106 .long 0xe58d3000 // str r3, [sp]
6107 .long 0xe1a0300d // mov r3, sp
6108 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
6109 .long 0xe3a03e7e // mov r3, #2016
6110 .long 0xf3d04a30 // vmovl.u16 q10, d16
6111 .long 0xee803b90 // vdup.32 d16, r3
6112 .long 0xf24411b1 // vand d17, d20, d17
6113 .long 0xeddf5b0e // vldr d21, [pc, #56]
6114 .long 0xf24421b2 // vand d18, d20, d18
6115 .long 0xf24401b0 // vand d16, d20, d16
6116 .long 0xeddf4b09 // vldr d20, [pc, #36]
6117 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6118 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6119 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6120 .long 0xf3020db3 // vmul.f32 d0, d18, d19
6121 .long 0xf3001db4 // vmul.f32 d1, d16, d20
6122 .long 0xf3012db5 // vmul.f32 d2, d17, d21
6123 .long 0xe28dd004 // add sp, sp, #4
6124 .long 0xe12fff1c // bx ip
6125 .long 0x37842108 // .word 0x37842108
6126 .long 0x37842108 // .word 0x37842108
6127 .long 0x3a020821 // .word 0x3a020821
6128 .long 0x3a020821 // .word 0x3a020821
6129 .long 0x3d042108 // .word 0x3d042108
6130 .long 0x3d042108 // .word 0x3d042108
6131
Mike Klein21bd3e42017-04-06 16:32:29 -04006132HIDDEN _sk_gather_565_vfp4
6133.globl _sk_gather_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006134FUNCTION(_sk_gather_565_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04006135_sk_gather_565_vfp4:
6136 .long 0xe92d4010 // push {r4, lr}
6137 .long 0xe8911008 // ldm r1, {r3, ip}
6138 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
6139 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
6140 .long 0xeddf4b20 // vldr d20, [pc, #128]
6141 .long 0xe2811008 // add r1, r1, #8
6142 .long 0xe493e008 // ldr lr, [r3], #8
6143 .long 0xf2873f10 // vmov.f32 d3, #1
6144 .long 0xeddf5b1e // vldr d21, [pc, #120]
6145 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6146 .long 0xf26219a0 // vmla.i32 d17, d18, d16
6147 .long 0xf2c1201f // vmov.i32 d18, #31
6148 .long 0xee113b90 // vmov.32 r3, d17[0]
6149 .long 0xee314b90 // vmov.32 r4, d17[1]
6150 .long 0xf3c71218 // vmov.i32 d17, #63488
6151 .long 0xe08e3083 // add r3, lr, r3, lsl #1
6152 .long 0xe08e4084 // add r4, lr, r4, lsl #1
6153 .long 0xe1d330b0 // ldrh r3, [r3]
6154 .long 0xe1d440b0 // ldrh r4, [r4]
6155 .long 0xee003b90 // vmov.32 d16[0], r3
6156 .long 0xe3a03e7e // mov r3, #2016
6157 .long 0xee833b90 // vdup.32 d19, r3
6158 .long 0xee204b90 // vmov.32 d16[1], r4
6159 .long 0xf24011b1 // vand d17, d16, d17
6160 .long 0xf24031b3 // vand d19, d16, d19
6161 .long 0xf24001b2 // vand d16, d16, d18
6162 .long 0xf3fb2623 // vcvt.f32.s32 d18, d19
6163 .long 0xeddf3b07 // vldr d19, [pc, #28]
6164 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6165 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6166 .long 0xf3021db4 // vmul.f32 d1, d18, d20
6167 .long 0xf3010db3 // vmul.f32 d0, d17, d19
6168 .long 0xf3002db5 // vmul.f32 d2, d16, d21
6169 .long 0xe8bd4010 // pop {r4, lr}
6170 .long 0xe12fff1c // bx ip
6171 .long 0xe320f000 // nop {0}
6172 .long 0x37842108 // .word 0x37842108
6173 .long 0x37842108 // .word 0x37842108
6174 .long 0x3a020821 // .word 0x3a020821
6175 .long 0x3a020821 // .word 0x3a020821
6176 .long 0x3d042108 // .word 0x3d042108
6177 .long 0x3d042108 // .word 0x3d042108
6178
Mike Klein7c4af542017-03-29 18:21:14 -04006179HIDDEN _sk_store_565_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006180.globl _sk_store_565_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006181FUNCTION(_sk_store_565_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006182_sk_store_565_vfp4:
6183 .long 0xf2c30f1f // vmov.f32 d16, #31
6184 .long 0xeddf1b15 // vldr d17, [pc, #84]
6185 .long 0xf2c3361f // vmov.i32 d19, #1056964608
6186 .long 0xe5913000 // ldr r3, [r1]
6187 .long 0xf2413c31 // vfma.f32 d19, d1, d17
6188 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6189 .long 0xf2401c30 // vfma.f32 d17, d0, d16
6190 .long 0xe5933000 // ldr r3, [r3]
6191 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6192 .long 0xf2422c30 // vfma.f32 d18, d2, d16
6193 .long 0xe0833080 // add r3, r3, r0, lsl #1
6194 .long 0xf3fb07a3 // vcvt.u32.f32 d16, d19
6195 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
6196 .long 0xf3fb27a2 // vcvt.u32.f32 d18, d18
6197 .long 0xf2e50530 // vshl.s32 d16, d16, #5
6198 .long 0xf2eb1531 // vshl.s32 d17, d17, #11
6199 .long 0xf26001b1 // vorr d16, d16, d17
6200 .long 0xf26001b2 // vorr d16, d16, d18
6201 .long 0xf3f60121 // vuzp.16 d16, d17
6202 .long 0xf4c3080f // vst1.32 {d16[0]}, [r3]
6203 .long 0xe2813008 // add r3, r1, #8
6204 .long 0xe591c004 // ldr ip, [r1, #4]
6205 .long 0xe1a01003 // mov r1, r3
6206 .long 0xe12fff1c // bx ip
6207 .long 0x427c0000 // .word 0x427c0000
6208 .long 0x427c0000 // .word 0x427c0000
6209
Mike Kleinf809fef2017-03-31 13:52:45 -04006210HIDDEN _sk_load_4444_vfp4
6211.globl _sk_load_4444_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006212FUNCTION(_sk_load_4444_vfp4)
Mike Kleinf809fef2017-03-31 13:52:45 -04006213_sk_load_4444_vfp4:
6214 .long 0xe24dd004 // sub sp, sp, #4
6215 .long 0xe8911008 // ldm r1, {r3, ip}
6216 .long 0xf3c71210 // vmov.i32 d17, #61440
6217 .long 0xf3c74010 // vmov.i32 d20, #240
6218 .long 0xf2c0501f // vmov.i32 d21, #15
6219 .long 0xeddf6b1d // vldr d22, [pc, #116]
6220 .long 0xe5933000 // ldr r3, [r3]
6221 .long 0xe2811008 // add r1, r1, #8
6222 .long 0xe7933080 // ldr r3, [r3, r0, lsl #1]
6223 .long 0xe58d3000 // str r3, [sp]
6224 .long 0xe1a0300d // mov r3, sp
6225 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
6226 .long 0xf3d02a30 // vmovl.u16 q9, d16
6227 .long 0xf2c0021f // vmov.i32 d16, #3840
6228 .long 0xf24211b1 // vand d17, d18, d17
6229 .long 0xf24201b0 // vand d16, d18, d16
6230 .long 0xf24241b4 // vand d20, d18, d20
6231 .long 0xf24221b5 // vand d18, d18, d21
6232 .long 0xeddf3b0c // vldr d19, [pc, #48]
6233 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6234 .long 0xeddf5b0c // vldr d21, [pc, #48]
6235 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6236 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
6237 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6238 .long 0xf3010db3 // vmul.f32 d0, d17, d19
6239 .long 0xeddf1b0b // vldr d17, [pc, #44]
6240 .long 0xf3001db5 // vmul.f32 d1, d16, d21
6241 .long 0xf3042db6 // vmul.f32 d2, d20, d22
6242 .long 0xf3023db1 // vmul.f32 d3, d18, d17
6243 .long 0xe28dd004 // add sp, sp, #4
6244 .long 0xe12fff1c // bx ip
6245 .long 0xe320f000 // nop {0}
6246 .long 0x37888889 // .word 0x37888889
6247 .long 0x37888889 // .word 0x37888889
6248 .long 0x39888889 // .word 0x39888889
6249 .long 0x39888889 // .word 0x39888889
6250 .long 0x3b888889 // .word 0x3b888889
6251 .long 0x3b888889 // .word 0x3b888889
6252 .long 0x3d888889 // .word 0x3d888889
6253 .long 0x3d888889 // .word 0x3d888889
6254
Mike Klein21bd3e42017-04-06 16:32:29 -04006255HIDDEN _sk_gather_4444_vfp4
6256.globl _sk_gather_4444_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006257FUNCTION(_sk_gather_4444_vfp4)
Mike Klein21bd3e42017-04-06 16:32:29 -04006258_sk_gather_4444_vfp4:
6259 .long 0xe92d4010 // push {r4, lr}
6260 .long 0xe8911008 // ldm r1, {r3, ip}
6261 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
6262 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
6263 .long 0xf3c73010 // vmov.i32 d19, #240
6264 .long 0xeddf5b21 // vldr d21, [pc, #132]
6265 .long 0xe493e008 // ldr lr, [r3], #8
6266 .long 0xf2c0401f // vmov.i32 d20, #15
6267 .long 0xeddf6b20 // vldr d22, [pc, #128]
6268 .long 0xe2811008 // add r1, r1, #8
6269 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6270 .long 0xf26219a0 // vmla.i32 d17, d18, d16
6271 .long 0xf2c0221f // vmov.i32 d18, #3840
6272 .long 0xee113b90 // vmov.32 r3, d17[0]
6273 .long 0xee314b90 // vmov.32 r4, d17[1]
6274 .long 0xf3c71210 // vmov.i32 d17, #61440
6275 .long 0xe08e3083 // add r3, lr, r3, lsl #1
6276 .long 0xe08e4084 // add r4, lr, r4, lsl #1
6277 .long 0xe1d330b0 // ldrh r3, [r3]
6278 .long 0xe1d440b0 // ldrh r4, [r4]
6279 .long 0xee003b90 // vmov.32 d16[0], r3
6280 .long 0xee204b90 // vmov.32 d16[1], r4
6281 .long 0xf24011b1 // vand d17, d16, d17
6282 .long 0xf24021b2 // vand d18, d16, d18
6283 .long 0xf24031b3 // vand d19, d16, d19
6284 .long 0xf24001b4 // vand d16, d16, d20
6285 .long 0xeddf4b0a // vldr d20, [pc, #40]
6286 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6287 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6288 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
6289 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6290 .long 0xf3010db4 // vmul.f32 d0, d17, d20
6291 .long 0xeddf1b0a // vldr d17, [pc, #40]
6292 .long 0xf3021db5 // vmul.f32 d1, d18, d21
6293 .long 0xf3032db6 // vmul.f32 d2, d19, d22
6294 .long 0xf3003db1 // vmul.f32 d3, d16, d17
6295 .long 0xe8bd4010 // pop {r4, lr}
6296 .long 0xe12fff1c // bx ip
6297 .long 0x37888889 // .word 0x37888889
6298 .long 0x37888889 // .word 0x37888889
6299 .long 0x39888889 // .word 0x39888889
6300 .long 0x39888889 // .word 0x39888889
6301 .long 0x3b888889 // .word 0x3b888889
6302 .long 0x3b888889 // .word 0x3b888889
6303 .long 0x3d888889 // .word 0x3d888889
6304 .long 0x3d888889 // .word 0x3d888889
6305
Mike Kleinf809fef2017-03-31 13:52:45 -04006306HIDDEN _sk_store_4444_vfp4
6307.globl _sk_store_4444_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006308FUNCTION(_sk_store_4444_vfp4)
Mike Kleinf809fef2017-03-31 13:52:45 -04006309_sk_store_4444_vfp4:
6310 .long 0xf2c20f1e // vmov.f32 d16, #15
6311 .long 0xe5913000 // ldr r3, [r1]
6312 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6313 .long 0xf2c3361f // vmov.i32 d19, #1056964608
6314 .long 0xf2402c30 // vfma.f32 d18, d0, d16
6315 .long 0xe5933000 // ldr r3, [r3]
6316 .long 0xf2413c30 // vfma.f32 d19, d1, d16
6317 .long 0xf2c3461f // vmov.i32 d20, #1056964608
6318 .long 0xe0833080 // add r3, r3, r0, lsl #1
6319 .long 0xf2424c30 // vfma.f32 d20, d2, d16
6320 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6321 .long 0xf2431c30 // vfma.f32 d17, d3, d16
6322 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
6323 .long 0xf3fb27a3 // vcvt.u32.f32 d18, d19
6324 .long 0xf3fb37a4 // vcvt.u32.f32 d19, d20
6325 .long 0xf2ec0530 // vshl.s32 d16, d16, #12
6326 .long 0xf2e82532 // vshl.s32 d18, d18, #8
6327 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
6328 .long 0xf2e43533 // vshl.s32 d19, d19, #4
6329 .long 0xf26201b0 // vorr d16, d18, d16
6330 .long 0xf26001b3 // vorr d16, d16, d19
6331 .long 0xf26001b1 // vorr d16, d16, d17
6332 .long 0xf3f60121 // vuzp.16 d16, d17
6333 .long 0xf4c3080f // vst1.32 {d16[0]}, [r3]
6334 .long 0xe2813008 // add r3, r1, #8
6335 .long 0xe591c004 // ldr ip, [r1, #4]
6336 .long 0xe1a01003 // mov r1, r3
6337 .long 0xe12fff1c // bx ip
6338
Mike Klein7c4af542017-03-29 18:21:14 -04006339HIDDEN _sk_load_8888_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006340.globl _sk_load_8888_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006341FUNCTION(_sk_load_8888_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006342_sk_load_8888_vfp4:
6343 .long 0xe8911008 // ldm r1, {r3, ip}
6344 .long 0xf3c7001f // vmov.i32 d16, #255
6345 .long 0xe2811008 // add r1, r1, #8
6346 .long 0xe5933000 // ldr r3, [r3]
6347 .long 0xe0833100 // add r3, r3, r0, lsl #2
6348 .long 0xedd31b00 // vldr d17, [r3]
6349 .long 0xf24121b0 // vand d18, d17, d16
6350 .long 0xf3f83031 // vshr.u32 d19, d17, #8
6351 .long 0xf3e84031 // vshr.u32 d20, d17, #24
6352 .long 0xf3f01031 // vshr.u32 d17, d17, #16
6353 .long 0xf24331b0 // vand d19, d19, d16
6354 .long 0xf24101b0 // vand d16, d17, d16
6355 .long 0xeddf1b08 // vldr d17, [pc, #32]
6356 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6357 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
6358 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
6359 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6360 .long 0xf3020db1 // vmul.f32 d0, d18, d17
6361 .long 0xf3043db1 // vmul.f32 d3, d20, d17
6362 .long 0xf3031db1 // vmul.f32 d1, d19, d17
6363 .long 0xf3002db1 // vmul.f32 d2, d16, d17
6364 .long 0xe12fff1c // bx ip
6365 .long 0x3b808081 // .word 0x3b808081
6366 .long 0x3b808081 // .word 0x3b808081
6367
Mike Kleindec4ea82017-04-06 15:04:05 -04006368HIDDEN _sk_gather_8888_vfp4
6369.globl _sk_gather_8888_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006370FUNCTION(_sk_gather_8888_vfp4)
Mike Kleindec4ea82017-04-06 15:04:05 -04006371_sk_gather_8888_vfp4:
6372 .long 0xe92d4010 // push {r4, lr}
6373 .long 0xe8911008 // ldm r1, {r3, ip}
6374 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
6375 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
6376 .long 0xe2811008 // add r1, r1, #8
6377 .long 0xe493e008 // ldr lr, [r3], #8
6378 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6379 .long 0xf26219a0 // vmla.i32 d17, d18, d16
6380 .long 0xee113b90 // vmov.32 r3, d17[0]
6381 .long 0xee314b90 // vmov.32 r4, d17[1]
6382 .long 0xf3c7101f // vmov.i32 d17, #255
6383 .long 0xe08e3103 // add r3, lr, r3, lsl #2
6384 .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
6385 .long 0xe08e3104 // add r3, lr, r4, lsl #2
6386 .long 0xf4e308bf // vld1.32 {d16[1]}, [r3 :32]
6387 .long 0xf24021b1 // vand d18, d16, d17
6388 .long 0xf3f83030 // vshr.u32 d19, d16, #8
6389 .long 0xf3e84030 // vshr.u32 d20, d16, #24
6390 .long 0xf3f00030 // vshr.u32 d16, d16, #16
6391 .long 0xf24331b1 // vand d19, d19, d17
6392 .long 0xf24001b1 // vand d16, d16, d17
6393 .long 0xeddf1b09 // vldr d17, [pc, #36]
6394 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
6395 .long 0xf3fb4624 // vcvt.f32.s32 d20, d20
6396 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
6397 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6398 .long 0xf3020db1 // vmul.f32 d0, d18, d17
6399 .long 0xf3043db1 // vmul.f32 d3, d20, d17
6400 .long 0xf3031db1 // vmul.f32 d1, d19, d17
6401 .long 0xf3002db1 // vmul.f32 d2, d16, d17
6402 .long 0xe8bd4010 // pop {r4, lr}
6403 .long 0xe12fff1c // bx ip
6404 .long 0x3b808081 // .word 0x3b808081
6405 .long 0x3b808081 // .word 0x3b808081
6406
Mike Klein7c4af542017-03-29 18:21:14 -04006407HIDDEN _sk_store_8888_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006408.globl _sk_store_8888_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006409FUNCTION(_sk_store_8888_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006410_sk_store_8888_vfp4:
6411 .long 0xeddf0b1a // vldr d16, [pc, #104]
6412 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6413 .long 0xf2412c30 // vfma.f32 d18, d1, d16
6414 .long 0xe5913000 // ldr r3, [r1]
6415 .long 0xf2c3361f // vmov.i32 d19, #1056964608
6416 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6417 .long 0xf2423c30 // vfma.f32 d19, d2, d16
6418 .long 0xe5933000 // ldr r3, [r3]
6419 .long 0xf2c3461f // vmov.i32 d20, #1056964608
6420 .long 0xf2401c30 // vfma.f32 d17, d0, d16
6421 .long 0xe0833100 // add r3, r3, r0, lsl #2
6422 .long 0xf2434c30 // vfma.f32 d20, d3, d16
6423 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
6424 .long 0xf3fb27a3 // vcvt.u32.f32 d18, d19
6425 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
6426 .long 0xf3fb37a4 // vcvt.u32.f32 d19, d20
6427 .long 0xf2e80530 // vshl.s32 d16, d16, #8
6428 .long 0xf2f02532 // vshl.s32 d18, d18, #16
6429 .long 0xf26001b1 // vorr d16, d16, d17
6430 .long 0xf2f81533 // vshl.s32 d17, d19, #24
6431 .long 0xf26001b2 // vorr d16, d16, d18
6432 .long 0xf26001b1 // vorr d16, d16, d17
6433 .long 0xedc30b00 // vstr d16, [r3]
6434 .long 0xe2813008 // add r3, r1, #8
6435 .long 0xe591c004 // ldr ip, [r1, #4]
6436 .long 0xe1a01003 // mov r1, r3
6437 .long 0xe12fff1c // bx ip
6438 .long 0xe320f000 // nop {0}
6439 .long 0x437f0000 // .word 0x437f0000
6440 .long 0x437f0000 // .word 0x437f0000
6441
Mike Klein7c4af542017-03-29 18:21:14 -04006442HIDDEN _sk_load_f16_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006443.globl _sk_load_f16_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006444FUNCTION(_sk_load_f16_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006445_sk_load_f16_vfp4:
6446 .long 0xe8911008 // ldm r1, {r3, ip}
6447 .long 0xe2811008 // add r1, r1, #8
6448 .long 0xe5933000 // ldr r3, [r3]
6449 .long 0xe0833180 // add r3, r3, r0, lsl #3
Mike Klein114e6b32017-04-03 22:21:15 -04006450 .long 0xf4e3070d // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]!
6451 .long 0xf4e3074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3]
6452 .long 0xf3b60720 // vcvt.f32.f16 q0, d16
6453 .long 0xf3b62722 // vcvt.f32.f16 q1, d18
6454 .long 0xf3f64721 // vcvt.f32.f16 q10, d17
6455 .long 0xf3f60723 // vcvt.f32.f16 q8, d19
6456 .long 0xf22411b4 // vorr d1, d20, d20
6457 .long 0xf22031b0 // vorr d3, d16, d16
Mike Kleind7e06ae2017-03-29 16:33:06 -04006458 .long 0xe12fff1c // bx ip
6459
Mike Klein5f055f02017-04-06 20:02:11 -04006460HIDDEN _sk_gather_f16_vfp4
6461.globl _sk_gather_f16_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006462FUNCTION(_sk_gather_f16_vfp4)
Mike Klein5f055f02017-04-06 20:02:11 -04006463_sk_gather_f16_vfp4:
6464 .long 0xe92d4c10 // push {r4, sl, fp, lr}
6465 .long 0xe28db008 // add fp, sp, #8
6466 .long 0xe24dd010 // sub sp, sp, #16
6467 .long 0xe7c3d01f // bfc sp, #0, #4
6468 .long 0xe5913000 // ldr r3, [r1]
6469 .long 0xf3fb0701 // vcvt.s32.f32 d16, d1
6470 .long 0xf3fb1700 // vcvt.s32.f32 d17, d0
6471 .long 0xe493c008 // ldr ip, [r3], #8
6472 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6473 .long 0xf26219a0 // vmla.i32 d17, d18, d16
6474 .long 0xee113b90 // vmov.32 r3, d17[0]
6475 .long 0xee31eb90 // vmov.32 lr, d17[1]
6476 .long 0xe08c4183 // add r4, ip, r3, lsl #3
6477 .long 0xe08c318e // add r3, ip, lr, lsl #3
6478 .long 0xedd31b00 // vldr d17, [r3]
6479 .long 0xe1a0300d // mov r3, sp
6480 .long 0xedd40b00 // vldr d16, [r4]
6481 .long 0xf4430aef // vst1.64 {d16-d17}, [r3 :128]
6482 .long 0xf4e3071f // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3 :64]
6483 .long 0xe3833008 // orr r3, r3, #8
6484 .long 0xf4e3075f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3 :64]
6485 .long 0xf3b60720 // vcvt.f32.f16 q0, d16
6486 .long 0xf3b62722 // vcvt.f32.f16 q1, d18
6487 .long 0xe5913004 // ldr r3, [r1, #4]
6488 .long 0xe2811008 // add r1, r1, #8
6489 .long 0xf3f64721 // vcvt.f32.f16 q10, d17
6490 .long 0xf3f60723 // vcvt.f32.f16 q8, d19
6491 .long 0xf22411b4 // vorr d1, d20, d20
6492 .long 0xf22031b0 // vorr d3, d16, d16
6493 .long 0xe12fff33 // blx r3
6494 .long 0xe24bd008 // sub sp, fp, #8
6495 .long 0xe8bd8c10 // pop {r4, sl, fp, pc}
6496
Mike Klein7c4af542017-03-29 18:21:14 -04006497HIDDEN _sk_store_f16_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006498.globl _sk_store_f16_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006499FUNCTION(_sk_store_f16_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006500_sk_store_f16_vfp4:
Mike Klein95f53be2017-04-04 10:24:56 -04006501 .long 0xf2630113 // vorr d16, d3, d3
Mike Kleind7e06ae2017-03-29 16:33:06 -04006502 .long 0xe5913000 // ldr r3, [r1]
Mike Klein95f53be2017-04-04 10:24:56 -04006503 .long 0xf2612111 // vorr d18, d1, d1
6504 .long 0xf3f67620 // vcvt.f16.f32 d23, q8
Mike Kleind7e06ae2017-03-29 16:33:06 -04006505 .long 0xe5933000 // ldr r3, [r3]
Mike Klein95f53be2017-04-04 10:24:56 -04006506 .long 0xf3f66602 // vcvt.f16.f32 d22, q1
Mike Kleind7e06ae2017-03-29 16:33:06 -04006507 .long 0xe0833180 // add r3, r3, r0, lsl #3
Mike Klein95f53be2017-04-04 10:24:56 -04006508 .long 0xf3f65622 // vcvt.f16.f32 d21, q9
6509 .long 0xf3f64600 // vcvt.f16.f32 d20, q0
6510 .long 0xf22211b2 // vorr d1, d18, d18
6511 .long 0xf22031b0 // vorr d3, d16, d16
6512 .long 0xf4c3470d // vst4.16 {d20[0],d21[0],d22[0],d23[0]}, [r3]!
6513 .long 0xf4c3474f // vst4.16 {d20[1],d21[1],d22[1],d23[1]}, [r3]
Mike Kleind7e06ae2017-03-29 16:33:06 -04006514 .long 0xe2813008 // add r3, r1, #8
6515 .long 0xe591c004 // ldr ip, [r1, #4]
6516 .long 0xe1a01003 // mov r1, r3
6517 .long 0xe12fff1c // bx ip
6518
Mike Klein3146bb92017-04-05 14:45:02 -04006519HIDDEN _sk_load_u16_be_vfp4
6520.globl _sk_load_u16_be_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006521FUNCTION(_sk_load_u16_be_vfp4)
Mike Klein3146bb92017-04-05 14:45:02 -04006522_sk_load_u16_be_vfp4:
6523 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
6524 .long 0xe8911008 // ldm r1, {r3, ip}
6525 .long 0xe2811008 // add r1, r1, #8
6526 .long 0xe5933000 // ldr r3, [r3]
6527 .long 0xe0833180 // add r3, r3, r0, lsl #3
6528 .long 0xf4e3070d // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]!
6529 .long 0xf4e3074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3]
6530 .long 0xee903bb0 // vmov.u16 r3, d16[0]
6531 .long 0xee92ebb0 // vmov.u16 lr, d18[0]
6532 .long 0xee914bb0 // vmov.u16 r4, d17[0]
6533 .long 0xee937bb0 // vmov.u16 r7, d19[0]
6534 .long 0xee905bf0 // vmov.u16 r5, d16[1]
6535 .long 0xee926bf0 // vmov.u16 r6, d18[1]
6536 .long 0xee043b90 // vmov.32 d20[0], r3
6537 .long 0xee05eb90 // vmov.32 d21[0], lr
6538 .long 0xee93ebf0 // vmov.u16 lr, d19[1]
6539 .long 0xee913bf0 // vmov.u16 r3, d17[1]
6540 .long 0xf3c71c1f // vmov.i32 d17, #65535
6541 .long 0xee004b90 // vmov.32 d16[0], r4
6542 .long 0xee027b90 // vmov.32 d18[0], r7
6543 .long 0xee245b90 // vmov.32 d20[1], r5
6544 .long 0xf24431b1 // vand d19, d20, d17
6545 .long 0xee256b90 // vmov.32 d21[1], r6
6546 .long 0xf2e84534 // vshl.s32 d20, d20, #8
6547 .long 0xf24561b1 // vand d22, d21, d17
6548 .long 0xf3f83033 // vshr.u32 d19, d19, #8
6549 .long 0xf2e85535 // vshl.s32 d21, d21, #8
6550 .long 0xf26431b3 // vorr d19, d20, d19
6551 .long 0xf3f86036 // vshr.u32 d22, d22, #8
6552 .long 0xf24331b1 // vand d19, d19, d17
6553 .long 0xf26551b6 // vorr d21, d21, d22
6554 .long 0xf3fb36a3 // vcvt.f32.u32 d19, d19
6555 .long 0xee22eb90 // vmov.32 d18[1], lr
6556 .long 0xee203b90 // vmov.32 d16[1], r3
6557 .long 0xf24281b1 // vand d24, d18, d17
6558 .long 0xf2e82532 // vshl.s32 d18, d18, #8
6559 .long 0xf24071b1 // vand d23, d16, d17
6560 .long 0xf3f84038 // vshr.u32 d20, d24, #8
6561 .long 0xf2e80530 // vshl.s32 d16, d16, #8
6562 .long 0xf3f87037 // vshr.u32 d23, d23, #8
6563 .long 0xf26221b4 // vorr d18, d18, d20
6564 .long 0xf26001b7 // vorr d16, d16, d23
6565 .long 0xf24541b1 // vand d20, d21, d17
6566 .long 0xf24001b1 // vand d16, d16, d17
6567 .long 0xf24211b1 // vand d17, d18, d17
6568 .long 0xeddf2b09 // vldr d18, [pc, #36]
6569 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6570 .long 0xf3fb46a4 // vcvt.f32.u32 d20, d20
6571 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
6572 .long 0xf3030db2 // vmul.f32 d0, d19, d18
6573 .long 0xf3001db2 // vmul.f32 d1, d16, d18
6574 .long 0xf3042db2 // vmul.f32 d2, d20, d18
6575 .long 0xf3013db2 // vmul.f32 d3, d17, d18
6576 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
6577 .long 0xe12fff1c // bx ip
6578 .long 0xe320f000 // nop {0}
6579 .long 0x37800080 // .word 0x37800080
6580 .long 0x37800080 // .word 0x37800080
6581
Mike Kleinb3821732017-04-17 10:58:05 -04006582HIDDEN _sk_load_rgb_u16_be_vfp4
6583.globl _sk_load_rgb_u16_be_vfp4
6584FUNCTION(_sk_load_rgb_u16_be_vfp4)
6585_sk_load_rgb_u16_be_vfp4:
6586 .long 0xe92d48f0 // push {r4, r5, r6, r7, fp, lr}
6587 .long 0xe8911008 // ldm r1, {r3, ip}
6588 .long 0xe2811008 // add r1, r1, #8
6589 .long 0xf2873f10 // vmov.f32 d3, #1
6590 .long 0xe593e000 // ldr lr, [r3]
6591 .long 0xe0803080 // add r3, r0, r0, lsl #1
6592 .long 0xe08e3083 // add r3, lr, r3, lsl #1
6593 .long 0xf4e3060d // vld3.16 {d16[0],d17[0],d18[0]}, [r3]!
6594 .long 0xf4e3064f // vld3.16 {d16[1],d17[1],d18[1]}, [r3]
6595 .long 0xee90ebb0 // vmov.u16 lr, d16[0]
6596 .long 0xee913bb0 // vmov.u16 r3, d17[0]
6597 .long 0xee924bb0 // vmov.u16 r4, d18[0]
6598 .long 0xee927bf0 // vmov.u16 r7, d18[1]
6599 .long 0xf3c73c1f // vmov.i32 d19, #65535
6600 .long 0xee905bf0 // vmov.u16 r5, d16[1]
6601 .long 0xee916bf0 // vmov.u16 r6, d17[1]
6602 .long 0xee00eb90 // vmov.32 d16[0], lr
6603 .long 0xee013b90 // vmov.32 d17[0], r3
6604 .long 0xee024b90 // vmov.32 d18[0], r4
6605 .long 0xee205b90 // vmov.32 d16[1], r5
6606 .long 0xee216b90 // vmov.32 d17[1], r6
6607 .long 0xf24041b3 // vand d20, d16, d19
6608 .long 0xf2e80530 // vshl.s32 d16, d16, #8
6609 .long 0xee227b90 // vmov.32 d18[1], r7
6610 .long 0xf24151b3 // vand d21, d17, d19
6611 .long 0xf3f84034 // vshr.u32 d20, d20, #8
6612 .long 0xf24261b3 // vand d22, d18, d19
6613 .long 0xf2e81531 // vshl.s32 d17, d17, #8
6614 .long 0xf3f85035 // vshr.u32 d21, d21, #8
6615 .long 0xf2e82532 // vshl.s32 d18, d18, #8
6616 .long 0xf3f86036 // vshr.u32 d22, d22, #8
6617 .long 0xf26001b4 // vorr d16, d16, d20
6618 .long 0xf26111b5 // vorr d17, d17, d21
6619 .long 0xf26221b6 // vorr d18, d18, d22
6620 .long 0xf24001b3 // vand d16, d16, d19
6621 .long 0xf24111b3 // vand d17, d17, d19
6622 .long 0xf24221b3 // vand d18, d18, d19
6623 .long 0xeddf3b07 // vldr d19, [pc, #28]
6624 .long 0xf3fb06a0 // vcvt.f32.u32 d16, d16
6625 .long 0xf3fb16a1 // vcvt.f32.u32 d17, d17
6626 .long 0xf3fb26a2 // vcvt.f32.u32 d18, d18
6627 .long 0xf3000db3 // vmul.f32 d0, d16, d19
6628 .long 0xf3011db3 // vmul.f32 d1, d17, d19
6629 .long 0xf3022db3 // vmul.f32 d2, d18, d19
6630 .long 0xe8bd48f0 // pop {r4, r5, r6, r7, fp, lr}
6631 .long 0xe12fff1c // bx ip
6632 .long 0x37800080 // .word 0x37800080
6633 .long 0x37800080 // .word 0x37800080
6634
Mike Klein3146bb92017-04-05 14:45:02 -04006635HIDDEN _sk_store_u16_be_vfp4
6636.globl _sk_store_u16_be_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006637FUNCTION(_sk_store_u16_be_vfp4)
Mike Klein3146bb92017-04-05 14:45:02 -04006638_sk_store_u16_be_vfp4:
6639 .long 0xeddf0b2a // vldr d16, [pc, #168]
6640 .long 0xf2c3261f // vmov.i32 d18, #1056964608
6641 .long 0xf2c3361f // vmov.i32 d19, #1056964608
6642 .long 0xe5913000 // ldr r3, [r1]
6643 .long 0xf2432c30 // vfma.f32 d18, d3, d16
6644 .long 0xf2c3461f // vmov.i32 d20, #1056964608
6645 .long 0xf2423c30 // vfma.f32 d19, d2, d16
6646 .long 0xf2c3161f // vmov.i32 d17, #1056964608
6647 .long 0xf2414c30 // vfma.f32 d20, d1, d16
6648 .long 0xf2401c30 // vfma.f32 d17, d0, d16
6649 .long 0xf3fb07a2 // vcvt.u32.f32 d16, d18
6650 .long 0xf3fb27a3 // vcvt.u32.f32 d18, d19
6651 .long 0xf3c73c1f // vmov.i32 d19, #65535
6652 .long 0xf3fb47a4 // vcvt.u32.f32 d20, d20
6653 .long 0xf3fb17a1 // vcvt.u32.f32 d17, d17
6654 .long 0xf24051b3 // vand d21, d16, d19
6655 .long 0xf24261b3 // vand d22, d18, d19
6656 .long 0xf24471b3 // vand d23, d20, d19
6657 .long 0xf24131b3 // vand d19, d17, d19
6658 .long 0xf2e80530 // vshl.s32 d16, d16, #8
6659 .long 0xf3f85035 // vshr.u32 d21, d21, #8
6660 .long 0xf2e82532 // vshl.s32 d18, d18, #8
6661 .long 0xf3f86036 // vshr.u32 d22, d22, #8
6662 .long 0xf260b1b5 // vorr d27, d16, d21
6663 .long 0xf2e84534 // vshl.s32 d20, d20, #8
6664 .long 0xf3f87037 // vshr.u32 d23, d23, #8
6665 .long 0xf262a1b6 // vorr d26, d18, d22
6666 .long 0xf2e81531 // vshl.s32 d17, d17, #8
6667 .long 0xf3f83033 // vshr.u32 d19, d19, #8
6668 .long 0xf26491b7 // vorr d25, d20, d23
6669 .long 0xf26181b3 // vorr d24, d17, d19
6670 .long 0xf3f6b120 // vuzp.16 d27, d16
6671 .long 0xe5933000 // ldr r3, [r3]
6672 .long 0xf3f6a120 // vuzp.16 d26, d16
6673 .long 0xe0833180 // add r3, r3, r0, lsl #3
6674 .long 0xf3f69120 // vuzp.16 d25, d16
6675 .long 0xf3f68120 // vuzp.16 d24, d16
6676 .long 0xf4c3870d // vst4.16 {d24[0],d25[0],d26[0],d27[0]}, [r3]!
6677 .long 0xf4c3874f // vst4.16 {d24[1],d25[1],d26[1],d27[1]}, [r3]
6678 .long 0xe2813008 // add r3, r1, #8
6679 .long 0xe591c004 // ldr ip, [r1, #4]
6680 .long 0xe1a01003 // mov r1, r3
6681 .long 0xe12fff1c // bx ip
6682 .long 0xe320f000 // nop {0}
6683 .long 0x477fff00 // .word 0x477fff00
6684 .long 0x477fff00 // .word 0x477fff00
6685
Mike Klein14987eb2017-04-06 10:22:26 -04006686HIDDEN _sk_load_f32_vfp4
6687.globl _sk_load_f32_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006688FUNCTION(_sk_load_f32_vfp4)
Mike Klein14987eb2017-04-06 10:22:26 -04006689_sk_load_f32_vfp4:
6690 .long 0xe8911008 // ldm r1, {r3, ip}
6691 .long 0xe2811008 // add r1, r1, #8
6692 .long 0xe5933000 // ldr r3, [r3]
6693 .long 0xe0833200 // add r3, r3, r0, lsl #4
6694 .long 0xf423008f // vld4.32 {d0-d3}, [r3]
6695 .long 0xe12fff1c // bx ip
6696
Mike Klein7c4af542017-03-29 18:21:14 -04006697HIDDEN _sk_store_f32_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006698.globl _sk_store_f32_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006699FUNCTION(_sk_store_f32_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006700_sk_store_f32_vfp4:
6701 .long 0xe5913000 // ldr r3, [r1]
6702 .long 0xe5933000 // ldr r3, [r3]
6703 .long 0xe0833200 // add r3, r3, r0, lsl #4
6704 .long 0xf403008f // vst4.32 {d0-d3}, [r3]
6705 .long 0xe2813008 // add r3, r1, #8
6706 .long 0xe591c004 // ldr ip, [r1, #4]
6707 .long 0xe1a01003 // mov r1, r3
6708 .long 0xe12fff1c // bx ip
6709
Mike Klein7c4af542017-03-29 18:21:14 -04006710HIDDEN _sk_clamp_x_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006711.globl _sk_clamp_x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006712FUNCTION(_sk_clamp_x_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006713_sk_clamp_x_vfp4:
6714 .long 0xe8911008 // ldm r1, {r3, ip}
6715 .long 0xf2c00010 // vmov.i32 d16, #0
6716 .long 0xf3c71e1f // vmov.i8 d17, #255
6717 .long 0xf2400f80 // vmax.f32 d16, d16, d0
6718 .long 0xe2811008 // add r1, r1, #8
6719 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6720 .long 0xf26218a1 // vadd.i32 d17, d18, d17
6721 .long 0xf2200fa1 // vmin.f32 d0, d16, d17
6722 .long 0xe12fff1c // bx ip
6723
Mike Klein7c4af542017-03-29 18:21:14 -04006724HIDDEN _sk_clamp_y_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006725.globl _sk_clamp_y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006726FUNCTION(_sk_clamp_y_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006727_sk_clamp_y_vfp4:
6728 .long 0xe8911008 // ldm r1, {r3, ip}
6729 .long 0xf2c00010 // vmov.i32 d16, #0
6730 .long 0xf3c71e1f // vmov.i8 d17, #255
6731 .long 0xf2400f81 // vmax.f32 d16, d16, d1
6732 .long 0xe2811008 // add r1, r1, #8
6733 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6734 .long 0xf26218a1 // vadd.i32 d17, d18, d17
6735 .long 0xf2201fa1 // vmin.f32 d1, d16, d17
6736 .long 0xe12fff1c // bx ip
6737
Mike Klein7c4af542017-03-29 18:21:14 -04006738HIDDEN _sk_repeat_x_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006739.globl _sk_repeat_x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006740FUNCTION(_sk_repeat_x_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006741_sk_repeat_x_vfp4:
6742 .long 0xed2d8b04 // vpush {d8-d9}
6743 .long 0xe8911008 // ldm r1, {r3, ip}
6744 .long 0xf2c02010 // vmov.i32 d18, #0
6745 .long 0xe2811008 // add r1, r1, #8
6746 .long 0xeddf3b10 // vldr d19, [pc, #64]
6747 .long 0xed938a00 // vldr s16, [r3]
6748 .long 0xeec09a88 // vdiv.f32 s19, s1, s16
6749 .long 0xee809a08 // vdiv.f32 s18, s0, s16
6750 .long 0xf3fb0709 // vcvt.s32.f32 d16, d9
6751 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6752 .long 0xf3601e89 // vcgt.f32 d17, d16, d9
6753 .long 0xf35311b2 // vbsl d17, d19, d18
6754 .long 0xf3f42c08 // vdup.32 d18, d8[0]
6755 .long 0xf2600da1 // vsub.f32 d16, d16, d17
6756 .long 0xf3c71e1f // vmov.i8 d17, #255
6757 .long 0xf26218a1 // vadd.i32 d17, d18, d17
6758 .long 0xf2e009c8 // vmul.f32 d16, d16, d8[0]
6759 .long 0xf2600d20 // vsub.f32 d16, d0, d16
6760 .long 0xf2200fa1 // vmin.f32 d0, d16, d17
6761 .long 0xecbd8b04 // vpop {d8-d9}
6762 .long 0xe12fff1c // bx ip
6763 .long 0xe320f000 // nop {0}
6764 .long 0x3f800000 // .word 0x3f800000
6765 .long 0x3f800000 // .word 0x3f800000
6766
Mike Klein7c4af542017-03-29 18:21:14 -04006767HIDDEN _sk_repeat_y_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006768.globl _sk_repeat_y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006769FUNCTION(_sk_repeat_y_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006770_sk_repeat_y_vfp4:
6771 .long 0xed2d8b04 // vpush {d8-d9}
6772 .long 0xe8911008 // ldm r1, {r3, ip}
6773 .long 0xf2c02010 // vmov.i32 d18, #0
6774 .long 0xe2811008 // add r1, r1, #8
6775 .long 0xeddf3b10 // vldr d19, [pc, #64]
6776 .long 0xed938a00 // vldr s16, [r3]
6777 .long 0xeec19a88 // vdiv.f32 s19, s3, s16
6778 .long 0xee819a08 // vdiv.f32 s18, s2, s16
6779 .long 0xf3fb0709 // vcvt.s32.f32 d16, d9
6780 .long 0xf3fb0620 // vcvt.f32.s32 d16, d16
6781 .long 0xf3601e89 // vcgt.f32 d17, d16, d9
6782 .long 0xf35311b2 // vbsl d17, d19, d18
6783 .long 0xf3f42c08 // vdup.32 d18, d8[0]
6784 .long 0xf2600da1 // vsub.f32 d16, d16, d17
6785 .long 0xf3c71e1f // vmov.i8 d17, #255
6786 .long 0xf26218a1 // vadd.i32 d17, d18, d17
6787 .long 0xf2e009c8 // vmul.f32 d16, d16, d8[0]
6788 .long 0xf2610d20 // vsub.f32 d16, d1, d16
6789 .long 0xf2201fa1 // vmin.f32 d1, d16, d17
6790 .long 0xecbd8b04 // vpop {d8-d9}
6791 .long 0xe12fff1c // bx ip
6792 .long 0xe320f000 // nop {0}
6793 .long 0x3f800000 // .word 0x3f800000
6794 .long 0x3f800000 // .word 0x3f800000
6795
Mike Klein7c4af542017-03-29 18:21:14 -04006796HIDDEN _sk_mirror_x_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006797.globl _sk_mirror_x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006798FUNCTION(_sk_mirror_x_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006799_sk_mirror_x_vfp4:
6800 .long 0xed2d8b04 // vpush {d8-d9}
6801 .long 0xe8911008 // ldm r1, {r3, ip}
6802 .long 0xf2c03010 // vmov.i32 d19, #0
6803 .long 0xe2811008 // add r1, r1, #8
6804 .long 0xeddf4b14 // vldr d20, [pc, #80]
6805 .long 0xed938a00 // vldr s16, [r3]
6806 .long 0xee389a08 // vadd.f32 s18, s16, s16
6807 .long 0xf3f40c08 // vdup.32 d16, d8[0]
6808 .long 0xf2200d20 // vsub.f32 d0, d0, d16
6809 .long 0xeec08a89 // vdiv.f32 s17, s1, s18
6810 .long 0xee808a09 // vdiv.f32 s16, s0, s18
6811 .long 0xf3fb1708 // vcvt.s32.f32 d17, d8
6812 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6813 .long 0xf3612e88 // vcgt.f32 d18, d17, d8
6814 .long 0xf35421b3 // vbsl d18, d20, d19
6815 .long 0xf2611da2 // vsub.f32 d17, d17, d18
6816 .long 0xf3c72e1f // vmov.i8 d18, #255
6817 .long 0xf2e119c9 // vmul.f32 d17, d17, d9[0]
6818 .long 0xf2601d21 // vsub.f32 d17, d0, d17
6819 .long 0xf2611da0 // vsub.f32 d17, d17, d16
6820 .long 0xf26008a2 // vadd.i32 d16, d16, d18
6821 .long 0xf3f91721 // vabs.f32 d17, d17
6822 .long 0xf2210fa0 // vmin.f32 d0, d17, d16
6823 .long 0xecbd8b04 // vpop {d8-d9}
6824 .long 0xe12fff1c // bx ip
6825 .long 0xe320f000 // nop {0}
6826 .long 0x3f800000 // .word 0x3f800000
6827 .long 0x3f800000 // .word 0x3f800000
6828
Mike Klein7c4af542017-03-29 18:21:14 -04006829HIDDEN _sk_mirror_y_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006830.globl _sk_mirror_y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006831FUNCTION(_sk_mirror_y_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006832_sk_mirror_y_vfp4:
6833 .long 0xed2d8b04 // vpush {d8-d9}
6834 .long 0xe8911008 // ldm r1, {r3, ip}
6835 .long 0xf2c03010 // vmov.i32 d19, #0
6836 .long 0xe2811008 // add r1, r1, #8
6837 .long 0xeddf4b14 // vldr d20, [pc, #80]
6838 .long 0xed938a00 // vldr s16, [r3]
6839 .long 0xee389a08 // vadd.f32 s18, s16, s16
6840 .long 0xf3f40c08 // vdup.32 d16, d8[0]
6841 .long 0xf2211d20 // vsub.f32 d1, d1, d16
6842 .long 0xeec18a89 // vdiv.f32 s17, s3, s18
6843 .long 0xee818a09 // vdiv.f32 s16, s2, s18
6844 .long 0xf3fb1708 // vcvt.s32.f32 d17, d8
6845 .long 0xf3fb1621 // vcvt.f32.s32 d17, d17
6846 .long 0xf3612e88 // vcgt.f32 d18, d17, d8
6847 .long 0xf35421b3 // vbsl d18, d20, d19
6848 .long 0xf2611da2 // vsub.f32 d17, d17, d18
6849 .long 0xf3c72e1f // vmov.i8 d18, #255
6850 .long 0xf2e119c9 // vmul.f32 d17, d17, d9[0]
6851 .long 0xf2611d21 // vsub.f32 d17, d1, d17
6852 .long 0xf2611da0 // vsub.f32 d17, d17, d16
6853 .long 0xf26008a2 // vadd.i32 d16, d16, d18
6854 .long 0xf3f91721 // vabs.f32 d17, d17
6855 .long 0xf2211fa0 // vmin.f32 d1, d17, d16
6856 .long 0xecbd8b04 // vpop {d8-d9}
6857 .long 0xe12fff1c // bx ip
6858 .long 0xe320f000 // nop {0}
6859 .long 0x3f800000 // .word 0x3f800000
6860 .long 0x3f800000 // .word 0x3f800000
6861
Mike Klein7c4af542017-03-29 18:21:14 -04006862HIDDEN _sk_luminance_to_alpha_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006863.globl _sk_luminance_to_alpha_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006864FUNCTION(_sk_luminance_to_alpha_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006865_sk_luminance_to_alpha_vfp4:
6866 .long 0xeddf0b0a // vldr d16, [pc, #40]
6867 .long 0xeddf1b0b // vldr d17, [pc, #44]
6868 .long 0xf3410d30 // vmul.f32 d16, d1, d16
6869 .long 0xe4913004 // ldr r3, [r1], #4
6870 .long 0xf3401d31 // vmul.f32 d17, d0, d17
6871 .long 0xf2800010 // vmov.i32 d0, #0
6872 .long 0xf2801010 // vmov.i32 d1, #0
6873 .long 0xf2013da0 // vadd.f32 d3, d17, d16
6874 .long 0xeddf0b06 // vldr d16, [pc, #24]
6875 .long 0xf2023c30 // vfma.f32 d3, d2, d16
6876 .long 0xf2802010 // vmov.i32 d2, #0
6877 .long 0xe12fff13 // bx r3
6878 .long 0x3f371759 // .word 0x3f371759
6879 .long 0x3f371759 // .word 0x3f371759
6880 .long 0x3e59b3d0 // .word 0x3e59b3d0
6881 .long 0x3e59b3d0 // .word 0x3e59b3d0
6882 .long 0x3d93dd98 // .word 0x3d93dd98
6883 .long 0x3d93dd98 // .word 0x3d93dd98
6884
Mike Klein7c4af542017-03-29 18:21:14 -04006885HIDDEN _sk_matrix_2x3_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006886.globl _sk_matrix_2x3_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006887FUNCTION(_sk_matrix_2x3_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006888_sk_matrix_2x3_vfp4:
6889 .long 0xe92d4800 // push {fp, lr}
6890 .long 0xe591e000 // ldr lr, [r1]
6891 .long 0xe591c004 // ldr ip, [r1, #4]
6892 .long 0xe2811008 // add r1, r1, #8
6893 .long 0xe28e300c // add r3, lr, #12
6894 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6895 .long 0xe28e3008 // add r3, lr, #8
6896 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6897 .long 0xe28e3010 // add r3, lr, #16
6898 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6899 .long 0xe28e3014 // add r3, lr, #20
6900 .long 0xf2410c31 // vfma.f32 d16, d1, d17
6901 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6902 .long 0xf2411c32 // vfma.f32 d17, d1, d18
6903 .long 0xf4ee2c9d // vld1.32 {d18[]}, [lr :32]!
6904 .long 0xf4ee3c9f // vld1.32 {d19[]}, [lr :32]
6905 .long 0xf2400c32 // vfma.f32 d16, d0, d18
6906 .long 0xf2401c33 // vfma.f32 d17, d0, d19
6907 .long 0xf22001b0 // vorr d0, d16, d16
6908 .long 0xf22111b1 // vorr d1, d17, d17
6909 .long 0xe8bd4800 // pop {fp, lr}
6910 .long 0xe12fff1c // bx ip
6911
Mike Klein7c4af542017-03-29 18:21:14 -04006912HIDDEN _sk_matrix_3x4_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006913.globl _sk_matrix_3x4_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006914FUNCTION(_sk_matrix_3x4_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006915_sk_matrix_3x4_vfp4:
6916 .long 0xe92d4800 // push {fp, lr}
6917 .long 0xe591e000 // ldr lr, [r1]
6918 .long 0xe591c004 // ldr ip, [r1, #4]
6919 .long 0xe2811008 // add r1, r1, #8
6920 .long 0xe28e3020 // add r3, lr, #32
6921 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
6922 .long 0xe28e302c // add r3, lr, #44
6923 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
6924 .long 0xe28e301c // add r3, lr, #28
6925 .long 0xf2420c33 // vfma.f32 d16, d2, d19
6926 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6927 .long 0xe28e3018 // add r3, lr, #24
6928 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6929 .long 0xe28e3024 // add r3, lr, #36
6930 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
6931 .long 0xe28e3028 // add r3, lr, #40
6932 .long 0xf2421c32 // vfma.f32 d17, d2, d18
6933 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
6934 .long 0xe28e3010 // add r3, lr, #16
6935 .long 0xf2422c34 // vfma.f32 d18, d2, d20
6936 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
6937 .long 0xe28e300c // add r3, lr, #12
6938 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6939 .long 0xe28e3014 // add r3, lr, #20
6940 .long 0xf2411c34 // vfma.f32 d17, d1, d20
6941 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
6942 .long 0xf2410c34 // vfma.f32 d16, d1, d20
6943 .long 0xe28e3008 // add r3, lr, #8
6944 .long 0xf2412c33 // vfma.f32 d18, d1, d19
6945 .long 0xf4ee3c9d // vld1.32 {d19[]}, [lr :32]!
6946 .long 0xf4ee4c9f // vld1.32 {d20[]}, [lr :32]
6947 .long 0xf2401c33 // vfma.f32 d17, d0, d19
6948 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
6949 .long 0xf2400c33 // vfma.f32 d16, d0, d19
6950 .long 0xf2402c34 // vfma.f32 d18, d0, d20
6951 .long 0xf22101b1 // vorr d0, d17, d17
6952 .long 0xf22021b0 // vorr d2, d16, d16
6953 .long 0xf22211b2 // vorr d1, d18, d18
6954 .long 0xe8bd4800 // pop {fp, lr}
6955 .long 0xe12fff1c // bx ip
6956
Mike Klein7c4af542017-03-29 18:21:14 -04006957HIDDEN _sk_matrix_4x5_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04006958.globl _sk_matrix_4x5_vfp4
Mike Klein86714282017-04-13 17:37:38 -04006959FUNCTION(_sk_matrix_4x5_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04006960_sk_matrix_4x5_vfp4:
6961 .long 0xe92d4010 // push {r4, lr}
6962 .long 0xe8911008 // ldm r1, {r3, ip}
6963 .long 0xf2620112 // vorr d16, d2, d2
6964 .long 0xe2811008 // add r1, r1, #8
6965 .long 0xe2834014 // add r4, r3, #20
6966 .long 0xe1a0e003 // mov lr, r3
6967 .long 0xf4e45c9f // vld1.32 {d21[]}, [r4 :32]
6968 .long 0xe2834028 // add r4, r3, #40
6969 .long 0xf4e46c9f // vld1.32 {d22[]}, [r4 :32]
6970 .long 0xe2834038 // add r4, r3, #56
6971 .long 0xf4e47c9f // vld1.32 {d23[]}, [r4 :32]
6972 .long 0xe2834048 // add r4, r3, #72
6973 .long 0xf4a42c9f // vld1.32 {d2[]}, [r4 :32]
6974 .long 0xe2834034 // add r4, r3, #52
6975 .long 0xf2032c37 // vfma.f32 d2, d3, d23
6976 .long 0xf4e48c9f // vld1.32 {d24[]}, [r4 :32]
6977 .long 0xe2834044 // add r4, r3, #68
6978 .long 0xf4e41c9f // vld1.32 {d17[]}, [r4 :32]
6979 .long 0xe2834030 // add r4, r3, #48
6980 .long 0xf2431c38 // vfma.f32 d17, d3, d24
6981 .long 0xf4e49c9f // vld1.32 {d25[]}, [r4 :32]
6982 .long 0xe283403c // add r4, r3, #60
6983 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
6984 .long 0xe283404c // add r4, r3, #76
6985 .long 0xf2002cb6 // vfma.f32 d2, d16, d22
6986 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
6987 .long 0xe2834040 // add r4, r3, #64
6988 .long 0xf2432c33 // vfma.f32 d18, d3, d19
6989 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
6990 .long 0xe2834020 // add r4, r3, #32
6991 .long 0xf2433c39 // vfma.f32 d19, d3, d25
6992 .long 0xf4e47c9f // vld1.32 {d23[]}, [r4 :32]
6993 .long 0xe283402c // add r4, r3, #44
6994 .long 0xf4e48c9f // vld1.32 {d24[]}, [r4 :32]
6995 .long 0xe2834024 // add r4, r3, #36
6996 .long 0xf2402cb8 // vfma.f32 d18, d16, d24
6997 .long 0xf4e48c9f // vld1.32 {d24[]}, [r4 :32]
6998 .long 0xf2401cb8 // vfma.f32 d17, d16, d24
6999 .long 0xe2834010 // add r4, r3, #16
7000 .long 0xf2403cb7 // vfma.f32 d19, d16, d23
7001 .long 0xf4ee4c9d // vld1.32 {d20[]}, [lr :32]!
7002 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
7003 .long 0xe283401c // add r4, r3, #28
7004 .long 0xf4e46c9f // vld1.32 {d22[]}, [r4 :32]
7005 .long 0xe2834018 // add r4, r3, #24
7006 .long 0xf2412c36 // vfma.f32 d18, d1, d22
7007 .long 0xf2411c35 // vfma.f32 d17, d1, d21
7008 .long 0xf4ee5c9f // vld1.32 {d21[]}, [lr :32]
7009 .long 0xf2413c30 // vfma.f32 d19, d1, d16
7010 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
7011 .long 0xe2834008 // add r4, r3, #8
7012 .long 0xe283300c // add r3, r3, #12
7013 .long 0xf2012c30 // vfma.f32 d2, d1, d16
7014 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
7015 .long 0xf2401c35 // vfma.f32 d17, d0, d21
7016 .long 0xf2403c34 // vfma.f32 d19, d0, d20
7017 .long 0xf4e34c9f // vld1.32 {d20[]}, [r3 :32]
7018 .long 0xf2402c34 // vfma.f32 d18, d0, d20
7019 .long 0xf2002c30 // vfma.f32 d2, d0, d16
7020 .long 0xf22111b1 // vorr d1, d17, d17
7021 .long 0xf22301b3 // vorr d0, d19, d19
7022 .long 0xf22231b2 // vorr d3, d18, d18
7023 .long 0xe8bd4010 // pop {r4, lr}
7024 .long 0xe12fff1c // bx ip
7025
Mike Klein7c4af542017-03-29 18:21:14 -04007026HIDDEN _sk_matrix_perspective_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007027.globl _sk_matrix_perspective_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007028FUNCTION(_sk_matrix_perspective_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007029_sk_matrix_perspective_vfp4:
7030 .long 0xe92d4010 // push {r4, lr}
7031 .long 0xe591e000 // ldr lr, [r1]
7032 .long 0xe591c004 // ldr ip, [r1, #4]
7033 .long 0xe2811008 // add r1, r1, #8
7034 .long 0xe28e301c // add r3, lr, #28
7035 .long 0xe28e4010 // add r4, lr, #16
7036 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
7037 .long 0xe28e3020 // add r3, lr, #32
7038 .long 0xf4e31c9f // vld1.32 {d17[]}, [r3 :32]
7039 .long 0xe28e3018 // add r3, lr, #24
7040 .long 0xf2411c30 // vfma.f32 d17, d1, d16
7041 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
7042 .long 0xe1a0300e // mov r3, lr
7043 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
7044 .long 0xe28e4008 // add r4, lr, #8
7045 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
7046 .long 0xf2401c30 // vfma.f32 d17, d0, d16
7047 .long 0xf4e30c9d // vld1.32 {d16[]}, [r3 :32]!
7048 .long 0xf4e35c9f // vld1.32 {d21[]}, [r3 :32]
7049 .long 0xe28e3014 // add r3, lr, #20
7050 .long 0xf2413c35 // vfma.f32 d19, d1, d21
7051 .long 0xf4e35c9f // vld1.32 {d21[]}, [r3 :32]
7052 .long 0xe28e300c // add r3, lr, #12
7053 .long 0xf2415c32 // vfma.f32 d21, d1, d18
7054 .long 0xf4e32c9f // vld1.32 {d18[]}, [r3 :32]
7055 .long 0xf3fb4521 // vrecpe.f32 d20, d17
7056 .long 0xf2403c30 // vfma.f32 d19, d0, d16
7057 .long 0xf2411fb4 // vrecps.f32 d17, d17, d20
7058 .long 0xf2405c32 // vfma.f32 d21, d0, d18
7059 .long 0xf3440db1 // vmul.f32 d16, d20, d17
7060 .long 0xf3030db0 // vmul.f32 d0, d19, d16
7061 .long 0xf3051db0 // vmul.f32 d1, d21, d16
7062 .long 0xe8bd4010 // pop {r4, lr}
7063 .long 0xe12fff1c // bx ip
7064
Herb Derby7b4202d2017-04-10 10:52:34 -04007065HIDDEN _sk_linear_gradient_vfp4
7066.globl _sk_linear_gradient_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007067FUNCTION(_sk_linear_gradient_vfp4)
Herb Derby7b4202d2017-04-10 10:52:34 -04007068_sk_linear_gradient_vfp4:
7069 .long 0xe92d4010 // push {r4, lr}
7070 .long 0xe591e000 // ldr lr, [r1]
7071 .long 0xe28e3014 // add r3, lr, #20
7072 .long 0xe1a0400e // mov r4, lr
7073 .long 0xf4a33c9f // vld1.32 {d3[]}, [r3 :32]
7074 .long 0xe28e3010 // add r3, lr, #16
7075 .long 0xf4a32c9f // vld1.32 {d2[]}, [r3 :32]
7076 .long 0xe28e3008 // add r3, lr, #8
7077 .long 0xf4e30c9f // vld1.32 {d16[]}, [r3 :32]
7078 .long 0xe494c00c // ldr ip, [r4], #12
7079 .long 0xf4a41c9f // vld1.32 {d1[]}, [r4 :32]
7080 .long 0xe35c0000 // cmp ip, #0
Mike Kleinda164342017-04-19 14:33:58 -04007081 .long 0x0a000036 // beq 2f78 <sk_linear_gradient_vfp4+0x110>
Herb Derby7b4202d2017-04-10 10:52:34 -04007082 .long 0xe59e3004 // ldr r3, [lr, #4]
7083 .long 0xf2c01010 // vmov.i32 d17, #0
7084 .long 0xf2c07010 // vmov.i32 d23, #0
7085 .long 0xf2c08010 // vmov.i32 d24, #0
7086 .long 0xe2833020 // add r3, r3, #32
7087 .long 0xf2c06010 // vmov.i32 d22, #0
7088 .long 0xe2434018 // sub r4, r3, #24
7089 .long 0xf4e33c9f // vld1.32 {d19[]}, [r3 :32]
7090 .long 0xe25cc001 // subs ip, ip, #1
7091 .long 0xf4e4dc9f // vld1.32 {d29[]}, [r4 :32]
7092 .long 0xe2434014 // sub r4, r3, #20
7093 .long 0xf4e45c9f // vld1.32 {d21[]}, [r4 :32]
7094 .long 0xe243400c // sub r4, r3, #12
7095 .long 0xf4e44c9f // vld1.32 {d20[]}, [r4 :32]
7096 .long 0xe2434020 // sub r4, r3, #32
7097 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
7098 .long 0xe2434004 // sub r4, r3, #4
7099 .long 0xf3622e80 // vcgt.f32 d18, d18, d0
7100 .long 0xf4e4bc9f // vld1.32 {d27[]}, [r4 :32]
7101 .long 0xe2434008 // sub r4, r3, #8
7102 .long 0xf4e4cc9f // vld1.32 {d28[]}, [r4 :32]
7103 .long 0xe2434010 // sub r4, r3, #16
7104 .long 0xf262a1b2 // vorr d26, d18, d18
7105 .long 0xf4e4ec9f // vld1.32 {d30[]}, [r4 :32]
7106 .long 0xe243401c // sub r4, r3, #28
7107 .long 0xf352a13b // vbsl d26, d2, d27
7108 .long 0xe2833024 // add r3, r3, #36
7109 .long 0xf262b1b2 // vorr d27, d18, d18
7110 .long 0xf26291b2 // vorr d25, d18, d18
7111 .long 0xf351b13c // vbsl d27, d1, d28
7112 .long 0xf262c1b2 // vorr d28, d18, d18
7113 .long 0xf3539133 // vbsl d25, d3, d19
7114 .long 0xf350c1b4 // vbsl d28, d16, d20
7115 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
7116 .long 0xf26241b2 // vorr d20, d18, d18
7117 .long 0xf26231b2 // vorr d19, d18, d18
7118 .long 0xf35841b5 // vbsl d20, d24, d21
7119 .long 0xf26251b2 // vorr d21, d18, d18
7120 .long 0xf35121b0 // vbsl d18, d17, d16
7121 .long 0xf35731be // vbsl d19, d23, d30
7122 .long 0xf35651bd // vbsl d21, d22, d29
7123 .long 0xf26211b2 // vorr d17, d18, d18
7124 .long 0xf22931b9 // vorr d3, d25, d25
7125 .long 0xf22a21ba // vorr d2, d26, d26
7126 .long 0xf22b11bb // vorr d1, d27, d27
7127 .long 0xf26c01bc // vorr d16, d28, d28
7128 .long 0xf26371b3 // vorr d23, d19, d19
7129 .long 0xf26481b4 // vorr d24, d20, d20
7130 .long 0xf26561b5 // vorr d22, d21, d21
Mike Kleinda164342017-04-19 14:33:58 -04007131 .long 0x1affffd3 // bne 2eb4 <sk_linear_gradient_vfp4+0x4c>
Herb Derby7b4202d2017-04-10 10:52:34 -04007132 .long 0xf26c01bc // vorr d16, d28, d28
7133 .long 0xf22b11bb // vorr d1, d27, d27
7134 .long 0xf22a21ba // vorr d2, d26, d26
7135 .long 0xf22931b9 // vorr d3, d25, d25
Mike Kleinda164342017-04-19 14:33:58 -04007136 .long 0xea000003 // b 2f88 <sk_linear_gradient_vfp4+0x120>
Herb Derby7b4202d2017-04-10 10:52:34 -04007137 .long 0xf2c05010 // vmov.i32 d21, #0
7138 .long 0xf2c04010 // vmov.i32 d20, #0
7139 .long 0xf2c03010 // vmov.i32 d19, #0
7140 .long 0xf2c02010 // vmov.i32 d18, #0
7141 .long 0xf2400c32 // vfma.f32 d16, d0, d18
7142 .long 0xe5913004 // ldr r3, [r1, #4]
7143 .long 0xf2001c35 // vfma.f32 d1, d0, d21
7144 .long 0xe2811008 // add r1, r1, #8
7145 .long 0xf2002c34 // vfma.f32 d2, d0, d20
7146 .long 0xf2003c33 // vfma.f32 d3, d0, d19
7147 .long 0xf22001b0 // vorr d0, d16, d16
7148 .long 0xe8bd4010 // pop {r4, lr}
7149 .long 0xe12fff13 // bx r3
7150
Mike Klein7c4af542017-03-29 18:21:14 -04007151HIDDEN _sk_linear_gradient_2stops_vfp4
Mike Kleind7e06ae2017-03-29 16:33:06 -04007152.globl _sk_linear_gradient_2stops_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007153FUNCTION(_sk_linear_gradient_2stops_vfp4)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007154_sk_linear_gradient_2stops_vfp4:
Mike Klein8a823fa2017-04-05 17:29:26 -04007155 .long 0xe92d4010 // push {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04007156 .long 0xe8911008 // ldm r1, {r3, ip}
7157 .long 0xe2811008 // add r1, r1, #8
Herb Derby7b4202d2017-04-10 10:52:34 -04007158 .long 0xe283400c // add r4, r3, #12
Mike Klein8a823fa2017-04-05 17:29:26 -04007159 .long 0xe1a0e003 // mov lr, r3
Mike Klein8a823fa2017-04-05 17:29:26 -04007160 .long 0xf4e42c9f // vld1.32 {d18[]}, [r4 :32]
Mike Klein8a823fa2017-04-05 17:29:26 -04007161 .long 0xe2834008 // add r4, r3, #8
Herb Derby7b4202d2017-04-10 10:52:34 -04007162 .long 0xf4e43c9f // vld1.32 {d19[]}, [r4 :32]
7163 .long 0xe2834018 // add r4, r3, #24
Mike Klein8a823fa2017-04-05 17:29:26 -04007164 .long 0xf4a42c9f // vld1.32 {d2[]}, [r4 :32]
Herb Derby7b4202d2017-04-10 10:52:34 -04007165 .long 0xe2834010 // add r4, r3, #16
7166 .long 0xf2002c33 // vfma.f32 d2, d0, d19
7167 .long 0xf4e40c9f // vld1.32 {d16[]}, [r4 :32]
7168 .long 0xe283401c // add r4, r3, #28
7169 .long 0xe2833014 // add r3, r3, #20
7170 .long 0xf4ee1c9d // vld1.32 {d17[]}, [lr :32]!
7171 .long 0xf2400c31 // vfma.f32 d16, d0, d17
7172 .long 0xf4a43c9f // vld1.32 {d3[]}, [r4 :32]
7173 .long 0xf2003c32 // vfma.f32 d3, d0, d18
7174 .long 0xf4ee1c9f // vld1.32 {d17[]}, [lr :32]
7175 .long 0xf4a31c9f // vld1.32 {d1[]}, [r3 :32]
7176 .long 0xf2001c31 // vfma.f32 d1, d0, d17
Mike Kleind7e06ae2017-03-29 16:33:06 -04007177 .long 0xf22001b0 // vorr d0, d16, d16
Mike Klein8a823fa2017-04-05 17:29:26 -04007178 .long 0xe8bd4010 // pop {r4, lr}
Mike Kleind7e06ae2017-03-29 16:33:06 -04007179 .long 0xe12fff1c // bx ip
Mike Klein0a904492017-04-12 12:52:48 -04007180
7181HIDDEN _sk_save_xy_vfp4
7182.globl _sk_save_xy_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007183FUNCTION(_sk_save_xy_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007184_sk_save_xy_vfp4:
7185 .long 0xf2c3061f // vmov.i32 d16, #1056964608
7186 .long 0xeddf7b17 // vldr d23, [pc, #92]
7187 .long 0xf2c06010 // vmov.i32 d22, #0
7188 .long 0xe5913000 // ldr r3, [r1]
7189 .long 0xf2401d20 // vadd.f32 d17, d0, d16
7190 .long 0xf2410d20 // vadd.f32 d16, d1, d16
7191 .long 0xed830b00 // vstr d0, [r3]
7192 .long 0xed831b08 // vstr d1, [r3, #32]
7193 .long 0xf3fb2721 // vcvt.s32.f32 d18, d17
7194 .long 0xf3fb3720 // vcvt.s32.f32 d19, d16
7195 .long 0xf3fb2622 // vcvt.f32.s32 d18, d18
7196 .long 0xf3fb3623 // vcvt.f32.s32 d19, d19
7197 .long 0xf3624ea1 // vcgt.f32 d20, d18, d17
7198 .long 0xf3635ea0 // vcgt.f32 d21, d19, d16
7199 .long 0xf35741b6 // vbsl d20, d23, d22
7200 .long 0xf35751b6 // vbsl d21, d23, d22
7201 .long 0xf2622da4 // vsub.f32 d18, d18, d20
7202 .long 0xf2633da5 // vsub.f32 d19, d19, d21
7203 .long 0xf2611da2 // vsub.f32 d17, d17, d18
7204 .long 0xf2600da3 // vsub.f32 d16, d16, d19
7205 .long 0xedc31b10 // vstr d17, [r3, #64]
7206 .long 0xedc30b18 // vstr d16, [r3, #96]
7207 .long 0xe2813008 // add r3, r1, #8
7208 .long 0xe591c004 // ldr ip, [r1, #4]
7209 .long 0xe1a01003 // mov r1, r3
7210 .long 0xe12fff1c // bx ip
7211 .long 0x3f800000 // .word 0x3f800000
7212 .long 0x3f800000 // .word 0x3f800000
7213
7214HIDDEN _sk_accumulate_vfp4
7215.globl _sk_accumulate_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007216FUNCTION(_sk_accumulate_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007217_sk_accumulate_vfp4:
7218 .long 0xe8911008 // ldm r1, {r3, ip}
7219 .long 0xe2811008 // add r1, r1, #8
7220 .long 0xedd31b28 // vldr d17, [r3, #160]
7221 .long 0xedd30b20 // vldr d16, [r3, #128]
7222 .long 0xf3400db1 // vmul.f32 d16, d16, d17
7223 .long 0xf2004c90 // vfma.f32 d4, d16, d0
7224 .long 0xf2005c91 // vfma.f32 d5, d16, d1
7225 .long 0xf2006c92 // vfma.f32 d6, d16, d2
7226 .long 0xf2007c93 // vfma.f32 d7, d16, d3
7227 .long 0xe12fff1c // bx ip
7228
7229HIDDEN _sk_bilinear_nx_vfp4
7230.globl _sk_bilinear_nx_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007231FUNCTION(_sk_bilinear_nx_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007232_sk_bilinear_nx_vfp4:
7233 .long 0xe5913000 // ldr r3, [r1]
7234 .long 0xf2c70f10 // vmov.f32 d16, #1
7235 .long 0xedd32b10 // vldr d18, [r3, #64]
7236 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7237 .long 0xedd31b00 // vldr d17, [r3]
7238 .long 0xf3c3261f // vmov.i32 d18, #-1090519040
7239 .long 0xf2010da2 // vadd.f32 d0, d17, d18
7240 .long 0xedc30b20 // vstr d16, [r3, #128]
7241 .long 0xe2813008 // add r3, r1, #8
7242 .long 0xe591c004 // ldr ip, [r1, #4]
7243 .long 0xe1a01003 // mov r1, r3
7244 .long 0xe12fff1c // bx ip
7245
7246HIDDEN _sk_bilinear_px_vfp4
7247.globl _sk_bilinear_px_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007248FUNCTION(_sk_bilinear_px_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007249_sk_bilinear_px_vfp4:
7250 .long 0xe5913000 // ldr r3, [r1]
7251 .long 0xf2c3061f // vmov.i32 d16, #1056964608
7252 .long 0xedd31b00 // vldr d17, [r3]
7253 .long 0xedd32b10 // vldr d18, [r3, #64]
7254 .long 0xf2010da0 // vadd.f32 d0, d17, d16
7255 .long 0xedc32b20 // vstr d18, [r3, #128]
7256 .long 0xe2813008 // add r3, r1, #8
7257 .long 0xe591c004 // ldr ip, [r1, #4]
7258 .long 0xe1a01003 // mov r1, r3
7259 .long 0xe12fff1c // bx ip
7260
7261HIDDEN _sk_bilinear_ny_vfp4
7262.globl _sk_bilinear_ny_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007263FUNCTION(_sk_bilinear_ny_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007264_sk_bilinear_ny_vfp4:
7265 .long 0xe5913000 // ldr r3, [r1]
7266 .long 0xf2c70f10 // vmov.f32 d16, #1
7267 .long 0xedd32b18 // vldr d18, [r3, #96]
7268 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7269 .long 0xedd31b08 // vldr d17, [r3, #32]
7270 .long 0xf3c3261f // vmov.i32 d18, #-1090519040
7271 .long 0xf2011da2 // vadd.f32 d1, d17, d18
7272 .long 0xedc30b28 // vstr d16, [r3, #160]
7273 .long 0xe2813008 // add r3, r1, #8
7274 .long 0xe591c004 // ldr ip, [r1, #4]
7275 .long 0xe1a01003 // mov r1, r3
7276 .long 0xe12fff1c // bx ip
7277
7278HIDDEN _sk_bilinear_py_vfp4
7279.globl _sk_bilinear_py_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007280FUNCTION(_sk_bilinear_py_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007281_sk_bilinear_py_vfp4:
7282 .long 0xe5913000 // ldr r3, [r1]
7283 .long 0xf2c3061f // vmov.i32 d16, #1056964608
7284 .long 0xedd31b08 // vldr d17, [r3, #32]
7285 .long 0xedd32b18 // vldr d18, [r3, #96]
7286 .long 0xf2011da0 // vadd.f32 d1, d17, d16
7287 .long 0xedc32b28 // vstr d18, [r3, #160]
7288 .long 0xe2813008 // add r3, r1, #8
7289 .long 0xe591c004 // ldr ip, [r1, #4]
7290 .long 0xe1a01003 // mov r1, r3
7291 .long 0xe12fff1c // bx ip
7292
7293HIDDEN _sk_bicubic_n3x_vfp4
7294.globl _sk_bicubic_n3x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007295FUNCTION(_sk_bicubic_n3x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007296_sk_bicubic_n3x_vfp4:
7297 .long 0xe5913000 // ldr r3, [r1]
7298 .long 0xf2c70f10 // vmov.f32 d16, #1
7299 .long 0xeddf3b10 // vldr d19, [pc, #64]
7300 .long 0xedd32b10 // vldr d18, [r3, #64]
7301 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7302 .long 0xeddf2b0b // vldr d18, [pc, #44]
7303 .long 0xedd31b00 // vldr d17, [r3]
7304 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7305 .long 0xf3400db0 // vmul.f32 d16, d16, d16
7306 .long 0xf3c72f18 // vmov.f32 d18, #-1.5
7307 .long 0xf2010da2 // vadd.f32 d0, d17, d18
7308 .long 0xf3400db3 // vmul.f32 d16, d16, d19
7309 .long 0xedc30b20 // vstr d16, [r3, #128]
7310 .long 0xe2813008 // add r3, r1, #8
7311 .long 0xe591c004 // ldr ip, [r1, #4]
7312 .long 0xe1a01003 // mov r1, r3
7313 .long 0xe12fff1c // bx ip
7314 .long 0xe320f000 // nop {0}
7315 .long 0x3ec71c72 // .word 0x3ec71c72
7316 .long 0x3ec71c72 // .word 0x3ec71c72
7317 .long 0xbeaaaaab // .word 0xbeaaaaab
7318 .long 0xbeaaaaab // .word 0xbeaaaaab
7319
7320HIDDEN _sk_bicubic_n1x_vfp4
7321.globl _sk_bicubic_n1x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007322FUNCTION(_sk_bicubic_n1x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007323_sk_bicubic_n1x_vfp4:
7324 .long 0xe5913000 // ldr r3, [r1]
7325 .long 0xf2c70f10 // vmov.f32 d16, #1
7326 .long 0xf2c73f18 // vmov.f32 d19, #1.5
7327 .long 0xedd32b10 // vldr d18, [r3, #64]
7328 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7329 .long 0xeddf2b0d // vldr d18, [pc, #52]
7330 .long 0xedd31b00 // vldr d17, [r3]
7331 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7332 .long 0xf2c3261f // vmov.i32 d18, #1056964608
7333 .long 0xf2402cb3 // vfma.f32 d18, d16, d19
7334 .long 0xeddf3b0a // vldr d19, [pc, #40]
7335 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7336 .long 0xf3c3061f // vmov.i32 d16, #-1090519040
7337 .long 0xf2010da0 // vadd.f32 d0, d17, d16
7338 .long 0xedc33b20 // vstr d19, [r3, #128]
7339 .long 0xe2813008 // add r3, r1, #8
7340 .long 0xe591c004 // ldr ip, [r1, #4]
7341 .long 0xe1a01003 // mov r1, r3
7342 .long 0xe12fff1c // bx ip
7343 .long 0xe320f000 // nop {0}
7344 .long 0xbf955555 // .word 0xbf955555
7345 .long 0xbf955555 // .word 0xbf955555
7346 .long 0x3d638e39 // .word 0x3d638e39
7347 .long 0x3d638e39 // .word 0x3d638e39
7348
7349HIDDEN _sk_bicubic_p1x_vfp4
7350.globl _sk_bicubic_p1x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007351FUNCTION(_sk_bicubic_p1x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007352_sk_bicubic_p1x_vfp4:
7353 .long 0xe5913000 // ldr r3, [r1]
7354 .long 0xf2c71f18 // vmov.f32 d17, #1.5
7355 .long 0xeddf0b0c // vldr d16, [pc, #48]
7356 .long 0xedd33b10 // vldr d19, [r3, #64]
7357 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
7358 .long 0xedd32b00 // vldr d18, [r3]
7359 .long 0xf2c3061f // vmov.i32 d16, #1056964608
7360 .long 0xf2020da0 // vadd.f32 d0, d18, d16
7361 .long 0xf2430cb1 // vfma.f32 d16, d19, d17
7362 .long 0xeddf1b07 // vldr d17, [pc, #28]
7363 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
7364 .long 0xedc31b20 // vstr d17, [r3, #128]
7365 .long 0xe2813008 // add r3, r1, #8
7366 .long 0xe591c004 // ldr ip, [r1, #4]
7367 .long 0xe1a01003 // mov r1, r3
7368 .long 0xe12fff1c // bx ip
7369 .long 0xbf955555 // .word 0xbf955555
7370 .long 0xbf955555 // .word 0xbf955555
7371 .long 0x3d638e39 // .word 0x3d638e39
7372 .long 0x3d638e39 // .word 0x3d638e39
7373
7374HIDDEN _sk_bicubic_p3x_vfp4
7375.globl _sk_bicubic_p3x_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007376FUNCTION(_sk_bicubic_p3x_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007377_sk_bicubic_p3x_vfp4:
7378 .long 0xe5913000 // ldr r3, [r1]
7379 .long 0xeddf0b0d // vldr d16, [pc, #52]
7380 .long 0xeddf3b0e // vldr d19, [pc, #56]
7381 .long 0xedd32b10 // vldr d18, [r3, #64]
7382 .long 0xf2423cb0 // vfma.f32 d19, d18, d16
7383 .long 0xedd31b00 // vldr d17, [r3]
7384 .long 0xf3420db2 // vmul.f32 d16, d18, d18
7385 .long 0xf2c72f18 // vmov.f32 d18, #1.5
7386 .long 0xf2010da2 // vadd.f32 d0, d17, d18
7387 .long 0xf3400db3 // vmul.f32 d16, d16, d19
7388 .long 0xedc30b20 // vstr d16, [r3, #128]
7389 .long 0xe2813008 // add r3, r1, #8
7390 .long 0xe591c004 // ldr ip, [r1, #4]
7391 .long 0xe1a01003 // mov r1, r3
7392 .long 0xe12fff1c // bx ip
7393 .long 0xe320f000 // nop {0}
7394 .long 0x3ec71c72 // .word 0x3ec71c72
7395 .long 0x3ec71c72 // .word 0x3ec71c72
7396 .long 0xbeaaaaab // .word 0xbeaaaaab
7397 .long 0xbeaaaaab // .word 0xbeaaaaab
7398
7399HIDDEN _sk_bicubic_n3y_vfp4
7400.globl _sk_bicubic_n3y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007401FUNCTION(_sk_bicubic_n3y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007402_sk_bicubic_n3y_vfp4:
7403 .long 0xe5913000 // ldr r3, [r1]
7404 .long 0xf2c70f10 // vmov.f32 d16, #1
7405 .long 0xeddf3b10 // vldr d19, [pc, #64]
7406 .long 0xedd32b18 // vldr d18, [r3, #96]
7407 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7408 .long 0xeddf2b0b // vldr d18, [pc, #44]
7409 .long 0xedd31b08 // vldr d17, [r3, #32]
7410 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7411 .long 0xf3400db0 // vmul.f32 d16, d16, d16
7412 .long 0xf3c72f18 // vmov.f32 d18, #-1.5
7413 .long 0xf2011da2 // vadd.f32 d1, d17, d18
7414 .long 0xf3400db3 // vmul.f32 d16, d16, d19
7415 .long 0xedc30b28 // vstr d16, [r3, #160]
7416 .long 0xe2813008 // add r3, r1, #8
7417 .long 0xe591c004 // ldr ip, [r1, #4]
7418 .long 0xe1a01003 // mov r1, r3
7419 .long 0xe12fff1c // bx ip
7420 .long 0xe320f000 // nop {0}
7421 .long 0x3ec71c72 // .word 0x3ec71c72
7422 .long 0x3ec71c72 // .word 0x3ec71c72
7423 .long 0xbeaaaaab // .word 0xbeaaaaab
7424 .long 0xbeaaaaab // .word 0xbeaaaaab
7425
7426HIDDEN _sk_bicubic_n1y_vfp4
7427.globl _sk_bicubic_n1y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007428FUNCTION(_sk_bicubic_n1y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007429_sk_bicubic_n1y_vfp4:
7430 .long 0xe5913000 // ldr r3, [r1]
7431 .long 0xf2c70f10 // vmov.f32 d16, #1
7432 .long 0xf2c73f18 // vmov.f32 d19, #1.5
7433 .long 0xedd32b18 // vldr d18, [r3, #96]
7434 .long 0xf2600da2 // vsub.f32 d16, d16, d18
7435 .long 0xeddf2b0d // vldr d18, [pc, #52]
7436 .long 0xedd31b08 // vldr d17, [r3, #32]
7437 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7438 .long 0xf2c3261f // vmov.i32 d18, #1056964608
7439 .long 0xf2402cb3 // vfma.f32 d18, d16, d19
7440 .long 0xeddf3b0a // vldr d19, [pc, #40]
7441 .long 0xf2403cb2 // vfma.f32 d19, d16, d18
7442 .long 0xf3c3061f // vmov.i32 d16, #-1090519040
7443 .long 0xf2011da0 // vadd.f32 d1, d17, d16
7444 .long 0xedc33b28 // vstr d19, [r3, #160]
7445 .long 0xe2813008 // add r3, r1, #8
7446 .long 0xe591c004 // ldr ip, [r1, #4]
7447 .long 0xe1a01003 // mov r1, r3
7448 .long 0xe12fff1c // bx ip
7449 .long 0xe320f000 // nop {0}
7450 .long 0xbf955555 // .word 0xbf955555
7451 .long 0xbf955555 // .word 0xbf955555
7452 .long 0x3d638e39 // .word 0x3d638e39
7453 .long 0x3d638e39 // .word 0x3d638e39
7454
7455HIDDEN _sk_bicubic_p1y_vfp4
7456.globl _sk_bicubic_p1y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007457FUNCTION(_sk_bicubic_p1y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007458_sk_bicubic_p1y_vfp4:
7459 .long 0xe5913000 // ldr r3, [r1]
7460 .long 0xf2c71f18 // vmov.f32 d17, #1.5
7461 .long 0xeddf0b0c // vldr d16, [pc, #48]
7462 .long 0xedd33b18 // vldr d19, [r3, #96]
7463 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
7464 .long 0xedd32b08 // vldr d18, [r3, #32]
7465 .long 0xf2c3061f // vmov.i32 d16, #1056964608
7466 .long 0xf2021da0 // vadd.f32 d1, d18, d16
7467 .long 0xf2430cb1 // vfma.f32 d16, d19, d17
7468 .long 0xeddf1b07 // vldr d17, [pc, #28]
7469 .long 0xf2431cb0 // vfma.f32 d17, d19, d16
7470 .long 0xedc31b28 // vstr d17, [r3, #160]
7471 .long 0xe2813008 // add r3, r1, #8
7472 .long 0xe591c004 // ldr ip, [r1, #4]
7473 .long 0xe1a01003 // mov r1, r3
7474 .long 0xe12fff1c // bx ip
7475 .long 0xbf955555 // .word 0xbf955555
7476 .long 0xbf955555 // .word 0xbf955555
7477 .long 0x3d638e39 // .word 0x3d638e39
7478 .long 0x3d638e39 // .word 0x3d638e39
7479
7480HIDDEN _sk_bicubic_p3y_vfp4
7481.globl _sk_bicubic_p3y_vfp4
Mike Klein86714282017-04-13 17:37:38 -04007482FUNCTION(_sk_bicubic_p3y_vfp4)
Mike Klein0a904492017-04-12 12:52:48 -04007483_sk_bicubic_p3y_vfp4:
7484 .long 0xe5913000 // ldr r3, [r1]
7485 .long 0xeddf0b0d // vldr d16, [pc, #52]
7486 .long 0xeddf3b0e // vldr d19, [pc, #56]
7487 .long 0xedd32b18 // vldr d18, [r3, #96]
7488 .long 0xf2423cb0 // vfma.f32 d19, d18, d16
7489 .long 0xedd31b08 // vldr d17, [r3, #32]
7490 .long 0xf3420db2 // vmul.f32 d16, d18, d18
7491 .long 0xf2c72f18 // vmov.f32 d18, #1.5
7492 .long 0xf2011da2 // vadd.f32 d1, d17, d18
7493 .long 0xf3400db3 // vmul.f32 d16, d16, d19
7494 .long 0xedc30b28 // vstr d16, [r3, #160]
7495 .long 0xe2813008 // add r3, r1, #8
7496 .long 0xe591c004 // ldr ip, [r1, #4]
7497 .long 0xe1a01003 // mov r1, r3
7498 .long 0xe12fff1c // bx ip
7499 .long 0xe320f000 // nop {0}
7500 .long 0x3ec71c72 // .word 0x3ec71c72
7501 .long 0x3ec71c72 // .word 0x3ec71c72
7502 .long 0xbeaaaaab // .word 0xbeaaaaab
7503 .long 0xbeaaaaab // .word 0xbeaaaaab
Mike Klein7fee90c2017-04-07 16:55:09 -04007504
7505HIDDEN _sk_callback_vfp4
7506.globl _sk_callback_vfp4
7507FUNCTION(_sk_callback_vfp4)
7508_sk_callback_vfp4:
7509 .long 0xe92d4070 // push {r4, r5, r6, lr}
7510 .long 0xed2d8b10 // vpush {d8-d15}
7511 .long 0xe1a05001 // mov r5, r1
7512 .long 0xe1a06000 // mov r6, r0
7513 .long 0xe5950000 // ldr r0, [r5]
7514 .long 0xe1a04002 // mov r4, r2
7515 .long 0xe3a01002 // mov r1, #2
7516 .long 0xeeb08b47 // vmov.f64 d8, d7
7517 .long 0xe5902000 // ldr r2, [r0]
7518 .long 0xe5900004 // ldr r0, [r0, #4]
7519 .long 0xeeb09b46 // vmov.f64 d9, d6
7520 .long 0xeeb0ab45 // vmov.f64 d10, d5
7521 .long 0xeeb0bb44 // vmov.f64 d11, d4
7522 .long 0xeeb0cb43 // vmov.f64 d12, d3
7523 .long 0xeeb0db42 // vmov.f64 d13, d2
7524 .long 0xeeb0eb41 // vmov.f64 d14, d1
7525 .long 0xeeb0fb40 // vmov.f64 d15, d0
7526 .long 0xe12fff32 // blx r2
7527 .long 0xe2851008 // add r1, r5, #8
7528 .long 0xe5953004 // ldr r3, [r5, #4]
7529 .long 0xe1a00006 // mov r0, r6
7530 .long 0xe1a02004 // mov r2, r4
7531 .long 0xeeb00b4f // vmov.f64 d0, d15
7532 .long 0xeeb01b4e // vmov.f64 d1, d14
7533 .long 0xeeb02b4d // vmov.f64 d2, d13
7534 .long 0xeeb03b4c // vmov.f64 d3, d12
7535 .long 0xeeb04b4b // vmov.f64 d4, d11
7536 .long 0xeeb05b4a // vmov.f64 d5, d10
7537 .long 0xeeb06b49 // vmov.f64 d6, d9
7538 .long 0xeeb07b48 // vmov.f64 d7, d8
7539 .long 0xecbd8b10 // vpop {d8-d15}
7540 .long 0xe8bd4070 // pop {r4, r5, r6, lr}
7541 .long 0xe12fff13 // bx r3
Mike Kleind7e06ae2017-03-29 16:33:06 -04007542#elif defined(__x86_64__)
7543
Mike Klein7c4af542017-03-29 18:21:14 -04007544HIDDEN _sk_start_pipeline_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007545.globl _sk_start_pipeline_hsw
Mike Klein86714282017-04-13 17:37:38 -04007546FUNCTION(_sk_start_pipeline_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007547_sk_start_pipeline_hsw:
7548 .byte 65,87 // push %r15
7549 .byte 65,86 // push %r14
7550 .byte 65,85 // push %r13
7551 .byte 65,84 // push %r12
7552 .byte 83 // push %rbx
7553 .byte 73,137,205 // mov %rcx,%r13
7554 .byte 73,137,214 // mov %rdx,%r14
7555 .byte 72,137,251 // mov %rdi,%rbx
7556 .byte 72,173 // lods %ds:(%rsi),%rax
7557 .byte 73,137,199 // mov %rax,%r15
7558 .byte 73,137,244 // mov %rsi,%r12
7559 .byte 72,141,67,8 // lea 0x8(%rbx),%rax
7560 .byte 76,57,232 // cmp %r13,%rax
7561 .byte 118,5 // jbe 28 <_sk_start_pipeline_hsw+0x28>
7562 .byte 72,137,223 // mov %rbx,%rdi
7563 .byte 235,65 // jmp 69 <_sk_start_pipeline_hsw+0x69>
7564 .byte 185,0,0,0,0 // mov $0x0,%ecx
7565 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
7566 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
7567 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
7568 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
7569 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
7570 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
7571 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
7572 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
7573 .byte 72,137,223 // mov %rbx,%rdi
7574 .byte 76,137,230 // mov %r12,%rsi
7575 .byte 76,137,242 // mov %r14,%rdx
7576 .byte 65,255,215 // callq *%r15
7577 .byte 72,141,123,8 // lea 0x8(%rbx),%rdi
7578 .byte 72,131,195,16 // add $0x10,%rbx
7579 .byte 76,57,235 // cmp %r13,%rbx
7580 .byte 72,137,251 // mov %rdi,%rbx
7581 .byte 118,191 // jbe 28 <_sk_start_pipeline_hsw+0x28>
7582 .byte 76,137,233 // mov %r13,%rcx
7583 .byte 72,41,249 // sub %rdi,%rcx
7584 .byte 116,41 // je 9a <_sk_start_pipeline_hsw+0x9a>
7585 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
7586 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
7587 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
7588 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
7589 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
7590 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
7591 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
7592 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
7593 .byte 76,137,230 // mov %r12,%rsi
7594 .byte 76,137,242 // mov %r14,%rdx
7595 .byte 65,255,215 // callq *%r15
7596 .byte 76,137,232 // mov %r13,%rax
7597 .byte 91 // pop %rbx
7598 .byte 65,92 // pop %r12
7599 .byte 65,93 // pop %r13
7600 .byte 65,94 // pop %r14
7601 .byte 65,95 // pop %r15
7602 .byte 197,248,119 // vzeroupper
7603 .byte 195 // retq
7604
Mike Klein7c4af542017-03-29 18:21:14 -04007605HIDDEN _sk_just_return_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007606.globl _sk_just_return_hsw
Mike Klein86714282017-04-13 17:37:38 -04007607FUNCTION(_sk_just_return_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007608_sk_just_return_hsw:
7609 .byte 195 // retq
7610
Mike Klein7c4af542017-03-29 18:21:14 -04007611HIDDEN _sk_seed_shader_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007612.globl _sk_seed_shader_hsw
Mike Klein86714282017-04-13 17:37:38 -04007613FUNCTION(_sk_seed_shader_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007614_sk_seed_shader_hsw:
7615 .byte 72,173 // lods %ds:(%rsi),%rax
7616 .byte 197,249,110,199 // vmovd %edi,%xmm0
7617 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
7618 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
7619 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
7620 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
7621 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
7622 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
7623 .byte 197,252,88,2 // vaddps (%rdx),%ymm0,%ymm0
7624 .byte 196,226,125,24,16 // vbroadcastss (%rax),%ymm2
7625 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
7626 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
7627 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7628 .byte 197,249,110,208 // vmovd %eax,%xmm2
7629 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
7630 .byte 72,173 // lods %ds:(%rsi),%rax
7631 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
7632 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
7633 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
7634 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
7635 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
7636 .byte 255,224 // jmpq *%rax
7637
Mike Klein7c4af542017-03-29 18:21:14 -04007638HIDDEN _sk_constant_color_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007639.globl _sk_constant_color_hsw
Mike Klein86714282017-04-13 17:37:38 -04007640FUNCTION(_sk_constant_color_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007641_sk_constant_color_hsw:
7642 .byte 72,173 // lods %ds:(%rsi),%rax
7643 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
7644 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
7645 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
7646 .byte 196,226,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm3
7647 .byte 72,173 // lods %ds:(%rsi),%rax
7648 .byte 255,224 // jmpq *%rax
7649
Mike Klein7c4af542017-03-29 18:21:14 -04007650HIDDEN _sk_clear_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007651.globl _sk_clear_hsw
Mike Klein86714282017-04-13 17:37:38 -04007652FUNCTION(_sk_clear_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007653_sk_clear_hsw:
7654 .byte 72,173 // lods %ds:(%rsi),%rax
7655 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
7656 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
7657 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
7658 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
7659 .byte 255,224 // jmpq *%rax
7660
Mike Kleinaaca1e42017-03-31 09:29:01 -04007661HIDDEN _sk_srcatop_hsw
7662.globl _sk_srcatop_hsw
Mike Klein86714282017-04-13 17:37:38 -04007663FUNCTION(_sk_srcatop_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007664_sk_srcatop_hsw:
7665 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7666 .byte 197,121,110,192 // vmovd %eax,%xmm8
7667 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7668 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7669 .byte 197,60,89,204 // vmulps %ymm4,%ymm8,%ymm9
7670 .byte 196,194,69,168,193 // vfmadd213ps %ymm9,%ymm7,%ymm0
7671 .byte 197,60,89,205 // vmulps %ymm5,%ymm8,%ymm9
7672 .byte 196,194,69,168,201 // vfmadd213ps %ymm9,%ymm7,%ymm1
7673 .byte 197,60,89,206 // vmulps %ymm6,%ymm8,%ymm9
7674 .byte 196,194,69,168,209 // vfmadd213ps %ymm9,%ymm7,%ymm2
7675 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
7676 .byte 196,194,69,168,216 // vfmadd213ps %ymm8,%ymm7,%ymm3
7677 .byte 72,173 // lods %ds:(%rsi),%rax
7678 .byte 255,224 // jmpq *%rax
7679
7680HIDDEN _sk_dstatop_hsw
7681.globl _sk_dstatop_hsw
Mike Klein86714282017-04-13 17:37:38 -04007682FUNCTION(_sk_dstatop_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007683_sk_dstatop_hsw:
7684 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7685 .byte 197,121,110,192 // vmovd %eax,%xmm8
7686 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7687 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
7688 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
7689 .byte 196,226,101,184,196 // vfmadd231ps %ymm4,%ymm3,%ymm0
7690 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
7691 .byte 196,226,101,184,205 // vfmadd231ps %ymm5,%ymm3,%ymm1
7692 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
7693 .byte 196,226,101,184,214 // vfmadd231ps %ymm6,%ymm3,%ymm2
7694 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
7695 .byte 196,194,69,168,216 // vfmadd213ps %ymm8,%ymm7,%ymm3
7696 .byte 72,173 // lods %ds:(%rsi),%rax
7697 .byte 255,224 // jmpq *%rax
7698
7699HIDDEN _sk_srcin_hsw
7700.globl _sk_srcin_hsw
Mike Klein86714282017-04-13 17:37:38 -04007701FUNCTION(_sk_srcin_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007702_sk_srcin_hsw:
7703 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
7704 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
7705 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
7706 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
7707 .byte 72,173 // lods %ds:(%rsi),%rax
7708 .byte 255,224 // jmpq *%rax
7709
7710HIDDEN _sk_dstin_hsw
7711.globl _sk_dstin_hsw
Mike Klein86714282017-04-13 17:37:38 -04007712FUNCTION(_sk_dstin_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007713_sk_dstin_hsw:
7714 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
7715 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
7716 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
7717 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
7718 .byte 72,173 // lods %ds:(%rsi),%rax
7719 .byte 255,224 // jmpq *%rax
7720
7721HIDDEN _sk_srcout_hsw
7722.globl _sk_srcout_hsw
Mike Klein86714282017-04-13 17:37:38 -04007723FUNCTION(_sk_srcout_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007724_sk_srcout_hsw:
7725 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7726 .byte 197,121,110,192 // vmovd %eax,%xmm8
7727 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7728 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
7729 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
7730 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
7731 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
7732 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
7733 .byte 72,173 // lods %ds:(%rsi),%rax
7734 .byte 255,224 // jmpq *%rax
7735
7736HIDDEN _sk_dstout_hsw
7737.globl _sk_dstout_hsw
Mike Klein86714282017-04-13 17:37:38 -04007738FUNCTION(_sk_dstout_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007739_sk_dstout_hsw:
7740 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7741 .byte 197,249,110,192 // vmovd %eax,%xmm0
7742 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
7743 .byte 197,252,92,219 // vsubps %ymm3,%ymm0,%ymm3
7744 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
7745 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
7746 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
7747 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -04007748 .byte 72,173 // lods %ds:(%rsi),%rax
7749 .byte 255,224 // jmpq *%rax
7750
Mike Klein7c4af542017-03-29 18:21:14 -04007751HIDDEN _sk_srcover_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007752.globl _sk_srcover_hsw
Mike Klein86714282017-04-13 17:37:38 -04007753FUNCTION(_sk_srcover_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007754_sk_srcover_hsw:
7755 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7756 .byte 197,121,110,192 // vmovd %eax,%xmm8
7757 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7758 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7759 .byte 196,194,93,184,192 // vfmadd231ps %ymm8,%ymm4,%ymm0
7760 .byte 196,194,85,184,200 // vfmadd231ps %ymm8,%ymm5,%ymm1
7761 .byte 196,194,77,184,208 // vfmadd231ps %ymm8,%ymm6,%ymm2
7762 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7763 .byte 72,173 // lods %ds:(%rsi),%rax
7764 .byte 255,224 // jmpq *%rax
7765
Mike Klein7c4af542017-03-29 18:21:14 -04007766HIDDEN _sk_dstover_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04007767.globl _sk_dstover_hsw
Mike Klein86714282017-04-13 17:37:38 -04007768FUNCTION(_sk_dstover_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04007769_sk_dstover_hsw:
7770 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7771 .byte 197,121,110,192 // vmovd %eax,%xmm8
7772 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7773 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
7774 .byte 196,226,61,168,196 // vfmadd213ps %ymm4,%ymm8,%ymm0
7775 .byte 196,226,61,168,205 // vfmadd213ps %ymm5,%ymm8,%ymm1
7776 .byte 196,226,61,168,214 // vfmadd213ps %ymm6,%ymm8,%ymm2
7777 .byte 196,226,61,168,223 // vfmadd213ps %ymm7,%ymm8,%ymm3
7778 .byte 72,173 // lods %ds:(%rsi),%rax
7779 .byte 255,224 // jmpq *%rax
7780
Mike Kleinaaca1e42017-03-31 09:29:01 -04007781HIDDEN _sk_modulate_hsw
7782.globl _sk_modulate_hsw
Mike Klein86714282017-04-13 17:37:38 -04007783FUNCTION(_sk_modulate_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007784_sk_modulate_hsw:
7785 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
7786 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
7787 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
7788 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
7789 .byte 72,173 // lods %ds:(%rsi),%rax
7790 .byte 255,224 // jmpq *%rax
7791
7792HIDDEN _sk_multiply_hsw
7793.globl _sk_multiply_hsw
Mike Klein86714282017-04-13 17:37:38 -04007794FUNCTION(_sk_multiply_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007795_sk_multiply_hsw:
7796 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7797 .byte 197,121,110,192 // vmovd %eax,%xmm8
7798 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7799 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
7800 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7801 .byte 197,60,89,212 // vmulps %ymm4,%ymm8,%ymm10
7802 .byte 196,98,53,184,208 // vfmadd231ps %ymm0,%ymm9,%ymm10
7803 .byte 196,194,93,168,194 // vfmadd213ps %ymm10,%ymm4,%ymm0
7804 .byte 197,52,89,209 // vmulps %ymm1,%ymm9,%ymm10
7805 .byte 196,98,61,184,213 // vfmadd231ps %ymm5,%ymm8,%ymm10
7806 .byte 196,194,85,168,202 // vfmadd213ps %ymm10,%ymm5,%ymm1
7807 .byte 197,52,89,210 // vmulps %ymm2,%ymm9,%ymm10
7808 .byte 196,98,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm10
7809 .byte 196,194,77,168,210 // vfmadd213ps %ymm10,%ymm6,%ymm2
7810 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
7811 .byte 196,66,69,168,193 // vfmadd213ps %ymm9,%ymm7,%ymm8
7812 .byte 196,194,69,168,216 // vfmadd213ps %ymm8,%ymm7,%ymm3
7813 .byte 72,173 // lods %ds:(%rsi),%rax
7814 .byte 255,224 // jmpq *%rax
7815
7816HIDDEN _sk_plus__hsw
7817.globl _sk_plus__hsw
Mike Klein86714282017-04-13 17:37:38 -04007818FUNCTION(_sk_plus__hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007819_sk_plus__hsw:
7820 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
7821 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
7822 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
7823 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
7824 .byte 72,173 // lods %ds:(%rsi),%rax
7825 .byte 255,224 // jmpq *%rax
7826
7827HIDDEN _sk_screen_hsw
7828.globl _sk_screen_hsw
Mike Klein86714282017-04-13 17:37:38 -04007829FUNCTION(_sk_screen_hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007830_sk_screen_hsw:
7831 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
7832 .byte 196,194,93,172,192 // vfnmadd213ps %ymm8,%ymm4,%ymm0
7833 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
7834 .byte 196,194,85,172,200 // vfnmadd213ps %ymm8,%ymm5,%ymm1
7835 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
7836 .byte 196,194,77,172,208 // vfnmadd213ps %ymm8,%ymm6,%ymm2
7837 .byte 197,100,88,199 // vaddps %ymm7,%ymm3,%ymm8
7838 .byte 196,194,69,172,216 // vfnmadd213ps %ymm8,%ymm7,%ymm3
7839 .byte 72,173 // lods %ds:(%rsi),%rax
7840 .byte 255,224 // jmpq *%rax
7841
7842HIDDEN _sk_xor__hsw
7843.globl _sk_xor__hsw
Mike Klein86714282017-04-13 17:37:38 -04007844FUNCTION(_sk_xor__hsw)
Mike Kleinaaca1e42017-03-31 09:29:01 -04007845_sk_xor__hsw:
7846 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7847 .byte 197,121,110,192 // vmovd %eax,%xmm8
7848 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7849 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
7850 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7851 .byte 197,60,89,212 // vmulps %ymm4,%ymm8,%ymm10
7852 .byte 196,194,53,168,194 // vfmadd213ps %ymm10,%ymm9,%ymm0
7853 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
7854 .byte 196,226,61,184,205 // vfmadd231ps %ymm5,%ymm8,%ymm1
7855 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
7856 .byte 196,226,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm2
7857 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
7858 .byte 196,98,69,168,195 // vfmadd213ps %ymm3,%ymm7,%ymm8
7859 .byte 72,173 // lods %ds:(%rsi),%rax
7860 .byte 197,124,41,195 // vmovaps %ymm8,%ymm3
7861 .byte 255,224 // jmpq *%rax
7862
Mike Klein66b09ab2017-03-31 10:29:40 -04007863HIDDEN _sk_darken_hsw
7864.globl _sk_darken_hsw
Mike Klein86714282017-04-13 17:37:38 -04007865FUNCTION(_sk_darken_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04007866_sk_darken_hsw:
7867 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
7868 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
7869 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
7870 .byte 196,193,124,95,193 // vmaxps %ymm9,%ymm0,%ymm0
7871 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
7872 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
7873 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
7874 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
7875 .byte 196,193,116,95,201 // vmaxps %ymm9,%ymm1,%ymm1
7876 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
7877 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
7878 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
7879 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
7880 .byte 196,193,108,95,209 // vmaxps %ymm9,%ymm2,%ymm2
7881 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
7882 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7883 .byte 197,121,110,192 // vmovd %eax,%xmm8
7884 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7885 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7886 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7887 .byte 72,173 // lods %ds:(%rsi),%rax
7888 .byte 255,224 // jmpq *%rax
7889
7890HIDDEN _sk_lighten_hsw
7891.globl _sk_lighten_hsw
Mike Klein86714282017-04-13 17:37:38 -04007892FUNCTION(_sk_lighten_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04007893_sk_lighten_hsw:
7894 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
7895 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
7896 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
7897 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
7898 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
7899 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
7900 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
7901 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
7902 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
7903 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
7904 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
7905 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
7906 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
7907 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
7908 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
7909 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7910 .byte 197,121,110,192 // vmovd %eax,%xmm8
7911 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7912 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7913 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7914 .byte 72,173 // lods %ds:(%rsi),%rax
7915 .byte 255,224 // jmpq *%rax
7916
7917HIDDEN _sk_difference_hsw
7918.globl _sk_difference_hsw
Mike Klein86714282017-04-13 17:37:38 -04007919FUNCTION(_sk_difference_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04007920_sk_difference_hsw:
7921 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
7922 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
7923 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
7924 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
7925 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
7926 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
7927 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
7928 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
7929 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
7930 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
7931 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
7932 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
7933 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
7934 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
7935 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
7936 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
7937 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
7938 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
7939 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7940 .byte 197,121,110,192 // vmovd %eax,%xmm8
7941 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7942 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7943 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7944 .byte 72,173 // lods %ds:(%rsi),%rax
7945 .byte 255,224 // jmpq *%rax
7946
7947HIDDEN _sk_exclusion_hsw
7948.globl _sk_exclusion_hsw
Mike Klein86714282017-04-13 17:37:38 -04007949FUNCTION(_sk_exclusion_hsw)
Mike Klein66b09ab2017-03-31 10:29:40 -04007950_sk_exclusion_hsw:
7951 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
7952 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
7953 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
7954 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
7955 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
7956 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
7957 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
7958 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
7959 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
7960 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
7961 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
7962 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
7963 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7964 .byte 197,121,110,192 // vmovd %eax,%xmm8
7965 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7966 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7967 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
7968 .byte 72,173 // lods %ds:(%rsi),%rax
7969 .byte 255,224 // jmpq *%rax
7970
Mike Klein61b84162017-03-31 11:48:14 -04007971HIDDEN _sk_colorburn_hsw
7972.globl _sk_colorburn_hsw
Mike Klein86714282017-04-13 17:37:38 -04007973FUNCTION(_sk_colorburn_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04007974_sk_colorburn_hsw:
7975 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
7976 .byte 197,121,110,192 // vmovd %eax,%xmm8
7977 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
7978 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
7979 .byte 197,52,89,216 // vmulps %ymm0,%ymm9,%ymm11
7980 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
7981 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
7982 .byte 197,60,89,228 // vmulps %ymm4,%ymm8,%ymm12
7983 .byte 197,68,92,236 // vsubps %ymm4,%ymm7,%ymm13
7984 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
7985 .byte 197,20,94,232 // vdivps %ymm0,%ymm13,%ymm13
7986 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
7987 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
7988 .byte 196,66,101,168,235 // vfmadd213ps %ymm11,%ymm3,%ymm13
7989 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
7990 .byte 197,28,88,224 // vaddps %ymm0,%ymm12,%ymm12
7991 .byte 196,193,124,194,194,0 // vcmpeqps %ymm10,%ymm0,%ymm0
7992 .byte 196,195,21,74,196,0 // vblendvps %ymm0,%ymm12,%ymm13,%ymm0
7993 .byte 197,92,194,231,0 // vcmpeqps %ymm7,%ymm4,%ymm12
7994 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
7995 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
7996 .byte 197,52,89,217 // vmulps %ymm1,%ymm9,%ymm11
7997 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
7998 .byte 197,68,92,237 // vsubps %ymm5,%ymm7,%ymm13
7999 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
8000 .byte 197,20,94,233 // vdivps %ymm1,%ymm13,%ymm13
8001 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
8002 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
8003 .byte 196,66,101,168,235 // vfmadd213ps %ymm11,%ymm3,%ymm13
8004 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
8005 .byte 197,28,88,225 // vaddps %ymm1,%ymm12,%ymm12
8006 .byte 196,193,116,194,202,0 // vcmpeqps %ymm10,%ymm1,%ymm1
8007 .byte 196,195,21,74,204,16 // vblendvps %ymm1,%ymm12,%ymm13,%ymm1
8008 .byte 197,84,194,231,0 // vcmpeqps %ymm7,%ymm5,%ymm12
8009 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
8010 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
8011 .byte 197,52,89,202 // vmulps %ymm2,%ymm9,%ymm9
8012 .byte 196,65,108,194,210,0 // vcmpeqps %ymm10,%ymm2,%ymm10
8013 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
8014 .byte 197,68,92,230 // vsubps %ymm6,%ymm7,%ymm12
8015 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
8016 .byte 197,28,94,226 // vdivps %ymm2,%ymm12,%ymm12
8017 .byte 197,164,88,210 // vaddps %ymm2,%ymm11,%ymm2
8018 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
8019 .byte 196,65,68,92,228 // vsubps %ymm12,%ymm7,%ymm12
8020 .byte 196,66,101,168,225 // vfmadd213ps %ymm9,%ymm3,%ymm12
8021 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
8022 .byte 196,227,37,74,210,160 // vblendvps %ymm10,%ymm2,%ymm11,%ymm2
8023 .byte 197,76,194,215,0 // vcmpeqps %ymm7,%ymm6,%ymm10
8024 .byte 197,52,88,206 // vaddps %ymm6,%ymm9,%ymm9
8025 .byte 196,195,109,74,209,160 // vblendvps %ymm10,%ymm9,%ymm2,%ymm2
8026 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
8027 .byte 72,173 // lods %ds:(%rsi),%rax
8028 .byte 255,224 // jmpq *%rax
8029
8030HIDDEN _sk_colordodge_hsw
8031.globl _sk_colordodge_hsw
Mike Klein86714282017-04-13 17:37:38 -04008032FUNCTION(_sk_colordodge_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04008033_sk_colordodge_hsw:
8034 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
8035 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8036 .byte 197,121,110,200 // vmovd %eax,%xmm9
8037 .byte 196,66,125,88,201 // vpbroadcastd %xmm9,%ymm9
8038 .byte 197,52,92,215 // vsubps %ymm7,%ymm9,%ymm10
8039 .byte 197,44,89,216 // vmulps %ymm0,%ymm10,%ymm11
8040 .byte 197,52,92,203 // vsubps %ymm3,%ymm9,%ymm9
8041 .byte 197,100,89,228 // vmulps %ymm4,%ymm3,%ymm12
8042 .byte 197,100,92,232 // vsubps %ymm0,%ymm3,%ymm13
8043 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
8044 .byte 197,52,89,236 // vmulps %ymm4,%ymm9,%ymm13
8045 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
8046 .byte 196,66,101,168,227 // vfmadd213ps %ymm11,%ymm3,%ymm12
8047 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
8048 .byte 197,20,88,232 // vaddps %ymm0,%ymm13,%ymm13
8049 .byte 197,252,194,195,0 // vcmpeqps %ymm3,%ymm0,%ymm0
8050 .byte 196,195,29,74,197,0 // vblendvps %ymm0,%ymm13,%ymm12,%ymm0
8051 .byte 196,65,92,194,224,0 // vcmpeqps %ymm8,%ymm4,%ymm12
8052 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
8053 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
8054 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
8055 .byte 197,100,89,229 // vmulps %ymm5,%ymm3,%ymm12
8056 .byte 197,100,92,233 // vsubps %ymm1,%ymm3,%ymm13
8057 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
8058 .byte 197,52,89,237 // vmulps %ymm5,%ymm9,%ymm13
8059 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
8060 .byte 196,66,101,168,227 // vfmadd213ps %ymm11,%ymm3,%ymm12
8061 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
8062 .byte 197,20,88,233 // vaddps %ymm1,%ymm13,%ymm13
8063 .byte 197,244,194,203,0 // vcmpeqps %ymm3,%ymm1,%ymm1
8064 .byte 196,195,29,74,205,16 // vblendvps %ymm1,%ymm13,%ymm12,%ymm1
8065 .byte 196,65,84,194,224,0 // vcmpeqps %ymm8,%ymm5,%ymm12
8066 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
8067 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
8068 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
8069 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
8070 .byte 197,100,92,226 // vsubps %ymm2,%ymm3,%ymm12
8071 .byte 196,65,36,94,220 // vdivps %ymm12,%ymm11,%ymm11
8072 .byte 197,52,89,230 // vmulps %ymm6,%ymm9,%ymm12
8073 .byte 196,65,68,93,219 // vminps %ymm11,%ymm7,%ymm11
8074 .byte 196,66,101,168,218 // vfmadd213ps %ymm10,%ymm3,%ymm11
8075 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
8076 .byte 197,28,88,226 // vaddps %ymm2,%ymm12,%ymm12
8077 .byte 197,236,194,211,0 // vcmpeqps %ymm3,%ymm2,%ymm2
8078 .byte 196,195,37,74,212,32 // vblendvps %ymm2,%ymm12,%ymm11,%ymm2
8079 .byte 196,65,76,194,192,0 // vcmpeqps %ymm8,%ymm6,%ymm8
8080 .byte 197,44,88,214 // vaddps %ymm6,%ymm10,%ymm10
8081 .byte 196,195,109,74,210,128 // vblendvps %ymm8,%ymm10,%ymm2,%ymm2
8082 .byte 196,194,69,184,217 // vfmadd231ps %ymm9,%ymm7,%ymm3
8083 .byte 72,173 // lods %ds:(%rsi),%rax
8084 .byte 255,224 // jmpq *%rax
8085
8086HIDDEN _sk_hardlight_hsw
8087.globl _sk_hardlight_hsw
Mike Klein86714282017-04-13 17:37:38 -04008088FUNCTION(_sk_hardlight_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04008089_sk_hardlight_hsw:
8090 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8091 .byte 197,121,110,192 // vmovd %eax,%xmm8
8092 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
8093 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
8094 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
8095 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
8096 .byte 196,98,45,184,216 // vfmadd231ps %ymm0,%ymm10,%ymm11
8097 .byte 197,124,88,200 // vaddps %ymm0,%ymm0,%ymm9
8098 .byte 197,52,194,227,2 // vcmpleps %ymm3,%ymm9,%ymm12
8099 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
8100 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
8101 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
8102 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
8103 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
8104 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
8105 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
8106 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
8107 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
8108 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
8109 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
8110 .byte 196,98,61,184,221 // vfmadd231ps %ymm5,%ymm8,%ymm11
8111 .byte 197,116,88,225 // vaddps %ymm1,%ymm1,%ymm12
8112 .byte 197,28,194,227,2 // vcmpleps %ymm3,%ymm12,%ymm12
8113 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
8114 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
8115 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
8116 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
8117 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
8118 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
8119 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
8120 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
8121 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
8122 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
8123 .byte 196,98,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm10
8124 .byte 197,108,88,218 // vaddps %ymm2,%ymm2,%ymm11
8125 .byte 197,36,194,219,2 // vcmpleps %ymm3,%ymm11,%ymm11
8126 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
8127 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
8128 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
8129 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
8130 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
8131 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
8132 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
8133 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
8134 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
8135 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
8136 .byte 72,173 // lods %ds:(%rsi),%rax
8137 .byte 255,224 // jmpq *%rax
8138
8139HIDDEN _sk_overlay_hsw
8140.globl _sk_overlay_hsw
Mike Klein86714282017-04-13 17:37:38 -04008141FUNCTION(_sk_overlay_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04008142_sk_overlay_hsw:
8143 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8144 .byte 197,121,110,192 // vmovd %eax,%xmm8
8145 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
8146 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
8147 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
8148 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
8149 .byte 196,98,45,184,216 // vfmadd231ps %ymm0,%ymm10,%ymm11
8150 .byte 197,92,88,204 // vaddps %ymm4,%ymm4,%ymm9
8151 .byte 197,52,194,231,2 // vcmpleps %ymm7,%ymm9,%ymm12
8152 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
8153 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
8154 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
8155 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
8156 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
8157 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
8158 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
8159 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
8160 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
8161 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
8162 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
8163 .byte 196,98,61,184,221 // vfmadd231ps %ymm5,%ymm8,%ymm11
8164 .byte 197,84,88,229 // vaddps %ymm5,%ymm5,%ymm12
8165 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
8166 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
8167 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
8168 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
8169 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
8170 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
8171 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
8172 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
8173 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
8174 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
8175 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
8176 .byte 196,98,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm10
8177 .byte 197,76,88,222 // vaddps %ymm6,%ymm6,%ymm11
8178 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
8179 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
8180 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
8181 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
8182 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
8183 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
8184 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
8185 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
8186 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
8187 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
8188 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
8189 .byte 72,173 // lods %ds:(%rsi),%rax
8190 .byte 255,224 // jmpq *%rax
8191
8192HIDDEN _sk_softlight_hsw
8193.globl _sk_softlight_hsw
Mike Klein86714282017-04-13 17:37:38 -04008194FUNCTION(_sk_softlight_hsw)
Mike Klein61b84162017-03-31 11:48:14 -04008195_sk_softlight_hsw:
Mike Klein15bf6782017-03-31 12:21:46 -04008196 .byte 197,252,17,84,36,200 // vmovups %ymm2,-0x38(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -04008197 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
8198 .byte 197,44,194,223,1 // vcmpltps %ymm7,%ymm10,%ymm11
8199 .byte 197,92,94,199 // vdivps %ymm7,%ymm4,%ymm8
8200 .byte 196,67,45,74,224,176 // vblendvps %ymm11,%ymm8,%ymm10,%ymm12
8201 .byte 196,65,28,88,196 // vaddps %ymm12,%ymm12,%ymm8
8202 .byte 196,65,60,88,232 // vaddps %ymm8,%ymm8,%ymm13
8203 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8204 .byte 197,121,110,192 // vmovd %eax,%xmm8
8205 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
8206 .byte 196,66,21,168,237 // vfmadd213ps %ymm13,%ymm13,%ymm13
8207 .byte 196,65,28,92,240 // vsubps %ymm8,%ymm12,%ymm14
8208 .byte 184,0,0,224,64 // mov $0x40e00000,%eax
8209 .byte 197,121,110,200 // vmovd %eax,%xmm9
8210 .byte 196,66,125,88,201 // vpbroadcastd %xmm9,%ymm9
8211 .byte 196,65,28,89,249 // vmulps %ymm9,%ymm12,%ymm15
8212 .byte 196,66,21,184,254 // vfmadd231ps %ymm14,%ymm13,%ymm15
8213 .byte 196,65,124,82,236 // vrsqrtps %ymm12,%ymm13
8214 .byte 196,65,124,83,237 // vrcpps %ymm13,%ymm13
8215 .byte 196,65,20,92,236 // vsubps %ymm12,%ymm13,%ymm13
8216 .byte 197,92,88,244 // vaddps %ymm4,%ymm4,%ymm14
8217 .byte 196,65,12,88,246 // vaddps %ymm14,%ymm14,%ymm14
8218 .byte 197,12,194,247,2 // vcmpleps %ymm7,%ymm14,%ymm14
8219 .byte 196,67,21,74,239,224 // vblendvps %ymm14,%ymm15,%ymm13,%ymm13
8220 .byte 197,124,88,240 // vaddps %ymm0,%ymm0,%ymm14
8221 .byte 197,12,92,251 // vsubps %ymm3,%ymm14,%ymm15
8222 .byte 196,65,60,92,228 // vsubps %ymm12,%ymm8,%ymm12
8223 .byte 196,98,5,168,227 // vfmadd213ps %ymm3,%ymm15,%ymm12
8224 .byte 197,28,89,228 // vmulps %ymm4,%ymm12,%ymm12
8225 .byte 197,4,89,255 // vmulps %ymm7,%ymm15,%ymm15
8226 .byte 196,65,4,89,237 // vmulps %ymm13,%ymm15,%ymm13
8227 .byte 196,98,101,184,236 // vfmadd231ps %ymm4,%ymm3,%ymm13
8228 .byte 197,12,194,243,2 // vcmpleps %ymm3,%ymm14,%ymm14
8229 .byte 196,195,21,74,212,224 // vblendvps %ymm14,%ymm12,%ymm13,%ymm2
8230 .byte 197,84,94,239 // vdivps %ymm7,%ymm5,%ymm13
8231 .byte 196,67,45,74,237,176 // vblendvps %ymm11,%ymm13,%ymm10,%ymm13
8232 .byte 196,65,20,88,245 // vaddps %ymm13,%ymm13,%ymm14
8233 .byte 196,65,12,88,246 // vaddps %ymm14,%ymm14,%ymm14
8234 .byte 196,66,13,168,246 // vfmadd213ps %ymm14,%ymm14,%ymm14
8235 .byte 196,65,20,92,248 // vsubps %ymm8,%ymm13,%ymm15
8236 .byte 196,65,4,89,246 // vmulps %ymm14,%ymm15,%ymm14
8237 .byte 196,66,53,184,245 // vfmadd231ps %ymm13,%ymm9,%ymm14
8238 .byte 196,65,124,82,253 // vrsqrtps %ymm13,%ymm15
8239 .byte 196,65,124,83,255 // vrcpps %ymm15,%ymm15
8240 .byte 196,65,4,92,253 // vsubps %ymm13,%ymm15,%ymm15
8241 .byte 197,84,88,229 // vaddps %ymm5,%ymm5,%ymm12
8242 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
8243 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
8244 .byte 196,67,5,74,230,192 // vblendvps %ymm12,%ymm14,%ymm15,%ymm12
8245 .byte 197,116,88,241 // vaddps %ymm1,%ymm1,%ymm14
8246 .byte 196,65,60,92,237 // vsubps %ymm13,%ymm8,%ymm13
8247 .byte 197,12,92,251 // vsubps %ymm3,%ymm14,%ymm15
8248 .byte 196,98,5,168,235 // vfmadd213ps %ymm3,%ymm15,%ymm13
8249 .byte 197,4,89,255 // vmulps %ymm7,%ymm15,%ymm15
8250 .byte 196,65,4,89,228 // vmulps %ymm12,%ymm15,%ymm12
8251 .byte 197,20,89,237 // vmulps %ymm5,%ymm13,%ymm13
8252 .byte 196,98,101,184,229 // vfmadd231ps %ymm5,%ymm3,%ymm12
8253 .byte 197,12,194,243,2 // vcmpleps %ymm3,%ymm14,%ymm14
8254 .byte 196,67,29,74,237,224 // vblendvps %ymm14,%ymm13,%ymm12,%ymm13
8255 .byte 197,76,94,231 // vdivps %ymm7,%ymm6,%ymm12
8256 .byte 196,67,45,74,212,176 // vblendvps %ymm11,%ymm12,%ymm10,%ymm10
8257 .byte 196,65,44,88,218 // vaddps %ymm10,%ymm10,%ymm11
8258 .byte 196,65,36,88,219 // vaddps %ymm11,%ymm11,%ymm11
8259 .byte 196,66,37,168,219 // vfmadd213ps %ymm11,%ymm11,%ymm11
8260 .byte 196,65,44,92,224 // vsubps %ymm8,%ymm10,%ymm12
8261 .byte 196,65,28,89,219 // vmulps %ymm11,%ymm12,%ymm11
8262 .byte 196,66,45,168,203 // vfmadd213ps %ymm11,%ymm10,%ymm9
8263 .byte 196,65,124,82,218 // vrsqrtps %ymm10,%ymm11
8264 .byte 196,65,124,83,219 // vrcpps %ymm11,%ymm11
8265 .byte 196,65,36,92,218 // vsubps %ymm10,%ymm11,%ymm11
8266 .byte 197,76,88,230 // vaddps %ymm6,%ymm6,%ymm12
8267 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
8268 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
8269 .byte 196,67,37,74,201,192 // vblendvps %ymm12,%ymm9,%ymm11,%ymm9
Mike Klein15bf6782017-03-31 12:21:46 -04008270 .byte 197,124,16,116,36,200 // vmovups -0x38(%rsp),%ymm14
Mike Klein61b84162017-03-31 11:48:14 -04008271 .byte 196,65,12,88,222 // vaddps %ymm14,%ymm14,%ymm11
8272 .byte 197,36,92,227 // vsubps %ymm3,%ymm11,%ymm12
8273 .byte 196,65,60,92,210 // vsubps %ymm10,%ymm8,%ymm10
8274 .byte 196,98,29,168,211 // vfmadd213ps %ymm3,%ymm12,%ymm10
8275 .byte 197,28,89,231 // vmulps %ymm7,%ymm12,%ymm12
8276 .byte 196,65,28,89,201 // vmulps %ymm9,%ymm12,%ymm9
8277 .byte 197,44,89,214 // vmulps %ymm6,%ymm10,%ymm10
8278 .byte 196,98,101,184,206 // vfmadd231ps %ymm6,%ymm3,%ymm9
8279 .byte 197,36,194,219,2 // vcmpleps %ymm3,%ymm11,%ymm11
8280 .byte 196,67,53,74,202,176 // vblendvps %ymm11,%ymm10,%ymm9,%ymm9
8281 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
8282 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
8283 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
8284 .byte 196,98,45,184,216 // vfmadd231ps %ymm0,%ymm10,%ymm11
8285 .byte 196,193,108,88,195 // vaddps %ymm11,%ymm2,%ymm0
8286 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
8287 .byte 196,226,61,184,205 // vfmadd231ps %ymm5,%ymm8,%ymm1
8288 .byte 196,193,116,88,205 // vaddps %ymm13,%ymm1,%ymm1
8289 .byte 196,193,44,89,214 // vmulps %ymm14,%ymm10,%ymm2
8290 .byte 196,226,61,184,214 // vfmadd231ps %ymm6,%ymm8,%ymm2
8291 .byte 196,193,108,88,209 // vaddps %ymm9,%ymm2,%ymm2
8292 .byte 196,194,69,184,216 // vfmadd231ps %ymm8,%ymm7,%ymm3
8293 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein61b84162017-03-31 11:48:14 -04008294 .byte 255,224 // jmpq *%rax
8295
Mike Klein7c4af542017-03-29 18:21:14 -04008296HIDDEN _sk_clamp_0_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008297.globl _sk_clamp_0_hsw
Mike Klein86714282017-04-13 17:37:38 -04008298FUNCTION(_sk_clamp_0_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008299_sk_clamp_0_hsw:
8300 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
8301 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
8302 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
8303 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
8304 .byte 196,193,100,95,216 // vmaxps %ymm8,%ymm3,%ymm3
8305 .byte 72,173 // lods %ds:(%rsi),%rax
8306 .byte 255,224 // jmpq *%rax
8307
Mike Klein7c4af542017-03-29 18:21:14 -04008308HIDDEN _sk_clamp_1_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008309.globl _sk_clamp_1_hsw
Mike Klein86714282017-04-13 17:37:38 -04008310FUNCTION(_sk_clamp_1_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008311_sk_clamp_1_hsw:
8312 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8313 .byte 197,121,110,192 // vmovd %eax,%xmm8
8314 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
8315 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
8316 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
8317 .byte 196,193,108,93,208 // vminps %ymm8,%ymm2,%ymm2
8318 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
8319 .byte 72,173 // lods %ds:(%rsi),%rax
8320 .byte 255,224 // jmpq *%rax
8321
Mike Klein7c4af542017-03-29 18:21:14 -04008322HIDDEN _sk_clamp_a_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008323.globl _sk_clamp_a_hsw
Mike Klein86714282017-04-13 17:37:38 -04008324FUNCTION(_sk_clamp_a_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008325_sk_clamp_a_hsw:
8326 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8327 .byte 197,121,110,192 // vmovd %eax,%xmm8
8328 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
8329 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
8330 .byte 197,252,93,195 // vminps %ymm3,%ymm0,%ymm0
8331 .byte 197,244,93,203 // vminps %ymm3,%ymm1,%ymm1
8332 .byte 197,236,93,211 // vminps %ymm3,%ymm2,%ymm2
8333 .byte 72,173 // lods %ds:(%rsi),%rax
8334 .byte 255,224 // jmpq *%rax
8335
Mike Klein7c4af542017-03-29 18:21:14 -04008336HIDDEN _sk_set_rgb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008337.globl _sk_set_rgb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008338FUNCTION(_sk_set_rgb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008339_sk_set_rgb_hsw:
8340 .byte 72,173 // lods %ds:(%rsi),%rax
8341 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
8342 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
8343 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
8344 .byte 72,173 // lods %ds:(%rsi),%rax
8345 .byte 255,224 // jmpq *%rax
8346
Mike Klein7c4af542017-03-29 18:21:14 -04008347HIDDEN _sk_swap_rb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008348.globl _sk_swap_rb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008349FUNCTION(_sk_swap_rb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008350_sk_swap_rb_hsw:
8351 .byte 197,124,40,192 // vmovaps %ymm0,%ymm8
8352 .byte 72,173 // lods %ds:(%rsi),%rax
8353 .byte 197,252,40,194 // vmovaps %ymm2,%ymm0
8354 .byte 197,124,41,194 // vmovaps %ymm8,%ymm2
8355 .byte 255,224 // jmpq *%rax
8356
Mike Klein7c4af542017-03-29 18:21:14 -04008357HIDDEN _sk_swap_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008358.globl _sk_swap_hsw
Mike Klein86714282017-04-13 17:37:38 -04008359FUNCTION(_sk_swap_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008360_sk_swap_hsw:
8361 .byte 197,124,40,195 // vmovaps %ymm3,%ymm8
8362 .byte 197,124,40,202 // vmovaps %ymm2,%ymm9
8363 .byte 197,124,40,209 // vmovaps %ymm1,%ymm10
8364 .byte 197,124,40,216 // vmovaps %ymm0,%ymm11
8365 .byte 72,173 // lods %ds:(%rsi),%rax
8366 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
8367 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
8368 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
8369 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
8370 .byte 197,124,41,220 // vmovaps %ymm11,%ymm4
8371 .byte 197,124,41,213 // vmovaps %ymm10,%ymm5
8372 .byte 197,124,41,206 // vmovaps %ymm9,%ymm6
8373 .byte 197,124,41,199 // vmovaps %ymm8,%ymm7
8374 .byte 255,224 // jmpq *%rax
8375
Mike Klein7c4af542017-03-29 18:21:14 -04008376HIDDEN _sk_move_src_dst_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008377.globl _sk_move_src_dst_hsw
Mike Klein86714282017-04-13 17:37:38 -04008378FUNCTION(_sk_move_src_dst_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008379_sk_move_src_dst_hsw:
8380 .byte 72,173 // lods %ds:(%rsi),%rax
8381 .byte 197,252,40,224 // vmovaps %ymm0,%ymm4
8382 .byte 197,252,40,233 // vmovaps %ymm1,%ymm5
8383 .byte 197,252,40,242 // vmovaps %ymm2,%ymm6
8384 .byte 197,252,40,251 // vmovaps %ymm3,%ymm7
8385 .byte 255,224 // jmpq *%rax
8386
Mike Klein7c4af542017-03-29 18:21:14 -04008387HIDDEN _sk_move_dst_src_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008388.globl _sk_move_dst_src_hsw
Mike Klein86714282017-04-13 17:37:38 -04008389FUNCTION(_sk_move_dst_src_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008390_sk_move_dst_src_hsw:
8391 .byte 72,173 // lods %ds:(%rsi),%rax
8392 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
8393 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
8394 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
8395 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
8396 .byte 255,224 // jmpq *%rax
8397
Mike Klein7c4af542017-03-29 18:21:14 -04008398HIDDEN _sk_premul_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008399.globl _sk_premul_hsw
Mike Klein86714282017-04-13 17:37:38 -04008400FUNCTION(_sk_premul_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008401_sk_premul_hsw:
8402 .byte 197,252,89,195 // vmulps %ymm3,%ymm0,%ymm0
8403 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
8404 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
8405 .byte 72,173 // lods %ds:(%rsi),%rax
8406 .byte 255,224 // jmpq *%rax
8407
Mike Klein7c4af542017-03-29 18:21:14 -04008408HIDDEN _sk_unpremul_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008409.globl _sk_unpremul_hsw
Mike Klein86714282017-04-13 17:37:38 -04008410FUNCTION(_sk_unpremul_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008411_sk_unpremul_hsw:
8412 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
8413 .byte 196,65,100,194,200,0 // vcmpeqps %ymm8,%ymm3,%ymm9
8414 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8415 .byte 197,121,110,208 // vmovd %eax,%xmm10
8416 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
8417 .byte 197,44,94,211 // vdivps %ymm3,%ymm10,%ymm10
8418 .byte 196,67,45,74,192,144 // vblendvps %ymm9,%ymm8,%ymm10,%ymm8
8419 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
8420 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
8421 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
8422 .byte 72,173 // lods %ds:(%rsi),%rax
8423 .byte 255,224 // jmpq *%rax
8424
Mike Klein7c4af542017-03-29 18:21:14 -04008425HIDDEN _sk_from_srgb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008426.globl _sk_from_srgb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008427FUNCTION(_sk_from_srgb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008428_sk_from_srgb_hsw:
8429 .byte 184,145,131,158,61 // mov $0x3d9e8391,%eax
8430 .byte 197,121,110,192 // vmovd %eax,%xmm8
8431 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
8432 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
8433 .byte 197,124,89,208 // vmulps %ymm0,%ymm0,%ymm10
8434 .byte 184,154,153,153,62 // mov $0x3e99999a,%eax
8435 .byte 197,121,110,216 // vmovd %eax,%xmm11
8436 .byte 196,66,125,88,219 // vpbroadcastd %xmm11,%ymm11
8437 .byte 184,92,143,50,63 // mov $0x3f328f5c,%eax
8438 .byte 197,121,110,224 // vmovd %eax,%xmm12
8439 .byte 196,66,125,88,228 // vpbroadcastd %xmm12,%ymm12
8440 .byte 196,65,125,111,235 // vmovdqa %ymm11,%ymm13
8441 .byte 196,66,125,168,236 // vfmadd213ps %ymm12,%ymm0,%ymm13
8442 .byte 184,10,215,35,59 // mov $0x3b23d70a,%eax
8443 .byte 197,121,110,240 // vmovd %eax,%xmm14
8444 .byte 196,66,125,88,246 // vpbroadcastd %xmm14,%ymm14
8445 .byte 196,66,45,168,238 // vfmadd213ps %ymm14,%ymm10,%ymm13
8446 .byte 184,174,71,97,61 // mov $0x3d6147ae,%eax
8447 .byte 197,121,110,208 // vmovd %eax,%xmm10
8448 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
8449 .byte 196,193,124,194,194,1 // vcmpltps %ymm10,%ymm0,%ymm0
8450 .byte 196,195,21,74,193,0 // vblendvps %ymm0,%ymm9,%ymm13,%ymm0
8451 .byte 197,60,89,201 // vmulps %ymm1,%ymm8,%ymm9
8452 .byte 197,116,89,233 // vmulps %ymm1,%ymm1,%ymm13
8453 .byte 196,65,125,111,251 // vmovdqa %ymm11,%ymm15
8454 .byte 196,66,117,168,252 // vfmadd213ps %ymm12,%ymm1,%ymm15
8455 .byte 196,66,21,168,254 // vfmadd213ps %ymm14,%ymm13,%ymm15
8456 .byte 196,193,116,194,202,1 // vcmpltps %ymm10,%ymm1,%ymm1
8457 .byte 196,195,5,74,201,16 // vblendvps %ymm1,%ymm9,%ymm15,%ymm1
8458 .byte 197,60,89,194 // vmulps %ymm2,%ymm8,%ymm8
8459 .byte 197,108,89,202 // vmulps %ymm2,%ymm2,%ymm9
8460 .byte 196,66,109,168,220 // vfmadd213ps %ymm12,%ymm2,%ymm11
8461 .byte 196,66,53,168,222 // vfmadd213ps %ymm14,%ymm9,%ymm11
8462 .byte 196,193,108,194,210,1 // vcmpltps %ymm10,%ymm2,%ymm2
8463 .byte 196,195,37,74,208,32 // vblendvps %ymm2,%ymm8,%ymm11,%ymm2
8464 .byte 72,173 // lods %ds:(%rsi),%rax
8465 .byte 255,224 // jmpq *%rax
8466
Mike Klein7c4af542017-03-29 18:21:14 -04008467HIDDEN _sk_to_srgb_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008468.globl _sk_to_srgb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008469FUNCTION(_sk_to_srgb_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008470_sk_to_srgb_hsw:
8471 .byte 197,124,82,192 // vrsqrtps %ymm0,%ymm8
8472 .byte 196,65,124,83,216 // vrcpps %ymm8,%ymm11
8473 .byte 196,65,124,82,224 // vrsqrtps %ymm8,%ymm12
8474 .byte 184,41,92,71,65 // mov $0x41475c29,%eax
8475 .byte 197,121,110,192 // vmovd %eax,%xmm8
8476 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
8477 .byte 197,60,89,232 // vmulps %ymm0,%ymm8,%ymm13
8478 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8479 .byte 197,121,110,200 // vmovd %eax,%xmm9
8480 .byte 196,66,125,88,201 // vpbroadcastd %xmm9,%ymm9
8481 .byte 184,194,135,210,62 // mov $0x3ed287c2,%eax
8482 .byte 197,121,110,208 // vmovd %eax,%xmm10
8483 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
8484 .byte 184,206,111,48,63 // mov $0x3f306fce,%eax
8485 .byte 197,121,110,240 // vmovd %eax,%xmm14
8486 .byte 196,66,125,88,246 // vpbroadcastd %xmm14,%ymm14
8487 .byte 184,168,87,202,61 // mov $0x3dca57a8,%eax
8488 .byte 53,0,0,0,128 // xor $0x80000000,%eax
8489 .byte 197,121,110,248 // vmovd %eax,%xmm15
8490 .byte 196,66,125,88,255 // vpbroadcastd %xmm15,%ymm15
8491 .byte 196,66,13,168,223 // vfmadd213ps %ymm15,%ymm14,%ymm11
8492 .byte 196,66,45,184,220 // vfmadd231ps %ymm12,%ymm10,%ymm11
8493 .byte 196,65,52,93,219 // vminps %ymm11,%ymm9,%ymm11
8494 .byte 184,4,231,140,59 // mov $0x3b8ce704,%eax
8495 .byte 197,121,110,224 // vmovd %eax,%xmm12
8496 .byte 196,66,125,88,228 // vpbroadcastd %xmm12,%ymm12
8497 .byte 196,193,124,194,196,1 // vcmpltps %ymm12,%ymm0,%ymm0
8498 .byte 196,195,37,74,197,0 // vblendvps %ymm0,%ymm13,%ymm11,%ymm0
8499 .byte 197,124,82,217 // vrsqrtps %ymm1,%ymm11
8500 .byte 196,65,124,83,235 // vrcpps %ymm11,%ymm13
8501 .byte 196,65,124,82,219 // vrsqrtps %ymm11,%ymm11
8502 .byte 196,66,13,168,239 // vfmadd213ps %ymm15,%ymm14,%ymm13
8503 .byte 196,66,45,184,235 // vfmadd231ps %ymm11,%ymm10,%ymm13
8504 .byte 197,60,89,217 // vmulps %ymm1,%ymm8,%ymm11
8505 .byte 196,65,52,93,237 // vminps %ymm13,%ymm9,%ymm13
8506 .byte 196,193,116,194,204,1 // vcmpltps %ymm12,%ymm1,%ymm1
8507 .byte 196,195,21,74,203,16 // vblendvps %ymm1,%ymm11,%ymm13,%ymm1
8508 .byte 197,124,82,218 // vrsqrtps %ymm2,%ymm11
8509 .byte 196,65,124,83,235 // vrcpps %ymm11,%ymm13
8510 .byte 196,66,13,168,239 // vfmadd213ps %ymm15,%ymm14,%ymm13
8511 .byte 196,65,124,82,219 // vrsqrtps %ymm11,%ymm11
8512 .byte 196,66,45,184,235 // vfmadd231ps %ymm11,%ymm10,%ymm13
8513 .byte 196,65,52,93,205 // vminps %ymm13,%ymm9,%ymm9
8514 .byte 197,60,89,194 // vmulps %ymm2,%ymm8,%ymm8
8515 .byte 196,193,108,194,212,1 // vcmpltps %ymm12,%ymm2,%ymm2
8516 .byte 196,195,53,74,208,32 // vblendvps %ymm2,%ymm8,%ymm9,%ymm2
8517 .byte 72,173 // lods %ds:(%rsi),%rax
8518 .byte 255,224 // jmpq *%rax
8519
Mike Klein7125ac62017-04-05 15:27:22 -04008520HIDDEN _sk_from_2dot2_hsw
8521.globl _sk_from_2dot2_hsw
Mike Klein86714282017-04-13 17:37:38 -04008522FUNCTION(_sk_from_2dot2_hsw)
Mike Klein7125ac62017-04-05 15:27:22 -04008523_sk_from_2dot2_hsw:
8524 .byte 197,124,82,192 // vrsqrtps %ymm0,%ymm8
8525 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
8526 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
8527 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
8528 .byte 196,65,124,82,200 // vrsqrtps %ymm8,%ymm9
8529 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8530 .byte 197,252,89,192 // vmulps %ymm0,%ymm0,%ymm0
8531 .byte 196,65,60,89,208 // vmulps %ymm8,%ymm8,%ymm10
8532 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
8533 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
8534 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
8535 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
8536 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
8537 .byte 197,124,82,201 // vrsqrtps %ymm1,%ymm9
8538 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8539 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8540 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8541 .byte 196,65,124,82,209 // vrsqrtps %ymm9,%ymm10
8542 .byte 196,65,124,82,210 // vrsqrtps %ymm10,%ymm10
8543 .byte 197,244,89,201 // vmulps %ymm1,%ymm1,%ymm1
8544 .byte 196,65,52,89,217 // vmulps %ymm9,%ymm9,%ymm11
8545 .byte 196,65,52,89,203 // vmulps %ymm11,%ymm9,%ymm9
8546 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
8547 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
8548 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
8549 .byte 197,124,82,202 // vrsqrtps %ymm2,%ymm9
8550 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8551 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8552 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8553 .byte 196,65,124,82,209 // vrsqrtps %ymm9,%ymm10
8554 .byte 196,65,124,82,210 // vrsqrtps %ymm10,%ymm10
8555 .byte 197,236,89,210 // vmulps %ymm2,%ymm2,%ymm2
8556 .byte 196,65,52,89,217 // vmulps %ymm9,%ymm9,%ymm11
8557 .byte 196,65,52,89,203 // vmulps %ymm11,%ymm9,%ymm9
8558 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
8559 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
8560 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
8561 .byte 72,173 // lods %ds:(%rsi),%rax
8562 .byte 255,224 // jmpq *%rax
8563
8564HIDDEN _sk_to_2dot2_hsw
8565.globl _sk_to_2dot2_hsw
Mike Klein86714282017-04-13 17:37:38 -04008566FUNCTION(_sk_to_2dot2_hsw)
Mike Klein7125ac62017-04-05 15:27:22 -04008567_sk_to_2dot2_hsw:
8568 .byte 197,252,82,192 // vrsqrtps %ymm0,%ymm0
8569 .byte 197,124,82,192 // vrsqrtps %ymm0,%ymm8
8570 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
8571 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
8572 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
8573 .byte 196,65,124,82,200 // vrsqrtps %ymm8,%ymm9
8574 .byte 197,252,83,192 // vrcpps %ymm0,%ymm0
8575 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
8576 .byte 196,65,124,83,193 // vrcpps %ymm9,%ymm8
8577 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
8578 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
8579 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
8580 .byte 197,252,82,201 // vrsqrtps %ymm1,%ymm1
8581 .byte 197,124,82,201 // vrsqrtps %ymm1,%ymm9
8582 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8583 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8584 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8585 .byte 196,65,124,82,209 // vrsqrtps %ymm9,%ymm10
8586 .byte 197,252,83,201 // vrcpps %ymm1,%ymm1
8587 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
8588 .byte 196,65,124,83,202 // vrcpps %ymm10,%ymm9
8589 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
8590 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
8591 .byte 197,252,82,210 // vrsqrtps %ymm2,%ymm2
8592 .byte 197,124,82,202 // vrsqrtps %ymm2,%ymm9
8593 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8594 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8595 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
8596 .byte 196,65,124,82,209 // vrsqrtps %ymm9,%ymm10
8597 .byte 197,252,83,210 // vrcpps %ymm2,%ymm2
8598 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
8599 .byte 196,65,124,83,202 // vrcpps %ymm10,%ymm9
8600 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
8601 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
8602 .byte 72,173 // lods %ds:(%rsi),%rax
8603 .byte 255,224 // jmpq *%rax
8604
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008605HIDDEN _sk_rgb_to_hsl_hsw
8606.globl _sk_rgb_to_hsl_hsw
Mike Klein86714282017-04-13 17:37:38 -04008607FUNCTION(_sk_rgb_to_hsl_hsw)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008608_sk_rgb_to_hsl_hsw:
8609 .byte 197,252,17,124,36,200 // vmovups %ymm7,-0x38(%rsp)
8610 .byte 197,252,40,254 // vmovaps %ymm6,%ymm7
8611 .byte 197,252,40,245 // vmovaps %ymm5,%ymm6
8612 .byte 197,252,40,236 // vmovaps %ymm4,%ymm5
8613 .byte 197,252,40,227 // vmovaps %ymm3,%ymm4
8614 .byte 197,252,40,216 // vmovaps %ymm0,%ymm3
8615 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8616 .byte 197,121,110,192 // vmovd %eax,%xmm8
8617 .byte 65,184,171,170,42,62 // mov $0x3e2aaaab,%r8d
8618 .byte 184,0,0,192,64 // mov $0x40c00000,%eax
8619 .byte 197,121,110,200 // vmovd %eax,%xmm9
8620 .byte 65,185,0,0,0,64 // mov $0x40000000,%r9d
8621 .byte 184,0,0,128,64 // mov $0x40800000,%eax
8622 .byte 197,121,110,208 // vmovd %eax,%xmm10
8623 .byte 197,100,95,217 // vmaxps %ymm1,%ymm3,%ymm11
8624 .byte 197,36,95,218 // vmaxps %ymm2,%ymm11,%ymm11
8625 .byte 197,100,93,225 // vminps %ymm1,%ymm3,%ymm12
8626 .byte 197,28,93,226 // vminps %ymm2,%ymm12,%ymm12
8627 .byte 196,65,36,92,236 // vsubps %ymm12,%ymm11,%ymm13
8628 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
8629 .byte 196,65,60,94,197 // vdivps %ymm13,%ymm8,%ymm8
8630 .byte 197,116,194,242,1 // vcmpltps %ymm2,%ymm1,%ymm14
8631 .byte 196,66,125,88,201 // vpbroadcastd %xmm9,%ymm9
8632 .byte 196,65,4,87,255 // vxorps %ymm15,%ymm15,%ymm15
8633 .byte 196,67,5,74,201,224 // vblendvps %ymm14,%ymm9,%ymm15,%ymm9
8634 .byte 197,116,92,242 // vsubps %ymm2,%ymm1,%ymm14
8635 .byte 196,66,61,168,241 // vfmadd213ps %ymm9,%ymm8,%ymm14
8636 .byte 197,236,92,195 // vsubps %ymm3,%ymm2,%ymm0
8637 .byte 197,100,92,201 // vsubps %ymm1,%ymm3,%ymm9
8638 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
8639 .byte 196,66,61,168,202 // vfmadd213ps %ymm10,%ymm8,%ymm9
8640 .byte 196,193,121,110,209 // vmovd %r9d,%xmm2
8641 .byte 196,98,125,88,210 // vpbroadcastd %xmm2,%ymm10
8642 .byte 196,194,61,168,194 // vfmadd213ps %ymm10,%ymm8,%ymm0
8643 .byte 197,164,194,201,0 // vcmpeqps %ymm1,%ymm11,%ymm1
8644 .byte 196,227,53,74,192,16 // vblendvps %ymm1,%ymm0,%ymm9,%ymm0
8645 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
8646 .byte 197,249,110,200 // vmovd %eax,%xmm1
8647 .byte 197,164,194,211,0 // vcmpeqps %ymm3,%ymm11,%ymm2
8648 .byte 196,195,125,74,198,32 // vblendvps %ymm2,%ymm14,%ymm0,%ymm0
8649 .byte 196,193,36,88,220 // vaddps %ymm12,%ymm11,%ymm3
8650 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
8651 .byte 197,228,89,209 // vmulps %ymm1,%ymm3,%ymm2
8652 .byte 197,244,194,202,1 // vcmpltps %ymm2,%ymm1,%ymm1
8653 .byte 196,65,44,92,195 // vsubps %ymm11,%ymm10,%ymm8
8654 .byte 196,65,60,92,196 // vsubps %ymm12,%ymm8,%ymm8
8655 .byte 196,195,101,74,200,16 // vblendvps %ymm1,%ymm8,%ymm3,%ymm1
8656 .byte 196,193,36,194,220,0 // vcmpeqps %ymm12,%ymm11,%ymm3
8657 .byte 197,148,94,201 // vdivps %ymm1,%ymm13,%ymm1
8658 .byte 196,195,125,74,199,48 // vblendvps %ymm3,%ymm15,%ymm0,%ymm0
8659 .byte 196,195,117,74,207,48 // vblendvps %ymm3,%ymm15,%ymm1,%ymm1
8660 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
8661 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
8662 .byte 197,228,89,192 // vmulps %ymm0,%ymm3,%ymm0
8663 .byte 72,173 // lods %ds:(%rsi),%rax
8664 .byte 197,252,40,220 // vmovaps %ymm4,%ymm3
8665 .byte 197,252,40,229 // vmovaps %ymm5,%ymm4
8666 .byte 197,252,40,238 // vmovaps %ymm6,%ymm5
8667 .byte 197,252,40,247 // vmovaps %ymm7,%ymm6
8668 .byte 197,252,16,124,36,200 // vmovups -0x38(%rsp),%ymm7
8669 .byte 255,224 // jmpq *%rax
8670
8671HIDDEN _sk_hsl_to_rgb_hsw
8672.globl _sk_hsl_to_rgb_hsw
Mike Klein86714282017-04-13 17:37:38 -04008673FUNCTION(_sk_hsl_to_rgb_hsw)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008674_sk_hsl_to_rgb_hsw:
8675 .byte 72,131,236,56 // sub $0x38,%rsp
8676 .byte 197,252,17,60,36 // vmovups %ymm7,(%rsp)
8677 .byte 197,252,17,116,36,224 // vmovups %ymm6,-0x20(%rsp)
8678 .byte 197,252,17,108,36,192 // vmovups %ymm5,-0x40(%rsp)
8679 .byte 197,252,17,100,36,160 // vmovups %ymm4,-0x60(%rsp)
8680 .byte 197,252,17,92,36,128 // vmovups %ymm3,-0x80(%rsp)
8681 .byte 197,252,40,233 // vmovaps %ymm1,%ymm5
8682 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
8683 .byte 197,249,110,200 // vmovd %eax,%xmm1
8684 .byte 196,98,125,88,193 // vpbroadcastd %xmm1,%ymm8
8685 .byte 196,193,108,194,200,1 // vcmpltps %ymm8,%ymm2,%ymm1
8686 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8687 .byte 197,249,110,224 // vmovd %eax,%xmm4
8688 .byte 196,98,125,88,212 // vpbroadcastd %xmm4,%ymm10
8689 .byte 197,172,88,229 // vaddps %ymm5,%ymm10,%ymm4
8690 .byte 197,220,89,226 // vmulps %ymm2,%ymm4,%ymm4
8691 .byte 197,84,88,202 // vaddps %ymm2,%ymm5,%ymm9
8692 .byte 196,98,85,188,202 // vfnmadd231ps %ymm2,%ymm5,%ymm9
8693 .byte 196,99,53,74,204,16 // vblendvps %ymm1,%ymm4,%ymm9,%ymm9
8694 .byte 65,184,0,0,0,64 // mov $0x40000000,%r8d
8695 .byte 184,171,170,170,62 // mov $0x3eaaaaab,%eax
8696 .byte 197,249,110,200 // vmovd %eax,%xmm1
8697 .byte 196,98,125,88,233 // vpbroadcastd %xmm1,%ymm13
8698 .byte 197,148,88,224 // vaddps %ymm0,%ymm13,%ymm4
8699 .byte 184,0,0,0,0 // mov $0x0,%eax
8700 .byte 197,249,110,200 // vmovd %eax,%xmm1
8701 .byte 196,98,125,88,225 // vpbroadcastd %xmm1,%ymm12
8702 .byte 197,172,194,204,1 // vcmpltps %ymm4,%ymm10,%ymm1
8703 .byte 196,65,92,92,218 // vsubps %ymm10,%ymm4,%ymm11
8704 .byte 196,195,93,74,203,16 // vblendvps %ymm1,%ymm11,%ymm4,%ymm1
8705 .byte 196,65,92,194,220,1 // vcmpltps %ymm12,%ymm4,%ymm11
8706 .byte 197,44,88,244 // vaddps %ymm4,%ymm10,%ymm14
8707 .byte 196,195,117,74,206,176 // vblendvps %ymm11,%ymm14,%ymm1,%ymm1
8708 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
8709 .byte 196,98,125,88,219 // vpbroadcastd %xmm3,%ymm11
8710 .byte 196,66,109,170,217 // vfmsub213ps %ymm9,%ymm2,%ymm11
8711 .byte 65,184,171,170,42,62 // mov $0x3e2aaaab,%r8d
8712 .byte 184,0,0,192,64 // mov $0x40c00000,%eax
8713 .byte 197,249,110,216 // vmovd %eax,%xmm3
8714 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
8715 .byte 196,65,52,92,243 // vsubps %ymm11,%ymm9,%ymm14
8716 .byte 197,12,89,243 // vmulps %ymm3,%ymm14,%ymm14
8717 .byte 184,171,170,42,63 // mov $0x3f2aaaab,%eax
8718 .byte 197,249,110,216 // vmovd %eax,%xmm3
8719 .byte 196,98,125,88,251 // vpbroadcastd %xmm3,%ymm15
8720 .byte 197,132,92,217 // vsubps %ymm1,%ymm15,%ymm3
8721 .byte 196,194,13,168,219 // vfmadd213ps %ymm11,%ymm14,%ymm3
8722 .byte 196,193,116,194,255,1 // vcmpltps %ymm15,%ymm1,%ymm7
8723 .byte 196,227,37,74,219,112 // vblendvps %ymm7,%ymm3,%ymm11,%ymm3
8724 .byte 196,193,116,194,248,1 // vcmpltps %ymm8,%ymm1,%ymm7
8725 .byte 196,195,101,74,249,112 // vblendvps %ymm7,%ymm9,%ymm3,%ymm7
8726 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
8727 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
8728 .byte 197,244,194,203,1 // vcmpltps %ymm3,%ymm1,%ymm1
8729 .byte 196,194,13,168,227 // vfmadd213ps %ymm11,%ymm14,%ymm4
8730 .byte 196,227,69,74,228,16 // vblendvps %ymm1,%ymm4,%ymm7,%ymm4
8731 .byte 197,172,194,200,1 // vcmpltps %ymm0,%ymm10,%ymm1
8732 .byte 196,193,124,92,250 // vsubps %ymm10,%ymm0,%ymm7
8733 .byte 196,227,125,74,207,16 // vblendvps %ymm1,%ymm7,%ymm0,%ymm1
8734 .byte 196,193,124,194,252,1 // vcmpltps %ymm12,%ymm0,%ymm7
8735 .byte 197,172,88,240 // vaddps %ymm0,%ymm10,%ymm6
8736 .byte 196,227,117,74,206,112 // vblendvps %ymm7,%ymm6,%ymm1,%ymm1
8737 .byte 197,132,92,241 // vsubps %ymm1,%ymm15,%ymm6
8738 .byte 196,194,13,168,243 // vfmadd213ps %ymm11,%ymm14,%ymm6
8739 .byte 196,193,116,194,255,1 // vcmpltps %ymm15,%ymm1,%ymm7
8740 .byte 196,227,37,74,246,112 // vblendvps %ymm7,%ymm6,%ymm11,%ymm6
8741 .byte 196,193,116,194,248,1 // vcmpltps %ymm8,%ymm1,%ymm7
8742 .byte 196,195,77,74,241,112 // vblendvps %ymm7,%ymm9,%ymm6,%ymm6
8743 .byte 197,244,194,203,1 // vcmpltps %ymm3,%ymm1,%ymm1
8744 .byte 196,193,124,92,253 // vsubps %ymm13,%ymm0,%ymm7
8745 .byte 196,194,13,168,195 // vfmadd213ps %ymm11,%ymm14,%ymm0
8746 .byte 196,227,77,74,200,16 // vblendvps %ymm1,%ymm0,%ymm6,%ymm1
8747 .byte 197,172,194,199,1 // vcmpltps %ymm7,%ymm10,%ymm0
8748 .byte 196,193,68,92,242 // vsubps %ymm10,%ymm7,%ymm6
8749 .byte 196,227,69,74,198,0 // vblendvps %ymm0,%ymm6,%ymm7,%ymm0
8750 .byte 196,193,68,194,244,1 // vcmpltps %ymm12,%ymm7,%ymm6
8751 .byte 197,44,88,215 // vaddps %ymm7,%ymm10,%ymm10
8752 .byte 196,195,125,74,194,96 // vblendvps %ymm6,%ymm10,%ymm0,%ymm0
8753 .byte 196,194,13,168,251 // vfmadd213ps %ymm11,%ymm14,%ymm7
8754 .byte 197,132,92,240 // vsubps %ymm0,%ymm15,%ymm6
8755 .byte 196,194,13,168,243 // vfmadd213ps %ymm11,%ymm14,%ymm6
8756 .byte 196,65,124,194,215,1 // vcmpltps %ymm15,%ymm0,%ymm10
8757 .byte 196,227,37,74,246,160 // vblendvps %ymm10,%ymm6,%ymm11,%ymm6
8758 .byte 196,65,124,194,192,1 // vcmpltps %ymm8,%ymm0,%ymm8
8759 .byte 196,195,77,74,241,128 // vblendvps %ymm8,%ymm9,%ymm6,%ymm6
8760 .byte 197,252,194,195,1 // vcmpltps %ymm3,%ymm0,%ymm0
8761 .byte 196,227,77,74,223,0 // vblendvps %ymm0,%ymm7,%ymm6,%ymm3
8762 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
8763 .byte 197,212,194,232,0 // vcmpeqps %ymm0,%ymm5,%ymm5
8764 .byte 196,227,93,74,194,80 // vblendvps %ymm5,%ymm2,%ymm4,%ymm0
8765 .byte 196,227,117,74,202,80 // vblendvps %ymm5,%ymm2,%ymm1,%ymm1
8766 .byte 196,227,101,74,210,80 // vblendvps %ymm5,%ymm2,%ymm3,%ymm2
8767 .byte 72,173 // lods %ds:(%rsi),%rax
8768 .byte 197,252,16,92,36,128 // vmovups -0x80(%rsp),%ymm3
8769 .byte 197,252,16,100,36,160 // vmovups -0x60(%rsp),%ymm4
8770 .byte 197,252,16,108,36,192 // vmovups -0x40(%rsp),%ymm5
8771 .byte 197,252,16,116,36,224 // vmovups -0x20(%rsp),%ymm6
8772 .byte 197,252,16,60,36 // vmovups (%rsp),%ymm7
8773 .byte 72,131,196,56 // add $0x38,%rsp
8774 .byte 255,224 // jmpq *%rax
8775
Mike Klein7c4af542017-03-29 18:21:14 -04008776HIDDEN _sk_scale_1_float_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008777.globl _sk_scale_1_float_hsw
Mike Klein86714282017-04-13 17:37:38 -04008778FUNCTION(_sk_scale_1_float_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008779_sk_scale_1_float_hsw:
8780 .byte 72,173 // lods %ds:(%rsi),%rax
8781 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
8782 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
8783 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
8784 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
8785 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
8786 .byte 72,173 // lods %ds:(%rsi),%rax
8787 .byte 255,224 // jmpq *%rax
8788
Mike Klein7c4af542017-03-29 18:21:14 -04008789HIDDEN _sk_scale_u8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008790.globl _sk_scale_u8_hsw
Mike Klein86714282017-04-13 17:37:38 -04008791FUNCTION(_sk_scale_u8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008792_sk_scale_u8_hsw:
8793 .byte 73,137,200 // mov %rcx,%r8
8794 .byte 72,173 // lods %ds:(%rsi),%rax
8795 .byte 72,139,0 // mov (%rax),%rax
8796 .byte 72,1,248 // add %rdi,%rax
8797 .byte 77,133,192 // test %r8,%r8
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008798 .byte 117,56 // jne 11bc <_sk_scale_u8_hsw+0x48>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008799 .byte 197,122,126,0 // vmovq (%rax),%xmm8
8800 .byte 196,66,125,49,192 // vpmovzxbd %xmm8,%ymm8
8801 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
8802 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
8803 .byte 197,121,110,200 // vmovd %eax,%xmm9
8804 .byte 196,66,125,88,201 // vpbroadcastd %xmm9,%ymm9
8805 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
8806 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
8807 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
8808 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
8809 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
8810 .byte 72,173 // lods %ds:(%rsi),%rax
8811 .byte 76,137,193 // mov %r8,%rcx
8812 .byte 255,224 // jmpq *%rax
8813 .byte 49,201 // xor %ecx,%ecx
8814 .byte 77,137,194 // mov %r8,%r10
8815 .byte 69,49,201 // xor %r9d,%r9d
8816 .byte 68,15,182,24 // movzbl (%rax),%r11d
8817 .byte 72,255,192 // inc %rax
8818 .byte 73,211,227 // shl %cl,%r11
8819 .byte 77,9,217 // or %r11,%r9
8820 .byte 72,131,193,8 // add $0x8,%rcx
8821 .byte 73,255,202 // dec %r10
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008822 .byte 117,234 // jne 11c4 <_sk_scale_u8_hsw+0x50>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008823 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008824 .byte 235,167 // jmp 1188 <_sk_scale_u8_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008825
Mike Klein7c4af542017-03-29 18:21:14 -04008826HIDDEN _sk_lerp_1_float_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008827.globl _sk_lerp_1_float_hsw
Mike Klein86714282017-04-13 17:37:38 -04008828FUNCTION(_sk_lerp_1_float_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008829_sk_lerp_1_float_hsw:
8830 .byte 72,173 // lods %ds:(%rsi),%rax
8831 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
8832 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
8833 .byte 196,226,61,168,196 // vfmadd213ps %ymm4,%ymm8,%ymm0
8834 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
8835 .byte 196,226,61,168,205 // vfmadd213ps %ymm5,%ymm8,%ymm1
8836 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
8837 .byte 196,226,61,168,214 // vfmadd213ps %ymm6,%ymm8,%ymm2
8838 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
8839 .byte 196,226,61,168,223 // vfmadd213ps %ymm7,%ymm8,%ymm3
8840 .byte 72,173 // lods %ds:(%rsi),%rax
8841 .byte 255,224 // jmpq *%rax
8842
Mike Klein7c4af542017-03-29 18:21:14 -04008843HIDDEN _sk_lerp_u8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008844.globl _sk_lerp_u8_hsw
Mike Klein86714282017-04-13 17:37:38 -04008845FUNCTION(_sk_lerp_u8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008846_sk_lerp_u8_hsw:
8847 .byte 73,137,200 // mov %rcx,%r8
8848 .byte 72,173 // lods %ds:(%rsi),%rax
8849 .byte 72,139,0 // mov (%rax),%rax
8850 .byte 72,1,248 // add %rdi,%rax
8851 .byte 77,133,192 // test %r8,%r8
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008852 .byte 117,76 // jne 126c <_sk_lerp_u8_hsw+0x5c>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008853 .byte 197,122,126,0 // vmovq (%rax),%xmm8
8854 .byte 196,66,125,49,192 // vpmovzxbd %xmm8,%ymm8
8855 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
8856 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
8857 .byte 197,121,110,200 // vmovd %eax,%xmm9
8858 .byte 196,66,125,88,201 // vpbroadcastd %xmm9,%ymm9
8859 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
8860 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
8861 .byte 196,226,61,168,196 // vfmadd213ps %ymm4,%ymm8,%ymm0
8862 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
8863 .byte 196,226,61,168,205 // vfmadd213ps %ymm5,%ymm8,%ymm1
8864 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
8865 .byte 196,226,61,168,214 // vfmadd213ps %ymm6,%ymm8,%ymm2
8866 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
8867 .byte 196,226,61,168,223 // vfmadd213ps %ymm7,%ymm8,%ymm3
8868 .byte 72,173 // lods %ds:(%rsi),%rax
8869 .byte 76,137,193 // mov %r8,%rcx
8870 .byte 255,224 // jmpq *%rax
8871 .byte 49,201 // xor %ecx,%ecx
8872 .byte 77,137,194 // mov %r8,%r10
8873 .byte 69,49,201 // xor %r9d,%r9d
8874 .byte 68,15,182,24 // movzbl (%rax),%r11d
8875 .byte 72,255,192 // inc %rax
8876 .byte 73,211,227 // shl %cl,%r11
8877 .byte 77,9,217 // or %r11,%r9
8878 .byte 72,131,193,8 // add $0x8,%rcx
8879 .byte 73,255,202 // dec %r10
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008880 .byte 117,234 // jne 1274 <_sk_lerp_u8_hsw+0x64>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008881 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008882 .byte 235,147 // jmp 1224 <_sk_lerp_u8_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008883
Mike Klein7c4af542017-03-29 18:21:14 -04008884HIDDEN _sk_lerp_565_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008885.globl _sk_lerp_565_hsw
Mike Klein86714282017-04-13 17:37:38 -04008886FUNCTION(_sk_lerp_565_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008887_sk_lerp_565_hsw:
8888 .byte 72,173 // lods %ds:(%rsi),%rax
8889 .byte 76,139,16 // mov (%rax),%r10
8890 .byte 72,133,201 // test %rcx,%rcx
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008891 .byte 15,133,179,0,0,0 // jne 1352 <_sk_lerp_565_hsw+0xc1>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008892 .byte 196,193,122,111,28,122 // vmovdqu (%r10,%rdi,2),%xmm3
8893 .byte 196,98,125,51,195 // vpmovzxwd %xmm3,%ymm8
8894 .byte 184,0,248,0,0 // mov $0xf800,%eax
8895 .byte 197,249,110,216 // vmovd %eax,%xmm3
8896 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
8897 .byte 196,193,101,219,216 // vpand %ymm8,%ymm3,%ymm3
8898 .byte 197,124,91,203 // vcvtdq2ps %ymm3,%ymm9
8899 .byte 184,8,33,132,55 // mov $0x37842108,%eax
8900 .byte 197,249,110,216 // vmovd %eax,%xmm3
8901 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
8902 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
8903 .byte 184,224,7,0,0 // mov $0x7e0,%eax
8904 .byte 197,249,110,216 // vmovd %eax,%xmm3
8905 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
8906 .byte 196,193,101,219,216 // vpand %ymm8,%ymm3,%ymm3
8907 .byte 197,124,91,211 // vcvtdq2ps %ymm3,%ymm10
8908 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
8909 .byte 197,249,110,216 // vmovd %eax,%xmm3
8910 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
8911 .byte 197,44,89,211 // vmulps %ymm3,%ymm10,%ymm10
8912 .byte 184,31,0,0,0 // mov $0x1f,%eax
8913 .byte 197,249,110,216 // vmovd %eax,%xmm3
8914 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
8915 .byte 196,193,101,219,216 // vpand %ymm8,%ymm3,%ymm3
8916 .byte 197,124,91,195 // vcvtdq2ps %ymm3,%ymm8
8917 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
8918 .byte 197,249,110,216 // vmovd %eax,%xmm3
8919 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
8920 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
8921 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
8922 .byte 196,226,53,168,196 // vfmadd213ps %ymm4,%ymm9,%ymm0
8923 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
8924 .byte 196,226,45,168,205 // vfmadd213ps %ymm5,%ymm10,%ymm1
8925 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
8926 .byte 196,226,101,168,214 // vfmadd213ps %ymm6,%ymm3,%ymm2
8927 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
8928 .byte 197,249,110,216 // vmovd %eax,%xmm3
8929 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
8930 .byte 72,173 // lods %ds:(%rsi),%rax
8931 .byte 255,224 // jmpq *%rax
8932 .byte 65,137,200 // mov %ecx,%r8d
8933 .byte 65,128,224,7 // and $0x7,%r8b
8934 .byte 197,225,239,219 // vpxor %xmm3,%xmm3,%xmm3
8935 .byte 65,254,200 // dec %r8b
8936 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008937 .byte 15,135,59,255,255,255 // ja 12a5 <_sk_lerp_565_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008938 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008939 .byte 76,141,13,75,0,0,0 // lea 0x4b(%rip),%r9 # 13c0 <_sk_lerp_565_hsw+0x12f>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008940 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
8941 .byte 76,1,200 // add %r9,%rax
8942 .byte 255,224 // jmpq *%rax
8943 .byte 197,225,239,219 // vpxor %xmm3,%xmm3,%xmm3
8944 .byte 196,193,97,196,92,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm3,%xmm3
8945 .byte 196,193,97,196,92,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm3,%xmm3
8946 .byte 196,193,97,196,92,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm3,%xmm3
8947 .byte 196,193,97,196,92,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm3,%xmm3
8948 .byte 196,193,97,196,92,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm3,%xmm3
8949 .byte 196,193,97,196,92,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm3,%xmm3
8950 .byte 196,193,97,196,28,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm3,%xmm3
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008951 .byte 233,231,254,255,255 // jmpq 12a5 <_sk_lerp_565_hsw+0x14>
8952 .byte 102,144 // xchg %ax,%ax
8953 .byte 242,255 // repnz (bad)
Mike Klein7125ac62017-04-05 15:27:22 -04008954 .byte 255 // (bad)
8955 .byte 255 // (bad)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008956 .byte 234 // (bad)
Mike Klein7125ac62017-04-05 15:27:22 -04008957 .byte 255 // (bad)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008958 .byte 255 // (bad)
8959 .byte 255,226 // jmpq *%rdx
Mike Kleind7e06ae2017-03-29 16:33:06 -04008960 .byte 255 // (bad)
8961 .byte 255 // (bad)
8962 .byte 255 // (bad)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008963 .byte 218,255 // (bad)
Mike Klein7125ac62017-04-05 15:27:22 -04008964 .byte 255 // (bad)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008965 .byte 255,210 // callq *%rdx
Mike Klein7125ac62017-04-05 15:27:22 -04008966 .byte 255 // (bad)
8967 .byte 255 // (bad)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008968 .byte 255,202 // dec %edx
Mike Kleind7e06ae2017-03-29 16:33:06 -04008969 .byte 255 // (bad)
8970 .byte 255 // (bad)
8971 .byte 255 // (bad)
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008972 .byte 190 // .byte 0xbe
Mike Kleind7e06ae2017-03-29 16:33:06 -04008973 .byte 255 // (bad)
8974 .byte 255 // (bad)
8975 .byte 255 // .byte 0xff
8976
Mike Klein7c4af542017-03-29 18:21:14 -04008977HIDDEN _sk_load_tables_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04008978.globl _sk_load_tables_hsw
Mike Klein86714282017-04-13 17:37:38 -04008979FUNCTION(_sk_load_tables_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04008980_sk_load_tables_hsw:
8981 .byte 73,137,200 // mov %rcx,%r8
8982 .byte 72,173 // lods %ds:(%rsi),%rax
8983 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
8984 .byte 76,3,8 // add (%rax),%r9
8985 .byte 77,133,192 // test %r8,%r8
Mike Kleindb1cbcb2017-04-12 08:35:41 -04008986 .byte 117,121 // jne 146a <_sk_load_tables_hsw+0x8e>
Mike Kleind7e06ae2017-03-29 16:33:06 -04008987 .byte 196,193,126,111,25 // vmovdqu (%r9),%ymm3
8988 .byte 185,255,0,0,0 // mov $0xff,%ecx
8989 .byte 197,249,110,193 // vmovd %ecx,%xmm0
8990 .byte 196,226,125,88,208 // vpbroadcastd %xmm0,%ymm2
8991 .byte 197,237,219,203 // vpand %ymm3,%ymm2,%ymm1
8992 .byte 196,65,61,118,192 // vpcmpeqd %ymm8,%ymm8,%ymm8
8993 .byte 72,139,72,8 // mov 0x8(%rax),%rcx
8994 .byte 76,139,72,16 // mov 0x10(%rax),%r9
8995 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
8996 .byte 196,226,53,146,4,137 // vgatherdps %ymm9,(%rcx,%ymm1,4),%ymm0
8997 .byte 197,245,114,211,8 // vpsrld $0x8,%ymm3,%ymm1
8998 .byte 197,109,219,201 // vpand %ymm1,%ymm2,%ymm9
8999 .byte 196,65,45,118,210 // vpcmpeqd %ymm10,%ymm10,%ymm10
9000 .byte 196,130,45,146,12,137 // vgatherdps %ymm10,(%r9,%ymm9,4),%ymm1
9001 .byte 72,139,64,24 // mov 0x18(%rax),%rax
9002 .byte 197,181,114,211,16 // vpsrld $0x10,%ymm3,%ymm9
9003 .byte 196,65,109,219,201 // vpand %ymm9,%ymm2,%ymm9
9004 .byte 196,162,61,146,20,136 // vgatherdps %ymm8,(%rax,%ymm9,4),%ymm2
9005 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
9006 .byte 197,124,91,195 // vcvtdq2ps %ymm3,%ymm8
9007 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
9008 .byte 197,249,110,216 // vmovd %eax,%xmm3
9009 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
9010 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
9011 .byte 72,173 // lods %ds:(%rsi),%rax
9012 .byte 76,137,193 // mov %r8,%rcx
9013 .byte 255,224 // jmpq *%rax
9014 .byte 185,8,0,0,0 // mov $0x8,%ecx
9015 .byte 68,41,193 // sub %r8d,%ecx
9016 .byte 192,225,3 // shl $0x3,%cl
9017 .byte 73,199,194,255,255,255,255 // mov $0xffffffffffffffff,%r10
9018 .byte 73,211,234 // shr %cl,%r10
9019 .byte 196,193,249,110,194 // vmovq %r10,%xmm0
9020 .byte 196,226,125,33,192 // vpmovsxbd %xmm0,%ymm0
9021 .byte 196,194,125,140,25 // vpmaskmovd (%r9),%ymm0,%ymm3
Mike Kleindb1cbcb2017-04-12 08:35:41 -04009022 .byte 233,99,255,255,255 // jmpq 13f6 <_sk_load_tables_hsw+0x1a>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009023
Mike Kleina3735cd2017-04-17 13:19:05 -04009024HIDDEN _sk_load_tables_u16_be_hsw
9025.globl _sk_load_tables_u16_be_hsw
9026FUNCTION(_sk_load_tables_u16_be_hsw)
9027_sk_load_tables_u16_be_hsw:
9028 .byte 72,173 // lods %ds:(%rsi),%rax
9029 .byte 76,139,0 // mov (%rax),%r8
9030 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
9031 .byte 72,133,201 // test %rcx,%rcx
9032 .byte 15,133,216,0,0,0 // jne 1581 <_sk_load_tables_u16_be_hsw+0xee>
9033 .byte 196,1,121,16,4,72 // vmovupd (%r8,%r9,2),%xmm8
9034 .byte 196,129,121,16,84,72,16 // vmovupd 0x10(%r8,%r9,2),%xmm2
9035 .byte 196,129,121,16,92,72,32 // vmovupd 0x20(%r8,%r9,2),%xmm3
9036 .byte 196,1,122,111,76,72,48 // vmovdqu 0x30(%r8,%r9,2),%xmm9
9037 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
9038 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
9039 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
9040 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
9041 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
9042 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
9043 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
9044 .byte 197,113,105,235 // vpunpckhwd %xmm3,%xmm1,%xmm13
9045 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
9046 .byte 196,226,125,51,192 // vpmovzxwd %xmm0,%ymm0
9047 .byte 65,184,255,0,0,0 // mov $0xff,%r8d
9048 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
9049 .byte 196,98,125,88,209 // vpbroadcastd %xmm1,%ymm10
9050 .byte 196,193,125,219,202 // vpand %ymm10,%ymm0,%ymm1
9051 .byte 196,65,37,118,219 // vpcmpeqd %ymm11,%ymm11,%ymm11
9052 .byte 76,139,64,8 // mov 0x8(%rax),%r8
9053 .byte 76,139,72,16 // mov 0x10(%rax),%r9
9054 .byte 196,65,29,118,228 // vpcmpeqd %ymm12,%ymm12,%ymm12
9055 .byte 196,194,29,146,4,136 // vgatherdps %ymm12,(%r8,%ymm1,4),%ymm0
9056 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
9057 .byte 196,226,125,51,201 // vpmovzxwd %xmm1,%ymm1
9058 .byte 196,193,117,219,210 // vpand %ymm10,%ymm1,%ymm2
9059 .byte 196,65,61,118,192 // vpcmpeqd %ymm8,%ymm8,%ymm8
9060 .byte 196,194,61,146,12,145 // vgatherdps %ymm8,(%r9,%ymm2,4),%ymm1
9061 .byte 72,139,64,24 // mov 0x18(%rax),%rax
9062 .byte 196,193,49,108,213 // vpunpcklqdq %xmm13,%xmm9,%xmm2
9063 .byte 196,226,125,51,210 // vpmovzxwd %xmm2,%ymm2
9064 .byte 196,65,109,219,194 // vpand %ymm10,%ymm2,%ymm8
9065 .byte 196,162,37,146,20,128 // vgatherdps %ymm11,(%rax,%ymm8,4),%ymm2
9066 .byte 184,128,0,128,55 // mov $0x37800080,%eax
9067 .byte 197,249,110,216 // vmovd %eax,%xmm3
9068 .byte 196,98,125,88,195 // vpbroadcastd %xmm3,%ymm8
9069 .byte 196,193,49,109,221 // vpunpckhqdq %xmm13,%xmm9,%xmm3
9070 .byte 197,177,113,243,8 // vpsllw $0x8,%xmm3,%xmm9
9071 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
9072 .byte 197,177,235,219 // vpor %xmm3,%xmm9,%xmm3
9073 .byte 196,226,125,51,219 // vpmovzxwd %xmm3,%ymm3
9074 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
9075 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
9076 .byte 72,173 // lods %ds:(%rsi),%rax
9077 .byte 255,224 // jmpq *%rax
9078 .byte 196,1,123,16,4,72 // vmovsd (%r8,%r9,2),%xmm8
9079 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
9080 .byte 72,131,249,1 // cmp $0x1,%rcx
9081 .byte 116,85 // je 15e7 <_sk_load_tables_u16_be_hsw+0x154>
9082 .byte 196,1,57,22,68,72,8 // vmovhpd 0x8(%r8,%r9,2),%xmm8,%xmm8
9083 .byte 72,131,249,3 // cmp $0x3,%rcx
9084 .byte 114,72 // jb 15e7 <_sk_load_tables_u16_be_hsw+0x154>
9085 .byte 196,129,123,16,84,72,16 // vmovsd 0x10(%r8,%r9,2),%xmm2
9086 .byte 72,131,249,3 // cmp $0x3,%rcx
9087 .byte 116,72 // je 15f4 <_sk_load_tables_u16_be_hsw+0x161>
9088 .byte 196,129,105,22,84,72,24 // vmovhpd 0x18(%r8,%r9,2),%xmm2,%xmm2
9089 .byte 72,131,249,5 // cmp $0x5,%rcx
9090 .byte 114,59 // jb 15f4 <_sk_load_tables_u16_be_hsw+0x161>
9091 .byte 196,129,123,16,92,72,32 // vmovsd 0x20(%r8,%r9,2),%xmm3
9092 .byte 72,131,249,5 // cmp $0x5,%rcx
9093 .byte 15,132,250,254,255,255 // je 14c4 <_sk_load_tables_u16_be_hsw+0x31>
9094 .byte 196,129,97,22,92,72,40 // vmovhpd 0x28(%r8,%r9,2),%xmm3,%xmm3
9095 .byte 72,131,249,7 // cmp $0x7,%rcx
9096 .byte 15,130,233,254,255,255 // jb 14c4 <_sk_load_tables_u16_be_hsw+0x31>
9097 .byte 196,1,122,126,76,72,48 // vmovq 0x30(%r8,%r9,2),%xmm9
9098 .byte 233,221,254,255,255 // jmpq 14c4 <_sk_load_tables_u16_be_hsw+0x31>
9099 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
9100 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
9101 .byte 233,208,254,255,255 // jmpq 14c4 <_sk_load_tables_u16_be_hsw+0x31>
9102 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
9103 .byte 233,199,254,255,255 // jmpq 14c4 <_sk_load_tables_u16_be_hsw+0x31>
9104
9105HIDDEN _sk_load_tables_rgb_u16_be_hsw
9106.globl _sk_load_tables_rgb_u16_be_hsw
9107FUNCTION(_sk_load_tables_rgb_u16_be_hsw)
9108_sk_load_tables_rgb_u16_be_hsw:
9109 .byte 72,173 // lods %ds:(%rsi),%rax
9110 .byte 76,139,0 // mov (%rax),%r8
9111 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
9112 .byte 72,133,201 // test %rcx,%rcx
9113 .byte 15,133,207,0,0,0 // jne 16de <_sk_load_tables_rgb_u16_be_hsw+0xe1>
9114 .byte 196,129,122,111,4,72 // vmovdqu (%r8,%r9,2),%xmm0
9115 .byte 196,129,122,111,84,72,12 // vmovdqu 0xc(%r8,%r9,2),%xmm2
9116 .byte 196,129,122,111,76,72,24 // vmovdqu 0x18(%r8,%r9,2),%xmm1
9117 .byte 196,129,122,111,92,72,32 // vmovdqu 0x20(%r8,%r9,2),%xmm3
9118 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
9119 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
9120 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
9121 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
9122 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
9123 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
9124 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
9125 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
9126 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
9127 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
9128 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
9129 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
9130 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
9131 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
9132 .byte 196,226,125,51,192 // vpmovzxwd %xmm0,%ymm0
9133 .byte 65,184,255,0,0,0 // mov $0xff,%r8d
9134 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
9135 .byte 196,98,125,88,209 // vpbroadcastd %xmm1,%ymm10
9136 .byte 196,193,125,219,202 // vpand %ymm10,%ymm0,%ymm1
9137 .byte 196,65,37,118,219 // vpcmpeqd %ymm11,%ymm11,%ymm11
9138 .byte 76,139,64,8 // mov 0x8(%rax),%r8
9139 .byte 76,139,72,16 // mov 0x10(%rax),%r9
9140 .byte 196,65,29,118,228 // vpcmpeqd %ymm12,%ymm12,%ymm12
9141 .byte 196,194,29,146,4,136 // vgatherdps %ymm12,(%r8,%ymm1,4),%ymm0
9142 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
9143 .byte 196,226,125,51,201 // vpmovzxwd %xmm1,%ymm1
9144 .byte 196,193,117,219,210 // vpand %ymm10,%ymm1,%ymm2
9145 .byte 196,65,61,118,192 // vpcmpeqd %ymm8,%ymm8,%ymm8
9146 .byte 196,194,61,146,12,145 // vgatherdps %ymm8,(%r9,%ymm2,4),%ymm1
9147 .byte 72,139,64,24 // mov 0x18(%rax),%rax
9148 .byte 197,177,108,211 // vpunpcklqdq %xmm3,%xmm9,%xmm2
9149 .byte 196,226,125,51,210 // vpmovzxwd %xmm2,%ymm2
9150 .byte 196,193,109,219,218 // vpand %ymm10,%ymm2,%ymm3
9151 .byte 196,226,37,146,20,152 // vgatherdps %ymm11,(%rax,%ymm3,4),%ymm2
9152 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
9153 .byte 197,249,110,216 // vmovd %eax,%xmm3
9154 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
9155 .byte 72,173 // lods %ds:(%rsi),%rax
9156 .byte 255,224 // jmpq *%rax
9157 .byte 196,129,121,110,4,72 // vmovd (%r8,%r9,2),%xmm0
9158 .byte 196,129,121,196,68,72,4,2 // vpinsrw $0x2,0x4(%r8,%r9,2),%xmm0,%xmm0
9159 .byte 72,131,249,1 // cmp $0x1,%rcx
9160 .byte 117,5 // jne 16f7 <_sk_load_tables_rgb_u16_be_hsw+0xfa>
9161 .byte 233,76,255,255,255 // jmpq 1643 <_sk_load_tables_rgb_u16_be_hsw+0x46>
9162 .byte 196,129,121,110,76,72,6 // vmovd 0x6(%r8,%r9,2),%xmm1
9163 .byte 196,1,113,196,68,72,10,2 // vpinsrw $0x2,0xa(%r8,%r9,2),%xmm1,%xmm8
9164 .byte 72,131,249,3 // cmp $0x3,%rcx
9165 .byte 114,26 // jb 1726 <_sk_load_tables_rgb_u16_be_hsw+0x129>
9166 .byte 196,129,121,110,76,72,12 // vmovd 0xc(%r8,%r9,2),%xmm1
9167 .byte 196,129,113,196,84,72,16,2 // vpinsrw $0x2,0x10(%r8,%r9,2),%xmm1,%xmm2
9168 .byte 72,131,249,3 // cmp $0x3,%rcx
9169 .byte 117,10 // jne 172b <_sk_load_tables_rgb_u16_be_hsw+0x12e>
9170 .byte 233,29,255,255,255 // jmpq 1643 <_sk_load_tables_rgb_u16_be_hsw+0x46>
9171 .byte 233,24,255,255,255 // jmpq 1643 <_sk_load_tables_rgb_u16_be_hsw+0x46>
9172 .byte 196,129,121,110,76,72,18 // vmovd 0x12(%r8,%r9,2),%xmm1
9173 .byte 196,1,113,196,76,72,22,2 // vpinsrw $0x2,0x16(%r8,%r9,2),%xmm1,%xmm9
9174 .byte 72,131,249,5 // cmp $0x5,%rcx
9175 .byte 114,26 // jb 175a <_sk_load_tables_rgb_u16_be_hsw+0x15d>
9176 .byte 196,129,121,110,76,72,24 // vmovd 0x18(%r8,%r9,2),%xmm1
9177 .byte 196,129,113,196,76,72,28,2 // vpinsrw $0x2,0x1c(%r8,%r9,2),%xmm1,%xmm1
9178 .byte 72,131,249,5 // cmp $0x5,%rcx
9179 .byte 117,10 // jne 175f <_sk_load_tables_rgb_u16_be_hsw+0x162>
9180 .byte 233,233,254,255,255 // jmpq 1643 <_sk_load_tables_rgb_u16_be_hsw+0x46>
9181 .byte 233,228,254,255,255 // jmpq 1643 <_sk_load_tables_rgb_u16_be_hsw+0x46>
9182 .byte 196,129,121,110,92,72,30 // vmovd 0x1e(%r8,%r9,2),%xmm3
9183 .byte 196,1,97,196,92,72,34,2 // vpinsrw $0x2,0x22(%r8,%r9,2),%xmm3,%xmm11
9184 .byte 72,131,249,7 // cmp $0x7,%rcx
9185 .byte 114,20 // jb 1788 <_sk_load_tables_rgb_u16_be_hsw+0x18b>
9186 .byte 196,129,121,110,92,72,36 // vmovd 0x24(%r8,%r9,2),%xmm3
9187 .byte 196,129,97,196,92,72,40,2 // vpinsrw $0x2,0x28(%r8,%r9,2),%xmm3,%xmm3
9188 .byte 233,187,254,255,255 // jmpq 1643 <_sk_load_tables_rgb_u16_be_hsw+0x46>
9189 .byte 233,182,254,255,255 // jmpq 1643 <_sk_load_tables_rgb_u16_be_hsw+0x46>
9190
Mike Klein40de6da2017-04-07 13:09:29 -04009191HIDDEN _sk_byte_tables_hsw
9192.globl _sk_byte_tables_hsw
Mike Klein86714282017-04-13 17:37:38 -04009193FUNCTION(_sk_byte_tables_hsw)
Mike Klein40de6da2017-04-07 13:09:29 -04009194_sk_byte_tables_hsw:
9195 .byte 85 // push %rbp
9196 .byte 65,87 // push %r15
9197 .byte 65,86 // push %r14
9198 .byte 65,85 // push %r13
9199 .byte 65,84 // push %r12
9200 .byte 83 // push %rbx
9201 .byte 72,173 // lods %ds:(%rsi),%rax
9202 .byte 65,184,0,0,127,67 // mov $0x437f0000,%r8d
9203 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
9204 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9205 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
9206 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
9207 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
9208 .byte 68,137,197 // mov %r8d,%ebp
9209 .byte 77,137,194 // mov %r8,%r10
9210 .byte 73,193,234,32 // shr $0x20,%r10
9211 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
9212 .byte 69,137,195 // mov %r8d,%r11d
9213 .byte 77,137,199 // mov %r8,%r15
9214 .byte 73,193,239,32 // shr $0x20,%r15
9215 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
9216 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
9217 .byte 69,137,198 // mov %r8d,%r14d
9218 .byte 77,137,196 // mov %r8,%r12
9219 .byte 73,193,236,32 // shr $0x20,%r12
9220 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
9221 .byte 65,137,221 // mov %ebx,%r13d
9222 .byte 72,193,235,32 // shr $0x20,%rbx
9223 .byte 76,139,8 // mov (%rax),%r9
9224 .byte 76,139,64,8 // mov 0x8(%rax),%r8
9225 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
9226 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
9227 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
9228 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
9229 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
9230 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
9231 .byte 67,15,182,44,41 // movzbl (%r9,%r13,1),%ebp
9232 .byte 196,227,121,32,197,4 // vpinsrb $0x4,%ebp,%xmm0,%xmm0
9233 .byte 65,15,182,44,25 // movzbl (%r9,%rbx,1),%ebp
9234 .byte 196,227,121,32,197,5 // vpinsrb $0x5,%ebp,%xmm0,%xmm0
9235 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
9236 .byte 196,227,121,32,197,6 // vpinsrb $0x6,%ebp,%xmm0,%xmm0
9237 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
9238 .byte 196,227,121,32,197,7 // vpinsrb $0x7,%ebp,%xmm0,%xmm0
9239 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
9240 .byte 197,124,91,208 // vcvtdq2ps %ymm0,%ymm10
9241 .byte 189,129,128,128,59 // mov $0x3b808081,%ebp
9242 .byte 197,249,110,197 // vmovd %ebp,%xmm0
9243 .byte 196,98,125,88,200 // vpbroadcastd %xmm0,%ymm9
9244 .byte 196,193,44,89,193 // vmulps %ymm9,%ymm10,%ymm0
9245 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
9246 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
9247 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
9248 .byte 65,137,233 // mov %ebp,%r9d
9249 .byte 72,193,237,32 // shr $0x20,%rbp
9250 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
9251 .byte 65,137,218 // mov %ebx,%r10d
9252 .byte 72,193,235,32 // shr $0x20,%rbx
9253 .byte 196,227,125,57,201,1 // vextracti128 $0x1,%ymm1,%xmm1
9254 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
9255 .byte 69,137,222 // mov %r11d,%r14d
9256 .byte 73,193,235,32 // shr $0x20,%r11
9257 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
9258 .byte 69,137,252 // mov %r15d,%r12d
9259 .byte 73,193,239,32 // shr $0x20,%r15
9260 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
9261 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
9262 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
9263 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
9264 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
9265 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
9266 .byte 67,15,182,44,32 // movzbl (%r8,%r12,1),%ebp
9267 .byte 196,227,113,32,205,4 // vpinsrb $0x4,%ebp,%xmm1,%xmm1
9268 .byte 67,15,182,44,56 // movzbl (%r8,%r15,1),%ebp
9269 .byte 196,227,113,32,205,5 // vpinsrb $0x5,%ebp,%xmm1,%xmm1
9270 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
9271 .byte 196,227,113,32,205,6 // vpinsrb $0x6,%ebp,%xmm1,%xmm1
9272 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
9273 .byte 196,227,113,32,205,7 // vpinsrb $0x7,%ebp,%xmm1,%xmm1
9274 .byte 196,226,125,49,201 // vpmovzxbd %xmm1,%ymm1
9275 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
9276 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
9277 .byte 76,139,64,16 // mov 0x10(%rax),%r8
9278 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
9279 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
9280 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
9281 .byte 65,137,233 // mov %ebp,%r9d
9282 .byte 72,193,237,32 // shr $0x20,%rbp
9283 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
9284 .byte 65,137,218 // mov %ebx,%r10d
9285 .byte 72,193,235,32 // shr $0x20,%rbx
9286 .byte 196,227,125,57,210,1 // vextracti128 $0x1,%ymm2,%xmm2
9287 .byte 196,195,249,22,211,1 // vpextrq $0x1,%xmm2,%r11
9288 .byte 69,137,222 // mov %r11d,%r14d
9289 .byte 73,193,235,32 // shr $0x20,%r11
9290 .byte 196,193,249,126,215 // vmovq %xmm2,%r15
9291 .byte 69,137,252 // mov %r15d,%r12d
9292 .byte 73,193,239,32 // shr $0x20,%r15
9293 .byte 196,131,121,32,20,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm2
9294 .byte 196,195,105,32,20,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm2,%xmm2
9295 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
9296 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
9297 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
9298 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
9299 .byte 67,15,182,44,32 // movzbl (%r8,%r12,1),%ebp
9300 .byte 196,227,105,32,213,4 // vpinsrb $0x4,%ebp,%xmm2,%xmm2
9301 .byte 67,15,182,44,56 // movzbl (%r8,%r15,1),%ebp
9302 .byte 196,227,105,32,213,5 // vpinsrb $0x5,%ebp,%xmm2,%xmm2
9303 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
9304 .byte 196,227,105,32,213,6 // vpinsrb $0x6,%ebp,%xmm2,%xmm2
9305 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
9306 .byte 196,227,105,32,213,7 // vpinsrb $0x7,%ebp,%xmm2,%xmm2
9307 .byte 196,226,125,49,210 // vpmovzxbd %xmm2,%ymm2
9308 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
9309 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
9310 .byte 72,139,64,24 // mov 0x18(%rax),%rax
9311 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
9312 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
9313 .byte 196,227,249,22,221,1 // vpextrq $0x1,%xmm3,%rbp
9314 .byte 65,137,232 // mov %ebp,%r8d
9315 .byte 72,193,237,32 // shr $0x20,%rbp
9316 .byte 196,225,249,126,219 // vmovq %xmm3,%rbx
9317 .byte 65,137,217 // mov %ebx,%r9d
9318 .byte 72,193,235,32 // shr $0x20,%rbx
9319 .byte 196,227,125,57,219,1 // vextracti128 $0x1,%ymm3,%xmm3
9320 .byte 196,195,249,22,218,1 // vpextrq $0x1,%xmm3,%r10
9321 .byte 69,137,211 // mov %r10d,%r11d
9322 .byte 73,193,234,32 // shr $0x20,%r10
9323 .byte 196,193,249,126,222 // vmovq %xmm3,%r14
9324 .byte 69,137,247 // mov %r14d,%r15d
9325 .byte 73,193,238,32 // shr $0x20,%r14
9326 .byte 196,163,121,32,28,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm3
9327 .byte 196,227,97,32,28,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm3,%xmm3
9328 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
9329 .byte 196,227,97,32,219,2 // vpinsrb $0x2,%ebx,%xmm3,%xmm3
9330 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
9331 .byte 196,227,97,32,221,3 // vpinsrb $0x3,%ebp,%xmm3,%xmm3
9332 .byte 66,15,182,44,56 // movzbl (%rax,%r15,1),%ebp
9333 .byte 196,227,97,32,221,4 // vpinsrb $0x4,%ebp,%xmm3,%xmm3
9334 .byte 66,15,182,44,48 // movzbl (%rax,%r14,1),%ebp
9335 .byte 196,227,97,32,221,5 // vpinsrb $0x5,%ebp,%xmm3,%xmm3
9336 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
9337 .byte 196,227,97,32,221,6 // vpinsrb $0x6,%ebp,%xmm3,%xmm3
9338 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
9339 .byte 196,227,97,32,216,7 // vpinsrb $0x7,%eax,%xmm3,%xmm3
9340 .byte 196,226,125,49,219 // vpmovzxbd %xmm3,%ymm3
9341 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
9342 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
9343 .byte 72,173 // lods %ds:(%rsi),%rax
9344 .byte 91 // pop %rbx
9345 .byte 65,92 // pop %r12
9346 .byte 65,93 // pop %r13
9347 .byte 65,94 // pop %r14
9348 .byte 65,95 // pop %r15
9349 .byte 93 // pop %rbp
9350 .byte 255,224 // jmpq *%rax
9351
9352HIDDEN _sk_byte_tables_rgb_hsw
9353.globl _sk_byte_tables_rgb_hsw
Mike Klein86714282017-04-13 17:37:38 -04009354FUNCTION(_sk_byte_tables_rgb_hsw)
Mike Klein40de6da2017-04-07 13:09:29 -04009355_sk_byte_tables_rgb_hsw:
9356 .byte 85 // push %rbp
9357 .byte 65,87 // push %r15
9358 .byte 65,86 // push %r14
9359 .byte 65,85 // push %r13
9360 .byte 65,84 // push %r12
9361 .byte 83 // push %rbx
9362 .byte 72,173 // lods %ds:(%rsi),%rax
9363 .byte 68,139,64,24 // mov 0x18(%rax),%r8d
9364 .byte 65,255,200 // dec %r8d
9365 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
9366 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9367 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
9368 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
9369 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
9370 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
9371 .byte 68,137,197 // mov %r8d,%ebp
9372 .byte 77,137,194 // mov %r8,%r10
9373 .byte 73,193,234,32 // shr $0x20,%r10
9374 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
9375 .byte 69,137,195 // mov %r8d,%r11d
9376 .byte 77,137,199 // mov %r8,%r15
9377 .byte 73,193,239,32 // shr $0x20,%r15
9378 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
9379 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
9380 .byte 69,137,198 // mov %r8d,%r14d
9381 .byte 77,137,196 // mov %r8,%r12
9382 .byte 73,193,236,32 // shr $0x20,%r12
9383 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
9384 .byte 65,137,221 // mov %ebx,%r13d
9385 .byte 72,193,235,32 // shr $0x20,%rbx
9386 .byte 76,139,8 // mov (%rax),%r9
9387 .byte 76,139,64,8 // mov 0x8(%rax),%r8
9388 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
9389 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
9390 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
9391 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
9392 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
9393 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
9394 .byte 67,15,182,44,41 // movzbl (%r9,%r13,1),%ebp
9395 .byte 196,227,121,32,197,4 // vpinsrb $0x4,%ebp,%xmm0,%xmm0
9396 .byte 65,15,182,44,25 // movzbl (%r9,%rbx,1),%ebp
9397 .byte 196,227,121,32,197,5 // vpinsrb $0x5,%ebp,%xmm0,%xmm0
9398 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
9399 .byte 196,227,121,32,197,6 // vpinsrb $0x6,%ebp,%xmm0,%xmm0
9400 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
9401 .byte 196,227,121,32,197,7 // vpinsrb $0x7,%ebp,%xmm0,%xmm0
9402 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
9403 .byte 197,124,91,208 // vcvtdq2ps %ymm0,%ymm10
9404 .byte 189,129,128,128,59 // mov $0x3b808081,%ebp
9405 .byte 197,249,110,197 // vmovd %ebp,%xmm0
9406 .byte 196,98,125,88,200 // vpbroadcastd %xmm0,%ymm9
9407 .byte 196,193,44,89,193 // vmulps %ymm9,%ymm10,%ymm0
9408 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
9409 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
9410 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
9411 .byte 65,137,233 // mov %ebp,%r9d
9412 .byte 72,193,237,32 // shr $0x20,%rbp
9413 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
9414 .byte 65,137,218 // mov %ebx,%r10d
9415 .byte 72,193,235,32 // shr $0x20,%rbx
9416 .byte 196,227,125,57,201,1 // vextracti128 $0x1,%ymm1,%xmm1
9417 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
9418 .byte 69,137,222 // mov %r11d,%r14d
9419 .byte 73,193,235,32 // shr $0x20,%r11
9420 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
9421 .byte 69,137,252 // mov %r15d,%r12d
9422 .byte 73,193,239,32 // shr $0x20,%r15
9423 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
9424 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
9425 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
9426 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
9427 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
9428 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
9429 .byte 67,15,182,44,32 // movzbl (%r8,%r12,1),%ebp
9430 .byte 196,227,113,32,205,4 // vpinsrb $0x4,%ebp,%xmm1,%xmm1
9431 .byte 67,15,182,44,56 // movzbl (%r8,%r15,1),%ebp
9432 .byte 196,227,113,32,205,5 // vpinsrb $0x5,%ebp,%xmm1,%xmm1
9433 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
9434 .byte 196,227,113,32,205,6 // vpinsrb $0x6,%ebp,%xmm1,%xmm1
9435 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
9436 .byte 196,227,113,32,205,7 // vpinsrb $0x7,%ebp,%xmm1,%xmm1
9437 .byte 196,226,125,49,201 // vpmovzxbd %xmm1,%ymm1
9438 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
9439 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
9440 .byte 72,139,64,16 // mov 0x10(%rax),%rax
9441 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
9442 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
9443 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
9444 .byte 65,137,232 // mov %ebp,%r8d
9445 .byte 72,193,237,32 // shr $0x20,%rbp
9446 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
9447 .byte 65,137,217 // mov %ebx,%r9d
9448 .byte 72,193,235,32 // shr $0x20,%rbx
9449 .byte 196,227,125,57,210,1 // vextracti128 $0x1,%ymm2,%xmm2
9450 .byte 196,195,249,22,210,1 // vpextrq $0x1,%xmm2,%r10
9451 .byte 69,137,211 // mov %r10d,%r11d
9452 .byte 73,193,234,32 // shr $0x20,%r10
9453 .byte 196,193,249,126,214 // vmovq %xmm2,%r14
9454 .byte 69,137,247 // mov %r14d,%r15d
9455 .byte 73,193,238,32 // shr $0x20,%r14
9456 .byte 196,163,121,32,20,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm2
9457 .byte 196,227,105,32,20,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm2,%xmm2
9458 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
9459 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
9460 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
9461 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
9462 .byte 66,15,182,44,56 // movzbl (%rax,%r15,1),%ebp
9463 .byte 196,227,105,32,213,4 // vpinsrb $0x4,%ebp,%xmm2,%xmm2
9464 .byte 66,15,182,44,48 // movzbl (%rax,%r14,1),%ebp
9465 .byte 196,227,105,32,213,5 // vpinsrb $0x5,%ebp,%xmm2,%xmm2
9466 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
9467 .byte 196,227,105,32,213,6 // vpinsrb $0x6,%ebp,%xmm2,%xmm2
9468 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
9469 .byte 196,227,105,32,208,7 // vpinsrb $0x7,%eax,%xmm2,%xmm2
9470 .byte 196,226,125,49,210 // vpmovzxbd %xmm2,%ymm2
9471 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
9472 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
9473 .byte 72,173 // lods %ds:(%rsi),%rax
9474 .byte 91 // pop %rbx
9475 .byte 65,92 // pop %r12
9476 .byte 65,93 // pop %r13
9477 .byte 65,94 // pop %r14
9478 .byte 65,95 // pop %r15
9479 .byte 93 // pop %rbp
9480 .byte 255,224 // jmpq *%rax
9481
Mike Kleinc7d9c0b2017-04-17 14:43:59 -04009482HIDDEN _sk_table_r_hsw
9483.globl _sk_table_r_hsw
9484FUNCTION(_sk_table_r_hsw)
9485_sk_table_r_hsw:
9486 .byte 72,173 // lods %ds:(%rsi),%rax
9487 .byte 76,139,0 // mov (%rax),%r8
9488 .byte 139,64,8 // mov 0x8(%rax),%eax
9489 .byte 255,200 // dec %eax
9490 .byte 197,121,110,192 // vmovd %eax,%xmm8
9491 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9492 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
9493 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
9494 .byte 197,125,91,192 // vcvtps2dq %ymm0,%ymm8
9495 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
9496 .byte 196,130,53,146,4,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm0
9497 .byte 72,173 // lods %ds:(%rsi),%rax
9498 .byte 255,224 // jmpq *%rax
9499
9500HIDDEN _sk_table_g_hsw
9501.globl _sk_table_g_hsw
9502FUNCTION(_sk_table_g_hsw)
9503_sk_table_g_hsw:
9504 .byte 72,173 // lods %ds:(%rsi),%rax
9505 .byte 76,139,0 // mov (%rax),%r8
9506 .byte 139,64,8 // mov 0x8(%rax),%eax
9507 .byte 255,200 // dec %eax
9508 .byte 197,121,110,192 // vmovd %eax,%xmm8
9509 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9510 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
9511 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
9512 .byte 197,125,91,193 // vcvtps2dq %ymm1,%ymm8
9513 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
9514 .byte 196,130,53,146,12,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm1
9515 .byte 72,173 // lods %ds:(%rsi),%rax
9516 .byte 255,224 // jmpq *%rax
9517
9518HIDDEN _sk_table_b_hsw
9519.globl _sk_table_b_hsw
9520FUNCTION(_sk_table_b_hsw)
9521_sk_table_b_hsw:
9522 .byte 72,173 // lods %ds:(%rsi),%rax
9523 .byte 76,139,0 // mov (%rax),%r8
9524 .byte 139,64,8 // mov 0x8(%rax),%eax
9525 .byte 255,200 // dec %eax
9526 .byte 197,121,110,192 // vmovd %eax,%xmm8
9527 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9528 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
9529 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
9530 .byte 197,125,91,194 // vcvtps2dq %ymm2,%ymm8
9531 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
9532 .byte 196,130,53,146,20,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm2
9533 .byte 72,173 // lods %ds:(%rsi),%rax
9534 .byte 255,224 // jmpq *%rax
9535
9536HIDDEN _sk_table_a_hsw
9537.globl _sk_table_a_hsw
9538FUNCTION(_sk_table_a_hsw)
9539_sk_table_a_hsw:
9540 .byte 72,173 // lods %ds:(%rsi),%rax
9541 .byte 76,139,0 // mov (%rax),%r8
9542 .byte 139,64,8 // mov 0x8(%rax),%eax
9543 .byte 255,200 // dec %eax
9544 .byte 197,121,110,192 // vmovd %eax,%xmm8
9545 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9546 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
9547 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
9548 .byte 197,125,91,195 // vcvtps2dq %ymm3,%ymm8
9549 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
9550 .byte 196,130,53,146,28,128 // vgatherdps %ymm9,(%r8,%ymm8,4),%ymm3
9551 .byte 72,173 // lods %ds:(%rsi),%rax
9552 .byte 255,224 // jmpq *%rax
9553
Mike Klein44375172017-04-17 19:32:05 -04009554HIDDEN _sk_parametric_r_hsw
9555.globl _sk_parametric_r_hsw
9556FUNCTION(_sk_parametric_r_hsw)
9557_sk_parametric_r_hsw:
9558 .byte 72,173 // lods %ds:(%rsi),%rax
9559 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
9560 .byte 196,65,124,194,192,2 // vcmpleps %ymm8,%ymm0,%ymm8
9561 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
9562 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
9563 .byte 196,66,125,168,202 // vfmadd213ps %ymm10,%ymm0,%ymm9
9564 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
9565 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
9566 .byte 196,66,125,168,211 // vfmadd213ps %ymm11,%ymm0,%ymm10
Mike Kleinda164342017-04-19 14:33:58 -04009567 .byte 196,98,125,24,32 // vbroadcastss (%rax),%ymm12
Mike Klein44375172017-04-17 19:32:05 -04009568 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
9569 .byte 65,184,0,0,0,52 // mov $0x34000000,%r8d
9570 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
Mike Klein44375172017-04-17 19:32:05 -04009571 .byte 196,98,125,88,232 // vpbroadcastd %xmm0,%ymm13
Mike Klein44375172017-04-17 19:32:05 -04009572 .byte 65,184,255,255,127,0 // mov $0x7fffff,%r8d
9573 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
9574 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
9575 .byte 196,65,125,219,210 // vpand %ymm10,%ymm0,%ymm10
9576 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
9577 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
9578 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
9579 .byte 197,45,235,208 // vpor %ymm0,%ymm10,%ymm10
Mike Kleinda164342017-04-19 14:33:58 -04009580 .byte 65,184,119,115,248,66 // mov $0x42f87377,%r8d
Mike Klein44375172017-04-17 19:32:05 -04009581 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -04009582 .byte 196,98,125,88,240 // vpbroadcastd %xmm0,%ymm14
9583 .byte 196,66,37,186,245 // vfmsub231ps %ymm13,%ymm11,%ymm14
Mike Klein44375172017-04-17 19:32:05 -04009584 .byte 65,184,117,191,191,63 // mov $0x3fbfbf75,%r8d
9585 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -04009586 .byte 196,98,125,88,216 // vpbroadcastd %xmm0,%ymm11
9587 .byte 196,66,45,172,222 // vfnmadd213ps %ymm14,%ymm10,%ymm11
Mike Klein44375172017-04-17 19:32:05 -04009588 .byte 65,184,163,233,220,63 // mov $0x3fdce9a3,%r8d
9589 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -04009590 .byte 196,98,125,88,232 // vpbroadcastd %xmm0,%ymm13
Mike Klein44375172017-04-17 19:32:05 -04009591 .byte 65,184,249,68,180,62 // mov $0x3eb444f9,%r8d
9592 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
9593 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
9594 .byte 197,172,88,192 // vaddps %ymm0,%ymm10,%ymm0
Mike Kleinda164342017-04-19 14:33:58 -04009595 .byte 197,148,94,192 // vdivps %ymm0,%ymm13,%ymm0
9596 .byte 197,164,92,192 // vsubps %ymm0,%ymm11,%ymm0
9597 .byte 197,28,89,216 // vmulps %ymm0,%ymm12,%ymm11
Mike Klein44375172017-04-17 19:32:05 -04009598 .byte 196,67,125,8,211,1 // vroundps $0x1,%ymm11,%ymm10
9599 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
9600 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
9601 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
9602 .byte 196,98,125,88,224 // vpbroadcastd %xmm0,%ymm12
9603 .byte 65,184,81,140,242,66 // mov $0x42f28c51,%r8d
9604 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
9605 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
9606 .byte 196,65,124,88,219 // vaddps %ymm11,%ymm0,%ymm11
9607 .byte 65,184,141,188,190,63 // mov $0x3fbebc8d,%r8d
9608 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
9609 .byte 196,98,125,88,232 // vpbroadcastd %xmm0,%ymm13
9610 .byte 196,66,45,172,235 // vfnmadd213ps %ymm11,%ymm10,%ymm13
9611 .byte 65,184,254,210,221,65 // mov $0x41ddd2fe,%r8d
9612 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
9613 .byte 196,98,125,88,216 // vpbroadcastd %xmm0,%ymm11
9614 .byte 65,184,248,245,154,64 // mov $0x409af5f8,%r8d
9615 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
9616 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
9617 .byte 196,193,124,92,194 // vsubps %ymm10,%ymm0,%ymm0
9618 .byte 197,164,94,192 // vdivps %ymm0,%ymm11,%ymm0
9619 .byte 197,148,88,192 // vaddps %ymm0,%ymm13,%ymm0
9620 .byte 197,156,89,192 // vmulps %ymm0,%ymm12,%ymm0
9621 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
9622 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
9623 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
9624 .byte 196,195,125,74,193,128 // vblendvps %ymm8,%ymm9,%ymm0,%ymm0
9625 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
9626 .byte 196,65,124,95,192 // vmaxps %ymm8,%ymm0,%ymm8
9627 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
9628 .byte 197,249,110,192 // vmovd %eax,%xmm0
9629 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
9630 .byte 197,188,93,192 // vminps %ymm0,%ymm8,%ymm0
9631 .byte 72,173 // lods %ds:(%rsi),%rax
9632 .byte 255,224 // jmpq *%rax
9633
9634HIDDEN _sk_parametric_g_hsw
9635.globl _sk_parametric_g_hsw
9636FUNCTION(_sk_parametric_g_hsw)
9637_sk_parametric_g_hsw:
9638 .byte 72,173 // lods %ds:(%rsi),%rax
9639 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
9640 .byte 196,65,116,194,192,2 // vcmpleps %ymm8,%ymm1,%ymm8
9641 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
9642 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
9643 .byte 196,66,117,168,202 // vfmadd213ps %ymm10,%ymm1,%ymm9
9644 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
9645 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
9646 .byte 196,66,117,168,211 // vfmadd213ps %ymm11,%ymm1,%ymm10
Mike Kleinda164342017-04-19 14:33:58 -04009647 .byte 196,98,125,24,32 // vbroadcastss (%rax),%ymm12
Mike Klein44375172017-04-17 19:32:05 -04009648 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
9649 .byte 65,184,0,0,0,52 // mov $0x34000000,%r8d
9650 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
Mike Klein44375172017-04-17 19:32:05 -04009651 .byte 196,98,125,88,233 // vpbroadcastd %xmm1,%ymm13
Mike Klein44375172017-04-17 19:32:05 -04009652 .byte 65,184,255,255,127,0 // mov $0x7fffff,%r8d
9653 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
9654 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
9655 .byte 196,65,117,219,210 // vpand %ymm10,%ymm1,%ymm10
9656 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
9657 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
9658 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
9659 .byte 197,45,235,209 // vpor %ymm1,%ymm10,%ymm10
Mike Kleinda164342017-04-19 14:33:58 -04009660 .byte 65,184,119,115,248,66 // mov $0x42f87377,%r8d
Mike Klein44375172017-04-17 19:32:05 -04009661 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -04009662 .byte 196,98,125,88,241 // vpbroadcastd %xmm1,%ymm14
9663 .byte 196,66,37,186,245 // vfmsub231ps %ymm13,%ymm11,%ymm14
Mike Klein44375172017-04-17 19:32:05 -04009664 .byte 65,184,117,191,191,63 // mov $0x3fbfbf75,%r8d
9665 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -04009666 .byte 196,98,125,88,217 // vpbroadcastd %xmm1,%ymm11
9667 .byte 196,66,45,172,222 // vfnmadd213ps %ymm14,%ymm10,%ymm11
Mike Klein44375172017-04-17 19:32:05 -04009668 .byte 65,184,163,233,220,63 // mov $0x3fdce9a3,%r8d
9669 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -04009670 .byte 196,98,125,88,233 // vpbroadcastd %xmm1,%ymm13
Mike Klein44375172017-04-17 19:32:05 -04009671 .byte 65,184,249,68,180,62 // mov $0x3eb444f9,%r8d
9672 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
9673 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
9674 .byte 197,172,88,201 // vaddps %ymm1,%ymm10,%ymm1
Mike Kleinda164342017-04-19 14:33:58 -04009675 .byte 197,148,94,201 // vdivps %ymm1,%ymm13,%ymm1
9676 .byte 197,164,92,201 // vsubps %ymm1,%ymm11,%ymm1
9677 .byte 197,28,89,217 // vmulps %ymm1,%ymm12,%ymm11
Mike Klein44375172017-04-17 19:32:05 -04009678 .byte 196,67,125,8,211,1 // vroundps $0x1,%ymm11,%ymm10
9679 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
9680 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
9681 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
9682 .byte 196,98,125,88,225 // vpbroadcastd %xmm1,%ymm12
9683 .byte 65,184,81,140,242,66 // mov $0x42f28c51,%r8d
9684 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
9685 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
9686 .byte 196,65,116,88,219 // vaddps %ymm11,%ymm1,%ymm11
9687 .byte 65,184,141,188,190,63 // mov $0x3fbebc8d,%r8d
9688 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
9689 .byte 196,98,125,88,233 // vpbroadcastd %xmm1,%ymm13
9690 .byte 196,66,45,172,235 // vfnmadd213ps %ymm11,%ymm10,%ymm13
9691 .byte 65,184,254,210,221,65 // mov $0x41ddd2fe,%r8d
9692 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
9693 .byte 196,98,125,88,217 // vpbroadcastd %xmm1,%ymm11
9694 .byte 65,184,248,245,154,64 // mov $0x409af5f8,%r8d
9695 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
9696 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
9697 .byte 196,193,116,92,202 // vsubps %ymm10,%ymm1,%ymm1
9698 .byte 197,164,94,201 // vdivps %ymm1,%ymm11,%ymm1
9699 .byte 197,148,88,201 // vaddps %ymm1,%ymm13,%ymm1
9700 .byte 197,156,89,201 // vmulps %ymm1,%ymm12,%ymm1
9701 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
9702 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
9703 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
9704 .byte 196,195,117,74,201,128 // vblendvps %ymm8,%ymm9,%ymm1,%ymm1
9705 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
9706 .byte 196,65,116,95,192 // vmaxps %ymm8,%ymm1,%ymm8
9707 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
9708 .byte 197,249,110,200 // vmovd %eax,%xmm1
9709 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
9710 .byte 197,188,93,201 // vminps %ymm1,%ymm8,%ymm1
9711 .byte 72,173 // lods %ds:(%rsi),%rax
9712 .byte 255,224 // jmpq *%rax
9713
9714HIDDEN _sk_parametric_b_hsw
9715.globl _sk_parametric_b_hsw
9716FUNCTION(_sk_parametric_b_hsw)
9717_sk_parametric_b_hsw:
9718 .byte 72,173 // lods %ds:(%rsi),%rax
9719 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
9720 .byte 196,65,108,194,192,2 // vcmpleps %ymm8,%ymm2,%ymm8
9721 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
9722 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
9723 .byte 196,66,109,168,202 // vfmadd213ps %ymm10,%ymm2,%ymm9
9724 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
9725 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
9726 .byte 196,66,109,168,211 // vfmadd213ps %ymm11,%ymm2,%ymm10
Mike Kleinda164342017-04-19 14:33:58 -04009727 .byte 196,98,125,24,32 // vbroadcastss (%rax),%ymm12
Mike Klein44375172017-04-17 19:32:05 -04009728 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
9729 .byte 65,184,0,0,0,52 // mov $0x34000000,%r8d
9730 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
Mike Klein44375172017-04-17 19:32:05 -04009731 .byte 196,98,125,88,234 // vpbroadcastd %xmm2,%ymm13
Mike Klein44375172017-04-17 19:32:05 -04009732 .byte 65,184,255,255,127,0 // mov $0x7fffff,%r8d
9733 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
9734 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
9735 .byte 196,65,109,219,210 // vpand %ymm10,%ymm2,%ymm10
9736 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
9737 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
9738 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
9739 .byte 197,45,235,210 // vpor %ymm2,%ymm10,%ymm10
Mike Kleinda164342017-04-19 14:33:58 -04009740 .byte 65,184,119,115,248,66 // mov $0x42f87377,%r8d
Mike Klein44375172017-04-17 19:32:05 -04009741 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -04009742 .byte 196,98,125,88,242 // vpbroadcastd %xmm2,%ymm14
9743 .byte 196,66,37,186,245 // vfmsub231ps %ymm13,%ymm11,%ymm14
Mike Klein44375172017-04-17 19:32:05 -04009744 .byte 65,184,117,191,191,63 // mov $0x3fbfbf75,%r8d
9745 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -04009746 .byte 196,98,125,88,218 // vpbroadcastd %xmm2,%ymm11
9747 .byte 196,66,45,172,222 // vfnmadd213ps %ymm14,%ymm10,%ymm11
Mike Klein44375172017-04-17 19:32:05 -04009748 .byte 65,184,163,233,220,63 // mov $0x3fdce9a3,%r8d
9749 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -04009750 .byte 196,98,125,88,234 // vpbroadcastd %xmm2,%ymm13
Mike Klein44375172017-04-17 19:32:05 -04009751 .byte 65,184,249,68,180,62 // mov $0x3eb444f9,%r8d
9752 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
9753 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
9754 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
Mike Kleinda164342017-04-19 14:33:58 -04009755 .byte 197,148,94,210 // vdivps %ymm2,%ymm13,%ymm2
9756 .byte 197,164,92,210 // vsubps %ymm2,%ymm11,%ymm2
9757 .byte 197,28,89,218 // vmulps %ymm2,%ymm12,%ymm11
Mike Klein44375172017-04-17 19:32:05 -04009758 .byte 196,67,125,8,211,1 // vroundps $0x1,%ymm11,%ymm10
9759 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
9760 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
9761 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
9762 .byte 196,98,125,88,226 // vpbroadcastd %xmm2,%ymm12
9763 .byte 65,184,81,140,242,66 // mov $0x42f28c51,%r8d
9764 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
9765 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
9766 .byte 196,65,108,88,219 // vaddps %ymm11,%ymm2,%ymm11
9767 .byte 65,184,141,188,190,63 // mov $0x3fbebc8d,%r8d
9768 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
9769 .byte 196,98,125,88,234 // vpbroadcastd %xmm2,%ymm13
9770 .byte 196,66,45,172,235 // vfnmadd213ps %ymm11,%ymm10,%ymm13
9771 .byte 65,184,254,210,221,65 // mov $0x41ddd2fe,%r8d
9772 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
9773 .byte 196,98,125,88,218 // vpbroadcastd %xmm2,%ymm11
9774 .byte 65,184,248,245,154,64 // mov $0x409af5f8,%r8d
9775 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
9776 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
9777 .byte 196,193,108,92,210 // vsubps %ymm10,%ymm2,%ymm2
9778 .byte 197,164,94,210 // vdivps %ymm2,%ymm11,%ymm2
9779 .byte 197,148,88,210 // vaddps %ymm2,%ymm13,%ymm2
9780 .byte 197,156,89,210 // vmulps %ymm2,%ymm12,%ymm2
9781 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
9782 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
9783 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
9784 .byte 196,195,109,74,209,128 // vblendvps %ymm8,%ymm9,%ymm2,%ymm2
9785 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
9786 .byte 196,65,108,95,192 // vmaxps %ymm8,%ymm2,%ymm8
9787 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
9788 .byte 197,249,110,208 // vmovd %eax,%xmm2
9789 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
9790 .byte 197,188,93,210 // vminps %ymm2,%ymm8,%ymm2
9791 .byte 72,173 // lods %ds:(%rsi),%rax
9792 .byte 255,224 // jmpq *%rax
9793
9794HIDDEN _sk_parametric_a_hsw
9795.globl _sk_parametric_a_hsw
9796FUNCTION(_sk_parametric_a_hsw)
9797_sk_parametric_a_hsw:
9798 .byte 72,173 // lods %ds:(%rsi),%rax
9799 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
9800 .byte 196,65,100,194,192,2 // vcmpleps %ymm8,%ymm3,%ymm8
9801 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
9802 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
9803 .byte 196,66,101,168,202 // vfmadd213ps %ymm10,%ymm3,%ymm9
9804 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
9805 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
9806 .byte 196,66,101,168,211 // vfmadd213ps %ymm11,%ymm3,%ymm10
Mike Kleinda164342017-04-19 14:33:58 -04009807 .byte 196,98,125,24,32 // vbroadcastss (%rax),%ymm12
Mike Klein44375172017-04-17 19:32:05 -04009808 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
9809 .byte 65,184,0,0,0,52 // mov $0x34000000,%r8d
9810 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
Mike Klein44375172017-04-17 19:32:05 -04009811 .byte 196,98,125,88,235 // vpbroadcastd %xmm3,%ymm13
Mike Klein44375172017-04-17 19:32:05 -04009812 .byte 65,184,255,255,127,0 // mov $0x7fffff,%r8d
9813 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
9814 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
9815 .byte 196,65,101,219,210 // vpand %ymm10,%ymm3,%ymm10
9816 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
9817 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
9818 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
9819 .byte 197,45,235,211 // vpor %ymm3,%ymm10,%ymm10
Mike Kleinda164342017-04-19 14:33:58 -04009820 .byte 65,184,119,115,248,66 // mov $0x42f87377,%r8d
Mike Klein44375172017-04-17 19:32:05 -04009821 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -04009822 .byte 196,98,125,88,243 // vpbroadcastd %xmm3,%ymm14
9823 .byte 196,66,37,186,245 // vfmsub231ps %ymm13,%ymm11,%ymm14
Mike Klein44375172017-04-17 19:32:05 -04009824 .byte 65,184,117,191,191,63 // mov $0x3fbfbf75,%r8d
9825 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -04009826 .byte 196,98,125,88,219 // vpbroadcastd %xmm3,%ymm11
9827 .byte 196,66,45,172,222 // vfnmadd213ps %ymm14,%ymm10,%ymm11
Mike Klein44375172017-04-17 19:32:05 -04009828 .byte 65,184,163,233,220,63 // mov $0x3fdce9a3,%r8d
9829 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -04009830 .byte 196,98,125,88,235 // vpbroadcastd %xmm3,%ymm13
Mike Klein44375172017-04-17 19:32:05 -04009831 .byte 65,184,249,68,180,62 // mov $0x3eb444f9,%r8d
9832 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
9833 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
9834 .byte 197,172,88,219 // vaddps %ymm3,%ymm10,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -04009835 .byte 197,148,94,219 // vdivps %ymm3,%ymm13,%ymm3
9836 .byte 197,164,92,219 // vsubps %ymm3,%ymm11,%ymm3
9837 .byte 197,28,89,219 // vmulps %ymm3,%ymm12,%ymm11
Mike Klein44375172017-04-17 19:32:05 -04009838 .byte 196,67,125,8,211,1 // vroundps $0x1,%ymm11,%ymm10
9839 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
9840 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
9841 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
9842 .byte 196,98,125,88,227 // vpbroadcastd %xmm3,%ymm12
9843 .byte 65,184,81,140,242,66 // mov $0x42f28c51,%r8d
9844 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
9845 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
9846 .byte 196,65,100,88,219 // vaddps %ymm11,%ymm3,%ymm11
9847 .byte 65,184,141,188,190,63 // mov $0x3fbebc8d,%r8d
9848 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
9849 .byte 196,98,125,88,235 // vpbroadcastd %xmm3,%ymm13
9850 .byte 196,66,45,172,235 // vfnmadd213ps %ymm11,%ymm10,%ymm13
9851 .byte 65,184,254,210,221,65 // mov $0x41ddd2fe,%r8d
9852 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
9853 .byte 196,98,125,88,219 // vpbroadcastd %xmm3,%ymm11
9854 .byte 65,184,248,245,154,64 // mov $0x409af5f8,%r8d
9855 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
9856 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
9857 .byte 196,193,100,92,218 // vsubps %ymm10,%ymm3,%ymm3
9858 .byte 197,164,94,219 // vdivps %ymm3,%ymm11,%ymm3
9859 .byte 197,148,88,219 // vaddps %ymm3,%ymm13,%ymm3
9860 .byte 197,156,89,219 // vmulps %ymm3,%ymm12,%ymm3
9861 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
9862 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
9863 .byte 196,193,100,88,218 // vaddps %ymm10,%ymm3,%ymm3
9864 .byte 196,195,101,74,217,128 // vblendvps %ymm8,%ymm9,%ymm3,%ymm3
9865 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
9866 .byte 196,65,100,95,192 // vmaxps %ymm8,%ymm3,%ymm8
9867 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
9868 .byte 197,249,110,216 // vmovd %eax,%xmm3
9869 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
9870 .byte 197,188,93,219 // vminps %ymm3,%ymm8,%ymm3
9871 .byte 72,173 // lods %ds:(%rsi),%rax
9872 .byte 255,224 // jmpq *%rax
9873
Mike Klein7c4af542017-03-29 18:21:14 -04009874HIDDEN _sk_load_a8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04009875.globl _sk_load_a8_hsw
Mike Klein86714282017-04-13 17:37:38 -04009876FUNCTION(_sk_load_a8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009877_sk_load_a8_hsw:
9878 .byte 73,137,200 // mov %rcx,%r8
9879 .byte 72,173 // lods %ds:(%rsi),%rax
9880 .byte 72,139,0 // mov (%rax),%rax
9881 .byte 72,1,248 // add %rdi,%rax
9882 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -04009883 .byte 117,50 // jne 2358 <_sk_load_a8_hsw+0x42>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009884 .byte 197,250,126,0 // vmovq (%rax),%xmm0
9885 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
9886 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
9887 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
9888 .byte 197,249,110,200 // vmovd %eax,%xmm1
9889 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
9890 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
9891 .byte 72,173 // lods %ds:(%rsi),%rax
9892 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
9893 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
9894 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
9895 .byte 76,137,193 // mov %r8,%rcx
9896 .byte 255,224 // jmpq *%rax
9897 .byte 49,201 // xor %ecx,%ecx
9898 .byte 77,137,194 // mov %r8,%r10
9899 .byte 69,49,201 // xor %r9d,%r9d
9900 .byte 68,15,182,24 // movzbl (%rax),%r11d
9901 .byte 72,255,192 // inc %rax
9902 .byte 73,211,227 // shl %cl,%r11
9903 .byte 77,9,217 // or %r11,%r9
9904 .byte 72,131,193,8 // add $0x8,%rcx
9905 .byte 73,255,202 // dec %r10
Mike Kleinda164342017-04-19 14:33:58 -04009906 .byte 117,234 // jne 2360 <_sk_load_a8_hsw+0x4a>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009907 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -04009908 .byte 235,173 // jmp 232a <_sk_load_a8_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009909
Mike Klein21bd3e42017-04-06 16:32:29 -04009910HIDDEN _sk_gather_a8_hsw
9911.globl _sk_gather_a8_hsw
Mike Klein86714282017-04-13 17:37:38 -04009912FUNCTION(_sk_gather_a8_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -04009913_sk_gather_a8_hsw:
9914 .byte 65,87 // push %r15
9915 .byte 65,86 // push %r14
9916 .byte 65,84 // push %r12
9917 .byte 83 // push %rbx
9918 .byte 72,173 // lods %ds:(%rsi),%rax
9919 .byte 76,139,0 // mov (%rax),%r8
9920 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
9921 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
9922 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
9923 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
9924 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
9925 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
9926 .byte 65,137,193 // mov %eax,%r9d
9927 .byte 72,193,232,32 // shr $0x20,%rax
9928 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
9929 .byte 69,137,211 // mov %r10d,%r11d
9930 .byte 73,193,234,32 // shr $0x20,%r10
9931 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
9932 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
9933 .byte 65,137,222 // mov %ebx,%r14d
9934 .byte 72,193,235,32 // shr $0x20,%rbx
9935 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
9936 .byte 69,137,252 // mov %r15d,%r12d
9937 .byte 73,193,239,32 // shr $0x20,%r15
9938 .byte 196,131,121,32,4,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm0
9939 .byte 196,131,121,32,4,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm0,%xmm0
9940 .byte 71,15,182,12,8 // movzbl (%r8,%r9,1),%r9d
9941 .byte 196,195,121,32,193,2 // vpinsrb $0x2,%r9d,%xmm0,%xmm0
9942 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
9943 .byte 196,227,121,32,192,3 // vpinsrb $0x3,%eax,%xmm0,%xmm0
9944 .byte 67,15,182,4,32 // movzbl (%r8,%r12,1),%eax
9945 .byte 196,227,121,32,192,4 // vpinsrb $0x4,%eax,%xmm0,%xmm0
9946 .byte 67,15,182,4,56 // movzbl (%r8,%r15,1),%eax
9947 .byte 196,227,121,32,192,5 // vpinsrb $0x5,%eax,%xmm0,%xmm0
9948 .byte 67,15,182,4,48 // movzbl (%r8,%r14,1),%eax
9949 .byte 196,227,121,32,192,6 // vpinsrb $0x6,%eax,%xmm0,%xmm0
9950 .byte 65,15,182,4,24 // movzbl (%r8,%rbx,1),%eax
9951 .byte 196,227,121,32,192,7 // vpinsrb $0x7,%eax,%xmm0,%xmm0
9952 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
9953 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
9954 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
9955 .byte 197,249,110,200 // vmovd %eax,%xmm1
9956 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
9957 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
9958 .byte 72,173 // lods %ds:(%rsi),%rax
9959 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
9960 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
9961 .byte 197,237,239,210 // vpxor %ymm2,%ymm2,%ymm2
9962 .byte 91 // pop %rbx
9963 .byte 65,92 // pop %r12
9964 .byte 65,94 // pop %r14
9965 .byte 65,95 // pop %r15
9966 .byte 255,224 // jmpq *%rax
9967
Mike Klein7c4af542017-03-29 18:21:14 -04009968HIDDEN _sk_store_a8_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -04009969.globl _sk_store_a8_hsw
Mike Klein86714282017-04-13 17:37:38 -04009970FUNCTION(_sk_store_a8_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -04009971_sk_store_a8_hsw:
9972 .byte 72,173 // lods %ds:(%rsi),%rax
9973 .byte 76,139,8 // mov (%rax),%r9
9974 .byte 184,0,0,127,67 // mov $0x437f0000,%eax
9975 .byte 197,121,110,192 // vmovd %eax,%xmm8
9976 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
9977 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
9978 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
9979 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
9980 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
9981 .byte 196,65,57,103,192 // vpackuswb %xmm8,%xmm8,%xmm8
9982 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -04009983 .byte 117,10 // jne 2495 <_sk_store_a8_hsw+0x3b>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009984 .byte 196,65,123,17,4,57 // vmovsd %xmm8,(%r9,%rdi,1)
9985 .byte 72,173 // lods %ds:(%rsi),%rax
9986 .byte 255,224 // jmpq *%rax
9987 .byte 65,137,200 // mov %ecx,%r8d
9988 .byte 65,128,224,7 // and $0x7,%r8b
9989 .byte 65,254,200 // dec %r8b
9990 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -04009991 .byte 119,236 // ja 2491 <_sk_store_a8_hsw+0x37>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009992 .byte 196,66,121,48,192 // vpmovzxbw %xmm8,%xmm8
9993 .byte 65,15,182,192 // movzbl %r8b,%eax
Mike Kleinda164342017-04-19 14:33:58 -04009994 .byte 76,141,5,67,0,0,0 // lea 0x43(%rip),%r8 # 24f8 <_sk_store_a8_hsw+0x9e>
Mike Kleind7e06ae2017-03-29 16:33:06 -04009995 .byte 73,99,4,128 // movslq (%r8,%rax,4),%rax
9996 .byte 76,1,192 // add %r8,%rax
9997 .byte 255,224 // jmpq *%rax
9998 .byte 196,67,121,20,68,57,6,12 // vpextrb $0xc,%xmm8,0x6(%r9,%rdi,1)
9999 .byte 196,67,121,20,68,57,5,10 // vpextrb $0xa,%xmm8,0x5(%r9,%rdi,1)
10000 .byte 196,67,121,20,68,57,4,8 // vpextrb $0x8,%xmm8,0x4(%r9,%rdi,1)
10001 .byte 196,67,121,20,68,57,3,6 // vpextrb $0x6,%xmm8,0x3(%r9,%rdi,1)
10002 .byte 196,67,121,20,68,57,2,4 // vpextrb $0x4,%xmm8,0x2(%r9,%rdi,1)
10003 .byte 196,67,121,20,68,57,1,2 // vpextrb $0x2,%xmm8,0x1(%r9,%rdi,1)
10004 .byte 196,67,121,20,4,57,0 // vpextrb $0x0,%xmm8,(%r9,%rdi,1)
Mike Kleinda164342017-04-19 14:33:58 -040010005 .byte 235,154 // jmp 2491 <_sk_store_a8_hsw+0x37>
Mike Kleina3735cd2017-04-17 13:19:05 -040010006 .byte 144 // nop
10007 .byte 246,255 // idiv %bh
10008 .byte 255 // (bad)
10009 .byte 255 // (bad)
10010 .byte 238 // out %al,(%dx)
10011 .byte 255 // (bad)
10012 .byte 255 // (bad)
10013 .byte 255,230 // jmpq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -040010014 .byte 255 // (bad)
10015 .byte 255 // (bad)
10016 .byte 255 // (bad)
Mike Kleina3735cd2017-04-17 13:19:05 -040010017 .byte 222,255 // fdivrp %st,%st(7)
10018 .byte 255 // (bad)
10019 .byte 255,214 // callq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -040010020 .byte 255 // (bad)
10021 .byte 255 // (bad)
Mike Kleina3735cd2017-04-17 13:19:05 -040010022 .byte 255,206 // dec %esi
Mike Kleind7e06ae2017-03-29 16:33:06 -040010023 .byte 255 // (bad)
10024 .byte 255 // (bad)
Mike Kleina3735cd2017-04-17 13:19:05 -040010025 .byte 255,198 // inc %esi
Mike Kleind7e06ae2017-03-29 16:33:06 -040010026 .byte 255 // (bad)
10027 .byte 255 // (bad)
10028 .byte 255 // .byte 0xff
10029
Mike Kleinf809fef2017-03-31 13:52:45 -040010030HIDDEN _sk_load_g8_hsw
10031.globl _sk_load_g8_hsw
Mike Klein86714282017-04-13 17:37:38 -040010032FUNCTION(_sk_load_g8_hsw)
Mike Kleinf809fef2017-03-31 13:52:45 -040010033_sk_load_g8_hsw:
10034 .byte 73,137,200 // mov %rcx,%r8
10035 .byte 72,173 // lods %ds:(%rsi),%rax
10036 .byte 72,139,0 // mov (%rax),%rax
10037 .byte 72,1,248 // add %rdi,%rax
10038 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -040010039 .byte 117,60 // jne 2560 <_sk_load_g8_hsw+0x4c>
Mike Kleinf809fef2017-03-31 13:52:45 -040010040 .byte 197,250,126,0 // vmovq (%rax),%xmm0
10041 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
10042 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
10043 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
10044 .byte 197,249,110,200 // vmovd %eax,%xmm1
10045 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
10046 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
10047 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
10048 .byte 197,249,110,200 // vmovd %eax,%xmm1
10049 .byte 196,226,125,88,217 // vpbroadcastd %xmm1,%ymm3
10050 .byte 72,173 // lods %ds:(%rsi),%rax
10051 .byte 76,137,193 // mov %r8,%rcx
10052 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
10053 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
10054 .byte 255,224 // jmpq *%rax
10055 .byte 49,201 // xor %ecx,%ecx
10056 .byte 77,137,194 // mov %r8,%r10
10057 .byte 69,49,201 // xor %r9d,%r9d
10058 .byte 68,15,182,24 // movzbl (%rax),%r11d
10059 .byte 72,255,192 // inc %rax
10060 .byte 73,211,227 // shl %cl,%r11
10061 .byte 77,9,217 // or %r11,%r9
10062 .byte 72,131,193,8 // add $0x8,%rcx
10063 .byte 73,255,202 // dec %r10
Mike Kleinda164342017-04-19 14:33:58 -040010064 .byte 117,234 // jne 2568 <_sk_load_g8_hsw+0x54>
Mike Kleinf809fef2017-03-31 13:52:45 -040010065 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -040010066 .byte 235,163 // jmp 2528 <_sk_load_g8_hsw+0x14>
Mike Klein21bd3e42017-04-06 16:32:29 -040010067
10068HIDDEN _sk_gather_g8_hsw
10069.globl _sk_gather_g8_hsw
Mike Klein86714282017-04-13 17:37:38 -040010070FUNCTION(_sk_gather_g8_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -040010071_sk_gather_g8_hsw:
10072 .byte 65,87 // push %r15
10073 .byte 65,86 // push %r14
10074 .byte 65,84 // push %r12
10075 .byte 83 // push %rbx
10076 .byte 72,173 // lods %ds:(%rsi),%rax
10077 .byte 76,139,0 // mov (%rax),%r8
10078 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
10079 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
10080 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
10081 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
10082 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
10083 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
10084 .byte 65,137,193 // mov %eax,%r9d
10085 .byte 72,193,232,32 // shr $0x20,%rax
10086 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
10087 .byte 69,137,211 // mov %r10d,%r11d
10088 .byte 73,193,234,32 // shr $0x20,%r10
10089 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
10090 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
10091 .byte 65,137,222 // mov %ebx,%r14d
10092 .byte 72,193,235,32 // shr $0x20,%rbx
10093 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
10094 .byte 69,137,252 // mov %r15d,%r12d
10095 .byte 73,193,239,32 // shr $0x20,%r15
10096 .byte 196,131,121,32,4,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm0
10097 .byte 196,131,121,32,4,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm0,%xmm0
10098 .byte 71,15,182,12,8 // movzbl (%r8,%r9,1),%r9d
10099 .byte 196,195,121,32,193,2 // vpinsrb $0x2,%r9d,%xmm0,%xmm0
10100 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
10101 .byte 196,227,121,32,192,3 // vpinsrb $0x3,%eax,%xmm0,%xmm0
10102 .byte 67,15,182,4,32 // movzbl (%r8,%r12,1),%eax
10103 .byte 196,227,121,32,192,4 // vpinsrb $0x4,%eax,%xmm0,%xmm0
10104 .byte 67,15,182,4,56 // movzbl (%r8,%r15,1),%eax
10105 .byte 196,227,121,32,192,5 // vpinsrb $0x5,%eax,%xmm0,%xmm0
10106 .byte 67,15,182,4,48 // movzbl (%r8,%r14,1),%eax
10107 .byte 196,227,121,32,192,6 // vpinsrb $0x6,%eax,%xmm0,%xmm0
10108 .byte 65,15,182,4,24 // movzbl (%r8,%rbx,1),%eax
10109 .byte 196,227,121,32,192,7 // vpinsrb $0x7,%eax,%xmm0,%xmm0
10110 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
10111 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
10112 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
10113 .byte 197,249,110,200 // vmovd %eax,%xmm1
10114 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
10115 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
10116 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
10117 .byte 197,249,110,200 // vmovd %eax,%xmm1
10118 .byte 196,226,125,88,217 // vpbroadcastd %xmm1,%ymm3
10119 .byte 72,173 // lods %ds:(%rsi),%rax
10120 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
10121 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
10122 .byte 91 // pop %rbx
10123 .byte 65,92 // pop %r12
10124 .byte 65,94 // pop %r14
10125 .byte 65,95 // pop %r15
10126 .byte 255,224 // jmpq *%rax
Mike Kleinf809fef2017-03-31 13:52:45 -040010127
Mike Klein7d3d8722017-04-06 17:53:18 -040010128HIDDEN _sk_gather_i8_hsw
10129.globl _sk_gather_i8_hsw
Mike Klein86714282017-04-13 17:37:38 -040010130FUNCTION(_sk_gather_i8_hsw)
Mike Klein7d3d8722017-04-06 17:53:18 -040010131_sk_gather_i8_hsw:
10132 .byte 72,173 // lods %ds:(%rsi),%rax
10133 .byte 73,137,192 // mov %rax,%r8
10134 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -040010135 .byte 116,5 // je 267b <_sk_gather_i8_hsw+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040010136 .byte 76,137,192 // mov %r8,%rax
Mike Kleinda164342017-04-19 14:33:58 -040010137 .byte 235,2 // jmp 267d <_sk_gather_i8_hsw+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040010138 .byte 72,173 // lods %ds:(%rsi),%rax
10139 .byte 65,87 // push %r15
10140 .byte 65,86 // push %r14
10141 .byte 65,85 // push %r13
10142 .byte 65,84 // push %r12
10143 .byte 83 // push %rbx
10144 .byte 76,139,8 // mov (%rax),%r9
10145 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
10146 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
10147 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
10148 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
10149 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
10150 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
10151 .byte 65,137,194 // mov %eax,%r10d
10152 .byte 72,193,232,32 // shr $0x20,%rax
10153 .byte 196,193,249,126,195 // vmovq %xmm0,%r11
10154 .byte 69,137,222 // mov %r11d,%r14d
10155 .byte 73,193,235,32 // shr $0x20,%r11
10156 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
10157 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
10158 .byte 65,137,223 // mov %ebx,%r15d
10159 .byte 72,193,235,32 // shr $0x20,%rbx
10160 .byte 196,193,249,126,196 // vmovq %xmm0,%r12
10161 .byte 69,137,229 // mov %r12d,%r13d
10162 .byte 73,193,236,32 // shr $0x20,%r12
10163 .byte 196,131,121,32,4,49,0 // vpinsrb $0x0,(%r9,%r14,1),%xmm0,%xmm0
10164 .byte 196,131,121,32,4,25,1 // vpinsrb $0x1,(%r9,%r11,1),%xmm0,%xmm0
10165 .byte 196,131,121,32,4,17,2 // vpinsrb $0x2,(%r9,%r10,1),%xmm0,%xmm0
10166 .byte 196,195,121,32,4,1,3 // vpinsrb $0x3,(%r9,%rax,1),%xmm0,%xmm0
10167 .byte 196,131,121,32,4,41,4 // vpinsrb $0x4,(%r9,%r13,1),%xmm0,%xmm0
10168 .byte 196,131,121,32,4,33,5 // vpinsrb $0x5,(%r9,%r12,1),%xmm0,%xmm0
10169 .byte 196,131,121,32,4,57,6 // vpinsrb $0x6,(%r9,%r15,1),%xmm0,%xmm0
10170 .byte 196,195,121,32,4,25,7 // vpinsrb $0x7,(%r9,%rbx,1),%xmm0,%xmm0
10171 .byte 196,226,125,49,192 // vpmovzxbd %xmm0,%ymm0
10172 .byte 73,139,64,8 // mov 0x8(%r8),%rax
10173 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
10174 .byte 196,226,117,144,28,128 // vpgatherdd %ymm1,(%rax,%ymm0,4),%ymm3
10175 .byte 184,255,0,0,0 // mov $0xff,%eax
10176 .byte 197,249,110,192 // vmovd %eax,%xmm0
10177 .byte 196,226,125,88,208 // vpbroadcastd %xmm0,%ymm2
10178 .byte 197,237,219,195 // vpand %ymm3,%ymm2,%ymm0
10179 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
10180 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
10181 .byte 197,249,110,200 // vmovd %eax,%xmm1
10182 .byte 196,98,125,88,193 // vpbroadcastd %xmm1,%ymm8
10183 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
10184 .byte 197,245,114,211,8 // vpsrld $0x8,%ymm3,%ymm1
10185 .byte 197,237,219,201 // vpand %ymm1,%ymm2,%ymm1
10186 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
10187 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
10188 .byte 197,181,114,211,16 // vpsrld $0x10,%ymm3,%ymm9
10189 .byte 196,193,109,219,209 // vpand %ymm9,%ymm2,%ymm2
10190 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
10191 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
10192 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
10193 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
10194 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
10195 .byte 72,173 // lods %ds:(%rsi),%rax
10196 .byte 91 // pop %rbx
10197 .byte 65,92 // pop %r12
10198 .byte 65,93 // pop %r13
10199 .byte 65,94 // pop %r14
10200 .byte 65,95 // pop %r15
10201 .byte 255,224 // jmpq *%rax
10202
Mike Klein7c4af542017-03-29 18:21:14 -040010203HIDDEN _sk_load_565_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010204.globl _sk_load_565_hsw
Mike Klein86714282017-04-13 17:37:38 -040010205FUNCTION(_sk_load_565_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010206_sk_load_565_hsw:
10207 .byte 72,173 // lods %ds:(%rsi),%rax
10208 .byte 76,139,16 // mov (%rax),%r10
10209 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010210 .byte 15,133,149,0,0,0 // jne 282f <_sk_load_565_hsw+0xa3>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010211 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
10212 .byte 196,226,125,51,208 // vpmovzxwd %xmm0,%ymm2
10213 .byte 184,0,248,0,0 // mov $0xf800,%eax
10214 .byte 197,249,110,192 // vmovd %eax,%xmm0
10215 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
10216 .byte 197,253,219,194 // vpand %ymm2,%ymm0,%ymm0
10217 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
10218 .byte 184,8,33,132,55 // mov $0x37842108,%eax
10219 .byte 197,249,110,200 // vmovd %eax,%xmm1
10220 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
10221 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
10222 .byte 184,224,7,0,0 // mov $0x7e0,%eax
10223 .byte 197,249,110,200 // vmovd %eax,%xmm1
10224 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
10225 .byte 197,245,219,202 // vpand %ymm2,%ymm1,%ymm1
10226 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
10227 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
10228 .byte 197,249,110,216 // vmovd %eax,%xmm3
10229 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10230 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
10231 .byte 184,31,0,0,0 // mov $0x1f,%eax
10232 .byte 197,249,110,216 // vmovd %eax,%xmm3
10233 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10234 .byte 197,229,219,210 // vpand %ymm2,%ymm3,%ymm2
10235 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
10236 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
10237 .byte 197,249,110,216 // vmovd %eax,%xmm3
10238 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10239 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
10240 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
10241 .byte 197,249,110,216 // vmovd %eax,%xmm3
10242 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10243 .byte 72,173 // lods %ds:(%rsi),%rax
10244 .byte 255,224 // jmpq *%rax
10245 .byte 65,137,200 // mov %ecx,%r8d
10246 .byte 65,128,224,7 // and $0x7,%r8b
10247 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
10248 .byte 65,254,200 // dec %r8b
10249 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040010250 .byte 15,135,89,255,255,255 // ja 27a0 <_sk_load_565_hsw+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010251 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinda164342017-04-19 14:33:58 -040010252 .byte 76,141,13,74,0,0,0 // lea 0x4a(%rip),%r9 # 289c <_sk_load_565_hsw+0x110>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010253 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
10254 .byte 76,1,200 // add %r9,%rax
10255 .byte 255,224 // jmpq *%rax
10256 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
10257 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
10258 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
10259 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
10260 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
10261 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
10262 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
10263 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -040010264 .byte 233,5,255,255,255 // jmpq 27a0 <_sk_load_565_hsw+0x14>
Mike Klein21bd3e42017-04-06 16:32:29 -040010265 .byte 144 // nop
10266 .byte 243,255 // repz (bad)
10267 .byte 255 // (bad)
10268 .byte 255 // (bad)
Mike Kleinda164342017-04-19 14:33:58 -040010269 .byte 235,255 // jmp 28a1 <_sk_load_565_hsw+0x115>
Mike Klein21bd3e42017-04-06 16:32:29 -040010270 .byte 255 // (bad)
10271 .byte 255,227 // jmpq *%rbx
Mike Kleind7e06ae2017-03-29 16:33:06 -040010272 .byte 255 // (bad)
10273 .byte 255 // (bad)
10274 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010275 .byte 219,255 // (bad)
10276 .byte 255 // (bad)
10277 .byte 255,211 // callq *%rbx
Mike Kleind7e06ae2017-03-29 16:33:06 -040010278 .byte 255 // (bad)
10279 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010280 .byte 255,203 // dec %ebx
Mike Kleind7e06ae2017-03-29 16:33:06 -040010281 .byte 255 // (bad)
10282 .byte 255 // (bad)
10283 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010284 .byte 191 // .byte 0xbf
Mike Kleind7e06ae2017-03-29 16:33:06 -040010285 .byte 255 // (bad)
10286 .byte 255 // (bad)
10287 .byte 255 // .byte 0xff
10288
Mike Klein21bd3e42017-04-06 16:32:29 -040010289HIDDEN _sk_gather_565_hsw
10290.globl _sk_gather_565_hsw
Mike Klein86714282017-04-13 17:37:38 -040010291FUNCTION(_sk_gather_565_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -040010292_sk_gather_565_hsw:
10293 .byte 65,87 // push %r15
10294 .byte 65,86 // push %r14
10295 .byte 65,84 // push %r12
10296 .byte 83 // push %rbx
10297 .byte 72,173 // lods %ds:(%rsi),%rax
10298 .byte 76,139,0 // mov (%rax),%r8
10299 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
10300 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
10301 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
10302 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
10303 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
10304 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
10305 .byte 65,137,193 // mov %eax,%r9d
10306 .byte 72,193,232,32 // shr $0x20,%rax
10307 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
10308 .byte 69,137,211 // mov %r10d,%r11d
10309 .byte 73,193,234,32 // shr $0x20,%r10
10310 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
10311 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
10312 .byte 65,137,222 // mov %ebx,%r14d
10313 .byte 72,193,235,32 // shr $0x20,%rbx
10314 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
10315 .byte 69,137,252 // mov %r15d,%r12d
10316 .byte 73,193,239,32 // shr $0x20,%r15
10317 .byte 71,15,183,20,80 // movzwl (%r8,%r10,2),%r10d
10318 .byte 71,15,183,28,88 // movzwl (%r8,%r11,2),%r11d
10319 .byte 196,193,121,110,195 // vmovd %r11d,%xmm0
10320 .byte 196,193,121,196,194,1 // vpinsrw $0x1,%r10d,%xmm0,%xmm0
10321 .byte 71,15,183,12,72 // movzwl (%r8,%r9,2),%r9d
10322 .byte 196,193,121,196,193,2 // vpinsrw $0x2,%r9d,%xmm0,%xmm0
10323 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
10324 .byte 197,249,196,192,3 // vpinsrw $0x3,%eax,%xmm0,%xmm0
10325 .byte 67,15,183,4,96 // movzwl (%r8,%r12,2),%eax
10326 .byte 197,249,196,192,4 // vpinsrw $0x4,%eax,%xmm0,%xmm0
10327 .byte 67,15,183,4,120 // movzwl (%r8,%r15,2),%eax
10328 .byte 197,249,196,192,5 // vpinsrw $0x5,%eax,%xmm0,%xmm0
10329 .byte 67,15,183,4,112 // movzwl (%r8,%r14,2),%eax
10330 .byte 197,249,196,192,6 // vpinsrw $0x6,%eax,%xmm0,%xmm0
10331 .byte 65,15,183,4,88 // movzwl (%r8,%rbx,2),%eax
10332 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
10333 .byte 196,226,125,51,208 // vpmovzxwd %xmm0,%ymm2
10334 .byte 184,0,248,0,0 // mov $0xf800,%eax
10335 .byte 197,249,110,192 // vmovd %eax,%xmm0
10336 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
10337 .byte 197,253,219,194 // vpand %ymm2,%ymm0,%ymm0
10338 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
10339 .byte 184,8,33,132,55 // mov $0x37842108,%eax
10340 .byte 197,249,110,200 // vmovd %eax,%xmm1
10341 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
10342 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
10343 .byte 184,224,7,0,0 // mov $0x7e0,%eax
10344 .byte 197,249,110,200 // vmovd %eax,%xmm1
10345 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
10346 .byte 197,245,219,202 // vpand %ymm2,%ymm1,%ymm1
10347 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
10348 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
10349 .byte 197,249,110,216 // vmovd %eax,%xmm3
10350 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10351 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
10352 .byte 184,31,0,0,0 // mov $0x1f,%eax
10353 .byte 197,249,110,216 // vmovd %eax,%xmm3
10354 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10355 .byte 197,229,219,210 // vpand %ymm2,%ymm3,%ymm2
10356 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
10357 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
10358 .byte 197,249,110,216 // vmovd %eax,%xmm3
10359 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10360 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
10361 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
10362 .byte 197,249,110,216 // vmovd %eax,%xmm3
10363 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10364 .byte 72,173 // lods %ds:(%rsi),%rax
10365 .byte 91 // pop %rbx
10366 .byte 65,92 // pop %r12
10367 .byte 65,94 // pop %r14
10368 .byte 65,95 // pop %r15
10369 .byte 255,224 // jmpq *%rax
10370
Mike Klein7c4af542017-03-29 18:21:14 -040010371HIDDEN _sk_store_565_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010372.globl _sk_store_565_hsw
Mike Klein86714282017-04-13 17:37:38 -040010373FUNCTION(_sk_store_565_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010374_sk_store_565_hsw:
10375 .byte 72,173 // lods %ds:(%rsi),%rax
10376 .byte 76,139,8 // mov (%rax),%r9
10377 .byte 184,0,0,248,65 // mov $0x41f80000,%eax
10378 .byte 197,121,110,192 // vmovd %eax,%xmm8
10379 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
10380 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
10381 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
10382 .byte 196,193,53,114,241,11 // vpslld $0xb,%ymm9,%ymm9
10383 .byte 184,0,0,124,66 // mov $0x427c0000,%eax
10384 .byte 197,121,110,208 // vmovd %eax,%xmm10
10385 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
10386 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
10387 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
10388 .byte 196,193,45,114,242,5 // vpslld $0x5,%ymm10,%ymm10
10389 .byte 196,65,45,235,201 // vpor %ymm9,%ymm10,%ymm9
10390 .byte 197,60,89,194 // vmulps %ymm2,%ymm8,%ymm8
10391 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
10392 .byte 196,65,53,235,192 // vpor %ymm8,%ymm9,%ymm8
10393 .byte 196,67,125,57,193,1 // vextracti128 $0x1,%ymm8,%xmm9
10394 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
10395 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010396 .byte 117,10 // jne 2a67 <_sk_store_565_hsw+0x6c>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010397 .byte 196,65,122,127,4,121 // vmovdqu %xmm8,(%r9,%rdi,2)
10398 .byte 72,173 // lods %ds:(%rsi),%rax
10399 .byte 255,224 // jmpq *%rax
10400 .byte 65,137,200 // mov %ecx,%r8d
10401 .byte 65,128,224,7 // and $0x7,%r8b
10402 .byte 65,254,200 // dec %r8b
10403 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040010404 .byte 119,236 // ja 2a63 <_sk_store_565_hsw+0x68>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010405 .byte 65,15,182,192 // movzbl %r8b,%eax
Mike Kleinda164342017-04-19 14:33:58 -040010406 .byte 76,141,5,66,0,0,0 // lea 0x42(%rip),%r8 # 2ac4 <_sk_store_565_hsw+0xc9>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010407 .byte 73,99,4,128 // movslq (%r8,%rax,4),%rax
10408 .byte 76,1,192 // add %r8,%rax
10409 .byte 255,224 // jmpq *%rax
10410 .byte 196,67,121,21,68,121,12,6 // vpextrw $0x6,%xmm8,0xc(%r9,%rdi,2)
10411 .byte 196,67,121,21,68,121,10,5 // vpextrw $0x5,%xmm8,0xa(%r9,%rdi,2)
10412 .byte 196,67,121,21,68,121,8,4 // vpextrw $0x4,%xmm8,0x8(%r9,%rdi,2)
10413 .byte 196,67,121,21,68,121,6,3 // vpextrw $0x3,%xmm8,0x6(%r9,%rdi,2)
10414 .byte 196,67,121,21,68,121,4,2 // vpextrw $0x2,%xmm8,0x4(%r9,%rdi,2)
10415 .byte 196,67,121,21,68,121,2,1 // vpextrw $0x1,%xmm8,0x2(%r9,%rdi,2)
10416 .byte 196,67,121,21,4,121,0 // vpextrw $0x0,%xmm8,(%r9,%rdi,2)
Mike Kleinda164342017-04-19 14:33:58 -040010417 .byte 235,159 // jmp 2a63 <_sk_store_565_hsw+0x68>
Mike Klein21bd3e42017-04-06 16:32:29 -040010418 .byte 247,255 // idiv %edi
10419 .byte 255 // (bad)
10420 .byte 255 // (bad)
10421 .byte 239 // out %eax,(%dx)
10422 .byte 255 // (bad)
10423 .byte 255 // (bad)
10424 .byte 255,231 // jmpq *%rdi
Mike Kleind7e06ae2017-03-29 16:33:06 -040010425 .byte 255 // (bad)
10426 .byte 255 // (bad)
10427 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010428 .byte 223,255 // (bad)
10429 .byte 255 // (bad)
10430 .byte 255,215 // callq *%rdi
Mike Kleind7e06ae2017-03-29 16:33:06 -040010431 .byte 255 // (bad)
10432 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010433 .byte 255,207 // dec %edi
Mike Kleind7e06ae2017-03-29 16:33:06 -040010434 .byte 255 // (bad)
10435 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010436 .byte 255,199 // inc %edi
Mike Kleind7e06ae2017-03-29 16:33:06 -040010437 .byte 255 // (bad)
10438 .byte 255 // (bad)
10439 .byte 255 // .byte 0xff
10440
Mike Kleinf809fef2017-03-31 13:52:45 -040010441HIDDEN _sk_load_4444_hsw
10442.globl _sk_load_4444_hsw
Mike Klein86714282017-04-13 17:37:38 -040010443FUNCTION(_sk_load_4444_hsw)
Mike Kleinf809fef2017-03-31 13:52:45 -040010444_sk_load_4444_hsw:
10445 .byte 72,173 // lods %ds:(%rsi),%rax
10446 .byte 76,139,16 // mov (%rax),%r10
10447 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010448 .byte 15,133,179,0,0,0 // jne 2ba1 <_sk_load_4444_hsw+0xc1>
Mike Kleinf809fef2017-03-31 13:52:45 -040010449 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
10450 .byte 196,98,125,51,200 // vpmovzxwd %xmm0,%ymm9
10451 .byte 184,0,240,0,0 // mov $0xf000,%eax
10452 .byte 197,249,110,192 // vmovd %eax,%xmm0
10453 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
10454 .byte 196,193,125,219,193 // vpand %ymm9,%ymm0,%ymm0
10455 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
10456 .byte 184,137,136,136,55 // mov $0x37888889,%eax
10457 .byte 197,249,110,200 // vmovd %eax,%xmm1
10458 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
10459 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
10460 .byte 184,0,15,0,0 // mov $0xf00,%eax
10461 .byte 197,249,110,200 // vmovd %eax,%xmm1
10462 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
10463 .byte 196,193,117,219,201 // vpand %ymm9,%ymm1,%ymm1
10464 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
10465 .byte 184,137,136,136,57 // mov $0x39888889,%eax
10466 .byte 197,249,110,208 // vmovd %eax,%xmm2
10467 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
10468 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
10469 .byte 184,240,0,0,0 // mov $0xf0,%eax
10470 .byte 197,249,110,208 // vmovd %eax,%xmm2
10471 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
10472 .byte 196,193,109,219,209 // vpand %ymm9,%ymm2,%ymm2
10473 .byte 197,124,91,194 // vcvtdq2ps %ymm2,%ymm8
10474 .byte 184,137,136,136,59 // mov $0x3b888889,%eax
10475 .byte 197,249,110,208 // vmovd %eax,%xmm2
10476 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
10477 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
10478 .byte 184,15,0,0,0 // mov $0xf,%eax
10479 .byte 197,249,110,216 // vmovd %eax,%xmm3
10480 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10481 .byte 196,193,101,219,217 // vpand %ymm9,%ymm3,%ymm3
10482 .byte 197,124,91,195 // vcvtdq2ps %ymm3,%ymm8
10483 .byte 184,137,136,136,61 // mov $0x3d888889,%eax
10484 .byte 197,249,110,216 // vmovd %eax,%xmm3
10485 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10486 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
10487 .byte 72,173 // lods %ds:(%rsi),%rax
10488 .byte 255,224 // jmpq *%rax
10489 .byte 65,137,200 // mov %ecx,%r8d
10490 .byte 65,128,224,7 // and $0x7,%r8b
10491 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
10492 .byte 65,254,200 // dec %r8b
10493 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040010494 .byte 15,135,59,255,255,255 // ja 2af4 <_sk_load_4444_hsw+0x14>
Mike Kleinf809fef2017-03-31 13:52:45 -040010495 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinda164342017-04-19 14:33:58 -040010496 .byte 76,141,13,76,0,0,0 // lea 0x4c(%rip),%r9 # 2c10 <_sk_load_4444_hsw+0x130>
Mike Kleinf809fef2017-03-31 13:52:45 -040010497 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
10498 .byte 76,1,200 // add %r9,%rax
10499 .byte 255,224 // jmpq *%rax
10500 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
10501 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
10502 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
10503 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
10504 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
10505 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
10506 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
10507 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -040010508 .byte 233,231,254,255,255 // jmpq 2af4 <_sk_load_4444_hsw+0x14>
Mike Kleinf809fef2017-03-31 13:52:45 -040010509 .byte 15,31,0 // nopl (%rax)
10510 .byte 241 // icebp
10511 .byte 255 // (bad)
10512 .byte 255 // (bad)
10513 .byte 255 // (bad)
Mike Kleinda164342017-04-19 14:33:58 -040010514 .byte 233,255,255,255,225 // jmpq ffffffffe2002c18 <_sk_callback_hsw+0xffffffffe1ffeace>
Mike Kleinf809fef2017-03-31 13:52:45 -040010515 .byte 255 // (bad)
10516 .byte 255 // (bad)
10517 .byte 255 // (bad)
10518 .byte 217,255 // fcos
10519 .byte 255 // (bad)
10520 .byte 255,209 // callq *%rcx
10521 .byte 255 // (bad)
10522 .byte 255 // (bad)
10523 .byte 255,201 // dec %ecx
10524 .byte 255 // (bad)
10525 .byte 255 // (bad)
10526 .byte 255 // (bad)
10527 .byte 189 // .byte 0xbd
10528 .byte 255 // (bad)
10529 .byte 255 // (bad)
10530 .byte 255 // .byte 0xff
10531
Mike Klein21bd3e42017-04-06 16:32:29 -040010532HIDDEN _sk_gather_4444_hsw
10533.globl _sk_gather_4444_hsw
Mike Klein86714282017-04-13 17:37:38 -040010534FUNCTION(_sk_gather_4444_hsw)
Mike Klein21bd3e42017-04-06 16:32:29 -040010535_sk_gather_4444_hsw:
10536 .byte 65,87 // push %r15
10537 .byte 65,86 // push %r14
10538 .byte 65,84 // push %r12
10539 .byte 83 // push %rbx
10540 .byte 72,173 // lods %ds:(%rsi),%rax
10541 .byte 76,139,0 // mov (%rax),%r8
10542 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
10543 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
10544 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
10545 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
10546 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
10547 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
10548 .byte 65,137,193 // mov %eax,%r9d
10549 .byte 72,193,232,32 // shr $0x20,%rax
10550 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
10551 .byte 69,137,211 // mov %r10d,%r11d
10552 .byte 73,193,234,32 // shr $0x20,%r10
10553 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
10554 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
10555 .byte 65,137,222 // mov %ebx,%r14d
10556 .byte 72,193,235,32 // shr $0x20,%rbx
10557 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
10558 .byte 69,137,252 // mov %r15d,%r12d
10559 .byte 73,193,239,32 // shr $0x20,%r15
10560 .byte 71,15,183,20,80 // movzwl (%r8,%r10,2),%r10d
10561 .byte 71,15,183,28,88 // movzwl (%r8,%r11,2),%r11d
10562 .byte 196,193,121,110,195 // vmovd %r11d,%xmm0
10563 .byte 196,193,121,196,194,1 // vpinsrw $0x1,%r10d,%xmm0,%xmm0
10564 .byte 71,15,183,12,72 // movzwl (%r8,%r9,2),%r9d
10565 .byte 196,193,121,196,193,2 // vpinsrw $0x2,%r9d,%xmm0,%xmm0
10566 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
10567 .byte 197,249,196,192,3 // vpinsrw $0x3,%eax,%xmm0,%xmm0
10568 .byte 67,15,183,4,96 // movzwl (%r8,%r12,2),%eax
10569 .byte 197,249,196,192,4 // vpinsrw $0x4,%eax,%xmm0,%xmm0
10570 .byte 67,15,183,4,120 // movzwl (%r8,%r15,2),%eax
10571 .byte 197,249,196,192,5 // vpinsrw $0x5,%eax,%xmm0,%xmm0
10572 .byte 67,15,183,4,112 // movzwl (%r8,%r14,2),%eax
10573 .byte 197,249,196,192,6 // vpinsrw $0x6,%eax,%xmm0,%xmm0
10574 .byte 65,15,183,4,88 // movzwl (%r8,%rbx,2),%eax
10575 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
10576 .byte 196,98,125,51,200 // vpmovzxwd %xmm0,%ymm9
10577 .byte 184,0,240,0,0 // mov $0xf000,%eax
10578 .byte 197,249,110,192 // vmovd %eax,%xmm0
10579 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
10580 .byte 196,193,125,219,193 // vpand %ymm9,%ymm0,%ymm0
10581 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
10582 .byte 184,137,136,136,55 // mov $0x37888889,%eax
10583 .byte 197,249,110,200 // vmovd %eax,%xmm1
10584 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
10585 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
10586 .byte 184,0,15,0,0 // mov $0xf00,%eax
10587 .byte 197,249,110,200 // vmovd %eax,%xmm1
10588 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
10589 .byte 196,193,117,219,201 // vpand %ymm9,%ymm1,%ymm1
10590 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
10591 .byte 184,137,136,136,57 // mov $0x39888889,%eax
10592 .byte 197,249,110,208 // vmovd %eax,%xmm2
10593 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
10594 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
10595 .byte 184,240,0,0,0 // mov $0xf0,%eax
10596 .byte 197,249,110,208 // vmovd %eax,%xmm2
10597 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
10598 .byte 196,193,109,219,209 // vpand %ymm9,%ymm2,%ymm2
10599 .byte 197,124,91,194 // vcvtdq2ps %ymm2,%ymm8
10600 .byte 184,137,136,136,59 // mov $0x3b888889,%eax
10601 .byte 197,249,110,208 // vmovd %eax,%xmm2
10602 .byte 196,226,125,88,210 // vpbroadcastd %xmm2,%ymm2
10603 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
10604 .byte 184,15,0,0,0 // mov $0xf,%eax
10605 .byte 197,249,110,216 // vmovd %eax,%xmm3
10606 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10607 .byte 196,193,101,219,217 // vpand %ymm9,%ymm3,%ymm3
10608 .byte 197,124,91,195 // vcvtdq2ps %ymm3,%ymm8
10609 .byte 184,137,136,136,61 // mov $0x3d888889,%eax
10610 .byte 197,249,110,216 // vmovd %eax,%xmm3
10611 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
10612 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
10613 .byte 72,173 // lods %ds:(%rsi),%rax
10614 .byte 91 // pop %rbx
10615 .byte 65,92 // pop %r12
10616 .byte 65,94 // pop %r14
10617 .byte 65,95 // pop %r15
10618 .byte 255,224 // jmpq *%rax
10619
Mike Kleinf809fef2017-03-31 13:52:45 -040010620HIDDEN _sk_store_4444_hsw
10621.globl _sk_store_4444_hsw
Mike Klein86714282017-04-13 17:37:38 -040010622FUNCTION(_sk_store_4444_hsw)
Mike Kleinf809fef2017-03-31 13:52:45 -040010623_sk_store_4444_hsw:
10624 .byte 72,173 // lods %ds:(%rsi),%rax
10625 .byte 76,139,8 // mov (%rax),%r9
10626 .byte 184,0,0,112,65 // mov $0x41700000,%eax
10627 .byte 197,121,110,192 // vmovd %eax,%xmm8
10628 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
10629 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
10630 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
10631 .byte 196,193,53,114,241,12 // vpslld $0xc,%ymm9,%ymm9
10632 .byte 197,60,89,209 // vmulps %ymm1,%ymm8,%ymm10
10633 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
10634 .byte 196,193,45,114,242,8 // vpslld $0x8,%ymm10,%ymm10
10635 .byte 196,65,45,235,201 // vpor %ymm9,%ymm10,%ymm9
10636 .byte 197,60,89,210 // vmulps %ymm2,%ymm8,%ymm10
10637 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
10638 .byte 196,193,45,114,242,4 // vpslld $0x4,%ymm10,%ymm10
10639 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
10640 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
10641 .byte 196,65,45,235,192 // vpor %ymm8,%ymm10,%ymm8
10642 .byte 196,65,53,235,192 // vpor %ymm8,%ymm9,%ymm8
10643 .byte 196,67,125,57,193,1 // vextracti128 $0x1,%ymm8,%xmm9
10644 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
10645 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010646 .byte 117,10 // jne 2dff <_sk_store_4444_hsw+0x72>
Mike Kleinf809fef2017-03-31 13:52:45 -040010647 .byte 196,65,122,127,4,121 // vmovdqu %xmm8,(%r9,%rdi,2)
10648 .byte 72,173 // lods %ds:(%rsi),%rax
10649 .byte 255,224 // jmpq *%rax
10650 .byte 65,137,200 // mov %ecx,%r8d
10651 .byte 65,128,224,7 // and $0x7,%r8b
10652 .byte 65,254,200 // dec %r8b
10653 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040010654 .byte 119,236 // ja 2dfb <_sk_store_4444_hsw+0x6e>
Mike Kleinf809fef2017-03-31 13:52:45 -040010655 .byte 65,15,182,192 // movzbl %r8b,%eax
Mike Kleinda164342017-04-19 14:33:58 -040010656 .byte 76,141,5,66,0,0,0 // lea 0x42(%rip),%r8 # 2e5c <_sk_store_4444_hsw+0xcf>
Mike Kleinf809fef2017-03-31 13:52:45 -040010657 .byte 73,99,4,128 // movslq (%r8,%rax,4),%rax
10658 .byte 76,1,192 // add %r8,%rax
10659 .byte 255,224 // jmpq *%rax
10660 .byte 196,67,121,21,68,121,12,6 // vpextrw $0x6,%xmm8,0xc(%r9,%rdi,2)
10661 .byte 196,67,121,21,68,121,10,5 // vpextrw $0x5,%xmm8,0xa(%r9,%rdi,2)
10662 .byte 196,67,121,21,68,121,8,4 // vpextrw $0x4,%xmm8,0x8(%r9,%rdi,2)
10663 .byte 196,67,121,21,68,121,6,3 // vpextrw $0x3,%xmm8,0x6(%r9,%rdi,2)
10664 .byte 196,67,121,21,68,121,4,2 // vpextrw $0x2,%xmm8,0x4(%r9,%rdi,2)
10665 .byte 196,67,121,21,68,121,2,1 // vpextrw $0x1,%xmm8,0x2(%r9,%rdi,2)
10666 .byte 196,67,121,21,4,121,0 // vpextrw $0x0,%xmm8,(%r9,%rdi,2)
Mike Kleinda164342017-04-19 14:33:58 -040010667 .byte 235,159 // jmp 2dfb <_sk_store_4444_hsw+0x6e>
Mike Klein21bd3e42017-04-06 16:32:29 -040010668 .byte 247,255 // idiv %edi
Mike Kleinf809fef2017-03-31 13:52:45 -040010669 .byte 255 // (bad)
10670 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010671 .byte 239 // out %eax,(%dx)
Mike Kleinf809fef2017-03-31 13:52:45 -040010672 .byte 255 // (bad)
10673 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010674 .byte 255,231 // jmpq *%rdi
Mike Kleinf809fef2017-03-31 13:52:45 -040010675 .byte 255 // (bad)
10676 .byte 255 // (bad)
10677 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010678 .byte 223,255 // (bad)
Mike Kleinf809fef2017-03-31 13:52:45 -040010679 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010680 .byte 255,215 // callq *%rdi
Mike Kleinf809fef2017-03-31 13:52:45 -040010681 .byte 255 // (bad)
10682 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010683 .byte 255,207 // dec %edi
Mike Kleinf809fef2017-03-31 13:52:45 -040010684 .byte 255 // (bad)
10685 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040010686 .byte 255,199 // inc %edi
Mike Kleinf809fef2017-03-31 13:52:45 -040010687 .byte 255 // (bad)
10688 .byte 255 // (bad)
10689 .byte 255 // .byte 0xff
10690
Mike Klein7c4af542017-03-29 18:21:14 -040010691HIDDEN _sk_load_8888_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010692.globl _sk_load_8888_hsw
Mike Klein86714282017-04-13 17:37:38 -040010693FUNCTION(_sk_load_8888_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010694_sk_load_8888_hsw:
10695 .byte 73,137,200 // mov %rcx,%r8
10696 .byte 72,173 // lods %ds:(%rsi),%rax
10697 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
10698 .byte 76,3,8 // add (%rax),%r9
10699 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -040010700 .byte 117,104 // jne 2ef5 <_sk_load_8888_hsw+0x7d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010701 .byte 196,193,126,111,25 // vmovdqu (%r9),%ymm3
10702 .byte 184,255,0,0,0 // mov $0xff,%eax
10703 .byte 197,249,110,192 // vmovd %eax,%xmm0
10704 .byte 196,226,125,88,208 // vpbroadcastd %xmm0,%ymm2
10705 .byte 197,237,219,195 // vpand %ymm3,%ymm2,%ymm0
10706 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
10707 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
10708 .byte 197,249,110,200 // vmovd %eax,%xmm1
10709 .byte 196,98,125,88,193 // vpbroadcastd %xmm1,%ymm8
10710 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
10711 .byte 197,245,114,211,8 // vpsrld $0x8,%ymm3,%ymm1
10712 .byte 197,237,219,201 // vpand %ymm1,%ymm2,%ymm1
10713 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
10714 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
10715 .byte 197,181,114,211,16 // vpsrld $0x10,%ymm3,%ymm9
10716 .byte 196,193,109,219,209 // vpand %ymm9,%ymm2,%ymm2
10717 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
10718 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
10719 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
10720 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
10721 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
10722 .byte 72,173 // lods %ds:(%rsi),%rax
10723 .byte 76,137,193 // mov %r8,%rcx
10724 .byte 255,224 // jmpq *%rax
10725 .byte 185,8,0,0,0 // mov $0x8,%ecx
10726 .byte 68,41,193 // sub %r8d,%ecx
10727 .byte 192,225,3 // shl $0x3,%cl
10728 .byte 72,199,192,255,255,255,255 // mov $0xffffffffffffffff,%rax
10729 .byte 72,211,232 // shr %cl,%rax
10730 .byte 196,225,249,110,192 // vmovq %rax,%xmm0
10731 .byte 196,226,125,33,192 // vpmovsxbd %xmm0,%ymm0
10732 .byte 196,194,125,140,25 // vpmaskmovd (%r9),%ymm0,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -040010733 .byte 233,116,255,255,255 // jmpq 2e92 <_sk_load_8888_hsw+0x1a>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010734
Mike Kleindec4ea82017-04-06 15:04:05 -040010735HIDDEN _sk_gather_8888_hsw
10736.globl _sk_gather_8888_hsw
Mike Klein86714282017-04-13 17:37:38 -040010737FUNCTION(_sk_gather_8888_hsw)
Mike Kleindec4ea82017-04-06 15:04:05 -040010738_sk_gather_8888_hsw:
10739 .byte 72,173 // lods %ds:(%rsi),%rax
10740 .byte 76,139,0 // mov (%rax),%r8
10741 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
10742 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
10743 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
10744 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
10745 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
10746 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
10747 .byte 196,194,117,144,28,128 // vpgatherdd %ymm1,(%r8,%ymm0,4),%ymm3
10748 .byte 184,255,0,0,0 // mov $0xff,%eax
10749 .byte 197,249,110,192 // vmovd %eax,%xmm0
10750 .byte 196,226,125,88,208 // vpbroadcastd %xmm0,%ymm2
10751 .byte 197,237,219,195 // vpand %ymm3,%ymm2,%ymm0
10752 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
10753 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
10754 .byte 197,249,110,200 // vmovd %eax,%xmm1
10755 .byte 196,98,125,88,193 // vpbroadcastd %xmm1,%ymm8
10756 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
10757 .byte 197,245,114,211,8 // vpsrld $0x8,%ymm3,%ymm1
10758 .byte 197,237,219,201 // vpand %ymm1,%ymm2,%ymm1
10759 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
10760 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
10761 .byte 197,181,114,211,16 // vpsrld $0x10,%ymm3,%ymm9
10762 .byte 196,193,109,219,209 // vpand %ymm9,%ymm2,%ymm2
10763 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
10764 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
10765 .byte 197,229,114,211,24 // vpsrld $0x18,%ymm3,%ymm3
10766 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
10767 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
10768 .byte 72,173 // lods %ds:(%rsi),%rax
10769 .byte 255,224 // jmpq *%rax
10770
Mike Klein7c4af542017-03-29 18:21:14 -040010771HIDDEN _sk_store_8888_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010772.globl _sk_store_8888_hsw
Mike Klein86714282017-04-13 17:37:38 -040010773FUNCTION(_sk_store_8888_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010774_sk_store_8888_hsw:
10775 .byte 73,137,200 // mov %rcx,%r8
10776 .byte 72,173 // lods %ds:(%rsi),%rax
10777 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
10778 .byte 76,3,8 // add (%rax),%r9
10779 .byte 184,0,0,127,67 // mov $0x437f0000,%eax
10780 .byte 197,121,110,192 // vmovd %eax,%xmm8
10781 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
10782 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
10783 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
10784 .byte 197,60,89,209 // vmulps %ymm1,%ymm8,%ymm10
10785 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
10786 .byte 196,193,45,114,242,8 // vpslld $0x8,%ymm10,%ymm10
10787 .byte 196,65,45,235,201 // vpor %ymm9,%ymm10,%ymm9
10788 .byte 197,60,89,210 // vmulps %ymm2,%ymm8,%ymm10
10789 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
10790 .byte 196,193,45,114,242,16 // vpslld $0x10,%ymm10,%ymm10
10791 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
10792 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
10793 .byte 196,193,61,114,240,24 // vpslld $0x18,%ymm8,%ymm8
10794 .byte 196,65,45,235,192 // vpor %ymm8,%ymm10,%ymm8
10795 .byte 196,65,53,235,192 // vpor %ymm8,%ymm9,%ymm8
10796 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -040010797 .byte 117,12 // jne 3018 <_sk_store_8888_hsw+0x74>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010798 .byte 196,65,126,127,1 // vmovdqu %ymm8,(%r9)
10799 .byte 72,173 // lods %ds:(%rsi),%rax
10800 .byte 76,137,193 // mov %r8,%rcx
10801 .byte 255,224 // jmpq *%rax
10802 .byte 185,8,0,0,0 // mov $0x8,%ecx
10803 .byte 68,41,193 // sub %r8d,%ecx
10804 .byte 192,225,3 // shl $0x3,%cl
10805 .byte 72,199,192,255,255,255,255 // mov $0xffffffffffffffff,%rax
10806 .byte 72,211,232 // shr %cl,%rax
10807 .byte 196,97,249,110,200 // vmovq %rax,%xmm9
10808 .byte 196,66,125,33,201 // vpmovsxbd %xmm9,%ymm9
10809 .byte 196,66,53,142,1 // vpmaskmovd %ymm8,%ymm9,(%r9)
Mike Kleinda164342017-04-19 14:33:58 -040010810 .byte 235,211 // jmp 3011 <_sk_store_8888_hsw+0x6d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010811
Mike Klein7c4af542017-03-29 18:21:14 -040010812HIDDEN _sk_load_f16_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010813.globl _sk_load_f16_hsw
Mike Klein86714282017-04-13 17:37:38 -040010814FUNCTION(_sk_load_f16_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010815_sk_load_f16_hsw:
10816 .byte 72,173 // lods %ds:(%rsi),%rax
10817 .byte 72,139,0 // mov (%rax),%rax
10818 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010819 .byte 117,97 // jne 30a9 <_sk_load_f16_hsw+0x6b>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010820 .byte 197,121,16,4,248 // vmovupd (%rax,%rdi,8),%xmm8
10821 .byte 197,249,16,84,248,16 // vmovupd 0x10(%rax,%rdi,8),%xmm2
10822 .byte 197,249,16,92,248,32 // vmovupd 0x20(%rax,%rdi,8),%xmm3
10823 .byte 197,122,111,76,248,48 // vmovdqu 0x30(%rax,%rdi,8),%xmm9
10824 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
10825 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
10826 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
10827 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
10828 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
10829 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
10830 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
10831 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
10832 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
10833 .byte 196,226,125,19,192 // vcvtph2ps %xmm0,%ymm0
10834 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
10835 .byte 196,226,125,19,201 // vcvtph2ps %xmm1,%ymm1
10836 .byte 197,177,108,211 // vpunpcklqdq %xmm3,%xmm9,%xmm2
10837 .byte 196,226,125,19,210 // vcvtph2ps %xmm2,%ymm2
10838 .byte 197,177,109,219 // vpunpckhqdq %xmm3,%xmm9,%xmm3
10839 .byte 196,226,125,19,219 // vcvtph2ps %xmm3,%ymm3
10840 .byte 72,173 // lods %ds:(%rsi),%rax
10841 .byte 255,224 // jmpq *%rax
10842 .byte 197,123,16,4,248 // vmovsd (%rax,%rdi,8),%xmm8
10843 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
10844 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010845 .byte 116,79 // je 3108 <_sk_load_f16_hsw+0xca>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010846 .byte 197,57,22,68,248,8 // vmovhpd 0x8(%rax,%rdi,8),%xmm8,%xmm8
10847 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010848 .byte 114,67 // jb 3108 <_sk_load_f16_hsw+0xca>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010849 .byte 197,251,16,84,248,16 // vmovsd 0x10(%rax,%rdi,8),%xmm2
10850 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010851 .byte 116,68 // je 3115 <_sk_load_f16_hsw+0xd7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010852 .byte 197,233,22,84,248,24 // vmovhpd 0x18(%rax,%rdi,8),%xmm2,%xmm2
10853 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010854 .byte 114,56 // jb 3115 <_sk_load_f16_hsw+0xd7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010855 .byte 197,251,16,92,248,32 // vmovsd 0x20(%rax,%rdi,8),%xmm3
10856 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010857 .byte 15,132,114,255,255,255 // je 305f <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010858 .byte 197,225,22,92,248,40 // vmovhpd 0x28(%rax,%rdi,8),%xmm3,%xmm3
10859 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010860 .byte 15,130,98,255,255,255 // jb 305f <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010861 .byte 197,122,126,76,248,48 // vmovq 0x30(%rax,%rdi,8),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040010862 .byte 233,87,255,255,255 // jmpq 305f <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010863 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
10864 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040010865 .byte 233,74,255,255,255 // jmpq 305f <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010866 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040010867 .byte 233,65,255,255,255 // jmpq 305f <_sk_load_f16_hsw+0x21>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010868
Mike Klein5f055f02017-04-06 20:02:11 -040010869HIDDEN _sk_gather_f16_hsw
10870.globl _sk_gather_f16_hsw
Mike Klein86714282017-04-13 17:37:38 -040010871FUNCTION(_sk_gather_f16_hsw)
Mike Klein5f055f02017-04-06 20:02:11 -040010872_sk_gather_f16_hsw:
10873 .byte 72,173 // lods %ds:(%rsi),%rax
10874 .byte 76,139,0 // mov (%rax),%r8
10875 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
10876 .byte 196,226,125,88,80,16 // vpbroadcastd 0x10(%rax),%ymm2
10877 .byte 196,226,109,64,201 // vpmulld %ymm1,%ymm2,%ymm1
10878 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
10879 .byte 197,245,254,192 // vpaddd %ymm0,%ymm1,%ymm0
10880 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
10881 .byte 197,237,118,210 // vpcmpeqd %ymm2,%ymm2,%ymm2
10882 .byte 196,194,237,144,28,192 // vpgatherdq %ymm2,(%r8,%xmm0,8),%ymm3
10883 .byte 196,227,125,57,192,1 // vextracti128 $0x1,%ymm0,%xmm0
10884 .byte 196,194,245,144,20,192 // vpgatherdq %ymm1,(%r8,%xmm0,8),%ymm2
10885 .byte 196,227,125,57,216,1 // vextracti128 $0x1,%ymm3,%xmm0
10886 .byte 196,227,125,57,209,1 // vextracti128 $0x1,%ymm2,%xmm1
10887 .byte 197,97,97,192 // vpunpcklwd %xmm0,%xmm3,%xmm8
10888 .byte 197,225,105,192 // vpunpckhwd %xmm0,%xmm3,%xmm0
10889 .byte 197,233,97,217 // vpunpcklwd %xmm1,%xmm2,%xmm3
10890 .byte 197,233,105,201 // vpunpckhwd %xmm1,%xmm2,%xmm1
10891 .byte 197,57,97,200 // vpunpcklwd %xmm0,%xmm8,%xmm9
10892 .byte 197,57,105,192 // vpunpckhwd %xmm0,%xmm8,%xmm8
10893 .byte 197,225,97,209 // vpunpcklwd %xmm1,%xmm3,%xmm2
10894 .byte 197,225,105,217 // vpunpckhwd %xmm1,%xmm3,%xmm3
10895 .byte 197,177,108,194 // vpunpcklqdq %xmm2,%xmm9,%xmm0
10896 .byte 196,226,125,19,192 // vcvtph2ps %xmm0,%ymm0
10897 .byte 197,177,109,202 // vpunpckhqdq %xmm2,%xmm9,%xmm1
10898 .byte 196,226,125,19,201 // vcvtph2ps %xmm1,%ymm1
10899 .byte 197,185,108,211 // vpunpcklqdq %xmm3,%xmm8,%xmm2
10900 .byte 196,226,125,19,210 // vcvtph2ps %xmm2,%ymm2
10901 .byte 197,185,109,219 // vpunpckhqdq %xmm3,%xmm8,%xmm3
10902 .byte 196,226,125,19,219 // vcvtph2ps %xmm3,%ymm3
10903 .byte 72,173 // lods %ds:(%rsi),%rax
10904 .byte 255,224 // jmpq *%rax
10905
Mike Klein7c4af542017-03-29 18:21:14 -040010906HIDDEN _sk_store_f16_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040010907.globl _sk_store_f16_hsw
Mike Klein86714282017-04-13 17:37:38 -040010908FUNCTION(_sk_store_f16_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040010909_sk_store_f16_hsw:
10910 .byte 72,173 // lods %ds:(%rsi),%rax
10911 .byte 72,139,0 // mov (%rax),%rax
10912 .byte 196,195,125,29,192,4 // vcvtps2ph $0x4,%ymm0,%xmm8
10913 .byte 196,195,125,29,201,4 // vcvtps2ph $0x4,%ymm1,%xmm9
10914 .byte 196,195,125,29,210,4 // vcvtps2ph $0x4,%ymm2,%xmm10
10915 .byte 196,195,125,29,219,4 // vcvtps2ph $0x4,%ymm3,%xmm11
10916 .byte 196,65,57,97,225 // vpunpcklwd %xmm9,%xmm8,%xmm12
10917 .byte 196,65,57,105,193 // vpunpckhwd %xmm9,%xmm8,%xmm8
10918 .byte 196,65,41,97,203 // vpunpcklwd %xmm11,%xmm10,%xmm9
10919 .byte 196,65,41,105,235 // vpunpckhwd %xmm11,%xmm10,%xmm13
10920 .byte 196,65,25,98,217 // vpunpckldq %xmm9,%xmm12,%xmm11
10921 .byte 196,65,25,106,209 // vpunpckhdq %xmm9,%xmm12,%xmm10
10922 .byte 196,65,57,98,205 // vpunpckldq %xmm13,%xmm8,%xmm9
10923 .byte 196,65,57,106,197 // vpunpckhdq %xmm13,%xmm8,%xmm8
10924 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010925 .byte 117,27 // jne 320d <_sk_store_f16_hsw+0x65>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010926 .byte 197,120,17,28,248 // vmovups %xmm11,(%rax,%rdi,8)
10927 .byte 197,120,17,84,248,16 // vmovups %xmm10,0x10(%rax,%rdi,8)
10928 .byte 197,120,17,76,248,32 // vmovups %xmm9,0x20(%rax,%rdi,8)
10929 .byte 197,122,127,68,248,48 // vmovdqu %xmm8,0x30(%rax,%rdi,8)
10930 .byte 72,173 // lods %ds:(%rsi),%rax
10931 .byte 255,224 // jmpq *%rax
10932 .byte 197,121,214,28,248 // vmovq %xmm11,(%rax,%rdi,8)
10933 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010934 .byte 116,241 // je 3209 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010935 .byte 197,121,23,92,248,8 // vmovhpd %xmm11,0x8(%rax,%rdi,8)
10936 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010937 .byte 114,229 // jb 3209 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010938 .byte 197,121,214,84,248,16 // vmovq %xmm10,0x10(%rax,%rdi,8)
Mike Kleinda164342017-04-19 14:33:58 -040010939 .byte 116,221 // je 3209 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010940 .byte 197,121,23,84,248,24 // vmovhpd %xmm10,0x18(%rax,%rdi,8)
10941 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010942 .byte 114,209 // jb 3209 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010943 .byte 197,121,214,76,248,32 // vmovq %xmm9,0x20(%rax,%rdi,8)
Mike Kleinda164342017-04-19 14:33:58 -040010944 .byte 116,201 // je 3209 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010945 .byte 197,121,23,76,248,40 // vmovhpd %xmm9,0x28(%rax,%rdi,8)
10946 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010947 .byte 114,189 // jb 3209 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010948 .byte 197,121,214,68,248,48 // vmovq %xmm8,0x30(%rax,%rdi,8)
Mike Kleinda164342017-04-19 14:33:58 -040010949 .byte 235,181 // jmp 3209 <_sk_store_f16_hsw+0x61>
Mike Kleind7e06ae2017-03-29 16:33:06 -040010950
Mike Klein3146bb92017-04-05 14:45:02 -040010951HIDDEN _sk_load_u16_be_hsw
10952.globl _sk_load_u16_be_hsw
Mike Klein86714282017-04-13 17:37:38 -040010953FUNCTION(_sk_load_u16_be_hsw)
Mike Klein3146bb92017-04-05 14:45:02 -040010954_sk_load_u16_be_hsw:
10955 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3821732017-04-17 10:58:05 -040010956 .byte 76,139,0 // mov (%rax),%r8
10957 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
Mike Klein3146bb92017-04-05 14:45:02 -040010958 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040010959 .byte 15,133,205,0,0,0 // jne 3337 <_sk_load_u16_be_hsw+0xe3>
Mike Kleinb3821732017-04-17 10:58:05 -040010960 .byte 196,65,121,16,4,64 // vmovupd (%r8,%rax,2),%xmm8
10961 .byte 196,193,121,16,84,64,16 // vmovupd 0x10(%r8,%rax,2),%xmm2
10962 .byte 196,193,121,16,92,64,32 // vmovupd 0x20(%r8,%rax,2),%xmm3
10963 .byte 196,65,122,111,76,64,48 // vmovdqu 0x30(%r8,%rax,2),%xmm9
Mike Klein3146bb92017-04-05 14:45:02 -040010964 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
10965 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
10966 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
10967 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
10968 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
10969 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
10970 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
10971 .byte 197,113,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm11
10972 .byte 184,128,0,128,55 // mov $0x37800080,%eax
10973 .byte 197,249,110,192 // vmovd %eax,%xmm0
10974 .byte 196,98,125,88,208 // vpbroadcastd %xmm0,%ymm10
10975 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
10976 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
10977 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
10978 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
10979 .byte 196,226,125,51,192 // vpmovzxwd %xmm0,%ymm0
10980 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
10981 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
10982 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
10983 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
10984 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
10985 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
10986 .byte 196,226,125,51,201 // vpmovzxwd %xmm1,%ymm1
10987 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
10988 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
10989 .byte 196,193,49,108,211 // vpunpcklqdq %xmm11,%xmm9,%xmm2
10990 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
10991 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
10992 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
10993 .byte 196,226,125,51,210 // vpmovzxwd %xmm2,%ymm2
10994 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
10995 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
10996 .byte 196,193,49,109,219 // vpunpckhqdq %xmm11,%xmm9,%xmm3
10997 .byte 197,185,113,243,8 // vpsllw $0x8,%xmm3,%xmm8
10998 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
10999 .byte 197,185,235,219 // vpor %xmm3,%xmm8,%xmm3
11000 .byte 196,226,125,51,219 // vpmovzxwd %xmm3,%ymm3
11001 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
11002 .byte 197,172,89,219 // vmulps %ymm3,%ymm10,%ymm3
11003 .byte 72,173 // lods %ds:(%rsi),%rax
11004 .byte 255,224 // jmpq *%rax
Mike Kleinb3821732017-04-17 10:58:05 -040011005 .byte 196,65,123,16,4,64 // vmovsd (%r8,%rax,2),%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040011006 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
11007 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011008 .byte 116,85 // je 339d <_sk_load_u16_be_hsw+0x149>
Mike Kleinb3821732017-04-17 10:58:05 -040011009 .byte 196,65,57,22,68,64,8 // vmovhpd 0x8(%r8,%rax,2),%xmm8,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040011010 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011011 .byte 114,72 // jb 339d <_sk_load_u16_be_hsw+0x149>
Mike Kleinb3821732017-04-17 10:58:05 -040011012 .byte 196,193,123,16,84,64,16 // vmovsd 0x10(%r8,%rax,2),%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040011013 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011014 .byte 116,72 // je 33aa <_sk_load_u16_be_hsw+0x156>
Mike Kleinb3821732017-04-17 10:58:05 -040011015 .byte 196,193,105,22,84,64,24 // vmovhpd 0x18(%r8,%rax,2),%xmm2,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040011016 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011017 .byte 114,59 // jb 33aa <_sk_load_u16_be_hsw+0x156>
Mike Kleinb3821732017-04-17 10:58:05 -040011018 .byte 196,193,123,16,92,64,32 // vmovsd 0x20(%r8,%rax,2),%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040011019 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011020 .byte 15,132,5,255,255,255 // je 3285 <_sk_load_u16_be_hsw+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040011021 .byte 196,193,97,22,92,64,40 // vmovhpd 0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040011022 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011023 .byte 15,130,244,254,255,255 // jb 3285 <_sk_load_u16_be_hsw+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040011024 .byte 196,65,122,126,76,64,48 // vmovq 0x30(%r8,%rax,2),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040011025 .byte 233,232,254,255,255 // jmpq 3285 <_sk_load_u16_be_hsw+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040011026 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
11027 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040011028 .byte 233,219,254,255,255 // jmpq 3285 <_sk_load_u16_be_hsw+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040011029 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040011030 .byte 233,210,254,255,255 // jmpq 3285 <_sk_load_u16_be_hsw+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040011031
11032HIDDEN _sk_load_rgb_u16_be_hsw
11033.globl _sk_load_rgb_u16_be_hsw
11034FUNCTION(_sk_load_rgb_u16_be_hsw)
11035_sk_load_rgb_u16_be_hsw:
11036 .byte 72,173 // lods %ds:(%rsi),%rax
11037 .byte 76,139,0 // mov (%rax),%r8
11038 .byte 72,141,4,127 // lea (%rdi,%rdi,2),%rax
11039 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011040 .byte 15,133,211,0,0,0 // jne 3498 <_sk_load_rgb_u16_be_hsw+0xe5>
Mike Kleinb3821732017-04-17 10:58:05 -040011041 .byte 196,193,122,111,4,64 // vmovdqu (%r8,%rax,2),%xmm0
11042 .byte 196,193,122,111,84,64,12 // vmovdqu 0xc(%r8,%rax,2),%xmm2
11043 .byte 196,193,122,111,76,64,24 // vmovdqu 0x18(%r8,%rax,2),%xmm1
11044 .byte 196,193,122,111,92,64,32 // vmovdqu 0x20(%r8,%rax,2),%xmm3
11045 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
11046 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
11047 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
11048 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
11049 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
11050 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
11051 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
11052 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
11053 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
11054 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
11055 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
11056 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
11057 .byte 197,241,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm3
11058 .byte 184,128,0,128,55 // mov $0x37800080,%eax
11059 .byte 197,249,110,192 // vmovd %eax,%xmm0
11060 .byte 196,98,125,88,208 // vpbroadcastd %xmm0,%ymm10
11061 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
11062 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
11063 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
11064 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
11065 .byte 196,226,125,51,192 // vpmovzxwd %xmm0,%ymm0
11066 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
11067 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
11068 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
11069 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
11070 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
11071 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
11072 .byte 196,226,125,51,201 // vpmovzxwd %xmm1,%ymm1
11073 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
11074 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
11075 .byte 197,177,108,211 // vpunpcklqdq %xmm3,%xmm9,%xmm2
11076 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
11077 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
11078 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
11079 .byte 196,226,125,51,210 // vpmovzxwd %xmm2,%ymm2
11080 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
11081 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
11082 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
11083 .byte 197,249,110,216 // vmovd %eax,%xmm3
11084 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
11085 .byte 72,173 // lods %ds:(%rsi),%rax
11086 .byte 255,224 // jmpq *%rax
11087 .byte 196,193,121,110,4,64 // vmovd (%r8,%rax,2),%xmm0
11088 .byte 196,193,121,196,68,64,4,2 // vpinsrw $0x2,0x4(%r8,%rax,2),%xmm0,%xmm0
11089 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011090 .byte 117,5 // jne 34b1 <_sk_load_rgb_u16_be_hsw+0xfe>
11091 .byte 233,72,255,255,255 // jmpq 33f9 <_sk_load_rgb_u16_be_hsw+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040011092 .byte 196,193,121,110,76,64,6 // vmovd 0x6(%r8,%rax,2),%xmm1
11093 .byte 196,65,113,196,68,64,10,2 // vpinsrw $0x2,0xa(%r8,%rax,2),%xmm1,%xmm8
11094 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011095 .byte 114,26 // jb 34e0 <_sk_load_rgb_u16_be_hsw+0x12d>
Mike Kleinb3821732017-04-17 10:58:05 -040011096 .byte 196,193,121,110,76,64,12 // vmovd 0xc(%r8,%rax,2),%xmm1
11097 .byte 196,193,113,196,84,64,16,2 // vpinsrw $0x2,0x10(%r8,%rax,2),%xmm1,%xmm2
11098 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011099 .byte 117,10 // jne 34e5 <_sk_load_rgb_u16_be_hsw+0x132>
11100 .byte 233,25,255,255,255 // jmpq 33f9 <_sk_load_rgb_u16_be_hsw+0x46>
11101 .byte 233,20,255,255,255 // jmpq 33f9 <_sk_load_rgb_u16_be_hsw+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040011102 .byte 196,193,121,110,76,64,18 // vmovd 0x12(%r8,%rax,2),%xmm1
11103 .byte 196,65,113,196,76,64,22,2 // vpinsrw $0x2,0x16(%r8,%rax,2),%xmm1,%xmm9
11104 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011105 .byte 114,26 // jb 3514 <_sk_load_rgb_u16_be_hsw+0x161>
Mike Kleinb3821732017-04-17 10:58:05 -040011106 .byte 196,193,121,110,76,64,24 // vmovd 0x18(%r8,%rax,2),%xmm1
11107 .byte 196,193,113,196,76,64,28,2 // vpinsrw $0x2,0x1c(%r8,%rax,2),%xmm1,%xmm1
11108 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011109 .byte 117,10 // jne 3519 <_sk_load_rgb_u16_be_hsw+0x166>
11110 .byte 233,229,254,255,255 // jmpq 33f9 <_sk_load_rgb_u16_be_hsw+0x46>
11111 .byte 233,224,254,255,255 // jmpq 33f9 <_sk_load_rgb_u16_be_hsw+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040011112 .byte 196,193,121,110,92,64,30 // vmovd 0x1e(%r8,%rax,2),%xmm3
11113 .byte 196,65,97,196,92,64,34,2 // vpinsrw $0x2,0x22(%r8,%rax,2),%xmm3,%xmm11
11114 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011115 .byte 114,20 // jb 3542 <_sk_load_rgb_u16_be_hsw+0x18f>
Mike Kleinb3821732017-04-17 10:58:05 -040011116 .byte 196,193,121,110,92,64,36 // vmovd 0x24(%r8,%rax,2),%xmm3
11117 .byte 196,193,97,196,92,64,40,2 // vpinsrw $0x2,0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040011118 .byte 233,183,254,255,255 // jmpq 33f9 <_sk_load_rgb_u16_be_hsw+0x46>
11119 .byte 233,178,254,255,255 // jmpq 33f9 <_sk_load_rgb_u16_be_hsw+0x46>
Mike Klein3146bb92017-04-05 14:45:02 -040011120
11121HIDDEN _sk_store_u16_be_hsw
11122.globl _sk_store_u16_be_hsw
Mike Klein86714282017-04-13 17:37:38 -040011123FUNCTION(_sk_store_u16_be_hsw)
Mike Klein3146bb92017-04-05 14:45:02 -040011124_sk_store_u16_be_hsw:
11125 .byte 72,173 // lods %ds:(%rsi),%rax
11126 .byte 76,139,0 // mov (%rax),%r8
Mike Kleinb3821732017-04-17 10:58:05 -040011127 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
Mike Klein3146bb92017-04-05 14:45:02 -040011128 .byte 184,0,255,127,71 // mov $0x477fff00,%eax
11129 .byte 197,121,110,192 // vmovd %eax,%xmm8
11130 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11131 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
11132 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
11133 .byte 196,67,125,25,202,1 // vextractf128 $0x1,%ymm9,%xmm10
11134 .byte 196,66,49,43,202 // vpackusdw %xmm10,%xmm9,%xmm9
11135 .byte 196,193,41,113,241,8 // vpsllw $0x8,%xmm9,%xmm10
11136 .byte 196,193,49,113,209,8 // vpsrlw $0x8,%xmm9,%xmm9
11137 .byte 196,65,41,235,201 // vpor %xmm9,%xmm10,%xmm9
11138 .byte 197,60,89,209 // vmulps %ymm1,%ymm8,%ymm10
11139 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
11140 .byte 196,67,125,25,211,1 // vextractf128 $0x1,%ymm10,%xmm11
11141 .byte 196,66,41,43,211 // vpackusdw %xmm11,%xmm10,%xmm10
11142 .byte 196,193,33,113,242,8 // vpsllw $0x8,%xmm10,%xmm11
11143 .byte 196,193,41,113,210,8 // vpsrlw $0x8,%xmm10,%xmm10
11144 .byte 196,65,33,235,210 // vpor %xmm10,%xmm11,%xmm10
11145 .byte 197,60,89,218 // vmulps %ymm2,%ymm8,%ymm11
11146 .byte 196,65,125,91,219 // vcvtps2dq %ymm11,%ymm11
11147 .byte 196,67,125,25,220,1 // vextractf128 $0x1,%ymm11,%xmm12
11148 .byte 196,66,33,43,220 // vpackusdw %xmm12,%xmm11,%xmm11
11149 .byte 196,193,25,113,243,8 // vpsllw $0x8,%xmm11,%xmm12
11150 .byte 196,193,33,113,211,8 // vpsrlw $0x8,%xmm11,%xmm11
11151 .byte 196,65,25,235,219 // vpor %xmm11,%xmm12,%xmm11
11152 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
11153 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
11154 .byte 196,67,125,25,196,1 // vextractf128 $0x1,%ymm8,%xmm12
11155 .byte 196,66,57,43,196 // vpackusdw %xmm12,%xmm8,%xmm8
11156 .byte 196,193,25,113,240,8 // vpsllw $0x8,%xmm8,%xmm12
11157 .byte 196,193,57,113,208,8 // vpsrlw $0x8,%xmm8,%xmm8
11158 .byte 196,65,25,235,192 // vpor %xmm8,%xmm12,%xmm8
11159 .byte 196,65,49,97,226 // vpunpcklwd %xmm10,%xmm9,%xmm12
11160 .byte 196,65,49,105,234 // vpunpckhwd %xmm10,%xmm9,%xmm13
11161 .byte 196,65,33,97,200 // vpunpcklwd %xmm8,%xmm11,%xmm9
11162 .byte 196,65,33,105,192 // vpunpckhwd %xmm8,%xmm11,%xmm8
11163 .byte 196,65,25,98,217 // vpunpckldq %xmm9,%xmm12,%xmm11
11164 .byte 196,65,25,106,209 // vpunpckhdq %xmm9,%xmm12,%xmm10
11165 .byte 196,65,17,98,200 // vpunpckldq %xmm8,%xmm13,%xmm9
11166 .byte 196,65,17,106,192 // vpunpckhdq %xmm8,%xmm13,%xmm8
11167 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011168 .byte 117,31 // jne 3642 <_sk_store_u16_be_hsw+0xfb>
Mike Kleinb3821732017-04-17 10:58:05 -040011169 .byte 196,1,120,17,28,72 // vmovups %xmm11,(%r8,%r9,2)
11170 .byte 196,1,120,17,84,72,16 // vmovups %xmm10,0x10(%r8,%r9,2)
11171 .byte 196,1,120,17,76,72,32 // vmovups %xmm9,0x20(%r8,%r9,2)
11172 .byte 196,1,122,127,68,72,48 // vmovdqu %xmm8,0x30(%r8,%r9,2)
Mike Klein3146bb92017-04-05 14:45:02 -040011173 .byte 72,173 // lods %ds:(%rsi),%rax
11174 .byte 255,224 // jmpq *%rax
Mike Kleinb3821732017-04-17 10:58:05 -040011175 .byte 196,1,121,214,28,72 // vmovq %xmm11,(%r8,%r9,2)
Mike Klein3146bb92017-04-05 14:45:02 -040011176 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011177 .byte 116,240 // je 363e <_sk_store_u16_be_hsw+0xf7>
Mike Kleinb3821732017-04-17 10:58:05 -040011178 .byte 196,1,121,23,92,72,8 // vmovhpd %xmm11,0x8(%r8,%r9,2)
Mike Klein3146bb92017-04-05 14:45:02 -040011179 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011180 .byte 114,227 // jb 363e <_sk_store_u16_be_hsw+0xf7>
Mike Kleinb3821732017-04-17 10:58:05 -040011181 .byte 196,1,121,214,84,72,16 // vmovq %xmm10,0x10(%r8,%r9,2)
Mike Kleinda164342017-04-19 14:33:58 -040011182 .byte 116,218 // je 363e <_sk_store_u16_be_hsw+0xf7>
Mike Kleinb3821732017-04-17 10:58:05 -040011183 .byte 196,1,121,23,84,72,24 // vmovhpd %xmm10,0x18(%r8,%r9,2)
Mike Klein3146bb92017-04-05 14:45:02 -040011184 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011185 .byte 114,205 // jb 363e <_sk_store_u16_be_hsw+0xf7>
Mike Kleinb3821732017-04-17 10:58:05 -040011186 .byte 196,1,121,214,76,72,32 // vmovq %xmm9,0x20(%r8,%r9,2)
Mike Kleinda164342017-04-19 14:33:58 -040011187 .byte 116,196 // je 363e <_sk_store_u16_be_hsw+0xf7>
Mike Kleinb3821732017-04-17 10:58:05 -040011188 .byte 196,1,121,23,76,72,40 // vmovhpd %xmm9,0x28(%r8,%r9,2)
Mike Klein3146bb92017-04-05 14:45:02 -040011189 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011190 .byte 114,183 // jb 363e <_sk_store_u16_be_hsw+0xf7>
Mike Kleinb3821732017-04-17 10:58:05 -040011191 .byte 196,1,121,214,68,72,48 // vmovq %xmm8,0x30(%r8,%r9,2)
Mike Kleinda164342017-04-19 14:33:58 -040011192 .byte 235,174 // jmp 363e <_sk_store_u16_be_hsw+0xf7>
Mike Klein3146bb92017-04-05 14:45:02 -040011193
Mike Klein14987eb2017-04-06 10:22:26 -040011194HIDDEN _sk_load_f32_hsw
11195.globl _sk_load_f32_hsw
Mike Klein86714282017-04-13 17:37:38 -040011196FUNCTION(_sk_load_f32_hsw)
Mike Klein14987eb2017-04-06 10:22:26 -040011197_sk_load_f32_hsw:
11198 .byte 72,173 // lods %ds:(%rsi),%rax
11199 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011200 .byte 119,110 // ja 3706 <_sk_load_f32_hsw+0x76>
Mike Klein14987eb2017-04-06 10:22:26 -040011201 .byte 76,139,0 // mov (%rax),%r8
11202 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
Mike Kleinda164342017-04-19 14:33:58 -040011203 .byte 76,141,21,134,0,0,0 // lea 0x86(%rip),%r10 # 3730 <_sk_load_f32_hsw+0xa0>
Mike Klein14987eb2017-04-06 10:22:26 -040011204 .byte 73,99,4,138 // movslq (%r10,%rcx,4),%rax
11205 .byte 76,1,208 // add %r10,%rax
11206 .byte 255,224 // jmpq *%rax
11207 .byte 196,3,125,24,68,136,112,1 // vinsertf128 $0x1,0x70(%r8,%r9,4),%ymm0,%ymm8
11208 .byte 196,131,125,24,92,136,96,1 // vinsertf128 $0x1,0x60(%r8,%r9,4),%ymm0,%ymm3
11209 .byte 196,131,125,24,76,136,80,1 // vinsertf128 $0x1,0x50(%r8,%r9,4),%ymm0,%ymm1
11210 .byte 196,131,125,24,84,136,64,1 // vinsertf128 $0x1,0x40(%r8,%r9,4),%ymm0,%ymm2
11211 .byte 196,129,121,16,68,136,48 // vmovupd 0x30(%r8,%r9,4),%xmm0
11212 .byte 196,195,125,13,192,12 // vblendpd $0xc,%ymm8,%ymm0,%ymm0
11213 .byte 196,1,121,16,68,136,32 // vmovupd 0x20(%r8,%r9,4),%xmm8
11214 .byte 196,99,61,13,203,12 // vblendpd $0xc,%ymm3,%ymm8,%ymm9
11215 .byte 196,129,121,16,92,136,16 // vmovupd 0x10(%r8,%r9,4),%xmm3
11216 .byte 196,99,101,13,209,12 // vblendpd $0xc,%ymm1,%ymm3,%ymm10
11217 .byte 196,129,121,16,12,136 // vmovupd (%r8,%r9,4),%xmm1
11218 .byte 196,227,117,13,202,12 // vblendpd $0xc,%ymm2,%ymm1,%ymm1
11219 .byte 196,193,116,20,210 // vunpcklps %ymm10,%ymm1,%ymm2
11220 .byte 196,193,116,21,218 // vunpckhps %ymm10,%ymm1,%ymm3
11221 .byte 197,180,20,200 // vunpcklps %ymm0,%ymm9,%ymm1
11222 .byte 197,52,21,192 // vunpckhps %ymm0,%ymm9,%ymm8
11223 .byte 197,237,20,193 // vunpcklpd %ymm1,%ymm2,%ymm0
11224 .byte 197,237,21,201 // vunpckhpd %ymm1,%ymm2,%ymm1
11225 .byte 196,193,101,20,208 // vunpcklpd %ymm8,%ymm3,%ymm2
11226 .byte 196,193,101,21,216 // vunpckhpd %ymm8,%ymm3,%ymm3
11227 .byte 72,173 // lods %ds:(%rsi),%rax
11228 .byte 255,224 // jmpq *%rax
Mike Kleinb3821732017-04-17 10:58:05 -040011229 .byte 102,144 // xchg %ax,%ax
11230 .byte 131,255,255 // cmp $0xffffffff,%edi
11231 .byte 255,202 // dec %edx
Mike Klein14987eb2017-04-06 10:22:26 -040011232 .byte 255 // (bad)
11233 .byte 255 // (bad)
11234 .byte 255 // (bad)
Mike Kleinb3821732017-04-17 10:58:05 -040011235 .byte 189,255,255,255,176 // mov $0xb0ffffff,%ebp
Mike Klein14987eb2017-04-06 10:22:26 -040011236 .byte 255 // (bad)
11237 .byte 255 // (bad)
Mike Kleinb3821732017-04-17 10:58:05 -040011238 .byte 255,163,255,255,255,155 // jmpq *-0x64000001(%rbx)
Mike Klein14987eb2017-04-06 10:22:26 -040011239 .byte 255 // (bad)
Mike Kleinb3821732017-04-17 10:58:05 -040011240 .byte 255 // (bad)
11241 .byte 255,147,255,255,255,139 // callq *-0x74000001(%rbx)
11242 .byte 255 // (bad)
Mike Klein14987eb2017-04-06 10:22:26 -040011243 .byte 255 // (bad)
11244 .byte 255 // .byte 0xff
11245
Mike Klein7c4af542017-03-29 18:21:14 -040011246HIDDEN _sk_store_f32_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011247.globl _sk_store_f32_hsw
Mike Klein86714282017-04-13 17:37:38 -040011248FUNCTION(_sk_store_f32_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011249_sk_store_f32_hsw:
11250 .byte 72,173 // lods %ds:(%rsi),%rax
11251 .byte 76,139,0 // mov (%rax),%r8
11252 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
11253 .byte 197,124,20,193 // vunpcklps %ymm1,%ymm0,%ymm8
11254 .byte 197,124,21,217 // vunpckhps %ymm1,%ymm0,%ymm11
11255 .byte 197,108,20,203 // vunpcklps %ymm3,%ymm2,%ymm9
11256 .byte 197,108,21,227 // vunpckhps %ymm3,%ymm2,%ymm12
11257 .byte 196,65,61,20,209 // vunpcklpd %ymm9,%ymm8,%ymm10
11258 .byte 196,65,61,21,201 // vunpckhpd %ymm9,%ymm8,%ymm9
11259 .byte 196,65,37,20,196 // vunpcklpd %ymm12,%ymm11,%ymm8
11260 .byte 196,65,37,21,220 // vunpckhpd %ymm12,%ymm11,%ymm11
11261 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011262 .byte 117,55 // jne 37bd <_sk_store_f32_hsw+0x6d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011263 .byte 196,67,45,24,225,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm12
11264 .byte 196,67,61,24,235,1 // vinsertf128 $0x1,%xmm11,%ymm8,%ymm13
11265 .byte 196,67,45,6,201,49 // vperm2f128 $0x31,%ymm9,%ymm10,%ymm9
11266 .byte 196,67,61,6,195,49 // vperm2f128 $0x31,%ymm11,%ymm8,%ymm8
11267 .byte 196,65,125,17,36,128 // vmovupd %ymm12,(%r8,%rax,4)
11268 .byte 196,65,125,17,108,128,32 // vmovupd %ymm13,0x20(%r8,%rax,4)
11269 .byte 196,65,125,17,76,128,64 // vmovupd %ymm9,0x40(%r8,%rax,4)
11270 .byte 196,65,125,17,68,128,96 // vmovupd %ymm8,0x60(%r8,%rax,4)
11271 .byte 72,173 // lods %ds:(%rsi),%rax
11272 .byte 255,224 // jmpq *%rax
11273 .byte 196,65,121,17,20,128 // vmovupd %xmm10,(%r8,%rax,4)
11274 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011275 .byte 116,240 // je 37b9 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011276 .byte 196,65,121,17,76,128,16 // vmovupd %xmm9,0x10(%r8,%rax,4)
11277 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011278 .byte 114,227 // jb 37b9 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011279 .byte 196,65,121,17,68,128,32 // vmovupd %xmm8,0x20(%r8,%rax,4)
Mike Kleinda164342017-04-19 14:33:58 -040011280 .byte 116,218 // je 37b9 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011281 .byte 196,65,121,17,92,128,48 // vmovupd %xmm11,0x30(%r8,%rax,4)
11282 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011283 .byte 114,205 // jb 37b9 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011284 .byte 196,67,125,25,84,128,64,1 // vextractf128 $0x1,%ymm10,0x40(%r8,%rax,4)
Mike Kleinda164342017-04-19 14:33:58 -040011285 .byte 116,195 // je 37b9 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011286 .byte 196,67,125,25,76,128,80,1 // vextractf128 $0x1,%ymm9,0x50(%r8,%rax,4)
11287 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040011288 .byte 114,181 // jb 37b9 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011289 .byte 196,67,125,25,68,128,96,1 // vextractf128 $0x1,%ymm8,0x60(%r8,%rax,4)
Mike Kleinda164342017-04-19 14:33:58 -040011290 .byte 235,171 // jmp 37b9 <_sk_store_f32_hsw+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040011291
Mike Klein7c4af542017-03-29 18:21:14 -040011292HIDDEN _sk_clamp_x_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011293.globl _sk_clamp_x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011294FUNCTION(_sk_clamp_x_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011295_sk_clamp_x_hsw:
11296 .byte 72,173 // lods %ds:(%rsi),%rax
11297 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
11298 .byte 197,188,95,192 // vmaxps %ymm0,%ymm8,%ymm0
11299 .byte 196,98,125,88,0 // vpbroadcastd (%rax),%ymm8
11300 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
11301 .byte 196,65,61,254,193 // vpaddd %ymm9,%ymm8,%ymm8
11302 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
11303 .byte 72,173 // lods %ds:(%rsi),%rax
11304 .byte 255,224 // jmpq *%rax
11305
Mike Klein7c4af542017-03-29 18:21:14 -040011306HIDDEN _sk_clamp_y_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011307.globl _sk_clamp_y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011308FUNCTION(_sk_clamp_y_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011309_sk_clamp_y_hsw:
11310 .byte 72,173 // lods %ds:(%rsi),%rax
11311 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
11312 .byte 197,188,95,201 // vmaxps %ymm1,%ymm8,%ymm1
11313 .byte 196,98,125,88,0 // vpbroadcastd (%rax),%ymm8
11314 .byte 196,65,53,118,201 // vpcmpeqd %ymm9,%ymm9,%ymm9
11315 .byte 196,65,61,254,193 // vpaddd %ymm9,%ymm8,%ymm8
11316 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
11317 .byte 72,173 // lods %ds:(%rsi),%rax
11318 .byte 255,224 // jmpq *%rax
11319
Mike Klein7c4af542017-03-29 18:21:14 -040011320HIDDEN _sk_repeat_x_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011321.globl _sk_repeat_x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011322FUNCTION(_sk_repeat_x_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011323_sk_repeat_x_hsw:
11324 .byte 72,173 // lods %ds:(%rsi),%rax
11325 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
11326 .byte 196,65,124,94,200 // vdivps %ymm8,%ymm0,%ymm9
11327 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
11328 .byte 196,98,61,172,200 // vfnmadd213ps %ymm0,%ymm8,%ymm9
11329 .byte 197,253,118,192 // vpcmpeqd %ymm0,%ymm0,%ymm0
11330 .byte 197,189,254,192 // vpaddd %ymm0,%ymm8,%ymm0
11331 .byte 197,180,93,192 // vminps %ymm0,%ymm9,%ymm0
11332 .byte 72,173 // lods %ds:(%rsi),%rax
11333 .byte 255,224 // jmpq *%rax
11334
Mike Klein7c4af542017-03-29 18:21:14 -040011335HIDDEN _sk_repeat_y_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011336.globl _sk_repeat_y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011337FUNCTION(_sk_repeat_y_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011338_sk_repeat_y_hsw:
11339 .byte 72,173 // lods %ds:(%rsi),%rax
11340 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
11341 .byte 196,65,116,94,200 // vdivps %ymm8,%ymm1,%ymm9
11342 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
11343 .byte 196,98,61,172,201 // vfnmadd213ps %ymm1,%ymm8,%ymm9
11344 .byte 197,245,118,201 // vpcmpeqd %ymm1,%ymm1,%ymm1
11345 .byte 197,189,254,201 // vpaddd %ymm1,%ymm8,%ymm1
11346 .byte 197,180,93,201 // vminps %ymm1,%ymm9,%ymm1
11347 .byte 72,173 // lods %ds:(%rsi),%rax
11348 .byte 255,224 // jmpq *%rax
11349
Mike Klein7c4af542017-03-29 18:21:14 -040011350HIDDEN _sk_mirror_x_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011351.globl _sk_mirror_x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011352FUNCTION(_sk_mirror_x_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011353_sk_mirror_x_hsw:
11354 .byte 72,173 // lods %ds:(%rsi),%rax
11355 .byte 197,122,16,0 // vmovss (%rax),%xmm8
11356 .byte 196,66,125,24,200 // vbroadcastss %xmm8,%ymm9
11357 .byte 196,65,124,92,209 // vsubps %ymm9,%ymm0,%ymm10
11358 .byte 196,193,58,88,192 // vaddss %xmm8,%xmm8,%xmm0
11359 .byte 196,226,125,24,192 // vbroadcastss %xmm0,%ymm0
11360 .byte 197,44,94,192 // vdivps %ymm0,%ymm10,%ymm8
11361 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
11362 .byte 196,66,125,172,194 // vfnmadd213ps %ymm10,%ymm0,%ymm8
11363 .byte 196,193,60,92,193 // vsubps %ymm9,%ymm8,%ymm0
11364 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
11365 .byte 197,60,92,192 // vsubps %ymm0,%ymm8,%ymm8
11366 .byte 197,188,84,192 // vandps %ymm0,%ymm8,%ymm0
11367 .byte 196,65,61,118,192 // vpcmpeqd %ymm8,%ymm8,%ymm8
11368 .byte 196,65,53,254,192 // vpaddd %ymm8,%ymm9,%ymm8
11369 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
11370 .byte 72,173 // lods %ds:(%rsi),%rax
11371 .byte 255,224 // jmpq *%rax
11372
Mike Klein7c4af542017-03-29 18:21:14 -040011373HIDDEN _sk_mirror_y_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011374.globl _sk_mirror_y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011375FUNCTION(_sk_mirror_y_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011376_sk_mirror_y_hsw:
11377 .byte 72,173 // lods %ds:(%rsi),%rax
11378 .byte 197,122,16,0 // vmovss (%rax),%xmm8
11379 .byte 196,66,125,24,200 // vbroadcastss %xmm8,%ymm9
11380 .byte 196,65,116,92,209 // vsubps %ymm9,%ymm1,%ymm10
11381 .byte 196,193,58,88,200 // vaddss %xmm8,%xmm8,%xmm1
11382 .byte 196,226,125,24,201 // vbroadcastss %xmm1,%ymm1
11383 .byte 197,44,94,193 // vdivps %ymm1,%ymm10,%ymm8
11384 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
11385 .byte 196,66,117,172,194 // vfnmadd213ps %ymm10,%ymm1,%ymm8
11386 .byte 196,193,60,92,201 // vsubps %ymm9,%ymm8,%ymm1
11387 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
11388 .byte 197,60,92,193 // vsubps %ymm1,%ymm8,%ymm8
11389 .byte 197,188,84,201 // vandps %ymm1,%ymm8,%ymm1
11390 .byte 196,65,61,118,192 // vpcmpeqd %ymm8,%ymm8,%ymm8
11391 .byte 196,65,53,254,192 // vpaddd %ymm8,%ymm9,%ymm8
11392 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
11393 .byte 72,173 // lods %ds:(%rsi),%rax
11394 .byte 255,224 // jmpq *%rax
11395
Mike Klein7c4af542017-03-29 18:21:14 -040011396HIDDEN _sk_luminance_to_alpha_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011397.globl _sk_luminance_to_alpha_hsw
Mike Klein86714282017-04-13 17:37:38 -040011398FUNCTION(_sk_luminance_to_alpha_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011399_sk_luminance_to_alpha_hsw:
11400 .byte 184,208,179,89,62 // mov $0x3e59b3d0,%eax
11401 .byte 197,249,110,216 // vmovd %eax,%xmm3
11402 .byte 196,98,125,88,195 // vpbroadcastd %xmm3,%ymm8
11403 .byte 184,89,23,55,63 // mov $0x3f371759,%eax
11404 .byte 197,249,110,216 // vmovd %eax,%xmm3
11405 .byte 196,226,125,88,219 // vpbroadcastd %xmm3,%ymm3
11406 .byte 197,228,89,201 // vmulps %ymm1,%ymm3,%ymm1
11407 .byte 196,98,125,168,193 // vfmadd213ps %ymm1,%ymm0,%ymm8
11408 .byte 184,152,221,147,61 // mov $0x3d93dd98,%eax
11409 .byte 197,249,110,192 // vmovd %eax,%xmm0
11410 .byte 196,226,125,88,216 // vpbroadcastd %xmm0,%ymm3
11411 .byte 196,194,109,168,216 // vfmadd213ps %ymm8,%ymm2,%ymm3
11412 .byte 72,173 // lods %ds:(%rsi),%rax
11413 .byte 197,253,239,192 // vpxor %ymm0,%ymm0,%ymm0
11414 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
11415 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
11416 .byte 255,224 // jmpq *%rax
11417
Mike Klein7c4af542017-03-29 18:21:14 -040011418HIDDEN _sk_matrix_2x3_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011419.globl _sk_matrix_2x3_hsw
Mike Klein86714282017-04-13 17:37:38 -040011420FUNCTION(_sk_matrix_2x3_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011421_sk_matrix_2x3_hsw:
11422 .byte 72,173 // lods %ds:(%rsi),%rax
11423 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
11424 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
11425 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
11426 .byte 196,66,117,184,194 // vfmadd231ps %ymm10,%ymm1,%ymm8
11427 .byte 196,66,125,184,193 // vfmadd231ps %ymm9,%ymm0,%ymm8
11428 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
11429 .byte 196,98,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm11
11430 .byte 196,98,125,24,72,20 // vbroadcastss 0x14(%rax),%ymm9
11431 .byte 196,66,117,184,203 // vfmadd231ps %ymm11,%ymm1,%ymm9
11432 .byte 196,66,125,184,202 // vfmadd231ps %ymm10,%ymm0,%ymm9
11433 .byte 72,173 // lods %ds:(%rsi),%rax
11434 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
11435 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
11436 .byte 255,224 // jmpq *%rax
11437
Mike Klein7c4af542017-03-29 18:21:14 -040011438HIDDEN _sk_matrix_3x4_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011439.globl _sk_matrix_3x4_hsw
Mike Klein86714282017-04-13 17:37:38 -040011440FUNCTION(_sk_matrix_3x4_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011441_sk_matrix_3x4_hsw:
11442 .byte 72,173 // lods %ds:(%rsi),%rax
11443 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
11444 .byte 196,98,125,24,80,12 // vbroadcastss 0xc(%rax),%ymm10
11445 .byte 196,98,125,24,88,24 // vbroadcastss 0x18(%rax),%ymm11
11446 .byte 196,98,125,24,64,36 // vbroadcastss 0x24(%rax),%ymm8
11447 .byte 196,66,109,184,195 // vfmadd231ps %ymm11,%ymm2,%ymm8
11448 .byte 196,66,117,184,194 // vfmadd231ps %ymm10,%ymm1,%ymm8
11449 .byte 196,66,125,184,193 // vfmadd231ps %ymm9,%ymm0,%ymm8
11450 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
11451 .byte 196,98,125,24,88,16 // vbroadcastss 0x10(%rax),%ymm11
11452 .byte 196,98,125,24,96,28 // vbroadcastss 0x1c(%rax),%ymm12
11453 .byte 196,98,125,24,72,40 // vbroadcastss 0x28(%rax),%ymm9
11454 .byte 196,66,109,184,204 // vfmadd231ps %ymm12,%ymm2,%ymm9
11455 .byte 196,66,117,184,203 // vfmadd231ps %ymm11,%ymm1,%ymm9
11456 .byte 196,66,125,184,202 // vfmadd231ps %ymm10,%ymm0,%ymm9
11457 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
11458 .byte 196,98,125,24,96,20 // vbroadcastss 0x14(%rax),%ymm12
11459 .byte 196,98,125,24,104,32 // vbroadcastss 0x20(%rax),%ymm13
11460 .byte 196,98,125,24,80,44 // vbroadcastss 0x2c(%rax),%ymm10
11461 .byte 196,66,109,184,213 // vfmadd231ps %ymm13,%ymm2,%ymm10
11462 .byte 196,66,117,184,212 // vfmadd231ps %ymm12,%ymm1,%ymm10
11463 .byte 196,66,125,184,211 // vfmadd231ps %ymm11,%ymm0,%ymm10
11464 .byte 72,173 // lods %ds:(%rsi),%rax
11465 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
11466 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
11467 .byte 197,124,41,210 // vmovaps %ymm10,%ymm2
11468 .byte 255,224 // jmpq *%rax
11469
Mike Klein7c4af542017-03-29 18:21:14 -040011470HIDDEN _sk_matrix_4x5_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011471.globl _sk_matrix_4x5_hsw
Mike Klein86714282017-04-13 17:37:38 -040011472FUNCTION(_sk_matrix_4x5_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011473_sk_matrix_4x5_hsw:
11474 .byte 72,173 // lods %ds:(%rsi),%rax
11475 .byte 196,98,125,24,8 // vbroadcastss (%rax),%ymm9
11476 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
11477 .byte 196,98,125,24,88,32 // vbroadcastss 0x20(%rax),%ymm11
11478 .byte 196,98,125,24,96,48 // vbroadcastss 0x30(%rax),%ymm12
11479 .byte 196,98,125,24,64,64 // vbroadcastss 0x40(%rax),%ymm8
11480 .byte 196,66,101,184,196 // vfmadd231ps %ymm12,%ymm3,%ymm8
11481 .byte 196,66,109,184,195 // vfmadd231ps %ymm11,%ymm2,%ymm8
11482 .byte 196,66,117,184,194 // vfmadd231ps %ymm10,%ymm1,%ymm8
11483 .byte 196,66,125,184,193 // vfmadd231ps %ymm9,%ymm0,%ymm8
11484 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
11485 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
11486 .byte 196,98,125,24,96,36 // vbroadcastss 0x24(%rax),%ymm12
11487 .byte 196,98,125,24,104,52 // vbroadcastss 0x34(%rax),%ymm13
11488 .byte 196,98,125,24,72,68 // vbroadcastss 0x44(%rax),%ymm9
11489 .byte 196,66,101,184,205 // vfmadd231ps %ymm13,%ymm3,%ymm9
11490 .byte 196,66,109,184,204 // vfmadd231ps %ymm12,%ymm2,%ymm9
11491 .byte 196,66,117,184,203 // vfmadd231ps %ymm11,%ymm1,%ymm9
11492 .byte 196,66,125,184,202 // vfmadd231ps %ymm10,%ymm0,%ymm9
11493 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
11494 .byte 196,98,125,24,96,24 // vbroadcastss 0x18(%rax),%ymm12
11495 .byte 196,98,125,24,104,40 // vbroadcastss 0x28(%rax),%ymm13
11496 .byte 196,98,125,24,112,56 // vbroadcastss 0x38(%rax),%ymm14
11497 .byte 196,98,125,24,80,72 // vbroadcastss 0x48(%rax),%ymm10
11498 .byte 196,66,101,184,214 // vfmadd231ps %ymm14,%ymm3,%ymm10
11499 .byte 196,66,109,184,213 // vfmadd231ps %ymm13,%ymm2,%ymm10
11500 .byte 196,66,117,184,212 // vfmadd231ps %ymm12,%ymm1,%ymm10
11501 .byte 196,66,125,184,211 // vfmadd231ps %ymm11,%ymm0,%ymm10
11502 .byte 196,98,125,24,96,12 // vbroadcastss 0xc(%rax),%ymm12
11503 .byte 196,98,125,24,104,28 // vbroadcastss 0x1c(%rax),%ymm13
11504 .byte 196,98,125,24,112,44 // vbroadcastss 0x2c(%rax),%ymm14
11505 .byte 196,98,125,24,120,60 // vbroadcastss 0x3c(%rax),%ymm15
11506 .byte 196,98,125,24,88,76 // vbroadcastss 0x4c(%rax),%ymm11
11507 .byte 196,66,101,184,223 // vfmadd231ps %ymm15,%ymm3,%ymm11
11508 .byte 196,66,109,184,222 // vfmadd231ps %ymm14,%ymm2,%ymm11
11509 .byte 196,66,117,184,221 // vfmadd231ps %ymm13,%ymm1,%ymm11
11510 .byte 196,66,125,184,220 // vfmadd231ps %ymm12,%ymm0,%ymm11
11511 .byte 72,173 // lods %ds:(%rsi),%rax
11512 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
11513 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
11514 .byte 197,124,41,210 // vmovaps %ymm10,%ymm2
11515 .byte 197,124,41,219 // vmovaps %ymm11,%ymm3
11516 .byte 255,224 // jmpq *%rax
11517
Mike Klein7c4af542017-03-29 18:21:14 -040011518HIDDEN _sk_matrix_perspective_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011519.globl _sk_matrix_perspective_hsw
Mike Klein86714282017-04-13 17:37:38 -040011520FUNCTION(_sk_matrix_perspective_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011521_sk_matrix_perspective_hsw:
11522 .byte 72,173 // lods %ds:(%rsi),%rax
11523 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
11524 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
11525 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
11526 .byte 196,66,117,184,209 // vfmadd231ps %ymm9,%ymm1,%ymm10
11527 .byte 196,66,125,184,208 // vfmadd231ps %ymm8,%ymm0,%ymm10
11528 .byte 196,98,125,24,64,12 // vbroadcastss 0xc(%rax),%ymm8
11529 .byte 196,98,125,24,72,16 // vbroadcastss 0x10(%rax),%ymm9
11530 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
11531 .byte 196,66,117,184,217 // vfmadd231ps %ymm9,%ymm1,%ymm11
11532 .byte 196,66,125,184,216 // vfmadd231ps %ymm8,%ymm0,%ymm11
11533 .byte 196,98,125,24,64,24 // vbroadcastss 0x18(%rax),%ymm8
11534 .byte 196,98,125,24,72,28 // vbroadcastss 0x1c(%rax),%ymm9
11535 .byte 196,98,125,24,96,32 // vbroadcastss 0x20(%rax),%ymm12
11536 .byte 196,66,117,184,225 // vfmadd231ps %ymm9,%ymm1,%ymm12
11537 .byte 196,66,125,184,224 // vfmadd231ps %ymm8,%ymm0,%ymm12
11538 .byte 196,193,124,83,204 // vrcpps %ymm12,%ymm1
11539 .byte 197,172,89,193 // vmulps %ymm1,%ymm10,%ymm0
11540 .byte 197,164,89,201 // vmulps %ymm1,%ymm11,%ymm1
11541 .byte 72,173 // lods %ds:(%rsi),%rax
11542 .byte 255,224 // jmpq *%rax
11543
Herb Derby7b4202d2017-04-10 10:52:34 -040011544HIDDEN _sk_linear_gradient_hsw
11545.globl _sk_linear_gradient_hsw
Mike Klein86714282017-04-13 17:37:38 -040011546FUNCTION(_sk_linear_gradient_hsw)
Herb Derby7b4202d2017-04-10 10:52:34 -040011547_sk_linear_gradient_hsw:
11548 .byte 72,173 // lods %ds:(%rsi),%rax
11549 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
11550 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
11551 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
11552 .byte 196,98,125,24,72,28 // vbroadcastss 0x1c(%rax),%ymm9
11553 .byte 76,139,0 // mov (%rax),%r8
11554 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -040011555 .byte 15,132,143,0,0,0 // je 3c49 <_sk_linear_gradient_hsw+0xb5>
Herb Derby7b4202d2017-04-10 10:52:34 -040011556 .byte 72,139,64,8 // mov 0x8(%rax),%rax
11557 .byte 72,131,192,32 // add $0x20,%rax
11558 .byte 196,65,28,87,228 // vxorps %ymm12,%ymm12,%ymm12
11559 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
11560 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
11561 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
11562 .byte 196,98,125,24,104,224 // vbroadcastss -0x20(%rax),%ymm13
11563 .byte 196,65,124,194,237,1 // vcmpltps %ymm13,%ymm0,%ymm13
11564 .byte 196,98,125,24,112,228 // vbroadcastss -0x1c(%rax),%ymm14
11565 .byte 196,67,13,74,228,208 // vblendvps %ymm13,%ymm12,%ymm14,%ymm12
11566 .byte 196,98,125,24,112,232 // vbroadcastss -0x18(%rax),%ymm14
11567 .byte 196,227,13,74,201,208 // vblendvps %ymm13,%ymm1,%ymm14,%ymm1
11568 .byte 196,98,125,24,112,236 // vbroadcastss -0x14(%rax),%ymm14
11569 .byte 196,227,13,74,210,208 // vblendvps %ymm13,%ymm2,%ymm14,%ymm2
11570 .byte 196,98,125,24,112,240 // vbroadcastss -0x10(%rax),%ymm14
11571 .byte 196,227,13,74,219,208 // vblendvps %ymm13,%ymm3,%ymm14,%ymm3
11572 .byte 196,98,125,24,112,244 // vbroadcastss -0xc(%rax),%ymm14
11573 .byte 196,67,13,74,192,208 // vblendvps %ymm13,%ymm8,%ymm14,%ymm8
11574 .byte 196,98,125,24,112,248 // vbroadcastss -0x8(%rax),%ymm14
11575 .byte 196,67,13,74,219,208 // vblendvps %ymm13,%ymm11,%ymm14,%ymm11
11576 .byte 196,98,125,24,112,252 // vbroadcastss -0x4(%rax),%ymm14
11577 .byte 196,67,13,74,210,208 // vblendvps %ymm13,%ymm10,%ymm14,%ymm10
11578 .byte 196,98,125,24,48 // vbroadcastss (%rax),%ymm14
11579 .byte 196,67,13,74,201,208 // vblendvps %ymm13,%ymm9,%ymm14,%ymm9
11580 .byte 72,131,192,36 // add $0x24,%rax
11581 .byte 73,255,200 // dec %r8
Mike Kleinda164342017-04-19 14:33:58 -040011582 .byte 117,140 // jne 3bd3 <_sk_linear_gradient_hsw+0x3f>
11583 .byte 235,17 // jmp 3c5a <_sk_linear_gradient_hsw+0xc6>
Herb Derby7b4202d2017-04-10 10:52:34 -040011584 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
11585 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
11586 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
11587 .byte 196,65,28,87,228 // vxorps %ymm12,%ymm12,%ymm12
11588 .byte 196,66,125,184,196 // vfmadd231ps %ymm12,%ymm0,%ymm8
11589 .byte 196,194,125,168,203 // vfmadd213ps %ymm11,%ymm0,%ymm1
11590 .byte 196,194,125,168,210 // vfmadd213ps %ymm10,%ymm0,%ymm2
11591 .byte 196,194,125,168,217 // vfmadd213ps %ymm9,%ymm0,%ymm3
11592 .byte 72,173 // lods %ds:(%rsi),%rax
11593 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
11594 .byte 255,224 // jmpq *%rax
11595
Mike Klein7c4af542017-03-29 18:21:14 -040011596HIDDEN _sk_linear_gradient_2stops_hsw
Mike Kleind7e06ae2017-03-29 16:33:06 -040011597.globl _sk_linear_gradient_2stops_hsw
Mike Klein86714282017-04-13 17:37:38 -040011598FUNCTION(_sk_linear_gradient_2stops_hsw)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011599_sk_linear_gradient_2stops_hsw:
11600 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040011601 .byte 196,226,125,24,8 // vbroadcastss (%rax),%ymm1
11602 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040011603 .byte 196,98,125,184,193 // vfmadd231ps %ymm1,%ymm0,%ymm8
Herb Derby7b4202d2017-04-10 10:52:34 -040011604 .byte 196,226,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm2
11605 .byte 196,226,125,24,72,20 // vbroadcastss 0x14(%rax),%ymm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040011606 .byte 196,226,125,184,202 // vfmadd231ps %ymm2,%ymm0,%ymm1
Herb Derby7b4202d2017-04-10 10:52:34 -040011607 .byte 196,226,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm3
11608 .byte 196,226,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040011609 .byte 196,226,125,184,211 // vfmadd231ps %ymm3,%ymm0,%ymm2
Herb Derby7b4202d2017-04-10 10:52:34 -040011610 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
11611 .byte 196,226,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040011612 .byte 196,194,125,184,217 // vfmadd231ps %ymm9,%ymm0,%ymm3
11613 .byte 72,173 // lods %ds:(%rsi),%rax
11614 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
11615 .byte 255,224 // jmpq *%rax
11616
Mike Klein0a904492017-04-12 12:52:48 -040011617HIDDEN _sk_save_xy_hsw
11618.globl _sk_save_xy_hsw
Mike Klein86714282017-04-13 17:37:38 -040011619FUNCTION(_sk_save_xy_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011620_sk_save_xy_hsw:
11621 .byte 72,173 // lods %ds:(%rsi),%rax
11622 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
11623 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
11624 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11625 .byte 197,60,88,200 // vaddps %ymm0,%ymm8,%ymm9
11626 .byte 196,67,125,8,209,1 // vroundps $0x1,%ymm9,%ymm10
11627 .byte 196,65,52,92,202 // vsubps %ymm10,%ymm9,%ymm9
11628 .byte 197,60,88,193 // vaddps %ymm1,%ymm8,%ymm8
11629 .byte 196,67,125,8,208,1 // vroundps $0x1,%ymm8,%ymm10
11630 .byte 196,65,60,92,194 // vsubps %ymm10,%ymm8,%ymm8
11631 .byte 197,252,17,0 // vmovups %ymm0,(%rax)
11632 .byte 197,252,17,72,32 // vmovups %ymm1,0x20(%rax)
11633 .byte 197,124,17,72,64 // vmovups %ymm9,0x40(%rax)
11634 .byte 197,124,17,64,96 // vmovups %ymm8,0x60(%rax)
11635 .byte 72,173 // lods %ds:(%rsi),%rax
11636 .byte 255,224 // jmpq *%rax
11637
11638HIDDEN _sk_accumulate_hsw
11639.globl _sk_accumulate_hsw
Mike Klein86714282017-04-13 17:37:38 -040011640FUNCTION(_sk_accumulate_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011641_sk_accumulate_hsw:
11642 .byte 72,173 // lods %ds:(%rsi),%rax
11643 .byte 197,124,16,128,128,0,0,0 // vmovups 0x80(%rax),%ymm8
11644 .byte 197,60,89,128,160,0,0,0 // vmulps 0xa0(%rax),%ymm8,%ymm8
11645 .byte 196,226,61,184,224 // vfmadd231ps %ymm0,%ymm8,%ymm4
11646 .byte 196,226,61,184,233 // vfmadd231ps %ymm1,%ymm8,%ymm5
11647 .byte 196,226,61,184,242 // vfmadd231ps %ymm2,%ymm8,%ymm6
11648 .byte 196,98,101,168,199 // vfmadd213ps %ymm7,%ymm3,%ymm8
11649 .byte 72,173 // lods %ds:(%rsi),%rax
11650 .byte 197,124,41,199 // vmovaps %ymm8,%ymm7
11651 .byte 255,224 // jmpq *%rax
11652
11653HIDDEN _sk_bilinear_nx_hsw
11654.globl _sk_bilinear_nx_hsw
Mike Klein86714282017-04-13 17:37:38 -040011655FUNCTION(_sk_bilinear_nx_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011656_sk_bilinear_nx_hsw:
11657 .byte 72,173 // lods %ds:(%rsi),%rax
11658 .byte 65,184,0,0,0,191 // mov $0xbf000000,%r8d
11659 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
11660 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
11661 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
11662 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
11663 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
11664 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11665 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
11666 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
11667 .byte 72,173 // lods %ds:(%rsi),%rax
11668 .byte 255,224 // jmpq *%rax
11669
11670HIDDEN _sk_bilinear_px_hsw
11671.globl _sk_bilinear_px_hsw
Mike Klein86714282017-04-13 17:37:38 -040011672FUNCTION(_sk_bilinear_px_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011673_sk_bilinear_px_hsw:
11674 .byte 72,173 // lods %ds:(%rsi),%rax
11675 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
11676 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
11677 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
11678 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
11679 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
11680 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
11681 .byte 72,173 // lods %ds:(%rsi),%rax
11682 .byte 255,224 // jmpq *%rax
11683
11684HIDDEN _sk_bilinear_ny_hsw
11685.globl _sk_bilinear_ny_hsw
Mike Klein86714282017-04-13 17:37:38 -040011686FUNCTION(_sk_bilinear_ny_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011687_sk_bilinear_ny_hsw:
11688 .byte 72,173 // lods %ds:(%rsi),%rax
11689 .byte 65,184,0,0,0,191 // mov $0xbf000000,%r8d
11690 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
11691 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
11692 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
11693 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
11694 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
11695 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11696 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
11697 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
11698 .byte 72,173 // lods %ds:(%rsi),%rax
11699 .byte 255,224 // jmpq *%rax
11700
11701HIDDEN _sk_bilinear_py_hsw
11702.globl _sk_bilinear_py_hsw
Mike Klein86714282017-04-13 17:37:38 -040011703FUNCTION(_sk_bilinear_py_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011704_sk_bilinear_py_hsw:
11705 .byte 72,173 // lods %ds:(%rsi),%rax
11706 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
11707 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
11708 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
11709 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
11710 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
11711 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
11712 .byte 72,173 // lods %ds:(%rsi),%rax
11713 .byte 255,224 // jmpq *%rax
11714
11715HIDDEN _sk_bicubic_n3x_hsw
11716.globl _sk_bicubic_n3x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011717FUNCTION(_sk_bicubic_n3x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011718_sk_bicubic_n3x_hsw:
11719 .byte 72,173 // lods %ds:(%rsi),%rax
11720 .byte 65,184,0,0,192,191 // mov $0xbfc00000,%r8d
11721 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
11722 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
11723 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
11724 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
11725 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
11726 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11727 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
11728 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
11729 .byte 65,184,114,28,199,62 // mov $0x3ec71c72,%r8d
11730 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
11731 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
11732 .byte 65,184,171,170,170,190 // mov $0xbeaaaaab,%r8d
11733 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
11734 .byte 196,66,125,88,219 // vpbroadcastd %xmm11,%ymm11
11735 .byte 196,66,61,168,211 // vfmadd213ps %ymm11,%ymm8,%ymm10
11736 .byte 196,65,44,89,193 // vmulps %ymm9,%ymm10,%ymm8
11737 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
11738 .byte 72,173 // lods %ds:(%rsi),%rax
11739 .byte 255,224 // jmpq *%rax
11740
11741HIDDEN _sk_bicubic_n1x_hsw
11742.globl _sk_bicubic_n1x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011743FUNCTION(_sk_bicubic_n1x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011744_sk_bicubic_n1x_hsw:
11745 .byte 72,173 // lods %ds:(%rsi),%rax
11746 .byte 65,184,0,0,0,191 // mov $0xbf000000,%r8d
11747 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
11748 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
11749 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
11750 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
11751 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
11752 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11753 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
11754 .byte 65,184,85,85,149,191 // mov $0xbf955555,%r8d
11755 .byte 196,65,121,110,200 // vmovd %r8d,%xmm9
11756 .byte 196,66,125,88,201 // vpbroadcastd %xmm9,%ymm9
11757 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
11758 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
11759 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
11760 .byte 196,66,61,168,202 // vfmadd213ps %ymm10,%ymm8,%ymm9
11761 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
11762 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
11763 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
11764 .byte 196,66,61,184,209 // vfmadd231ps %ymm9,%ymm8,%ymm10
11765 .byte 65,184,57,142,99,61 // mov $0x3d638e39,%r8d
11766 .byte 196,65,121,110,200 // vmovd %r8d,%xmm9
11767 .byte 196,66,125,88,201 // vpbroadcastd %xmm9,%ymm9
11768 .byte 196,66,61,184,202 // vfmadd231ps %ymm10,%ymm8,%ymm9
11769 .byte 197,124,17,136,128,0,0,0 // vmovups %ymm9,0x80(%rax)
11770 .byte 72,173 // lods %ds:(%rsi),%rax
11771 .byte 255,224 // jmpq *%rax
11772
11773HIDDEN _sk_bicubic_p1x_hsw
11774.globl _sk_bicubic_p1x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011775FUNCTION(_sk_bicubic_p1x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011776_sk_bicubic_p1x_hsw:
11777 .byte 72,173 // lods %ds:(%rsi),%rax
11778 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
11779 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
11780 .byte 196,98,125,88,192 // vpbroadcastd %xmm0,%ymm8
11781 .byte 197,188,88,0 // vaddps (%rax),%ymm8,%ymm0
11782 .byte 197,124,16,72,64 // vmovups 0x40(%rax),%ymm9
11783 .byte 65,184,85,85,149,191 // mov $0xbf955555,%r8d
11784 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
11785 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
11786 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
11787 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
11788 .byte 196,66,125,88,219 // vpbroadcastd %xmm11,%ymm11
11789 .byte 196,66,53,168,211 // vfmadd213ps %ymm11,%ymm9,%ymm10
11790 .byte 196,66,53,168,208 // vfmadd213ps %ymm8,%ymm9,%ymm10
11791 .byte 65,184,57,142,99,61 // mov $0x3d638e39,%r8d
11792 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
11793 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11794 .byte 196,66,53,184,194 // vfmadd231ps %ymm10,%ymm9,%ymm8
11795 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
11796 .byte 72,173 // lods %ds:(%rsi),%rax
11797 .byte 255,224 // jmpq *%rax
11798
11799HIDDEN _sk_bicubic_p3x_hsw
11800.globl _sk_bicubic_p3x_hsw
Mike Klein86714282017-04-13 17:37:38 -040011801FUNCTION(_sk_bicubic_p3x_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011802_sk_bicubic_p3x_hsw:
11803 .byte 72,173 // lods %ds:(%rsi),%rax
11804 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
11805 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
11806 .byte 196,226,125,88,192 // vpbroadcastd %xmm0,%ymm0
11807 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
11808 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
11809 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
11810 .byte 65,184,114,28,199,62 // mov $0x3ec71c72,%r8d
11811 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
11812 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
11813 .byte 65,184,171,170,170,190 // mov $0xbeaaaaab,%r8d
11814 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
11815 .byte 196,66,125,88,219 // vpbroadcastd %xmm11,%ymm11
11816 .byte 196,66,61,168,211 // vfmadd213ps %ymm11,%ymm8,%ymm10
11817 .byte 196,65,52,89,194 // vmulps %ymm10,%ymm9,%ymm8
11818 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
11819 .byte 72,173 // lods %ds:(%rsi),%rax
11820 .byte 255,224 // jmpq *%rax
11821
11822HIDDEN _sk_bicubic_n3y_hsw
11823.globl _sk_bicubic_n3y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011824FUNCTION(_sk_bicubic_n3y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011825_sk_bicubic_n3y_hsw:
11826 .byte 72,173 // lods %ds:(%rsi),%rax
11827 .byte 65,184,0,0,192,191 // mov $0xbfc00000,%r8d
11828 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
11829 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
11830 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
11831 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
11832 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
11833 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11834 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
11835 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
11836 .byte 65,184,114,28,199,62 // mov $0x3ec71c72,%r8d
11837 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
11838 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
11839 .byte 65,184,171,170,170,190 // mov $0xbeaaaaab,%r8d
11840 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
11841 .byte 196,66,125,88,219 // vpbroadcastd %xmm11,%ymm11
11842 .byte 196,66,61,168,211 // vfmadd213ps %ymm11,%ymm8,%ymm10
11843 .byte 196,65,44,89,193 // vmulps %ymm9,%ymm10,%ymm8
11844 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
11845 .byte 72,173 // lods %ds:(%rsi),%rax
11846 .byte 255,224 // jmpq *%rax
11847
11848HIDDEN _sk_bicubic_n1y_hsw
11849.globl _sk_bicubic_n1y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011850FUNCTION(_sk_bicubic_n1y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011851_sk_bicubic_n1y_hsw:
11852 .byte 72,173 // lods %ds:(%rsi),%rax
11853 .byte 65,184,0,0,0,191 // mov $0xbf000000,%r8d
11854 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
11855 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
11856 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
11857 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
11858 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
11859 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11860 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
11861 .byte 65,184,85,85,149,191 // mov $0xbf955555,%r8d
11862 .byte 196,65,121,110,200 // vmovd %r8d,%xmm9
11863 .byte 196,66,125,88,201 // vpbroadcastd %xmm9,%ymm9
11864 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
11865 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
11866 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
11867 .byte 196,66,61,168,202 // vfmadd213ps %ymm10,%ymm8,%ymm9
11868 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
11869 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
11870 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
11871 .byte 196,66,61,184,209 // vfmadd231ps %ymm9,%ymm8,%ymm10
11872 .byte 65,184,57,142,99,61 // mov $0x3d638e39,%r8d
11873 .byte 196,65,121,110,200 // vmovd %r8d,%xmm9
11874 .byte 196,66,125,88,201 // vpbroadcastd %xmm9,%ymm9
11875 .byte 196,66,61,184,202 // vfmadd231ps %ymm10,%ymm8,%ymm9
11876 .byte 197,124,17,136,160,0,0,0 // vmovups %ymm9,0xa0(%rax)
11877 .byte 72,173 // lods %ds:(%rsi),%rax
11878 .byte 255,224 // jmpq *%rax
11879
11880HIDDEN _sk_bicubic_p1y_hsw
11881.globl _sk_bicubic_p1y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011882FUNCTION(_sk_bicubic_p1y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011883_sk_bicubic_p1y_hsw:
11884 .byte 72,173 // lods %ds:(%rsi),%rax
11885 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
11886 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
11887 .byte 196,98,125,88,193 // vpbroadcastd %xmm1,%ymm8
11888 .byte 197,188,88,72,32 // vaddps 0x20(%rax),%ymm8,%ymm1
11889 .byte 197,124,16,72,96 // vmovups 0x60(%rax),%ymm9
11890 .byte 65,184,85,85,149,191 // mov $0xbf955555,%r8d
11891 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
11892 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
11893 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
11894 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
11895 .byte 196,66,125,88,219 // vpbroadcastd %xmm11,%ymm11
11896 .byte 196,66,53,168,211 // vfmadd213ps %ymm11,%ymm9,%ymm10
11897 .byte 196,66,53,168,208 // vfmadd213ps %ymm8,%ymm9,%ymm10
11898 .byte 65,184,57,142,99,61 // mov $0x3d638e39,%r8d
11899 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
11900 .byte 196,66,125,88,192 // vpbroadcastd %xmm8,%ymm8
11901 .byte 196,66,53,184,194 // vfmadd231ps %ymm10,%ymm9,%ymm8
11902 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
11903 .byte 72,173 // lods %ds:(%rsi),%rax
11904 .byte 255,224 // jmpq *%rax
11905
11906HIDDEN _sk_bicubic_p3y_hsw
11907.globl _sk_bicubic_p3y_hsw
Mike Klein86714282017-04-13 17:37:38 -040011908FUNCTION(_sk_bicubic_p3y_hsw)
Mike Klein0a904492017-04-12 12:52:48 -040011909_sk_bicubic_p3y_hsw:
11910 .byte 72,173 // lods %ds:(%rsi),%rax
11911 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
11912 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
11913 .byte 196,226,125,88,201 // vpbroadcastd %xmm1,%ymm1
11914 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
11915 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
11916 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
11917 .byte 65,184,114,28,199,62 // mov $0x3ec71c72,%r8d
11918 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
11919 .byte 196,66,125,88,210 // vpbroadcastd %xmm10,%ymm10
11920 .byte 65,184,171,170,170,190 // mov $0xbeaaaaab,%r8d
11921 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
11922 .byte 196,66,125,88,219 // vpbroadcastd %xmm11,%ymm11
11923 .byte 196,66,61,168,211 // vfmadd213ps %ymm11,%ymm8,%ymm10
11924 .byte 196,65,52,89,194 // vmulps %ymm10,%ymm9,%ymm8
11925 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
11926 .byte 72,173 // lods %ds:(%rsi),%rax
11927 .byte 255,224 // jmpq *%rax
11928
Mike Klein7fee90c2017-04-07 16:55:09 -040011929HIDDEN _sk_callback_hsw
11930.globl _sk_callback_hsw
11931FUNCTION(_sk_callback_hsw)
11932_sk_callback_hsw:
11933 .byte 65,87 // push %r15
11934 .byte 65,86 // push %r14
11935 .byte 65,84 // push %r12
11936 .byte 83 // push %rbx
11937 .byte 72,129,236,24,1,0,0 // sub $0x118,%rsp
11938 .byte 197,252,17,188,36,224,0,0,0 // vmovups %ymm7,0xe0(%rsp)
11939 .byte 197,252,17,180,36,192,0,0,0 // vmovups %ymm6,0xc0(%rsp)
11940 .byte 197,252,17,172,36,160,0,0,0 // vmovups %ymm5,0xa0(%rsp)
11941 .byte 197,252,17,164,36,128,0,0,0 // vmovups %ymm4,0x80(%rsp)
11942 .byte 197,252,17,92,36,96 // vmovups %ymm3,0x60(%rsp)
11943 .byte 197,252,17,84,36,64 // vmovups %ymm2,0x40(%rsp)
11944 .byte 197,252,17,76,36,32 // vmovups %ymm1,0x20(%rsp)
11945 .byte 197,252,17,4,36 // vmovups %ymm0,(%rsp)
11946 .byte 72,137,203 // mov %rcx,%rbx
11947 .byte 73,137,214 // mov %rdx,%r14
11948 .byte 73,137,255 // mov %rdi,%r15
11949 .byte 72,173 // lods %ds:(%rsi),%rax
11950 .byte 73,137,244 // mov %rsi,%r12
11951 .byte 72,139,120,8 // mov 0x8(%rax),%rdi
11952 .byte 72,133,219 // test %rbx,%rbx
11953 .byte 190,8,0,0,0 // mov $0x8,%esi
11954 .byte 15,69,243 // cmovne %ebx,%esi
11955 .byte 197,248,119 // vzeroupper
11956 .byte 255,16 // callq *(%rax)
11957 .byte 76,137,230 // mov %r12,%rsi
11958 .byte 72,173 // lods %ds:(%rsi),%rax
11959 .byte 76,137,255 // mov %r15,%rdi
11960 .byte 76,137,242 // mov %r14,%rdx
11961 .byte 72,137,217 // mov %rbx,%rcx
11962 .byte 197,252,16,4,36 // vmovups (%rsp),%ymm0
11963 .byte 197,252,16,76,36,32 // vmovups 0x20(%rsp),%ymm1
11964 .byte 197,252,16,84,36,64 // vmovups 0x40(%rsp),%ymm2
11965 .byte 197,252,16,92,36,96 // vmovups 0x60(%rsp),%ymm3
11966 .byte 197,252,16,164,36,128,0,0,0 // vmovups 0x80(%rsp),%ymm4
11967 .byte 197,252,16,172,36,160,0,0,0 // vmovups 0xa0(%rsp),%ymm5
11968 .byte 197,252,16,180,36,192,0,0,0 // vmovups 0xc0(%rsp),%ymm6
11969 .byte 197,252,16,188,36,224,0,0,0 // vmovups 0xe0(%rsp),%ymm7
11970 .byte 72,129,196,24,1,0,0 // add $0x118,%rsp
11971 .byte 91 // pop %rbx
11972 .byte 65,92 // pop %r12
11973 .byte 65,94 // pop %r14
11974 .byte 65,95 // pop %r15
11975 .byte 255,224 // jmpq *%rax
11976
Mike Klein7c4af542017-03-29 18:21:14 -040011977HIDDEN _sk_start_pipeline_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040011978.globl _sk_start_pipeline_avx
Mike Klein86714282017-04-13 17:37:38 -040011979FUNCTION(_sk_start_pipeline_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040011980_sk_start_pipeline_avx:
11981 .byte 65,87 // push %r15
11982 .byte 65,86 // push %r14
11983 .byte 65,85 // push %r13
11984 .byte 65,84 // push %r12
11985 .byte 83 // push %rbx
11986 .byte 73,137,205 // mov %rcx,%r13
11987 .byte 73,137,214 // mov %rdx,%r14
11988 .byte 72,137,251 // mov %rdi,%rbx
11989 .byte 72,173 // lods %ds:(%rsi),%rax
11990 .byte 73,137,199 // mov %rax,%r15
11991 .byte 73,137,244 // mov %rsi,%r12
11992 .byte 72,141,67,8 // lea 0x8(%rbx),%rax
11993 .byte 76,57,232 // cmp %r13,%rax
11994 .byte 118,5 // jbe 28 <_sk_start_pipeline_avx+0x28>
11995 .byte 72,137,223 // mov %rbx,%rdi
11996 .byte 235,65 // jmp 69 <_sk_start_pipeline_avx+0x69>
11997 .byte 185,0,0,0,0 // mov $0x0,%ecx
11998 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
11999 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
12000 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
12001 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
12002 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
12003 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
12004 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
12005 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
12006 .byte 72,137,223 // mov %rbx,%rdi
12007 .byte 76,137,230 // mov %r12,%rsi
12008 .byte 76,137,242 // mov %r14,%rdx
12009 .byte 65,255,215 // callq *%r15
12010 .byte 72,141,123,8 // lea 0x8(%rbx),%rdi
12011 .byte 72,131,195,16 // add $0x10,%rbx
12012 .byte 76,57,235 // cmp %r13,%rbx
12013 .byte 72,137,251 // mov %rdi,%rbx
12014 .byte 118,191 // jbe 28 <_sk_start_pipeline_avx+0x28>
12015 .byte 76,137,233 // mov %r13,%rcx
12016 .byte 72,41,249 // sub %rdi,%rcx
12017 .byte 116,41 // je 9a <_sk_start_pipeline_avx+0x9a>
12018 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
12019 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
12020 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
12021 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
12022 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
12023 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
12024 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
12025 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
12026 .byte 76,137,230 // mov %r12,%rsi
12027 .byte 76,137,242 // mov %r14,%rdx
12028 .byte 65,255,215 // callq *%r15
12029 .byte 76,137,232 // mov %r13,%rax
12030 .byte 91 // pop %rbx
12031 .byte 65,92 // pop %r12
12032 .byte 65,93 // pop %r13
12033 .byte 65,94 // pop %r14
12034 .byte 65,95 // pop %r15
12035 .byte 197,248,119 // vzeroupper
12036 .byte 195 // retq
12037
Mike Klein7c4af542017-03-29 18:21:14 -040012038HIDDEN _sk_just_return_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012039.globl _sk_just_return_avx
Mike Klein86714282017-04-13 17:37:38 -040012040FUNCTION(_sk_just_return_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012041_sk_just_return_avx:
12042 .byte 195 // retq
12043
Mike Klein7c4af542017-03-29 18:21:14 -040012044HIDDEN _sk_seed_shader_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012045.globl _sk_seed_shader_avx
Mike Klein86714282017-04-13 17:37:38 -040012046FUNCTION(_sk_seed_shader_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012047_sk_seed_shader_avx:
12048 .byte 72,173 // lods %ds:(%rsi),%rax
12049 .byte 197,249,110,199 // vmovd %edi,%xmm0
12050 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
12051 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
12052 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
12053 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
12054 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
12055 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
12056 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
12057 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
12058 .byte 197,252,88,2 // vaddps (%rdx),%ymm0,%ymm0
12059 .byte 196,226,125,24,16 // vbroadcastss (%rax),%ymm2
12060 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
12061 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
12062 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12063 .byte 197,249,110,208 // vmovd %eax,%xmm2
12064 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
12065 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
12066 .byte 72,173 // lods %ds:(%rsi),%rax
12067 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
12068 .byte 197,220,87,228 // vxorps %ymm4,%ymm4,%ymm4
12069 .byte 197,212,87,237 // vxorps %ymm5,%ymm5,%ymm5
12070 .byte 197,204,87,246 // vxorps %ymm6,%ymm6,%ymm6
12071 .byte 197,196,87,255 // vxorps %ymm7,%ymm7,%ymm7
12072 .byte 255,224 // jmpq *%rax
12073
Mike Klein7c4af542017-03-29 18:21:14 -040012074HIDDEN _sk_constant_color_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012075.globl _sk_constant_color_avx
Mike Klein86714282017-04-13 17:37:38 -040012076FUNCTION(_sk_constant_color_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012077_sk_constant_color_avx:
12078 .byte 72,173 // lods %ds:(%rsi),%rax
12079 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
12080 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
12081 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
12082 .byte 196,226,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm3
12083 .byte 72,173 // lods %ds:(%rsi),%rax
12084 .byte 255,224 // jmpq *%rax
12085
Mike Klein7c4af542017-03-29 18:21:14 -040012086HIDDEN _sk_clear_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012087.globl _sk_clear_avx
Mike Klein86714282017-04-13 17:37:38 -040012088FUNCTION(_sk_clear_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012089_sk_clear_avx:
12090 .byte 72,173 // lods %ds:(%rsi),%rax
12091 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
12092 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
12093 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
12094 .byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
12095 .byte 255,224 // jmpq *%rax
12096
Mike Kleinaaca1e42017-03-31 09:29:01 -040012097HIDDEN _sk_srcatop_avx
12098.globl _sk_srcatop_avx
Mike Klein86714282017-04-13 17:37:38 -040012099FUNCTION(_sk_srcatop_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012100_sk_srcatop_avx:
12101 .byte 197,124,89,199 // vmulps %ymm7,%ymm0,%ymm8
12102 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12103 .byte 197,249,110,192 // vmovd %eax,%xmm0
12104 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
12105 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
12106 .byte 197,124,92,203 // vsubps %ymm3,%ymm0,%ymm9
12107 .byte 197,180,89,196 // vmulps %ymm4,%ymm9,%ymm0
12108 .byte 197,188,88,192 // vaddps %ymm0,%ymm8,%ymm0
12109 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
12110 .byte 197,52,89,197 // vmulps %ymm5,%ymm9,%ymm8
12111 .byte 196,193,116,88,200 // vaddps %ymm8,%ymm1,%ymm1
12112 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
12113 .byte 197,52,89,198 // vmulps %ymm6,%ymm9,%ymm8
12114 .byte 196,193,108,88,208 // vaddps %ymm8,%ymm2,%ymm2
12115 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
12116 .byte 197,52,89,199 // vmulps %ymm7,%ymm9,%ymm8
12117 .byte 196,193,100,88,216 // vaddps %ymm8,%ymm3,%ymm3
12118 .byte 72,173 // lods %ds:(%rsi),%rax
12119 .byte 255,224 // jmpq *%rax
12120
12121HIDDEN _sk_dstatop_avx
12122.globl _sk_dstatop_avx
Mike Klein86714282017-04-13 17:37:38 -040012123FUNCTION(_sk_dstatop_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012124_sk_dstatop_avx:
12125 .byte 197,100,89,196 // vmulps %ymm4,%ymm3,%ymm8
12126 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12127 .byte 197,121,110,200 // vmovd %eax,%xmm9
12128 .byte 196,67,121,4,201,0 // vpermilps $0x0,%xmm9,%xmm9
12129 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
12130 .byte 197,52,92,207 // vsubps %ymm7,%ymm9,%ymm9
12131 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
12132 .byte 197,188,88,192 // vaddps %ymm0,%ymm8,%ymm0
12133 .byte 197,100,89,197 // vmulps %ymm5,%ymm3,%ymm8
12134 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
12135 .byte 197,188,88,201 // vaddps %ymm1,%ymm8,%ymm1
12136 .byte 197,100,89,198 // vmulps %ymm6,%ymm3,%ymm8
12137 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
12138 .byte 197,188,88,210 // vaddps %ymm2,%ymm8,%ymm2
12139 .byte 197,100,89,199 // vmulps %ymm7,%ymm3,%ymm8
12140 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
12141 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12142 .byte 72,173 // lods %ds:(%rsi),%rax
12143 .byte 255,224 // jmpq *%rax
12144
12145HIDDEN _sk_srcin_avx
12146.globl _sk_srcin_avx
Mike Klein86714282017-04-13 17:37:38 -040012147FUNCTION(_sk_srcin_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012148_sk_srcin_avx:
12149 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
12150 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
12151 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
12152 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
12153 .byte 72,173 // lods %ds:(%rsi),%rax
12154 .byte 255,224 // jmpq *%rax
12155
12156HIDDEN _sk_dstin_avx
12157.globl _sk_dstin_avx
Mike Klein86714282017-04-13 17:37:38 -040012158FUNCTION(_sk_dstin_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012159_sk_dstin_avx:
12160 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
12161 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
12162 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
12163 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
12164 .byte 72,173 // lods %ds:(%rsi),%rax
12165 .byte 255,224 // jmpq *%rax
12166
12167HIDDEN _sk_srcout_avx
12168.globl _sk_srcout_avx
Mike Klein86714282017-04-13 17:37:38 -040012169FUNCTION(_sk_srcout_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012170_sk_srcout_avx:
12171 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12172 .byte 197,121,110,192 // vmovd %eax,%xmm8
12173 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12174 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12175 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
12176 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
12177 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
12178 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
12179 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
12180 .byte 72,173 // lods %ds:(%rsi),%rax
12181 .byte 255,224 // jmpq *%rax
12182
12183HIDDEN _sk_dstout_avx
12184.globl _sk_dstout_avx
Mike Klein86714282017-04-13 17:37:38 -040012185FUNCTION(_sk_dstout_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012186_sk_dstout_avx:
12187 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12188 .byte 197,249,110,192 // vmovd %eax,%xmm0
12189 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
12190 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
12191 .byte 197,252,92,219 // vsubps %ymm3,%ymm0,%ymm3
12192 .byte 197,228,89,196 // vmulps %ymm4,%ymm3,%ymm0
12193 .byte 197,228,89,205 // vmulps %ymm5,%ymm3,%ymm1
12194 .byte 197,228,89,214 // vmulps %ymm6,%ymm3,%ymm2
12195 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040012196 .byte 72,173 // lods %ds:(%rsi),%rax
12197 .byte 255,224 // jmpq *%rax
12198
Mike Klein7c4af542017-03-29 18:21:14 -040012199HIDDEN _sk_srcover_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012200.globl _sk_srcover_avx
Mike Klein86714282017-04-13 17:37:38 -040012201FUNCTION(_sk_srcover_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012202_sk_srcover_avx:
12203 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12204 .byte 197,121,110,192 // vmovd %eax,%xmm8
12205 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12206 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12207 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12208 .byte 197,60,89,204 // vmulps %ymm4,%ymm8,%ymm9
12209 .byte 197,180,88,192 // vaddps %ymm0,%ymm9,%ymm0
12210 .byte 197,60,89,205 // vmulps %ymm5,%ymm8,%ymm9
12211 .byte 197,180,88,201 // vaddps %ymm1,%ymm9,%ymm1
12212 .byte 197,60,89,206 // vmulps %ymm6,%ymm8,%ymm9
12213 .byte 197,180,88,210 // vaddps %ymm2,%ymm9,%ymm2
12214 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12215 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12216 .byte 72,173 // lods %ds:(%rsi),%rax
12217 .byte 255,224 // jmpq *%rax
12218
Mike Klein7c4af542017-03-29 18:21:14 -040012219HIDDEN _sk_dstover_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012220.globl _sk_dstover_avx
Mike Klein86714282017-04-13 17:37:38 -040012221FUNCTION(_sk_dstover_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012222_sk_dstover_avx:
12223 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12224 .byte 197,121,110,192 // vmovd %eax,%xmm8
12225 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12226 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12227 .byte 197,60,92,199 // vsubps %ymm7,%ymm8,%ymm8
12228 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
12229 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
12230 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
12231 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
12232 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
12233 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
12234 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
12235 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
12236 .byte 72,173 // lods %ds:(%rsi),%rax
12237 .byte 255,224 // jmpq *%rax
12238
Mike Kleinaaca1e42017-03-31 09:29:01 -040012239HIDDEN _sk_modulate_avx
12240.globl _sk_modulate_avx
Mike Klein86714282017-04-13 17:37:38 -040012241FUNCTION(_sk_modulate_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012242_sk_modulate_avx:
12243 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
12244 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
12245 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
12246 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
12247 .byte 72,173 // lods %ds:(%rsi),%rax
12248 .byte 255,224 // jmpq *%rax
12249
12250HIDDEN _sk_multiply_avx
12251.globl _sk_multiply_avx
Mike Klein86714282017-04-13 17:37:38 -040012252FUNCTION(_sk_multiply_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012253_sk_multiply_avx:
12254 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12255 .byte 197,121,110,192 // vmovd %eax,%xmm8
12256 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12257 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12258 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
12259 .byte 197,52,89,208 // vmulps %ymm0,%ymm9,%ymm10
12260 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12261 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
12262 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
12263 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
12264 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
12265 .byte 197,52,89,209 // vmulps %ymm1,%ymm9,%ymm10
12266 .byte 197,60,89,221 // vmulps %ymm5,%ymm8,%ymm11
12267 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
12268 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
12269 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
12270 .byte 197,52,89,210 // vmulps %ymm2,%ymm9,%ymm10
12271 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
12272 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
12273 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
12274 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
12275 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
12276 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12277 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
12278 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
12279 .byte 196,193,100,88,216 // vaddps %ymm8,%ymm3,%ymm3
12280 .byte 72,173 // lods %ds:(%rsi),%rax
12281 .byte 255,224 // jmpq *%rax
12282
12283HIDDEN _sk_plus__avx
12284.globl _sk_plus__avx
Mike Klein86714282017-04-13 17:37:38 -040012285FUNCTION(_sk_plus__avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012286_sk_plus__avx:
12287 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
12288 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
12289 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
12290 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
12291 .byte 72,173 // lods %ds:(%rsi),%rax
12292 .byte 255,224 // jmpq *%rax
12293
12294HIDDEN _sk_screen_avx
12295.globl _sk_screen_avx
Mike Klein86714282017-04-13 17:37:38 -040012296FUNCTION(_sk_screen_avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012297_sk_screen_avx:
12298 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
12299 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
12300 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12301 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
12302 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
12303 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
12304 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
12305 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
12306 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
12307 .byte 197,100,88,199 // vaddps %ymm7,%ymm3,%ymm8
12308 .byte 197,228,89,223 // vmulps %ymm7,%ymm3,%ymm3
12309 .byte 197,188,92,219 // vsubps %ymm3,%ymm8,%ymm3
12310 .byte 72,173 // lods %ds:(%rsi),%rax
12311 .byte 255,224 // jmpq *%rax
12312
12313HIDDEN _sk_xor__avx
12314.globl _sk_xor__avx
Mike Klein86714282017-04-13 17:37:38 -040012315FUNCTION(_sk_xor__avx)
Mike Kleinaaca1e42017-03-31 09:29:01 -040012316_sk_xor__avx:
12317 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12318 .byte 197,121,110,192 // vmovd %eax,%xmm8
12319 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12320 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12321 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
12322 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
12323 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12324 .byte 197,60,89,212 // vmulps %ymm4,%ymm8,%ymm10
12325 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
12326 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
12327 .byte 197,60,89,213 // vmulps %ymm5,%ymm8,%ymm10
12328 .byte 197,172,88,201 // vaddps %ymm1,%ymm10,%ymm1
12329 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
12330 .byte 197,60,89,214 // vmulps %ymm6,%ymm8,%ymm10
12331 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
12332 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
12333 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12334 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12335 .byte 72,173 // lods %ds:(%rsi),%rax
12336 .byte 255,224 // jmpq *%rax
12337
Mike Klein66b09ab2017-03-31 10:29:40 -040012338HIDDEN _sk_darken_avx
12339.globl _sk_darken_avx
Mike Klein86714282017-04-13 17:37:38 -040012340FUNCTION(_sk_darken_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040012341_sk_darken_avx:
12342 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
12343 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
12344 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
12345 .byte 196,193,124,95,193 // vmaxps %ymm9,%ymm0,%ymm0
12346 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12347 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
12348 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
12349 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
12350 .byte 196,193,116,95,201 // vmaxps %ymm9,%ymm1,%ymm1
12351 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
12352 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
12353 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
12354 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
12355 .byte 196,193,108,95,209 // vmaxps %ymm9,%ymm2,%ymm2
12356 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
12357 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12358 .byte 197,121,110,192 // vmovd %eax,%xmm8
12359 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12360 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12361 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12362 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12363 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12364 .byte 72,173 // lods %ds:(%rsi),%rax
12365 .byte 255,224 // jmpq *%rax
12366
12367HIDDEN _sk_lighten_avx
12368.globl _sk_lighten_avx
Mike Klein86714282017-04-13 17:37:38 -040012369FUNCTION(_sk_lighten_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040012370_sk_lighten_avx:
12371 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
12372 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
12373 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
12374 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
12375 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12376 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
12377 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
12378 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
12379 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
12380 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
12381 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
12382 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
12383 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
12384 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
12385 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
12386 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12387 .byte 197,121,110,192 // vmovd %eax,%xmm8
12388 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12389 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12390 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12391 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12392 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12393 .byte 72,173 // lods %ds:(%rsi),%rax
12394 .byte 255,224 // jmpq *%rax
12395
12396HIDDEN _sk_difference_avx
12397.globl _sk_difference_avx
Mike Klein86714282017-04-13 17:37:38 -040012398FUNCTION(_sk_difference_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040012399_sk_difference_avx:
12400 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
12401 .byte 197,252,89,199 // vmulps %ymm7,%ymm0,%ymm0
12402 .byte 197,100,89,204 // vmulps %ymm4,%ymm3,%ymm9
12403 .byte 196,193,124,93,193 // vminps %ymm9,%ymm0,%ymm0
12404 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
12405 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12406 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
12407 .byte 197,244,89,207 // vmulps %ymm7,%ymm1,%ymm1
12408 .byte 197,100,89,205 // vmulps %ymm5,%ymm3,%ymm9
12409 .byte 196,193,116,93,201 // vminps %ymm9,%ymm1,%ymm1
12410 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
12411 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
12412 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
12413 .byte 197,236,89,215 // vmulps %ymm7,%ymm2,%ymm2
12414 .byte 197,100,89,206 // vmulps %ymm6,%ymm3,%ymm9
12415 .byte 196,193,108,93,209 // vminps %ymm9,%ymm2,%ymm2
12416 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
12417 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
12418 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12419 .byte 197,121,110,192 // vmovd %eax,%xmm8
12420 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12421 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12422 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12423 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12424 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12425 .byte 72,173 // lods %ds:(%rsi),%rax
12426 .byte 255,224 // jmpq *%rax
12427
12428HIDDEN _sk_exclusion_avx
12429.globl _sk_exclusion_avx
Mike Klein86714282017-04-13 17:37:38 -040012430FUNCTION(_sk_exclusion_avx)
Mike Klein66b09ab2017-03-31 10:29:40 -040012431_sk_exclusion_avx:
12432 .byte 197,124,88,196 // vaddps %ymm4,%ymm0,%ymm8
12433 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
12434 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
12435 .byte 197,188,92,192 // vsubps %ymm0,%ymm8,%ymm0
12436 .byte 197,116,88,197 // vaddps %ymm5,%ymm1,%ymm8
12437 .byte 197,244,89,205 // vmulps %ymm5,%ymm1,%ymm1
12438 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
12439 .byte 197,188,92,201 // vsubps %ymm1,%ymm8,%ymm1
12440 .byte 197,108,88,198 // vaddps %ymm6,%ymm2,%ymm8
12441 .byte 197,236,89,214 // vmulps %ymm6,%ymm2,%ymm2
12442 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
12443 .byte 197,188,92,210 // vsubps %ymm2,%ymm8,%ymm2
12444 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12445 .byte 197,121,110,192 // vmovd %eax,%xmm8
12446 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12447 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12448 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12449 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12450 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12451 .byte 72,173 // lods %ds:(%rsi),%rax
12452 .byte 255,224 // jmpq *%rax
12453
Mike Klein61b84162017-03-31 11:48:14 -040012454HIDDEN _sk_colorburn_avx
12455.globl _sk_colorburn_avx
Mike Klein86714282017-04-13 17:37:38 -040012456FUNCTION(_sk_colorburn_avx)
Mike Klein61b84162017-03-31 11:48:14 -040012457_sk_colorburn_avx:
12458 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12459 .byte 197,121,110,192 // vmovd %eax,%xmm8
12460 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12461 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12462 .byte 197,60,92,207 // vsubps %ymm7,%ymm8,%ymm9
12463 .byte 197,52,89,216 // vmulps %ymm0,%ymm9,%ymm11
12464 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
12465 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12466 .byte 197,60,89,228 // vmulps %ymm4,%ymm8,%ymm12
12467 .byte 197,68,92,236 // vsubps %ymm4,%ymm7,%ymm13
12468 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
12469 .byte 197,20,94,232 // vdivps %ymm0,%ymm13,%ymm13
12470 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
12471 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
12472 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
12473 .byte 196,65,20,88,235 // vaddps %ymm11,%ymm13,%ymm13
12474 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
12475 .byte 197,28,88,224 // vaddps %ymm0,%ymm12,%ymm12
12476 .byte 196,193,124,194,194,0 // vcmpeqps %ymm10,%ymm0,%ymm0
12477 .byte 196,195,21,74,196,0 // vblendvps %ymm0,%ymm12,%ymm13,%ymm0
12478 .byte 197,92,194,231,0 // vcmpeqps %ymm7,%ymm4,%ymm12
12479 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
12480 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
12481 .byte 197,52,89,217 // vmulps %ymm1,%ymm9,%ymm11
12482 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
12483 .byte 197,68,92,237 // vsubps %ymm5,%ymm7,%ymm13
12484 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
12485 .byte 197,20,94,233 // vdivps %ymm1,%ymm13,%ymm13
12486 .byte 196,65,68,93,237 // vminps %ymm13,%ymm7,%ymm13
12487 .byte 196,65,68,92,237 // vsubps %ymm13,%ymm7,%ymm13
12488 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
12489 .byte 196,65,36,88,237 // vaddps %ymm13,%ymm11,%ymm13
12490 .byte 196,65,28,88,237 // vaddps %ymm13,%ymm12,%ymm13
12491 .byte 197,28,88,225 // vaddps %ymm1,%ymm12,%ymm12
12492 .byte 196,193,116,194,202,0 // vcmpeqps %ymm10,%ymm1,%ymm1
12493 .byte 196,195,21,74,204,16 // vblendvps %ymm1,%ymm12,%ymm13,%ymm1
12494 .byte 197,84,194,231,0 // vcmpeqps %ymm7,%ymm5,%ymm12
12495 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
12496 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
12497 .byte 197,52,89,202 // vmulps %ymm2,%ymm9,%ymm9
12498 .byte 196,65,108,194,210,0 // vcmpeqps %ymm10,%ymm2,%ymm10
12499 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
12500 .byte 197,68,92,230 // vsubps %ymm6,%ymm7,%ymm12
12501 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
12502 .byte 197,28,94,226 // vdivps %ymm2,%ymm12,%ymm12
12503 .byte 197,164,88,210 // vaddps %ymm2,%ymm11,%ymm2
12504 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
12505 .byte 196,65,68,92,228 // vsubps %ymm12,%ymm7,%ymm12
12506 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
12507 .byte 196,65,52,88,228 // vaddps %ymm12,%ymm9,%ymm12
12508 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
12509 .byte 196,227,37,74,210,160 // vblendvps %ymm10,%ymm2,%ymm11,%ymm2
12510 .byte 197,76,194,215,0 // vcmpeqps %ymm7,%ymm6,%ymm10
12511 .byte 197,52,88,206 // vaddps %ymm6,%ymm9,%ymm9
12512 .byte 196,195,109,74,209,160 // vblendvps %ymm10,%ymm9,%ymm2,%ymm2
12513 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12514 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12515 .byte 72,173 // lods %ds:(%rsi),%rax
12516 .byte 255,224 // jmpq *%rax
12517
12518HIDDEN _sk_colordodge_avx
12519.globl _sk_colordodge_avx
Mike Klein86714282017-04-13 17:37:38 -040012520FUNCTION(_sk_colordodge_avx)
Mike Klein61b84162017-03-31 11:48:14 -040012521_sk_colordodge_avx:
12522 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12523 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12524 .byte 197,121,110,200 // vmovd %eax,%xmm9
12525 .byte 196,67,121,4,201,0 // vpermilps $0x0,%xmm9,%xmm9
12526 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
12527 .byte 197,52,92,215 // vsubps %ymm7,%ymm9,%ymm10
12528 .byte 197,44,89,216 // vmulps %ymm0,%ymm10,%ymm11
12529 .byte 197,52,92,203 // vsubps %ymm3,%ymm9,%ymm9
12530 .byte 197,100,89,228 // vmulps %ymm4,%ymm3,%ymm12
12531 .byte 197,100,92,232 // vsubps %ymm0,%ymm3,%ymm13
12532 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
12533 .byte 197,52,89,236 // vmulps %ymm4,%ymm9,%ymm13
12534 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
12535 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
12536 .byte 196,65,28,88,227 // vaddps %ymm11,%ymm12,%ymm12
12537 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
12538 .byte 197,20,88,232 // vaddps %ymm0,%ymm13,%ymm13
12539 .byte 197,252,194,195,0 // vcmpeqps %ymm3,%ymm0,%ymm0
12540 .byte 196,195,29,74,197,0 // vblendvps %ymm0,%ymm13,%ymm12,%ymm0
12541 .byte 196,65,92,194,224,0 // vcmpeqps %ymm8,%ymm4,%ymm12
12542 .byte 197,36,88,220 // vaddps %ymm4,%ymm11,%ymm11
12543 .byte 196,195,125,74,195,192 // vblendvps %ymm12,%ymm11,%ymm0,%ymm0
12544 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
12545 .byte 197,100,89,229 // vmulps %ymm5,%ymm3,%ymm12
12546 .byte 197,100,92,233 // vsubps %ymm1,%ymm3,%ymm13
12547 .byte 196,65,28,94,229 // vdivps %ymm13,%ymm12,%ymm12
12548 .byte 197,52,89,237 // vmulps %ymm5,%ymm9,%ymm13
12549 .byte 196,65,68,93,228 // vminps %ymm12,%ymm7,%ymm12
12550 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
12551 .byte 196,65,28,88,227 // vaddps %ymm11,%ymm12,%ymm12
12552 .byte 196,65,20,88,228 // vaddps %ymm12,%ymm13,%ymm12
12553 .byte 197,20,88,233 // vaddps %ymm1,%ymm13,%ymm13
12554 .byte 197,244,194,203,0 // vcmpeqps %ymm3,%ymm1,%ymm1
12555 .byte 196,195,29,74,205,16 // vblendvps %ymm1,%ymm13,%ymm12,%ymm1
12556 .byte 196,65,84,194,224,0 // vcmpeqps %ymm8,%ymm5,%ymm12
12557 .byte 197,36,88,221 // vaddps %ymm5,%ymm11,%ymm11
12558 .byte 196,195,117,74,203,192 // vblendvps %ymm12,%ymm11,%ymm1,%ymm1
12559 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
12560 .byte 197,100,89,222 // vmulps %ymm6,%ymm3,%ymm11
12561 .byte 197,100,92,226 // vsubps %ymm2,%ymm3,%ymm12
12562 .byte 196,65,36,94,220 // vdivps %ymm12,%ymm11,%ymm11
12563 .byte 197,52,89,230 // vmulps %ymm6,%ymm9,%ymm12
12564 .byte 196,65,68,93,219 // vminps %ymm11,%ymm7,%ymm11
12565 .byte 197,36,89,219 // vmulps %ymm3,%ymm11,%ymm11
12566 .byte 196,65,44,88,219 // vaddps %ymm11,%ymm10,%ymm11
12567 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
12568 .byte 197,28,88,226 // vaddps %ymm2,%ymm12,%ymm12
12569 .byte 197,236,194,211,0 // vcmpeqps %ymm3,%ymm2,%ymm2
12570 .byte 196,195,37,74,212,32 // vblendvps %ymm2,%ymm12,%ymm11,%ymm2
12571 .byte 196,65,76,194,192,0 // vcmpeqps %ymm8,%ymm6,%ymm8
12572 .byte 197,44,88,214 // vaddps %ymm6,%ymm10,%ymm10
12573 .byte 196,195,109,74,210,128 // vblendvps %ymm8,%ymm10,%ymm2,%ymm2
12574 .byte 197,52,89,199 // vmulps %ymm7,%ymm9,%ymm8
12575 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12576 .byte 72,173 // lods %ds:(%rsi),%rax
12577 .byte 255,224 // jmpq *%rax
12578
12579HIDDEN _sk_hardlight_avx
12580.globl _sk_hardlight_avx
Mike Klein86714282017-04-13 17:37:38 -040012581FUNCTION(_sk_hardlight_avx)
Mike Klein61b84162017-03-31 11:48:14 -040012582_sk_hardlight_avx:
12583 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12584 .byte 197,121,110,192 // vmovd %eax,%xmm8
12585 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12586 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12587 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
12588 .byte 197,44,89,200 // vmulps %ymm0,%ymm10,%ymm9
12589 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12590 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
12591 .byte 196,65,52,88,219 // vaddps %ymm11,%ymm9,%ymm11
12592 .byte 197,124,88,200 // vaddps %ymm0,%ymm0,%ymm9
12593 .byte 197,52,194,227,2 // vcmpleps %ymm3,%ymm9,%ymm12
12594 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
12595 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
12596 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
12597 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
12598 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
12599 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
12600 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
12601 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
12602 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
12603 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
12604 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
12605 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
12606 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
12607 .byte 197,116,88,225 // vaddps %ymm1,%ymm1,%ymm12
12608 .byte 197,28,194,227,2 // vcmpleps %ymm3,%ymm12,%ymm12
12609 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
12610 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
12611 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
12612 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
12613 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
12614 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
12615 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
12616 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
12617 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
12618 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
12619 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
12620 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
12621 .byte 197,108,88,218 // vaddps %ymm2,%ymm2,%ymm11
12622 .byte 197,36,194,219,2 // vcmpleps %ymm3,%ymm11,%ymm11
12623 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
12624 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
12625 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
12626 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
12627 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
12628 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
12629 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
12630 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
12631 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
12632 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12633 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12634 .byte 72,173 // lods %ds:(%rsi),%rax
12635 .byte 255,224 // jmpq *%rax
12636
12637HIDDEN _sk_overlay_avx
12638.globl _sk_overlay_avx
Mike Klein86714282017-04-13 17:37:38 -040012639FUNCTION(_sk_overlay_avx)
Mike Klein61b84162017-03-31 11:48:14 -040012640_sk_overlay_avx:
12641 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12642 .byte 197,121,110,192 // vmovd %eax,%xmm8
12643 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12644 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12645 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
12646 .byte 197,44,89,200 // vmulps %ymm0,%ymm10,%ymm9
12647 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12648 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
12649 .byte 196,65,52,88,219 // vaddps %ymm11,%ymm9,%ymm11
12650 .byte 197,92,88,204 // vaddps %ymm4,%ymm4,%ymm9
12651 .byte 197,52,194,231,2 // vcmpleps %ymm7,%ymm9,%ymm12
12652 .byte 197,124,89,204 // vmulps %ymm4,%ymm0,%ymm9
12653 .byte 196,65,52,88,233 // vaddps %ymm9,%ymm9,%ymm13
12654 .byte 197,100,89,207 // vmulps %ymm7,%ymm3,%ymm9
12655 .byte 197,68,92,244 // vsubps %ymm4,%ymm7,%ymm14
12656 .byte 197,228,92,192 // vsubps %ymm0,%ymm3,%ymm0
12657 .byte 196,193,124,89,198 // vmulps %ymm14,%ymm0,%ymm0
12658 .byte 197,252,88,192 // vaddps %ymm0,%ymm0,%ymm0
12659 .byte 197,180,92,192 // vsubps %ymm0,%ymm9,%ymm0
12660 .byte 196,195,125,74,197,192 // vblendvps %ymm12,%ymm13,%ymm0,%ymm0
12661 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
12662 .byte 197,44,89,217 // vmulps %ymm1,%ymm10,%ymm11
12663 .byte 197,60,89,229 // vmulps %ymm5,%ymm8,%ymm12
12664 .byte 196,65,28,88,219 // vaddps %ymm11,%ymm12,%ymm11
12665 .byte 197,84,88,229 // vaddps %ymm5,%ymm5,%ymm12
12666 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
12667 .byte 197,116,89,237 // vmulps %ymm5,%ymm1,%ymm13
12668 .byte 196,65,20,88,237 // vaddps %ymm13,%ymm13,%ymm13
12669 .byte 197,68,92,245 // vsubps %ymm5,%ymm7,%ymm14
12670 .byte 197,228,92,201 // vsubps %ymm1,%ymm3,%ymm1
12671 .byte 196,193,116,89,206 // vmulps %ymm14,%ymm1,%ymm1
12672 .byte 197,244,88,201 // vaddps %ymm1,%ymm1,%ymm1
12673 .byte 197,180,92,201 // vsubps %ymm1,%ymm9,%ymm1
12674 .byte 196,195,117,74,205,192 // vblendvps %ymm12,%ymm13,%ymm1,%ymm1
12675 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
12676 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
12677 .byte 197,60,89,222 // vmulps %ymm6,%ymm8,%ymm11
12678 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
12679 .byte 197,76,88,222 // vaddps %ymm6,%ymm6,%ymm11
12680 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
12681 .byte 197,108,89,230 // vmulps %ymm6,%ymm2,%ymm12
12682 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
12683 .byte 197,68,92,238 // vsubps %ymm6,%ymm7,%ymm13
12684 .byte 197,228,92,210 // vsubps %ymm2,%ymm3,%ymm2
12685 .byte 196,193,108,89,213 // vmulps %ymm13,%ymm2,%ymm2
12686 .byte 197,236,88,210 // vaddps %ymm2,%ymm2,%ymm2
12687 .byte 197,180,92,210 // vsubps %ymm2,%ymm9,%ymm2
12688 .byte 196,195,109,74,212,176 // vblendvps %ymm11,%ymm12,%ymm2,%ymm2
12689 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
12690 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12691 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12692 .byte 72,173 // lods %ds:(%rsi),%rax
12693 .byte 255,224 // jmpq *%rax
12694
12695HIDDEN _sk_softlight_avx
12696.globl _sk_softlight_avx
Mike Klein86714282017-04-13 17:37:38 -040012697FUNCTION(_sk_softlight_avx)
Mike Klein61b84162017-03-31 11:48:14 -040012698_sk_softlight_avx:
Mike Klein15bf6782017-03-31 12:21:46 -040012699 .byte 197,252,17,84,36,200 // vmovups %ymm2,-0x38(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040012700 .byte 197,252,40,209 // vmovaps %ymm1,%ymm2
12701 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
12702 .byte 197,52,194,215,1 // vcmpltps %ymm7,%ymm9,%ymm10
12703 .byte 197,92,94,199 // vdivps %ymm7,%ymm4,%ymm8
12704 .byte 196,67,53,74,216,160 // vblendvps %ymm10,%ymm8,%ymm9,%ymm11
12705 .byte 196,65,36,88,195 // vaddps %ymm11,%ymm11,%ymm8
12706 .byte 196,65,60,88,224 // vaddps %ymm8,%ymm8,%ymm12
12707 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12708 .byte 197,121,110,192 // vmovd %eax,%xmm8
12709 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12710 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12711 .byte 196,65,28,89,236 // vmulps %ymm12,%ymm12,%ymm13
12712 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
12713 .byte 196,65,36,92,232 // vsubps %ymm8,%ymm11,%ymm13
12714 .byte 196,65,28,89,237 // vmulps %ymm13,%ymm12,%ymm13
12715 .byte 184,0,0,224,64 // mov $0x40e00000,%eax
12716 .byte 197,121,110,224 // vmovd %eax,%xmm12
12717 .byte 196,67,121,4,228,0 // vpermilps $0x0,%xmm12,%xmm12
12718 .byte 196,67,29,24,228,1 // vinsertf128 $0x1,%xmm12,%ymm12,%ymm12
12719 .byte 196,65,36,89,244 // vmulps %ymm12,%ymm11,%ymm14
12720 .byte 196,65,20,88,238 // vaddps %ymm14,%ymm13,%ymm13
12721 .byte 196,65,124,82,243 // vrsqrtps %ymm11,%ymm14
12722 .byte 196,65,124,83,246 // vrcpps %ymm14,%ymm14
12723 .byte 196,65,12,92,243 // vsubps %ymm11,%ymm14,%ymm14
12724 .byte 197,92,88,252 // vaddps %ymm4,%ymm4,%ymm15
12725 .byte 196,65,4,88,255 // vaddps %ymm15,%ymm15,%ymm15
12726 .byte 197,4,194,255,2 // vcmpleps %ymm7,%ymm15,%ymm15
12727 .byte 196,67,13,74,237,240 // vblendvps %ymm15,%ymm13,%ymm14,%ymm13
12728 .byte 197,124,88,240 // vaddps %ymm0,%ymm0,%ymm14
12729 .byte 197,12,92,251 // vsubps %ymm3,%ymm14,%ymm15
12730 .byte 196,65,60,92,219 // vsubps %ymm11,%ymm8,%ymm11
12731 .byte 196,65,4,89,219 // vmulps %ymm11,%ymm15,%ymm11
12732 .byte 197,36,88,219 // vaddps %ymm3,%ymm11,%ymm11
12733 .byte 197,36,89,220 // vmulps %ymm4,%ymm11,%ymm11
12734 .byte 197,4,89,255 // vmulps %ymm7,%ymm15,%ymm15
12735 .byte 196,65,4,89,237 // vmulps %ymm13,%ymm15,%ymm13
12736 .byte 197,100,89,252 // vmulps %ymm4,%ymm3,%ymm15
12737 .byte 196,65,4,88,237 // vaddps %ymm13,%ymm15,%ymm13
12738 .byte 197,12,194,243,2 // vcmpleps %ymm3,%ymm14,%ymm14
12739 .byte 196,195,21,74,203,224 // vblendvps %ymm14,%ymm11,%ymm13,%ymm1
12740 .byte 197,84,94,239 // vdivps %ymm7,%ymm5,%ymm13
12741 .byte 196,67,53,74,237,160 // vblendvps %ymm10,%ymm13,%ymm9,%ymm13
12742 .byte 196,65,20,88,245 // vaddps %ymm13,%ymm13,%ymm14
12743 .byte 196,65,12,88,246 // vaddps %ymm14,%ymm14,%ymm14
12744 .byte 196,65,12,89,254 // vmulps %ymm14,%ymm14,%ymm15
12745 .byte 196,65,12,88,247 // vaddps %ymm15,%ymm14,%ymm14
12746 .byte 196,65,20,92,248 // vsubps %ymm8,%ymm13,%ymm15
12747 .byte 196,65,4,89,246 // vmulps %ymm14,%ymm15,%ymm14
12748 .byte 196,65,28,89,253 // vmulps %ymm13,%ymm12,%ymm15
12749 .byte 196,65,4,88,246 // vaddps %ymm14,%ymm15,%ymm14
12750 .byte 196,65,124,82,253 // vrsqrtps %ymm13,%ymm15
12751 .byte 196,65,124,83,255 // vrcpps %ymm15,%ymm15
12752 .byte 196,65,4,92,253 // vsubps %ymm13,%ymm15,%ymm15
12753 .byte 197,84,88,221 // vaddps %ymm5,%ymm5,%ymm11
12754 .byte 196,65,36,88,219 // vaddps %ymm11,%ymm11,%ymm11
12755 .byte 197,36,194,223,2 // vcmpleps %ymm7,%ymm11,%ymm11
12756 .byte 196,67,5,74,222,176 // vblendvps %ymm11,%ymm14,%ymm15,%ymm11
12757 .byte 197,108,88,242 // vaddps %ymm2,%ymm2,%ymm14
12758 .byte 196,65,60,92,237 // vsubps %ymm13,%ymm8,%ymm13
12759 .byte 197,12,92,251 // vsubps %ymm3,%ymm14,%ymm15
12760 .byte 196,65,4,89,237 // vmulps %ymm13,%ymm15,%ymm13
12761 .byte 197,4,89,255 // vmulps %ymm7,%ymm15,%ymm15
12762 .byte 196,65,4,89,219 // vmulps %ymm11,%ymm15,%ymm11
12763 .byte 197,100,89,253 // vmulps %ymm5,%ymm3,%ymm15
12764 .byte 196,65,4,88,219 // vaddps %ymm11,%ymm15,%ymm11
12765 .byte 197,20,88,235 // vaddps %ymm3,%ymm13,%ymm13
12766 .byte 197,20,89,237 // vmulps %ymm5,%ymm13,%ymm13
12767 .byte 197,12,194,243,2 // vcmpleps %ymm3,%ymm14,%ymm14
12768 .byte 196,67,37,74,237,224 // vblendvps %ymm14,%ymm13,%ymm11,%ymm13
12769 .byte 197,76,94,223 // vdivps %ymm7,%ymm6,%ymm11
12770 .byte 196,67,53,74,203,160 // vblendvps %ymm10,%ymm11,%ymm9,%ymm9
12771 .byte 196,65,52,88,209 // vaddps %ymm9,%ymm9,%ymm10
12772 .byte 196,65,44,88,210 // vaddps %ymm10,%ymm10,%ymm10
12773 .byte 196,65,44,89,218 // vmulps %ymm10,%ymm10,%ymm11
12774 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
12775 .byte 196,65,52,92,216 // vsubps %ymm8,%ymm9,%ymm11
12776 .byte 196,65,36,89,210 // vmulps %ymm10,%ymm11,%ymm10
12777 .byte 196,65,28,89,217 // vmulps %ymm9,%ymm12,%ymm11
12778 .byte 196,65,36,88,210 // vaddps %ymm10,%ymm11,%ymm10
12779 .byte 196,65,124,82,217 // vrsqrtps %ymm9,%ymm11
12780 .byte 196,65,124,83,219 // vrcpps %ymm11,%ymm11
12781 .byte 196,65,36,92,217 // vsubps %ymm9,%ymm11,%ymm11
12782 .byte 197,76,88,230 // vaddps %ymm6,%ymm6,%ymm12
12783 .byte 196,65,28,88,228 // vaddps %ymm12,%ymm12,%ymm12
12784 .byte 197,28,194,231,2 // vcmpleps %ymm7,%ymm12,%ymm12
12785 .byte 196,67,37,74,210,192 // vblendvps %ymm12,%ymm10,%ymm11,%ymm10
Mike Klein15bf6782017-03-31 12:21:46 -040012786 .byte 197,124,16,116,36,200 // vmovups -0x38(%rsp),%ymm14
Mike Klein61b84162017-03-31 11:48:14 -040012787 .byte 196,65,12,88,222 // vaddps %ymm14,%ymm14,%ymm11
12788 .byte 197,36,92,227 // vsubps %ymm3,%ymm11,%ymm12
12789 .byte 196,65,60,92,201 // vsubps %ymm9,%ymm8,%ymm9
12790 .byte 196,65,28,89,201 // vmulps %ymm9,%ymm12,%ymm9
12791 .byte 197,28,89,231 // vmulps %ymm7,%ymm12,%ymm12
12792 .byte 196,65,28,89,210 // vmulps %ymm10,%ymm12,%ymm10
12793 .byte 197,100,89,230 // vmulps %ymm6,%ymm3,%ymm12
12794 .byte 196,65,28,88,210 // vaddps %ymm10,%ymm12,%ymm10
12795 .byte 197,52,88,203 // vaddps %ymm3,%ymm9,%ymm9
12796 .byte 197,52,89,206 // vmulps %ymm6,%ymm9,%ymm9
12797 .byte 197,36,194,219,2 // vcmpleps %ymm3,%ymm11,%ymm11
12798 .byte 196,67,45,74,201,176 // vblendvps %ymm11,%ymm9,%ymm10,%ymm9
12799 .byte 197,60,92,215 // vsubps %ymm7,%ymm8,%ymm10
12800 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
12801 .byte 197,60,92,195 // vsubps %ymm3,%ymm8,%ymm8
12802 .byte 197,60,89,220 // vmulps %ymm4,%ymm8,%ymm11
12803 .byte 196,193,124,88,195 // vaddps %ymm11,%ymm0,%ymm0
12804 .byte 197,244,88,192 // vaddps %ymm0,%ymm1,%ymm0
12805 .byte 197,172,89,202 // vmulps %ymm2,%ymm10,%ymm1
12806 .byte 197,188,89,213 // vmulps %ymm5,%ymm8,%ymm2
12807 .byte 197,236,88,201 // vaddps %ymm1,%ymm2,%ymm1
12808 .byte 196,193,116,88,205 // vaddps %ymm13,%ymm1,%ymm1
12809 .byte 196,193,44,89,214 // vmulps %ymm14,%ymm10,%ymm2
12810 .byte 197,60,89,214 // vmulps %ymm6,%ymm8,%ymm10
12811 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
12812 .byte 196,193,108,88,209 // vaddps %ymm9,%ymm2,%ymm2
12813 .byte 197,60,89,199 // vmulps %ymm7,%ymm8,%ymm8
12814 .byte 197,188,88,219 // vaddps %ymm3,%ymm8,%ymm3
12815 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein61b84162017-03-31 11:48:14 -040012816 .byte 255,224 // jmpq *%rax
12817
Mike Klein7c4af542017-03-29 18:21:14 -040012818HIDDEN _sk_clamp_0_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012819.globl _sk_clamp_0_avx
Mike Klein86714282017-04-13 17:37:38 -040012820FUNCTION(_sk_clamp_0_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012821_sk_clamp_0_avx:
12822 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12823 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
12824 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
12825 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
12826 .byte 196,193,100,95,216 // vmaxps %ymm8,%ymm3,%ymm3
12827 .byte 72,173 // lods %ds:(%rsi),%rax
12828 .byte 255,224 // jmpq *%rax
12829
Mike Klein7c4af542017-03-29 18:21:14 -040012830HIDDEN _sk_clamp_1_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012831.globl _sk_clamp_1_avx
Mike Klein86714282017-04-13 17:37:38 -040012832FUNCTION(_sk_clamp_1_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012833_sk_clamp_1_avx:
12834 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12835 .byte 197,121,110,192 // vmovd %eax,%xmm8
12836 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12837 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12838 .byte 196,193,124,93,192 // vminps %ymm8,%ymm0,%ymm0
12839 .byte 196,193,116,93,200 // vminps %ymm8,%ymm1,%ymm1
12840 .byte 196,193,108,93,208 // vminps %ymm8,%ymm2,%ymm2
12841 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
12842 .byte 72,173 // lods %ds:(%rsi),%rax
12843 .byte 255,224 // jmpq *%rax
12844
Mike Klein7c4af542017-03-29 18:21:14 -040012845HIDDEN _sk_clamp_a_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012846.globl _sk_clamp_a_avx
Mike Klein86714282017-04-13 17:37:38 -040012847FUNCTION(_sk_clamp_a_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012848_sk_clamp_a_avx:
12849 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12850 .byte 197,121,110,192 // vmovd %eax,%xmm8
12851 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12852 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12853 .byte 196,193,100,93,216 // vminps %ymm8,%ymm3,%ymm3
12854 .byte 197,252,93,195 // vminps %ymm3,%ymm0,%ymm0
12855 .byte 197,244,93,203 // vminps %ymm3,%ymm1,%ymm1
12856 .byte 197,236,93,211 // vminps %ymm3,%ymm2,%ymm2
12857 .byte 72,173 // lods %ds:(%rsi),%rax
12858 .byte 255,224 // jmpq *%rax
12859
Mike Klein7c4af542017-03-29 18:21:14 -040012860HIDDEN _sk_set_rgb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012861.globl _sk_set_rgb_avx
Mike Klein86714282017-04-13 17:37:38 -040012862FUNCTION(_sk_set_rgb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012863_sk_set_rgb_avx:
12864 .byte 72,173 // lods %ds:(%rsi),%rax
12865 .byte 196,226,125,24,0 // vbroadcastss (%rax),%ymm0
12866 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
12867 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
12868 .byte 72,173 // lods %ds:(%rsi),%rax
12869 .byte 255,224 // jmpq *%rax
12870
Mike Klein7c4af542017-03-29 18:21:14 -040012871HIDDEN _sk_swap_rb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012872.globl _sk_swap_rb_avx
Mike Klein86714282017-04-13 17:37:38 -040012873FUNCTION(_sk_swap_rb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012874_sk_swap_rb_avx:
12875 .byte 197,124,40,192 // vmovaps %ymm0,%ymm8
12876 .byte 72,173 // lods %ds:(%rsi),%rax
12877 .byte 197,252,40,194 // vmovaps %ymm2,%ymm0
12878 .byte 197,124,41,194 // vmovaps %ymm8,%ymm2
12879 .byte 255,224 // jmpq *%rax
12880
Mike Klein7c4af542017-03-29 18:21:14 -040012881HIDDEN _sk_swap_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012882.globl _sk_swap_avx
Mike Klein86714282017-04-13 17:37:38 -040012883FUNCTION(_sk_swap_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012884_sk_swap_avx:
12885 .byte 197,124,40,195 // vmovaps %ymm3,%ymm8
12886 .byte 197,124,40,202 // vmovaps %ymm2,%ymm9
12887 .byte 197,124,40,209 // vmovaps %ymm1,%ymm10
12888 .byte 197,124,40,216 // vmovaps %ymm0,%ymm11
12889 .byte 72,173 // lods %ds:(%rsi),%rax
12890 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
12891 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
12892 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
12893 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
12894 .byte 197,124,41,220 // vmovaps %ymm11,%ymm4
12895 .byte 197,124,41,213 // vmovaps %ymm10,%ymm5
12896 .byte 197,124,41,206 // vmovaps %ymm9,%ymm6
12897 .byte 197,124,41,199 // vmovaps %ymm8,%ymm7
12898 .byte 255,224 // jmpq *%rax
12899
Mike Klein7c4af542017-03-29 18:21:14 -040012900HIDDEN _sk_move_src_dst_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012901.globl _sk_move_src_dst_avx
Mike Klein86714282017-04-13 17:37:38 -040012902FUNCTION(_sk_move_src_dst_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012903_sk_move_src_dst_avx:
12904 .byte 72,173 // lods %ds:(%rsi),%rax
12905 .byte 197,252,40,224 // vmovaps %ymm0,%ymm4
12906 .byte 197,252,40,233 // vmovaps %ymm1,%ymm5
12907 .byte 197,252,40,242 // vmovaps %ymm2,%ymm6
12908 .byte 197,252,40,251 // vmovaps %ymm3,%ymm7
12909 .byte 255,224 // jmpq *%rax
12910
Mike Klein7c4af542017-03-29 18:21:14 -040012911HIDDEN _sk_move_dst_src_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012912.globl _sk_move_dst_src_avx
Mike Klein86714282017-04-13 17:37:38 -040012913FUNCTION(_sk_move_dst_src_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012914_sk_move_dst_src_avx:
12915 .byte 72,173 // lods %ds:(%rsi),%rax
12916 .byte 197,252,40,196 // vmovaps %ymm4,%ymm0
12917 .byte 197,252,40,205 // vmovaps %ymm5,%ymm1
12918 .byte 197,252,40,214 // vmovaps %ymm6,%ymm2
12919 .byte 197,252,40,223 // vmovaps %ymm7,%ymm3
12920 .byte 255,224 // jmpq *%rax
12921
Mike Klein7c4af542017-03-29 18:21:14 -040012922HIDDEN _sk_premul_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012923.globl _sk_premul_avx
Mike Klein86714282017-04-13 17:37:38 -040012924FUNCTION(_sk_premul_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012925_sk_premul_avx:
12926 .byte 197,252,89,195 // vmulps %ymm3,%ymm0,%ymm0
12927 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
12928 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
12929 .byte 72,173 // lods %ds:(%rsi),%rax
12930 .byte 255,224 // jmpq *%rax
12931
Mike Klein7c4af542017-03-29 18:21:14 -040012932HIDDEN _sk_unpremul_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012933.globl _sk_unpremul_avx
Mike Klein86714282017-04-13 17:37:38 -040012934FUNCTION(_sk_unpremul_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012935_sk_unpremul_avx:
12936 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
12937 .byte 196,65,100,194,200,0 // vcmpeqps %ymm8,%ymm3,%ymm9
12938 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
12939 .byte 197,121,110,208 // vmovd %eax,%xmm10
12940 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
12941 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
12942 .byte 197,44,94,211 // vdivps %ymm3,%ymm10,%ymm10
12943 .byte 196,67,45,74,192,144 // vblendvps %ymm9,%ymm8,%ymm10,%ymm8
12944 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
12945 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
12946 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
12947 .byte 72,173 // lods %ds:(%rsi),%rax
12948 .byte 255,224 // jmpq *%rax
12949
Mike Klein7c4af542017-03-29 18:21:14 -040012950HIDDEN _sk_from_srgb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040012951.globl _sk_from_srgb_avx
Mike Klein86714282017-04-13 17:37:38 -040012952FUNCTION(_sk_from_srgb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040012953_sk_from_srgb_avx:
12954 .byte 184,145,131,158,61 // mov $0x3d9e8391,%eax
12955 .byte 197,121,110,192 // vmovd %eax,%xmm8
12956 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
12957 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
12958 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
12959 .byte 197,124,89,208 // vmulps %ymm0,%ymm0,%ymm10
12960 .byte 184,154,153,153,62 // mov $0x3e99999a,%eax
12961 .byte 197,121,110,216 // vmovd %eax,%xmm11
12962 .byte 196,67,121,4,219,0 // vpermilps $0x0,%xmm11,%xmm11
12963 .byte 196,67,37,24,219,1 // vinsertf128 $0x1,%xmm11,%ymm11,%ymm11
12964 .byte 184,92,143,50,63 // mov $0x3f328f5c,%eax
12965 .byte 197,121,110,224 // vmovd %eax,%xmm12
12966 .byte 196,67,121,4,228,0 // vpermilps $0x0,%xmm12,%xmm12
12967 .byte 196,67,29,24,228,1 // vinsertf128 $0x1,%xmm12,%ymm12,%ymm12
12968 .byte 197,36,89,232 // vmulps %ymm0,%ymm11,%ymm13
12969 .byte 196,65,20,88,236 // vaddps %ymm12,%ymm13,%ymm13
12970 .byte 184,10,215,35,59 // mov $0x3b23d70a,%eax
12971 .byte 197,121,110,240 // vmovd %eax,%xmm14
12972 .byte 196,67,121,4,246,0 // vpermilps $0x0,%xmm14,%xmm14
12973 .byte 196,67,13,24,246,1 // vinsertf128 $0x1,%xmm14,%ymm14,%ymm14
12974 .byte 196,65,44,89,213 // vmulps %ymm13,%ymm10,%ymm10
12975 .byte 196,65,12,88,210 // vaddps %ymm10,%ymm14,%ymm10
12976 .byte 184,174,71,97,61 // mov $0x3d6147ae,%eax
12977 .byte 197,121,110,232 // vmovd %eax,%xmm13
12978 .byte 196,67,121,4,237,0 // vpermilps $0x0,%xmm13,%xmm13
12979 .byte 196,67,21,24,237,1 // vinsertf128 $0x1,%xmm13,%ymm13,%ymm13
12980 .byte 196,193,124,194,197,1 // vcmpltps %ymm13,%ymm0,%ymm0
12981 .byte 196,195,45,74,193,0 // vblendvps %ymm0,%ymm9,%ymm10,%ymm0
12982 .byte 197,60,89,201 // vmulps %ymm1,%ymm8,%ymm9
12983 .byte 197,116,89,209 // vmulps %ymm1,%ymm1,%ymm10
12984 .byte 197,36,89,249 // vmulps %ymm1,%ymm11,%ymm15
12985 .byte 196,65,28,88,255 // vaddps %ymm15,%ymm12,%ymm15
12986 .byte 196,65,44,89,215 // vmulps %ymm15,%ymm10,%ymm10
12987 .byte 196,65,12,88,210 // vaddps %ymm10,%ymm14,%ymm10
12988 .byte 196,193,116,194,205,1 // vcmpltps %ymm13,%ymm1,%ymm1
12989 .byte 196,195,45,74,201,16 // vblendvps %ymm1,%ymm9,%ymm10,%ymm1
12990 .byte 197,60,89,194 // vmulps %ymm2,%ymm8,%ymm8
12991 .byte 197,108,89,202 // vmulps %ymm2,%ymm2,%ymm9
12992 .byte 197,36,89,210 // vmulps %ymm2,%ymm11,%ymm10
12993 .byte 196,65,28,88,210 // vaddps %ymm10,%ymm12,%ymm10
12994 .byte 196,65,52,89,202 // vmulps %ymm10,%ymm9,%ymm9
12995 .byte 196,65,12,88,201 // vaddps %ymm9,%ymm14,%ymm9
12996 .byte 196,193,108,194,213,1 // vcmpltps %ymm13,%ymm2,%ymm2
12997 .byte 196,195,53,74,208,32 // vblendvps %ymm2,%ymm8,%ymm9,%ymm2
12998 .byte 72,173 // lods %ds:(%rsi),%rax
12999 .byte 255,224 // jmpq *%rax
13000
Mike Klein7c4af542017-03-29 18:21:14 -040013001HIDDEN _sk_to_srgb_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013002.globl _sk_to_srgb_avx
Mike Klein86714282017-04-13 17:37:38 -040013003FUNCTION(_sk_to_srgb_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013004_sk_to_srgb_avx:
13005 .byte 197,124,82,192 // vrsqrtps %ymm0,%ymm8
13006 .byte 196,65,124,83,232 // vrcpps %ymm8,%ymm13
13007 .byte 196,65,124,82,240 // vrsqrtps %ymm8,%ymm14
13008 .byte 184,41,92,71,65 // mov $0x41475c29,%eax
13009 .byte 197,121,110,192 // vmovd %eax,%xmm8
13010 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
13011 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
13012 .byte 197,60,89,224 // vmulps %ymm0,%ymm8,%ymm12
13013 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
13014 .byte 197,121,110,200 // vmovd %eax,%xmm9
13015 .byte 196,67,121,4,201,0 // vpermilps $0x0,%xmm9,%xmm9
13016 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
13017 .byte 184,194,135,210,62 // mov $0x3ed287c2,%eax
13018 .byte 197,121,110,208 // vmovd %eax,%xmm10
13019 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
13020 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
13021 .byte 184,206,111,48,63 // mov $0x3f306fce,%eax
13022 .byte 197,121,110,216 // vmovd %eax,%xmm11
13023 .byte 196,67,121,4,219,0 // vpermilps $0x0,%xmm11,%xmm11
13024 .byte 196,67,37,24,219,1 // vinsertf128 $0x1,%xmm11,%ymm11,%ymm11
13025 .byte 184,168,87,202,61 // mov $0x3dca57a8,%eax
13026 .byte 53,0,0,0,128 // xor $0x80000000,%eax
13027 .byte 197,121,110,248 // vmovd %eax,%xmm15
13028 .byte 196,67,121,4,255,0 // vpermilps $0x0,%xmm15,%xmm15
13029 .byte 196,67,5,24,255,1 // vinsertf128 $0x1,%xmm15,%ymm15,%ymm15
13030 .byte 196,65,20,89,235 // vmulps %ymm11,%ymm13,%ymm13
13031 .byte 196,65,20,88,239 // vaddps %ymm15,%ymm13,%ymm13
13032 .byte 196,65,12,89,242 // vmulps %ymm10,%ymm14,%ymm14
13033 .byte 196,65,12,88,237 // vaddps %ymm13,%ymm14,%ymm13
13034 .byte 196,65,52,93,237 // vminps %ymm13,%ymm9,%ymm13
13035 .byte 184,4,231,140,59 // mov $0x3b8ce704,%eax
13036 .byte 197,121,110,240 // vmovd %eax,%xmm14
13037 .byte 196,67,121,4,246,0 // vpermilps $0x0,%xmm14,%xmm14
13038 .byte 196,67,13,24,246,1 // vinsertf128 $0x1,%xmm14,%ymm14,%ymm14
13039 .byte 196,193,124,194,198,1 // vcmpltps %ymm14,%ymm0,%ymm0
13040 .byte 196,195,21,74,196,0 // vblendvps %ymm0,%ymm12,%ymm13,%ymm0
13041 .byte 197,124,82,225 // vrsqrtps %ymm1,%ymm12
13042 .byte 196,65,124,83,236 // vrcpps %ymm12,%ymm13
13043 .byte 196,65,124,82,228 // vrsqrtps %ymm12,%ymm12
13044 .byte 196,65,36,89,237 // vmulps %ymm13,%ymm11,%ymm13
13045 .byte 196,65,4,88,237 // vaddps %ymm13,%ymm15,%ymm13
13046 .byte 196,65,44,89,228 // vmulps %ymm12,%ymm10,%ymm12
13047 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
13048 .byte 197,60,89,233 // vmulps %ymm1,%ymm8,%ymm13
13049 .byte 196,65,52,93,228 // vminps %ymm12,%ymm9,%ymm12
13050 .byte 196,193,116,194,206,1 // vcmpltps %ymm14,%ymm1,%ymm1
13051 .byte 196,195,29,74,205,16 // vblendvps %ymm1,%ymm13,%ymm12,%ymm1
13052 .byte 197,124,82,226 // vrsqrtps %ymm2,%ymm12
13053 .byte 196,65,124,83,236 // vrcpps %ymm12,%ymm13
13054 .byte 196,65,36,89,221 // vmulps %ymm13,%ymm11,%ymm11
13055 .byte 196,65,4,88,219 // vaddps %ymm11,%ymm15,%ymm11
13056 .byte 196,65,124,82,228 // vrsqrtps %ymm12,%ymm12
13057 .byte 196,65,44,89,212 // vmulps %ymm12,%ymm10,%ymm10
13058 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
13059 .byte 196,65,52,93,202 // vminps %ymm10,%ymm9,%ymm9
13060 .byte 197,60,89,194 // vmulps %ymm2,%ymm8,%ymm8
13061 .byte 196,193,108,194,214,1 // vcmpltps %ymm14,%ymm2,%ymm2
13062 .byte 196,195,53,74,208,32 // vblendvps %ymm2,%ymm8,%ymm9,%ymm2
13063 .byte 72,173 // lods %ds:(%rsi),%rax
13064 .byte 255,224 // jmpq *%rax
13065
Mike Klein7125ac62017-04-05 15:27:22 -040013066HIDDEN _sk_from_2dot2_avx
13067.globl _sk_from_2dot2_avx
Mike Klein86714282017-04-13 17:37:38 -040013068FUNCTION(_sk_from_2dot2_avx)
Mike Klein7125ac62017-04-05 15:27:22 -040013069_sk_from_2dot2_avx:
13070 .byte 197,124,82,192 // vrsqrtps %ymm0,%ymm8
13071 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
13072 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
13073 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
13074 .byte 196,65,124,82,200 // vrsqrtps %ymm8,%ymm9
13075 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13076 .byte 197,252,89,192 // vmulps %ymm0,%ymm0,%ymm0
13077 .byte 196,65,60,89,208 // vmulps %ymm8,%ymm8,%ymm10
13078 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
13079 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
13080 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
13081 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
13082 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
13083 .byte 197,124,82,201 // vrsqrtps %ymm1,%ymm9
13084 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13085 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13086 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13087 .byte 196,65,124,82,209 // vrsqrtps %ymm9,%ymm10
13088 .byte 196,65,124,82,210 // vrsqrtps %ymm10,%ymm10
13089 .byte 197,244,89,201 // vmulps %ymm1,%ymm1,%ymm1
13090 .byte 196,65,52,89,217 // vmulps %ymm9,%ymm9,%ymm11
13091 .byte 196,65,52,89,203 // vmulps %ymm11,%ymm9,%ymm9
13092 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
13093 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
13094 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
13095 .byte 197,124,82,202 // vrsqrtps %ymm2,%ymm9
13096 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13097 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13098 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13099 .byte 196,65,124,82,209 // vrsqrtps %ymm9,%ymm10
13100 .byte 196,65,124,82,210 // vrsqrtps %ymm10,%ymm10
13101 .byte 197,236,89,210 // vmulps %ymm2,%ymm2,%ymm2
13102 .byte 196,65,52,89,217 // vmulps %ymm9,%ymm9,%ymm11
13103 .byte 196,65,52,89,203 // vmulps %ymm11,%ymm9,%ymm9
13104 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
13105 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
13106 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
13107 .byte 72,173 // lods %ds:(%rsi),%rax
13108 .byte 255,224 // jmpq *%rax
13109
13110HIDDEN _sk_to_2dot2_avx
13111.globl _sk_to_2dot2_avx
Mike Klein86714282017-04-13 17:37:38 -040013112FUNCTION(_sk_to_2dot2_avx)
Mike Klein7125ac62017-04-05 15:27:22 -040013113_sk_to_2dot2_avx:
13114 .byte 197,252,82,192 // vrsqrtps %ymm0,%ymm0
13115 .byte 197,124,82,192 // vrsqrtps %ymm0,%ymm8
13116 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
13117 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
13118 .byte 196,65,124,82,192 // vrsqrtps %ymm8,%ymm8
13119 .byte 196,65,124,82,200 // vrsqrtps %ymm8,%ymm9
13120 .byte 197,252,83,192 // vrcpps %ymm0,%ymm0
13121 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
13122 .byte 196,65,124,83,193 // vrcpps %ymm9,%ymm8
13123 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
13124 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
13125 .byte 196,193,124,95,192 // vmaxps %ymm8,%ymm0,%ymm0
13126 .byte 197,252,82,201 // vrsqrtps %ymm1,%ymm1
13127 .byte 197,124,82,201 // vrsqrtps %ymm1,%ymm9
13128 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13129 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13130 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13131 .byte 196,65,124,82,209 // vrsqrtps %ymm9,%ymm10
13132 .byte 197,252,83,201 // vrcpps %ymm1,%ymm1
13133 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
13134 .byte 196,65,124,83,202 // vrcpps %ymm10,%ymm9
13135 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
13136 .byte 196,193,116,95,200 // vmaxps %ymm8,%ymm1,%ymm1
13137 .byte 197,252,82,210 // vrsqrtps %ymm2,%ymm2
13138 .byte 197,124,82,202 // vrsqrtps %ymm2,%ymm9
13139 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13140 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13141 .byte 196,65,124,82,201 // vrsqrtps %ymm9,%ymm9
13142 .byte 196,65,124,82,209 // vrsqrtps %ymm9,%ymm10
13143 .byte 197,252,83,210 // vrcpps %ymm2,%ymm2
13144 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
13145 .byte 196,65,124,83,202 // vrcpps %ymm10,%ymm9
13146 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
13147 .byte 196,193,108,95,208 // vmaxps %ymm8,%ymm2,%ymm2
13148 .byte 72,173 // lods %ds:(%rsi),%rax
13149 .byte 255,224 // jmpq *%rax
13150
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013151HIDDEN _sk_rgb_to_hsl_avx
13152.globl _sk_rgb_to_hsl_avx
Mike Klein86714282017-04-13 17:37:38 -040013153FUNCTION(_sk_rgb_to_hsl_avx)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013154_sk_rgb_to_hsl_avx:
13155 .byte 197,124,95,193 // vmaxps %ymm1,%ymm0,%ymm8
13156 .byte 197,60,95,194 // vmaxps %ymm2,%ymm8,%ymm8
13157 .byte 197,124,93,201 // vminps %ymm1,%ymm0,%ymm9
13158 .byte 197,52,93,202 // vminps %ymm2,%ymm9,%ymm9
13159 .byte 196,65,60,92,209 // vsubps %ymm9,%ymm8,%ymm10
13160 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
13161 .byte 197,121,110,216 // vmovd %eax,%xmm11
13162 .byte 196,67,121,4,219,0 // vpermilps $0x0,%xmm11,%xmm11
13163 .byte 196,67,37,24,219,1 // vinsertf128 $0x1,%xmm11,%ymm11,%ymm11
13164 .byte 196,65,36,94,218 // vdivps %ymm10,%ymm11,%ymm11
13165 .byte 65,184,171,170,42,62 // mov $0x3e2aaaab,%r8d
13166 .byte 197,116,92,226 // vsubps %ymm2,%ymm1,%ymm12
13167 .byte 196,65,28,89,227 // vmulps %ymm11,%ymm12,%ymm12
13168 .byte 65,185,0,0,192,64 // mov $0x40c00000,%r9d
13169 .byte 197,108,92,232 // vsubps %ymm0,%ymm2,%ymm13
13170 .byte 196,65,20,89,235 // vmulps %ymm11,%ymm13,%ymm13
13171 .byte 65,186,0,0,0,64 // mov $0x40000000,%r10d
13172 .byte 197,124,92,241 // vsubps %ymm1,%ymm0,%ymm14
13173 .byte 196,65,12,89,219 // vmulps %ymm11,%ymm14,%ymm11
13174 .byte 184,0,0,128,64 // mov $0x40800000,%eax
13175 .byte 197,121,110,240 // vmovd %eax,%xmm14
13176 .byte 196,67,121,4,246,0 // vpermilps $0x0,%xmm14,%xmm14
13177 .byte 196,67,13,24,246,1 // vinsertf128 $0x1,%xmm14,%ymm14,%ymm14
13178 .byte 196,65,36,88,222 // vaddps %ymm14,%ymm11,%ymm11
13179 .byte 196,65,121,110,242 // vmovd %r10d,%xmm14
13180 .byte 197,244,194,210,1 // vcmpltps %ymm2,%ymm1,%ymm2
13181 .byte 197,188,194,201,0 // vcmpeqps %ymm1,%ymm8,%ymm1
13182 .byte 196,67,121,4,246,0 // vpermilps $0x0,%xmm14,%xmm14
13183 .byte 196,67,13,24,246,1 // vinsertf128 $0x1,%xmm14,%ymm14,%ymm14
13184 .byte 196,65,20,88,238 // vaddps %ymm14,%ymm13,%ymm13
13185 .byte 196,67,37,74,221,16 // vblendvps %ymm1,%ymm13,%ymm11,%ymm11
13186 .byte 196,193,121,110,201 // vmovd %r9d,%xmm1
13187 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
13188 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
13189 .byte 196,65,20,87,237 // vxorps %ymm13,%ymm13,%ymm13
13190 .byte 196,227,21,74,201,32 // vblendvps %ymm2,%ymm1,%ymm13,%ymm1
13191 .byte 196,193,116,88,204 // vaddps %ymm12,%ymm1,%ymm1
13192 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
13193 .byte 197,249,110,208 // vmovd %eax,%xmm2
13194 .byte 197,188,194,192,0 // vcmpeqps %ymm0,%ymm8,%ymm0
13195 .byte 196,227,37,74,193,0 // vblendvps %ymm0,%ymm1,%ymm11,%ymm0
13196 .byte 196,193,60,88,201 // vaddps %ymm9,%ymm8,%ymm1
13197 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
13198 .byte 196,99,109,24,218,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm11
13199 .byte 196,193,116,89,211 // vmulps %ymm11,%ymm1,%ymm2
13200 .byte 197,36,194,218,1 // vcmpltps %ymm2,%ymm11,%ymm11
13201 .byte 196,65,12,92,224 // vsubps %ymm8,%ymm14,%ymm12
13202 .byte 196,65,28,92,225 // vsubps %ymm9,%ymm12,%ymm12
13203 .byte 196,195,117,74,204,176 // vblendvps %ymm11,%ymm12,%ymm1,%ymm1
13204 .byte 196,65,60,194,193,0 // vcmpeqps %ymm9,%ymm8,%ymm8
13205 .byte 197,172,94,201 // vdivps %ymm1,%ymm10,%ymm1
13206 .byte 196,67,125,74,205,128 // vblendvps %ymm8,%ymm13,%ymm0,%ymm9
13207 .byte 196,195,117,74,205,128 // vblendvps %ymm8,%ymm13,%ymm1,%ymm1
13208 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
13209 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
13210 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
13211 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
13212 .byte 72,173 // lods %ds:(%rsi),%rax
13213 .byte 255,224 // jmpq *%rax
13214
13215HIDDEN _sk_hsl_to_rgb_avx
13216.globl _sk_hsl_to_rgb_avx
Mike Klein86714282017-04-13 17:37:38 -040013217FUNCTION(_sk_hsl_to_rgb_avx)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013218_sk_hsl_to_rgb_avx:
13219 .byte 72,131,236,56 // sub $0x38,%rsp
13220 .byte 197,252,17,60,36 // vmovups %ymm7,(%rsp)
13221 .byte 197,252,17,116,36,224 // vmovups %ymm6,-0x20(%rsp)
13222 .byte 197,252,17,108,36,192 // vmovups %ymm5,-0x40(%rsp)
13223 .byte 197,252,17,100,36,160 // vmovups %ymm4,-0x60(%rsp)
13224 .byte 197,252,17,92,36,128 // vmovups %ymm3,-0x80(%rsp)
13225 .byte 197,252,40,226 // vmovaps %ymm2,%ymm4
13226 .byte 197,252,40,233 // vmovaps %ymm1,%ymm5
13227 .byte 197,252,40,216 // vmovaps %ymm0,%ymm3
13228 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
13229 .byte 197,249,110,192 // vmovd %eax,%xmm0
13230 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
13231 .byte 196,99,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm8
13232 .byte 196,193,92,194,192,1 // vcmpltps %ymm8,%ymm4,%ymm0
13233 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
13234 .byte 197,249,110,208 // vmovd %eax,%xmm2
13235 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
13236 .byte 196,99,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm10
13237 .byte 197,172,88,213 // vaddps %ymm5,%ymm10,%ymm2
13238 .byte 197,236,89,212 // vmulps %ymm4,%ymm2,%ymm2
13239 .byte 197,84,88,204 // vaddps %ymm4,%ymm5,%ymm9
13240 .byte 197,84,89,220 // vmulps %ymm4,%ymm5,%ymm11
13241 .byte 196,65,52,92,203 // vsubps %ymm11,%ymm9,%ymm9
13242 .byte 196,99,53,74,202,0 // vblendvps %ymm0,%ymm2,%ymm9,%ymm9
13243 .byte 65,184,0,0,0,64 // mov $0x40000000,%r8d
13244 .byte 184,171,170,170,62 // mov $0x3eaaaaab,%eax
13245 .byte 197,249,110,192 // vmovd %eax,%xmm0
13246 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
13247 .byte 196,99,125,24,224,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm12
13248 .byte 197,28,88,251 // vaddps %ymm3,%ymm12,%ymm15
13249 .byte 184,0,0,0,0 // mov $0x0,%eax
13250 .byte 197,249,110,192 // vmovd %eax,%xmm0
13251 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
13252 .byte 196,99,125,24,232,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm13
13253 .byte 196,193,44,194,199,1 // vcmpltps %ymm15,%ymm10,%ymm0
13254 .byte 196,193,4,92,210 // vsubps %ymm10,%ymm15,%ymm2
13255 .byte 196,227,5,74,194,0 // vblendvps %ymm0,%ymm2,%ymm15,%ymm0
13256 .byte 196,193,4,194,213,1 // vcmpltps %ymm13,%ymm15,%ymm2
13257 .byte 196,65,44,88,223 // vaddps %ymm15,%ymm10,%ymm11
13258 .byte 196,195,125,74,203,32 // vblendvps %ymm2,%ymm11,%ymm0,%ymm1
13259 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
13260 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
13261 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
13262 .byte 197,252,89,196 // vmulps %ymm4,%ymm0,%ymm0
13263 .byte 196,65,124,92,217 // vsubps %ymm9,%ymm0,%ymm11
13264 .byte 65,184,171,170,42,62 // mov $0x3e2aaaab,%r8d
13265 .byte 184,0,0,192,64 // mov $0x40c00000,%eax
13266 .byte 197,249,110,192 // vmovd %eax,%xmm0
13267 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
13268 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
13269 .byte 196,193,52,92,211 // vsubps %ymm11,%ymm9,%ymm2
13270 .byte 197,108,89,240 // vmulps %ymm0,%ymm2,%ymm14
13271 .byte 184,171,170,42,63 // mov $0x3f2aaaab,%eax
13272 .byte 197,249,110,192 // vmovd %eax,%xmm0
13273 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
13274 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
13275 .byte 197,252,92,209 // vsubps %ymm1,%ymm0,%ymm2
13276 .byte 197,140,89,210 // vmulps %ymm2,%ymm14,%ymm2
13277 .byte 197,164,88,210 // vaddps %ymm2,%ymm11,%ymm2
13278 .byte 197,244,194,248,1 // vcmpltps %ymm0,%ymm1,%ymm7
13279 .byte 196,227,37,74,210,112 // vblendvps %ymm7,%ymm2,%ymm11,%ymm2
13280 .byte 196,193,116,194,248,1 // vcmpltps %ymm8,%ymm1,%ymm7
13281 .byte 196,195,109,74,249,112 // vblendvps %ymm7,%ymm9,%ymm2,%ymm7
13282 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
13283 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
13284 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
13285 .byte 197,244,194,202,1 // vcmpltps %ymm2,%ymm1,%ymm1
13286 .byte 196,65,4,89,254 // vmulps %ymm14,%ymm15,%ymm15
13287 .byte 196,65,36,88,255 // vaddps %ymm15,%ymm11,%ymm15
13288 .byte 196,67,69,74,255,16 // vblendvps %ymm1,%ymm15,%ymm7,%ymm15
13289 .byte 197,172,194,203,1 // vcmpltps %ymm3,%ymm10,%ymm1
13290 .byte 196,193,100,92,250 // vsubps %ymm10,%ymm3,%ymm7
13291 .byte 196,227,101,74,207,16 // vblendvps %ymm1,%ymm7,%ymm3,%ymm1
13292 .byte 196,193,100,194,253,1 // vcmpltps %ymm13,%ymm3,%ymm7
13293 .byte 197,172,88,243 // vaddps %ymm3,%ymm10,%ymm6
13294 .byte 196,227,117,74,206,112 // vblendvps %ymm7,%ymm6,%ymm1,%ymm1
13295 .byte 197,252,92,241 // vsubps %ymm1,%ymm0,%ymm6
13296 .byte 197,140,89,246 // vmulps %ymm6,%ymm14,%ymm6
13297 .byte 197,164,88,246 // vaddps %ymm6,%ymm11,%ymm6
13298 .byte 197,244,194,248,1 // vcmpltps %ymm0,%ymm1,%ymm7
13299 .byte 196,227,37,74,246,112 // vblendvps %ymm7,%ymm6,%ymm11,%ymm6
13300 .byte 196,193,116,194,248,1 // vcmpltps %ymm8,%ymm1,%ymm7
13301 .byte 196,195,77,74,241,112 // vblendvps %ymm7,%ymm9,%ymm6,%ymm6
13302 .byte 197,244,194,202,1 // vcmpltps %ymm2,%ymm1,%ymm1
13303 .byte 197,140,89,251 // vmulps %ymm3,%ymm14,%ymm7
13304 .byte 197,164,88,255 // vaddps %ymm7,%ymm11,%ymm7
13305 .byte 196,227,77,74,207,16 // vblendvps %ymm1,%ymm7,%ymm6,%ymm1
13306 .byte 196,193,100,92,220 // vsubps %ymm12,%ymm3,%ymm3
13307 .byte 197,172,194,243,1 // vcmpltps %ymm3,%ymm10,%ymm6
13308 .byte 196,193,100,92,250 // vsubps %ymm10,%ymm3,%ymm7
13309 .byte 196,227,101,74,247,96 // vblendvps %ymm6,%ymm7,%ymm3,%ymm6
13310 .byte 196,193,100,194,253,1 // vcmpltps %ymm13,%ymm3,%ymm7
13311 .byte 197,44,88,211 // vaddps %ymm3,%ymm10,%ymm10
13312 .byte 196,195,77,74,242,112 // vblendvps %ymm7,%ymm10,%ymm6,%ymm6
13313 .byte 197,204,194,248,1 // vcmpltps %ymm0,%ymm6,%ymm7
13314 .byte 197,252,92,198 // vsubps %ymm6,%ymm0,%ymm0
13315 .byte 197,140,89,192 // vmulps %ymm0,%ymm14,%ymm0
13316 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
13317 .byte 196,227,37,74,192,112 // vblendvps %ymm7,%ymm0,%ymm11,%ymm0
13318 .byte 196,193,76,194,248,1 // vcmpltps %ymm8,%ymm6,%ymm7
13319 .byte 196,195,125,74,193,112 // vblendvps %ymm7,%ymm9,%ymm0,%ymm0
13320 .byte 197,204,194,210,1 // vcmpltps %ymm2,%ymm6,%ymm2
13321 .byte 196,193,100,89,222 // vmulps %ymm14,%ymm3,%ymm3
13322 .byte 197,164,88,219 // vaddps %ymm3,%ymm11,%ymm3
13323 .byte 196,227,125,74,211,32 // vblendvps %ymm2,%ymm3,%ymm0,%ymm2
13324 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
13325 .byte 197,212,194,216,0 // vcmpeqps %ymm0,%ymm5,%ymm3
13326 .byte 196,227,5,74,196,48 // vblendvps %ymm3,%ymm4,%ymm15,%ymm0
13327 .byte 196,227,117,74,204,48 // vblendvps %ymm3,%ymm4,%ymm1,%ymm1
13328 .byte 196,227,109,74,212,48 // vblendvps %ymm3,%ymm4,%ymm2,%ymm2
13329 .byte 72,173 // lods %ds:(%rsi),%rax
13330 .byte 197,252,16,92,36,128 // vmovups -0x80(%rsp),%ymm3
13331 .byte 197,252,16,100,36,160 // vmovups -0x60(%rsp),%ymm4
13332 .byte 197,252,16,108,36,192 // vmovups -0x40(%rsp),%ymm5
13333 .byte 197,252,16,116,36,224 // vmovups -0x20(%rsp),%ymm6
13334 .byte 197,252,16,60,36 // vmovups (%rsp),%ymm7
13335 .byte 72,131,196,56 // add $0x38,%rsp
13336 .byte 255,224 // jmpq *%rax
13337
Mike Klein7c4af542017-03-29 18:21:14 -040013338HIDDEN _sk_scale_1_float_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013339.globl _sk_scale_1_float_avx
Mike Klein86714282017-04-13 17:37:38 -040013340FUNCTION(_sk_scale_1_float_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013341_sk_scale_1_float_avx:
13342 .byte 72,173 // lods %ds:(%rsi),%rax
13343 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
13344 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
13345 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
13346 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
13347 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
13348 .byte 72,173 // lods %ds:(%rsi),%rax
13349 .byte 255,224 // jmpq *%rax
13350
Mike Klein7c4af542017-03-29 18:21:14 -040013351HIDDEN _sk_scale_u8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013352.globl _sk_scale_u8_avx
Mike Klein86714282017-04-13 17:37:38 -040013353FUNCTION(_sk_scale_u8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013354_sk_scale_u8_avx:
13355 .byte 73,137,200 // mov %rcx,%r8
13356 .byte 72,173 // lods %ds:(%rsi),%rax
13357 .byte 72,139,0 // mov (%rax),%rax
13358 .byte 72,1,248 // add %rdi,%rax
13359 .byte 77,133,192 // test %r8,%r8
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013360 .byte 117,80 // jne 1456 <_sk_scale_u8_avx+0x60>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013361 .byte 197,122,126,0 // vmovq (%rax),%xmm8
13362 .byte 196,66,121,49,200 // vpmovzxbd %xmm8,%xmm9
13363 .byte 196,67,121,4,192,229 // vpermilps $0xe5,%xmm8,%xmm8
13364 .byte 196,66,121,49,192 // vpmovzxbd %xmm8,%xmm8
13365 .byte 196,67,53,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm9,%ymm8
13366 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
13367 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
13368 .byte 197,121,110,200 // vmovd %eax,%xmm9
13369 .byte 196,67,121,4,201,0 // vpermilps $0x0,%xmm9,%xmm9
13370 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
13371 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
13372 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
13373 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
13374 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
13375 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
13376 .byte 72,173 // lods %ds:(%rsi),%rax
13377 .byte 76,137,193 // mov %r8,%rcx
13378 .byte 255,224 // jmpq *%rax
13379 .byte 49,201 // xor %ecx,%ecx
13380 .byte 77,137,194 // mov %r8,%r10
13381 .byte 69,49,201 // xor %r9d,%r9d
13382 .byte 68,15,182,24 // movzbl (%rax),%r11d
13383 .byte 72,255,192 // inc %rax
13384 .byte 73,211,227 // shl %cl,%r11
13385 .byte 77,9,217 // or %r11,%r9
13386 .byte 72,131,193,8 // add $0x8,%rcx
13387 .byte 73,255,202 // dec %r10
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013388 .byte 117,234 // jne 145e <_sk_scale_u8_avx+0x68>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013389 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013390 .byte 235,143 // jmp 140a <_sk_scale_u8_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013391
Mike Klein7c4af542017-03-29 18:21:14 -040013392HIDDEN _sk_lerp_1_float_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013393.globl _sk_lerp_1_float_avx
Mike Klein86714282017-04-13 17:37:38 -040013394FUNCTION(_sk_lerp_1_float_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013395_sk_lerp_1_float_avx:
13396 .byte 72,173 // lods %ds:(%rsi),%rax
13397 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
13398 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
13399 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
13400 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
13401 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
13402 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
13403 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
13404 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
13405 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
13406 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
13407 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
13408 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
13409 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
13410 .byte 72,173 // lods %ds:(%rsi),%rax
13411 .byte 255,224 // jmpq *%rax
13412
Mike Klein7c4af542017-03-29 18:21:14 -040013413HIDDEN _sk_lerp_u8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013414.globl _sk_lerp_u8_avx
Mike Klein86714282017-04-13 17:37:38 -040013415FUNCTION(_sk_lerp_u8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013416_sk_lerp_u8_avx:
13417 .byte 73,137,200 // mov %rcx,%r8
13418 .byte 72,173 // lods %ds:(%rsi),%rax
13419 .byte 72,139,0 // mov (%rax),%rax
13420 .byte 72,1,248 // add %rdi,%rax
13421 .byte 77,133,192 // test %r8,%r8
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013422 .byte 117,116 // jne 153e <_sk_lerp_u8_avx+0x84>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013423 .byte 197,122,126,0 // vmovq (%rax),%xmm8
13424 .byte 196,66,121,49,200 // vpmovzxbd %xmm8,%xmm9
13425 .byte 196,67,121,4,192,229 // vpermilps $0xe5,%xmm8,%xmm8
13426 .byte 196,66,121,49,192 // vpmovzxbd %xmm8,%xmm8
13427 .byte 196,67,53,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm9,%ymm8
13428 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
13429 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
13430 .byte 197,121,110,200 // vmovd %eax,%xmm9
13431 .byte 196,67,121,4,201,0 // vpermilps $0x0,%xmm9,%xmm9
13432 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
13433 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
13434 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
13435 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
13436 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
13437 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
13438 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
13439 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
13440 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
13441 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
13442 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
13443 .byte 197,228,92,223 // vsubps %ymm7,%ymm3,%ymm3
13444 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
13445 .byte 197,228,88,223 // vaddps %ymm7,%ymm3,%ymm3
13446 .byte 72,173 // lods %ds:(%rsi),%rax
13447 .byte 76,137,193 // mov %r8,%rcx
13448 .byte 255,224 // jmpq *%rax
13449 .byte 49,201 // xor %ecx,%ecx
13450 .byte 77,137,194 // mov %r8,%r10
13451 .byte 69,49,201 // xor %r9d,%r9d
13452 .byte 68,15,182,24 // movzbl (%rax),%r11d
13453 .byte 72,255,192 // inc %rax
13454 .byte 73,211,227 // shl %cl,%r11
13455 .byte 77,9,217 // or %r11,%r9
13456 .byte 72,131,193,8 // add $0x8,%rcx
13457 .byte 73,255,202 // dec %r10
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013458 .byte 117,234 // jne 1546 <_sk_lerp_u8_avx+0x8c>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013459 .byte 196,65,249,110,193 // vmovq %r9,%xmm8
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013460 .byte 233,104,255,255,255 // jmpq 14ce <_sk_lerp_u8_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013461
Mike Klein7c4af542017-03-29 18:21:14 -040013462HIDDEN _sk_lerp_565_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013463.globl _sk_lerp_565_avx
Mike Klein86714282017-04-13 17:37:38 -040013464FUNCTION(_sk_lerp_565_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013465_sk_lerp_565_avx:
13466 .byte 72,173 // lods %ds:(%rsi),%rax
13467 .byte 76,139,16 // mov (%rax),%r10
13468 .byte 72,133,201 // test %rcx,%rcx
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013469 .byte 15,133,250,0,0,0 // jne 166e <_sk_lerp_565_avx+0x108>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013470 .byte 196,65,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm8
13471 .byte 197,225,239,219 // vpxor %xmm3,%xmm3,%xmm3
13472 .byte 197,185,105,219 // vpunpckhwd %xmm3,%xmm8,%xmm3
13473 .byte 196,66,121,51,192 // vpmovzxwd %xmm8,%xmm8
13474 .byte 196,99,61,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm8
13475 .byte 184,0,248,0,0 // mov $0xf800,%eax
13476 .byte 197,249,110,216 // vmovd %eax,%xmm3
13477 .byte 197,249,112,219,0 // vpshufd $0x0,%xmm3,%xmm3
13478 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
13479 .byte 196,193,100,84,216 // vandps %ymm8,%ymm3,%ymm3
13480 .byte 197,124,91,203 // vcvtdq2ps %ymm3,%ymm9
13481 .byte 184,8,33,132,55 // mov $0x37842108,%eax
13482 .byte 197,249,110,216 // vmovd %eax,%xmm3
13483 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
13484 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
13485 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
13486 .byte 184,224,7,0,0 // mov $0x7e0,%eax
13487 .byte 197,249,110,216 // vmovd %eax,%xmm3
13488 .byte 197,249,112,219,0 // vpshufd $0x0,%xmm3,%xmm3
13489 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
13490 .byte 196,193,100,84,216 // vandps %ymm8,%ymm3,%ymm3
13491 .byte 197,124,91,211 // vcvtdq2ps %ymm3,%ymm10
13492 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
13493 .byte 197,249,110,216 // vmovd %eax,%xmm3
13494 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
13495 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
13496 .byte 197,44,89,211 // vmulps %ymm3,%ymm10,%ymm10
13497 .byte 184,31,0,0,0 // mov $0x1f,%eax
13498 .byte 197,249,110,216 // vmovd %eax,%xmm3
13499 .byte 197,249,112,219,0 // vpshufd $0x0,%xmm3,%xmm3
13500 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
13501 .byte 196,193,100,84,216 // vandps %ymm8,%ymm3,%ymm3
13502 .byte 197,124,91,195 // vcvtdq2ps %ymm3,%ymm8
13503 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
13504 .byte 197,249,110,216 // vmovd %eax,%xmm3
13505 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
13506 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
13507 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
13508 .byte 197,252,92,196 // vsubps %ymm4,%ymm0,%ymm0
13509 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
13510 .byte 197,252,88,196 // vaddps %ymm4,%ymm0,%ymm0
13511 .byte 197,244,92,205 // vsubps %ymm5,%ymm1,%ymm1
13512 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
13513 .byte 197,244,88,205 // vaddps %ymm5,%ymm1,%ymm1
13514 .byte 197,236,92,214 // vsubps %ymm6,%ymm2,%ymm2
13515 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
13516 .byte 197,236,88,214 // vaddps %ymm6,%ymm2,%ymm2
13517 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
13518 .byte 197,249,110,216 // vmovd %eax,%xmm3
13519 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
13520 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
13521 .byte 72,173 // lods %ds:(%rsi),%rax
13522 .byte 255,224 // jmpq *%rax
13523 .byte 65,137,200 // mov %ecx,%r8d
13524 .byte 65,128,224,7 // and $0x7,%r8b
13525 .byte 196,65,57,239,192 // vpxor %xmm8,%xmm8,%xmm8
13526 .byte 65,254,200 // dec %r8b
13527 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013528 .byte 15,135,243,254,255,255 // ja 157a <_sk_lerp_565_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013529 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013530 .byte 76,141,13,74,0,0,0 // lea 0x4a(%rip),%r9 # 16dc <_sk_lerp_565_avx+0x176>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013531 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
13532 .byte 76,1,200 // add %r9,%rax
13533 .byte 255,224 // jmpq *%rax
13534 .byte 197,225,239,219 // vpxor %xmm3,%xmm3,%xmm3
13535 .byte 196,65,97,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm3,%xmm8
13536 .byte 196,65,57,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm8,%xmm8
13537 .byte 196,65,57,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm8,%xmm8
13538 .byte 196,65,57,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm8,%xmm8
13539 .byte 196,65,57,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm8,%xmm8
13540 .byte 196,65,57,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm8,%xmm8
13541 .byte 196,65,57,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm8,%xmm8
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013542 .byte 233,159,254,255,255 // jmpq 157a <_sk_lerp_565_avx+0x14>
Mike Klein7125ac62017-04-05 15:27:22 -040013543 .byte 144 // nop
13544 .byte 243,255 // repz (bad)
13545 .byte 255 // (bad)
13546 .byte 255 // (bad)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013547 .byte 235,255 // jmp 16e1 <_sk_lerp_565_avx+0x17b>
Mike Klein7125ac62017-04-05 15:27:22 -040013548 .byte 255 // (bad)
13549 .byte 255,227 // jmpq *%rbx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013550 .byte 255 // (bad)
13551 .byte 255 // (bad)
13552 .byte 255 // (bad)
Mike Klein7125ac62017-04-05 15:27:22 -040013553 .byte 219,255 // (bad)
13554 .byte 255 // (bad)
13555 .byte 255,211 // callq *%rbx
13556 .byte 255 // (bad)
13557 .byte 255 // (bad)
13558 .byte 255,203 // dec %ebx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013559 .byte 255 // (bad)
13560 .byte 255 // (bad)
13561 .byte 255 // (bad)
Mike Klein7125ac62017-04-05 15:27:22 -040013562 .byte 191 // .byte 0xbf
Mike Kleind7e06ae2017-03-29 16:33:06 -040013563 .byte 255 // (bad)
13564 .byte 255 // (bad)
13565 .byte 255 // .byte 0xff
13566
Mike Klein7c4af542017-03-29 18:21:14 -040013567HIDDEN _sk_load_tables_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040013568.globl _sk_load_tables_avx
Mike Klein86714282017-04-13 17:37:38 -040013569FUNCTION(_sk_load_tables_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040013570_sk_load_tables_avx:
13571 .byte 85 // push %rbp
13572 .byte 65,87 // push %r15
13573 .byte 65,86 // push %r14
13574 .byte 65,85 // push %r13
13575 .byte 65,84 // push %r12
13576 .byte 83 // push %rbx
13577 .byte 72,173 // lods %ds:(%rsi),%rax
13578 .byte 76,139,0 // mov (%rax),%r8
13579 .byte 72,133,201 // test %rcx,%rcx
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013580 .byte 15,133,56,2,0,0 // jne 1948 <_sk_load_tables_avx+0x250>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013581 .byte 196,65,124,16,4,184 // vmovups (%r8,%rdi,4),%ymm8
13582 .byte 187,255,0,0,0 // mov $0xff,%ebx
13583 .byte 197,249,110,195 // vmovd %ebx,%xmm0
13584 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
13585 .byte 196,99,125,24,200,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm9
13586 .byte 196,193,52,84,192 // vandps %ymm8,%ymm9,%ymm0
13587 .byte 196,193,249,126,193 // vmovq %xmm0,%r9
13588 .byte 69,137,203 // mov %r9d,%r11d
13589 .byte 196,195,249,22,194,1 // vpextrq $0x1,%xmm0,%r10
13590 .byte 69,137,214 // mov %r10d,%r14d
13591 .byte 73,193,234,32 // shr $0x20,%r10
13592 .byte 73,193,233,32 // shr $0x20,%r9
13593 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
13594 .byte 196,193,249,126,196 // vmovq %xmm0,%r12
13595 .byte 69,137,231 // mov %r12d,%r15d
13596 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
13597 .byte 65,137,221 // mov %ebx,%r13d
13598 .byte 72,193,235,32 // shr $0x20,%rbx
13599 .byte 73,193,236,32 // shr $0x20,%r12
13600 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
13601 .byte 76,139,64,16 // mov 0x10(%rax),%r8
13602 .byte 196,161,122,16,68,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm0
13603 .byte 196,163,121,33,68,165,0,16 // vinsertps $0x10,0x0(%rbp,%r12,4),%xmm0,%xmm0
13604 .byte 196,161,122,16,76,173,0 // vmovss 0x0(%rbp,%r13,4),%xmm1
13605 .byte 196,227,121,33,193,32 // vinsertps $0x20,%xmm1,%xmm0,%xmm0
13606 .byte 197,250,16,76,157,0 // vmovss 0x0(%rbp,%rbx,4),%xmm1
13607 .byte 196,227,121,33,193,48 // vinsertps $0x30,%xmm1,%xmm0,%xmm0
13608 .byte 196,161,122,16,76,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm1
13609 .byte 196,163,113,33,76,141,0,16 // vinsertps $0x10,0x0(%rbp,%r9,4),%xmm1,%xmm1
13610 .byte 196,161,122,16,92,181,0 // vmovss 0x0(%rbp,%r14,4),%xmm3
13611 .byte 196,227,113,33,203,32 // vinsertps $0x20,%xmm3,%xmm1,%xmm1
13612 .byte 196,161,122,16,92,149,0 // vmovss 0x0(%rbp,%r10,4),%xmm3
13613 .byte 196,227,113,33,203,48 // vinsertps $0x30,%xmm3,%xmm1,%xmm1
13614 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
13615 .byte 196,193,113,114,208,8 // vpsrld $0x8,%xmm8,%xmm1
13616 .byte 196,67,125,25,194,1 // vextractf128 $0x1,%ymm8,%xmm10
13617 .byte 196,193,105,114,210,8 // vpsrld $0x8,%xmm10,%xmm2
13618 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
13619 .byte 197,180,84,201 // vandps %ymm1,%ymm9,%ymm1
13620 .byte 196,193,249,126,201 // vmovq %xmm1,%r9
13621 .byte 69,137,203 // mov %r9d,%r11d
13622 .byte 196,195,249,22,202,1 // vpextrq $0x1,%xmm1,%r10
13623 .byte 69,137,214 // mov %r10d,%r14d
13624 .byte 73,193,234,32 // shr $0x20,%r10
13625 .byte 73,193,233,32 // shr $0x20,%r9
13626 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
13627 .byte 196,225,249,126,205 // vmovq %xmm1,%rbp
13628 .byte 65,137,239 // mov %ebp,%r15d
13629 .byte 196,227,249,22,203,1 // vpextrq $0x1,%xmm1,%rbx
13630 .byte 65,137,220 // mov %ebx,%r12d
13631 .byte 72,193,235,32 // shr $0x20,%rbx
13632 .byte 72,193,237,32 // shr $0x20,%rbp
13633 .byte 196,129,122,16,12,184 // vmovss (%r8,%r15,4),%xmm1
13634 .byte 196,195,113,33,12,168,16 // vinsertps $0x10,(%r8,%rbp,4),%xmm1,%xmm1
13635 .byte 196,129,122,16,20,160 // vmovss (%r8,%r12,4),%xmm2
13636 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
13637 .byte 196,193,122,16,20,152 // vmovss (%r8,%rbx,4),%xmm2
13638 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
13639 .byte 196,129,122,16,20,152 // vmovss (%r8,%r11,4),%xmm2
13640 .byte 196,131,105,33,20,136,16 // vinsertps $0x10,(%r8,%r9,4),%xmm2,%xmm2
13641 .byte 196,129,122,16,28,176 // vmovss (%r8,%r14,4),%xmm3
13642 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
13643 .byte 196,129,122,16,28,144 // vmovss (%r8,%r10,4),%xmm3
13644 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
13645 .byte 196,227,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm1
13646 .byte 72,139,64,24 // mov 0x18(%rax),%rax
13647 .byte 196,193,105,114,208,16 // vpsrld $0x10,%xmm8,%xmm2
13648 .byte 196,193,97,114,210,16 // vpsrld $0x10,%xmm10,%xmm3
13649 .byte 196,227,109,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm2,%ymm2
13650 .byte 197,180,84,210 // vandps %ymm2,%ymm9,%ymm2
13651 .byte 196,193,249,126,208 // vmovq %xmm2,%r8
13652 .byte 69,137,194 // mov %r8d,%r10d
13653 .byte 196,195,249,22,209,1 // vpextrq $0x1,%xmm2,%r9
13654 .byte 69,137,203 // mov %r9d,%r11d
13655 .byte 73,193,233,32 // shr $0x20,%r9
13656 .byte 73,193,232,32 // shr $0x20,%r8
13657 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
13658 .byte 196,225,249,126,213 // vmovq %xmm2,%rbp
13659 .byte 65,137,238 // mov %ebp,%r14d
13660 .byte 196,227,249,22,211,1 // vpextrq $0x1,%xmm2,%rbx
13661 .byte 65,137,223 // mov %ebx,%r15d
13662 .byte 72,193,235,32 // shr $0x20,%rbx
13663 .byte 72,193,237,32 // shr $0x20,%rbp
13664 .byte 196,161,122,16,20,176 // vmovss (%rax,%r14,4),%xmm2
13665 .byte 196,227,105,33,20,168,16 // vinsertps $0x10,(%rax,%rbp,4),%xmm2,%xmm2
13666 .byte 196,161,122,16,28,184 // vmovss (%rax,%r15,4),%xmm3
13667 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
13668 .byte 197,250,16,28,152 // vmovss (%rax,%rbx,4),%xmm3
13669 .byte 196,99,105,33,203,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm9
13670 .byte 196,161,122,16,28,144 // vmovss (%rax,%r10,4),%xmm3
13671 .byte 196,163,97,33,28,128,16 // vinsertps $0x10,(%rax,%r8,4),%xmm3,%xmm3
13672 .byte 196,161,122,16,20,152 // vmovss (%rax,%r11,4),%xmm2
13673 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
13674 .byte 196,161,122,16,28,136 // vmovss (%rax,%r9,4),%xmm3
13675 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
13676 .byte 196,195,109,24,209,1 // vinsertf128 $0x1,%xmm9,%ymm2,%ymm2
13677 .byte 196,193,57,114,208,24 // vpsrld $0x18,%xmm8,%xmm8
13678 .byte 196,193,97,114,210,24 // vpsrld $0x18,%xmm10,%xmm3
13679 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
13680 .byte 197,124,91,195 // vcvtdq2ps %ymm3,%ymm8
13681 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
13682 .byte 197,249,110,216 // vmovd %eax,%xmm3
13683 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
13684 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
13685 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
13686 .byte 72,173 // lods %ds:(%rsi),%rax
13687 .byte 91 // pop %rbx
13688 .byte 65,92 // pop %r12
13689 .byte 65,93 // pop %r13
13690 .byte 65,94 // pop %r14
13691 .byte 65,95 // pop %r15
13692 .byte 93 // pop %rbp
13693 .byte 255,224 // jmpq *%rax
13694 .byte 137,203 // mov %ecx,%ebx
13695 .byte 128,227,7 // and $0x7,%bl
13696 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
13697 .byte 254,203 // dec %bl
13698 .byte 128,251,6 // cmp $0x6,%bl
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013699 .byte 15,135,185,253,255,255 // ja 1716 <_sk_load_tables_avx+0x1e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013700 .byte 15,182,219 // movzbl %bl,%ebx
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013701 .byte 76,141,13,137,0,0,0 // lea 0x89(%rip),%r9 # 19f0 <_sk_load_tables_avx+0x2f8>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013702 .byte 73,99,28,153 // movslq (%r9,%rbx,4),%rbx
13703 .byte 76,1,203 // add %r9,%rbx
13704 .byte 255,227 // jmpq *%rbx
13705 .byte 196,193,121,110,68,184,24 // vmovd 0x18(%r8,%rdi,4),%xmm0
13706 .byte 197,249,112,192,68 // vpshufd $0x44,%xmm0,%xmm0
13707 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
13708 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
13709 .byte 196,99,117,12,192,64 // vblendps $0x40,%ymm0,%ymm1,%ymm8
13710 .byte 196,99,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm0
13711 .byte 196,195,121,34,68,184,20,1 // vpinsrd $0x1,0x14(%r8,%rdi,4),%xmm0,%xmm0
13712 .byte 196,99,61,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm8,%ymm8
13713 .byte 196,99,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm0
13714 .byte 196,195,121,34,68,184,16,0 // vpinsrd $0x0,0x10(%r8,%rdi,4),%xmm0,%xmm0
13715 .byte 196,99,61,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm8,%ymm8
13716 .byte 196,195,57,34,68,184,12,3 // vpinsrd $0x3,0xc(%r8,%rdi,4),%xmm8,%xmm0
13717 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
13718 .byte 196,195,57,34,68,184,8,2 // vpinsrd $0x2,0x8(%r8,%rdi,4),%xmm8,%xmm0
13719 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
13720 .byte 196,195,57,34,68,184,4,1 // vpinsrd $0x1,0x4(%r8,%rdi,4),%xmm8,%xmm0
13721 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
13722 .byte 196,195,57,34,4,184,0 // vpinsrd $0x0,(%r8,%rdi,4),%xmm8,%xmm0
13723 .byte 196,99,61,12,192,15 // vblendps $0xf,%ymm0,%ymm8,%ymm8
Mike Kleindb1cbcb2017-04-12 08:35:41 -040013724 .byte 233,38,253,255,255 // jmpq 1716 <_sk_load_tables_avx+0x1e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040013725 .byte 238 // out %al,(%dx)
13726 .byte 255 // (bad)
13727 .byte 255 // (bad)
13728 .byte 255,224 // jmpq *%rax
13729 .byte 255 // (bad)
13730 .byte 255 // (bad)
13731 .byte 255,210 // callq *%rdx
13732 .byte 255 // (bad)
13733 .byte 255 // (bad)
13734 .byte 255,196 // inc %esp
13735 .byte 255 // (bad)
13736 .byte 255 // (bad)
13737 .byte 255,176,255,255,255,156 // pushq -0x63000001(%rax)
13738 .byte 255 // (bad)
13739 .byte 255 // (bad)
13740 .byte 255 // .byte 0xff
13741 .byte 128,255,255 // cmp $0xff,%bh
13742 .byte 255 // .byte 0xff
13743
Mike Kleina3735cd2017-04-17 13:19:05 -040013744HIDDEN _sk_load_tables_u16_be_avx
13745.globl _sk_load_tables_u16_be_avx
13746FUNCTION(_sk_load_tables_u16_be_avx)
13747_sk_load_tables_u16_be_avx:
13748 .byte 72,173 // lods %ds:(%rsi),%rax
13749 .byte 76,139,0 // mov (%rax),%r8
13750 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
13751 .byte 72,133,201 // test %rcx,%rcx
13752 .byte 15,133,165,2,0,0 // jne 1cc7 <_sk_load_tables_u16_be_avx+0x2bb>
13753 .byte 196,1,121,16,4,72 // vmovupd (%r8,%r9,2),%xmm8
13754 .byte 196,129,121,16,84,72,16 // vmovupd 0x10(%r8,%r9,2),%xmm2
13755 .byte 196,129,121,16,92,72,32 // vmovupd 0x20(%r8,%r9,2),%xmm3
13756 .byte 196,1,122,111,76,72,48 // vmovdqu 0x30(%r8,%r9,2),%xmm9
13757 .byte 85 // push %rbp
13758 .byte 65,87 // push %r15
13759 .byte 65,86 // push %r14
13760 .byte 65,85 // push %r13
13761 .byte 65,84 // push %r12
13762 .byte 83 // push %rbx
13763 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
13764 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
13765 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
13766 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
13767 .byte 197,121,97,218 // vpunpcklwd %xmm2,%xmm0,%xmm11
13768 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
13769 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
13770 .byte 197,113,105,211 // vpunpckhwd %xmm3,%xmm1,%xmm10
13771 .byte 197,161,108,194 // vpunpcklqdq %xmm2,%xmm11,%xmm0
13772 .byte 196,65,57,239,192 // vpxor %xmm8,%xmm8,%xmm8
13773 .byte 196,193,121,105,200 // vpunpckhwd %xmm8,%xmm0,%xmm1
13774 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
13775 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
13776 .byte 187,255,0,0,0 // mov $0xff,%ebx
13777 .byte 197,249,110,203 // vmovd %ebx,%xmm1
13778 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
13779 .byte 196,99,117,24,225,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm12
13780 .byte 196,193,124,84,196 // vandps %ymm12,%ymm0,%ymm0
13781 .byte 196,193,249,126,193 // vmovq %xmm0,%r9
13782 .byte 69,137,203 // mov %r9d,%r11d
13783 .byte 196,195,249,22,194,1 // vpextrq $0x1,%xmm0,%r10
13784 .byte 69,137,214 // mov %r10d,%r14d
13785 .byte 73,193,234,32 // shr $0x20,%r10
13786 .byte 73,193,233,32 // shr $0x20,%r9
13787 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
13788 .byte 196,193,249,126,196 // vmovq %xmm0,%r12
13789 .byte 69,137,231 // mov %r12d,%r15d
13790 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
13791 .byte 65,137,221 // mov %ebx,%r13d
13792 .byte 72,193,235,32 // shr $0x20,%rbx
13793 .byte 73,193,236,32 // shr $0x20,%r12
13794 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
13795 .byte 76,139,64,16 // mov 0x10(%rax),%r8
13796 .byte 196,161,122,16,68,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm0
13797 .byte 196,163,121,33,68,165,0,16 // vinsertps $0x10,0x0(%rbp,%r12,4),%xmm0,%xmm0
13798 .byte 196,161,122,16,76,173,0 // vmovss 0x0(%rbp,%r13,4),%xmm1
13799 .byte 196,227,121,33,193,32 // vinsertps $0x20,%xmm1,%xmm0,%xmm0
13800 .byte 197,250,16,76,157,0 // vmovss 0x0(%rbp,%rbx,4),%xmm1
13801 .byte 196,227,121,33,193,48 // vinsertps $0x30,%xmm1,%xmm0,%xmm0
13802 .byte 196,161,122,16,76,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm1
13803 .byte 196,163,113,33,76,141,0,16 // vinsertps $0x10,0x0(%rbp,%r9,4),%xmm1,%xmm1
13804 .byte 196,161,122,16,92,181,0 // vmovss 0x0(%rbp,%r14,4),%xmm3
13805 .byte 196,227,113,33,203,32 // vinsertps $0x20,%xmm3,%xmm1,%xmm1
13806 .byte 196,161,122,16,92,149,0 // vmovss 0x0(%rbp,%r10,4),%xmm3
13807 .byte 196,227,113,33,203,48 // vinsertps $0x30,%xmm3,%xmm1,%xmm1
13808 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
13809 .byte 197,161,109,202 // vpunpckhqdq %xmm2,%xmm11,%xmm1
13810 .byte 196,193,113,105,208 // vpunpckhwd %xmm8,%xmm1,%xmm2
13811 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
13812 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
13813 .byte 196,193,116,84,204 // vandps %ymm12,%ymm1,%ymm1
13814 .byte 196,193,249,126,201 // vmovq %xmm1,%r9
13815 .byte 69,137,203 // mov %r9d,%r11d
13816 .byte 196,195,249,22,202,1 // vpextrq $0x1,%xmm1,%r10
13817 .byte 69,137,214 // mov %r10d,%r14d
13818 .byte 73,193,234,32 // shr $0x20,%r10
13819 .byte 73,193,233,32 // shr $0x20,%r9
13820 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
13821 .byte 196,225,249,126,205 // vmovq %xmm1,%rbp
13822 .byte 65,137,239 // mov %ebp,%r15d
13823 .byte 196,227,249,22,203,1 // vpextrq $0x1,%xmm1,%rbx
13824 .byte 65,137,220 // mov %ebx,%r12d
13825 .byte 72,193,235,32 // shr $0x20,%rbx
13826 .byte 72,193,237,32 // shr $0x20,%rbp
13827 .byte 196,129,122,16,12,184 // vmovss (%r8,%r15,4),%xmm1
13828 .byte 196,195,113,33,12,168,16 // vinsertps $0x10,(%r8,%rbp,4),%xmm1,%xmm1
13829 .byte 196,129,122,16,20,160 // vmovss (%r8,%r12,4),%xmm2
13830 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
13831 .byte 196,193,122,16,20,152 // vmovss (%r8,%rbx,4),%xmm2
13832 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
13833 .byte 196,129,122,16,20,152 // vmovss (%r8,%r11,4),%xmm2
13834 .byte 196,131,105,33,20,136,16 // vinsertps $0x10,(%r8,%r9,4),%xmm2,%xmm2
13835 .byte 196,129,122,16,28,176 // vmovss (%r8,%r14,4),%xmm3
13836 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
13837 .byte 196,129,122,16,28,144 // vmovss (%r8,%r10,4),%xmm3
13838 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
13839 .byte 196,227,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm1
13840 .byte 72,139,64,24 // mov 0x18(%rax),%rax
13841 .byte 196,193,49,108,210 // vpunpcklqdq %xmm10,%xmm9,%xmm2
13842 .byte 196,193,105,105,216 // vpunpckhwd %xmm8,%xmm2,%xmm3
13843 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
13844 .byte 196,227,109,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm2,%ymm2
13845 .byte 196,193,108,84,212 // vandps %ymm12,%ymm2,%ymm2
13846 .byte 196,193,249,126,208 // vmovq %xmm2,%r8
13847 .byte 69,137,194 // mov %r8d,%r10d
13848 .byte 196,195,249,22,209,1 // vpextrq $0x1,%xmm2,%r9
13849 .byte 69,137,203 // mov %r9d,%r11d
13850 .byte 73,193,233,32 // shr $0x20,%r9
13851 .byte 73,193,232,32 // shr $0x20,%r8
13852 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
13853 .byte 196,225,249,126,213 // vmovq %xmm2,%rbp
13854 .byte 65,137,238 // mov %ebp,%r14d
13855 .byte 196,227,249,22,211,1 // vpextrq $0x1,%xmm2,%rbx
13856 .byte 65,137,223 // mov %ebx,%r15d
13857 .byte 72,193,235,32 // shr $0x20,%rbx
13858 .byte 72,193,237,32 // shr $0x20,%rbp
13859 .byte 196,161,122,16,20,176 // vmovss (%rax,%r14,4),%xmm2
13860 .byte 196,227,105,33,20,168,16 // vinsertps $0x10,(%rax,%rbp,4),%xmm2,%xmm2
13861 .byte 196,161,122,16,28,184 // vmovss (%rax,%r15,4),%xmm3
13862 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
13863 .byte 197,250,16,28,152 // vmovss (%rax,%rbx,4),%xmm3
13864 .byte 196,99,105,33,219,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm11
13865 .byte 196,161,122,16,28,144 // vmovss (%rax,%r10,4),%xmm3
13866 .byte 196,163,97,33,28,128,16 // vinsertps $0x10,(%rax,%r8,4),%xmm3,%xmm3
13867 .byte 196,161,122,16,20,152 // vmovss (%rax,%r11,4),%xmm2
13868 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
13869 .byte 196,161,122,16,28,136 // vmovss (%rax,%r9,4),%xmm3
13870 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
13871 .byte 196,195,109,24,211,1 // vinsertf128 $0x1,%xmm11,%ymm2,%ymm2
13872 .byte 184,128,0,128,55 // mov $0x37800080,%eax
13873 .byte 197,249,110,216 // vmovd %eax,%xmm3
13874 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
13875 .byte 196,99,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm11
13876 .byte 196,193,49,109,218 // vpunpckhqdq %xmm10,%xmm9,%xmm3
13877 .byte 197,177,113,243,8 // vpsllw $0x8,%xmm3,%xmm9
13878 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
13879 .byte 197,177,235,219 // vpor %xmm3,%xmm9,%xmm3
13880 .byte 196,65,97,105,192 // vpunpckhwd %xmm8,%xmm3,%xmm8
13881 .byte 196,226,121,51,219 // vpmovzxwd %xmm3,%xmm3
13882 .byte 196,195,101,24,216,1 // vinsertf128 $0x1,%xmm8,%ymm3,%ymm3
13883 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
13884 .byte 196,193,100,89,219 // vmulps %ymm11,%ymm3,%ymm3
13885 .byte 72,173 // lods %ds:(%rsi),%rax
13886 .byte 91 // pop %rbx
13887 .byte 65,92 // pop %r12
13888 .byte 65,93 // pop %r13
13889 .byte 65,94 // pop %r14
13890 .byte 65,95 // pop %r15
13891 .byte 93 // pop %rbp
13892 .byte 255,224 // jmpq *%rax
13893 .byte 196,1,123,16,4,72 // vmovsd (%r8,%r9,2),%xmm8
13894 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
13895 .byte 72,131,249,1 // cmp $0x1,%rcx
13896 .byte 116,85 // je 1d2d <_sk_load_tables_u16_be_avx+0x321>
13897 .byte 196,1,57,22,68,72,8 // vmovhpd 0x8(%r8,%r9,2),%xmm8,%xmm8
13898 .byte 72,131,249,3 // cmp $0x3,%rcx
13899 .byte 114,72 // jb 1d2d <_sk_load_tables_u16_be_avx+0x321>
13900 .byte 196,129,123,16,84,72,16 // vmovsd 0x10(%r8,%r9,2),%xmm2
13901 .byte 72,131,249,3 // cmp $0x3,%rcx
13902 .byte 116,72 // je 1d3a <_sk_load_tables_u16_be_avx+0x32e>
13903 .byte 196,129,105,22,84,72,24 // vmovhpd 0x18(%r8,%r9,2),%xmm2,%xmm2
13904 .byte 72,131,249,5 // cmp $0x5,%rcx
13905 .byte 114,59 // jb 1d3a <_sk_load_tables_u16_be_avx+0x32e>
13906 .byte 196,129,123,16,92,72,32 // vmovsd 0x20(%r8,%r9,2),%xmm3
13907 .byte 72,131,249,5 // cmp $0x5,%rcx
13908 .byte 15,132,45,253,255,255 // je 1a3d <_sk_load_tables_u16_be_avx+0x31>
13909 .byte 196,129,97,22,92,72,40 // vmovhpd 0x28(%r8,%r9,2),%xmm3,%xmm3
13910 .byte 72,131,249,7 // cmp $0x7,%rcx
13911 .byte 15,130,28,253,255,255 // jb 1a3d <_sk_load_tables_u16_be_avx+0x31>
13912 .byte 196,1,122,126,76,72,48 // vmovq 0x30(%r8,%r9,2),%xmm9
13913 .byte 233,16,253,255,255 // jmpq 1a3d <_sk_load_tables_u16_be_avx+0x31>
13914 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
13915 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
13916 .byte 233,3,253,255,255 // jmpq 1a3d <_sk_load_tables_u16_be_avx+0x31>
13917 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
13918 .byte 233,250,252,255,255 // jmpq 1a3d <_sk_load_tables_u16_be_avx+0x31>
13919
13920HIDDEN _sk_load_tables_rgb_u16_be_avx
13921.globl _sk_load_tables_rgb_u16_be_avx
13922FUNCTION(_sk_load_tables_rgb_u16_be_avx)
13923_sk_load_tables_rgb_u16_be_avx:
13924 .byte 72,173 // lods %ds:(%rsi),%rax
13925 .byte 76,139,0 // mov (%rax),%r8
13926 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
13927 .byte 72,133,201 // test %rcx,%rcx
13928 .byte 15,133,146,2,0,0 // jne 1fe7 <_sk_load_tables_rgb_u16_be_avx+0x2a4>
13929 .byte 196,129,122,111,4,72 // vmovdqu (%r8,%r9,2),%xmm0
13930 .byte 196,129,122,111,84,72,12 // vmovdqu 0xc(%r8,%r9,2),%xmm2
13931 .byte 196,129,122,111,76,72,24 // vmovdqu 0x18(%r8,%r9,2),%xmm1
13932 .byte 196,129,122,111,92,72,32 // vmovdqu 0x20(%r8,%r9,2),%xmm3
13933 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
13934 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
13935 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
13936 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
13937 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
13938 .byte 85 // push %rbp
13939 .byte 65,87 // push %r15
13940 .byte 65,86 // push %r14
13941 .byte 65,85 // push %r13
13942 .byte 65,84 // push %r12
13943 .byte 83 // push %rbx
13944 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
13945 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
13946 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
13947 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
13948 .byte 197,121,97,218 // vpunpcklwd %xmm2,%xmm0,%xmm11
13949 .byte 197,121,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm8
13950 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
13951 .byte 197,113,105,211 // vpunpckhwd %xmm3,%xmm1,%xmm10
13952 .byte 197,161,108,194 // vpunpcklqdq %xmm2,%xmm11,%xmm0
13953 .byte 196,65,25,239,228 // vpxor %xmm12,%xmm12,%xmm12
13954 .byte 196,193,121,105,204 // vpunpckhwd %xmm12,%xmm0,%xmm1
13955 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
13956 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
13957 .byte 187,255,0,0,0 // mov $0xff,%ebx
13958 .byte 197,249,110,203 // vmovd %ebx,%xmm1
13959 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
13960 .byte 196,99,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm9
13961 .byte 196,193,124,84,193 // vandps %ymm9,%ymm0,%ymm0
13962 .byte 196,193,249,126,193 // vmovq %xmm0,%r9
13963 .byte 69,137,203 // mov %r9d,%r11d
13964 .byte 196,195,249,22,194,1 // vpextrq $0x1,%xmm0,%r10
13965 .byte 69,137,214 // mov %r10d,%r14d
13966 .byte 73,193,234,32 // shr $0x20,%r10
13967 .byte 73,193,233,32 // shr $0x20,%r9
13968 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
13969 .byte 196,193,249,126,196 // vmovq %xmm0,%r12
13970 .byte 69,137,231 // mov %r12d,%r15d
13971 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
13972 .byte 65,137,221 // mov %ebx,%r13d
13973 .byte 72,193,235,32 // shr $0x20,%rbx
13974 .byte 73,193,236,32 // shr $0x20,%r12
13975 .byte 72,139,104,8 // mov 0x8(%rax),%rbp
13976 .byte 76,139,64,16 // mov 0x10(%rax),%r8
13977 .byte 196,161,122,16,68,189,0 // vmovss 0x0(%rbp,%r15,4),%xmm0
13978 .byte 196,163,121,33,68,165,0,16 // vinsertps $0x10,0x0(%rbp,%r12,4),%xmm0,%xmm0
13979 .byte 196,161,122,16,76,173,0 // vmovss 0x0(%rbp,%r13,4),%xmm1
13980 .byte 196,227,121,33,193,32 // vinsertps $0x20,%xmm1,%xmm0,%xmm0
13981 .byte 197,250,16,76,157,0 // vmovss 0x0(%rbp,%rbx,4),%xmm1
13982 .byte 196,227,121,33,193,48 // vinsertps $0x30,%xmm1,%xmm0,%xmm0
13983 .byte 196,161,122,16,76,157,0 // vmovss 0x0(%rbp,%r11,4),%xmm1
13984 .byte 196,163,113,33,76,141,0,16 // vinsertps $0x10,0x0(%rbp,%r9,4),%xmm1,%xmm1
13985 .byte 196,161,122,16,92,181,0 // vmovss 0x0(%rbp,%r14,4),%xmm3
13986 .byte 196,227,113,33,203,32 // vinsertps $0x20,%xmm3,%xmm1,%xmm1
13987 .byte 196,161,122,16,92,149,0 // vmovss 0x0(%rbp,%r10,4),%xmm3
13988 .byte 196,227,113,33,203,48 // vinsertps $0x30,%xmm3,%xmm1,%xmm1
13989 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
13990 .byte 197,161,109,202 // vpunpckhqdq %xmm2,%xmm11,%xmm1
13991 .byte 196,193,113,105,212 // vpunpckhwd %xmm12,%xmm1,%xmm2
13992 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
13993 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
13994 .byte 196,193,116,84,201 // vandps %ymm9,%ymm1,%ymm1
13995 .byte 196,193,249,126,201 // vmovq %xmm1,%r9
13996 .byte 69,137,203 // mov %r9d,%r11d
13997 .byte 196,195,249,22,202,1 // vpextrq $0x1,%xmm1,%r10
13998 .byte 69,137,214 // mov %r10d,%r14d
13999 .byte 73,193,234,32 // shr $0x20,%r10
14000 .byte 73,193,233,32 // shr $0x20,%r9
14001 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
14002 .byte 196,225,249,126,205 // vmovq %xmm1,%rbp
14003 .byte 65,137,239 // mov %ebp,%r15d
14004 .byte 196,227,249,22,203,1 // vpextrq $0x1,%xmm1,%rbx
14005 .byte 65,137,220 // mov %ebx,%r12d
14006 .byte 72,193,235,32 // shr $0x20,%rbx
14007 .byte 72,193,237,32 // shr $0x20,%rbp
14008 .byte 196,129,122,16,12,184 // vmovss (%r8,%r15,4),%xmm1
14009 .byte 196,195,113,33,12,168,16 // vinsertps $0x10,(%r8,%rbp,4),%xmm1,%xmm1
14010 .byte 196,129,122,16,20,160 // vmovss (%r8,%r12,4),%xmm2
14011 .byte 196,227,113,33,202,32 // vinsertps $0x20,%xmm2,%xmm1,%xmm1
14012 .byte 196,193,122,16,20,152 // vmovss (%r8,%rbx,4),%xmm2
14013 .byte 196,227,113,33,202,48 // vinsertps $0x30,%xmm2,%xmm1,%xmm1
14014 .byte 196,129,122,16,20,152 // vmovss (%r8,%r11,4),%xmm2
14015 .byte 196,131,105,33,20,136,16 // vinsertps $0x10,(%r8,%r9,4),%xmm2,%xmm2
14016 .byte 196,129,122,16,28,176 // vmovss (%r8,%r14,4),%xmm3
14017 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
14018 .byte 196,129,122,16,28,144 // vmovss (%r8,%r10,4),%xmm3
14019 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
14020 .byte 196,227,109,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm2,%ymm1
14021 .byte 72,139,64,24 // mov 0x18(%rax),%rax
14022 .byte 196,193,57,108,210 // vpunpcklqdq %xmm10,%xmm8,%xmm2
14023 .byte 196,193,105,105,220 // vpunpckhwd %xmm12,%xmm2,%xmm3
14024 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
14025 .byte 196,227,109,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm2,%ymm2
14026 .byte 196,193,108,84,209 // vandps %ymm9,%ymm2,%ymm2
14027 .byte 196,193,249,126,208 // vmovq %xmm2,%r8
14028 .byte 69,137,194 // mov %r8d,%r10d
14029 .byte 196,195,249,22,209,1 // vpextrq $0x1,%xmm2,%r9
14030 .byte 69,137,203 // mov %r9d,%r11d
14031 .byte 73,193,233,32 // shr $0x20,%r9
14032 .byte 73,193,232,32 // shr $0x20,%r8
14033 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
14034 .byte 196,225,249,126,213 // vmovq %xmm2,%rbp
14035 .byte 65,137,238 // mov %ebp,%r14d
14036 .byte 196,227,249,22,211,1 // vpextrq $0x1,%xmm2,%rbx
14037 .byte 65,137,223 // mov %ebx,%r15d
14038 .byte 72,193,235,32 // shr $0x20,%rbx
14039 .byte 72,193,237,32 // shr $0x20,%rbp
14040 .byte 196,161,122,16,20,176 // vmovss (%rax,%r14,4),%xmm2
14041 .byte 196,227,105,33,20,168,16 // vinsertps $0x10,(%rax,%rbp,4),%xmm2,%xmm2
14042 .byte 196,161,122,16,28,184 // vmovss (%rax,%r15,4),%xmm3
14043 .byte 196,227,105,33,211,32 // vinsertps $0x20,%xmm3,%xmm2,%xmm2
14044 .byte 197,250,16,28,152 // vmovss (%rax,%rbx,4),%xmm3
14045 .byte 196,99,105,33,195,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm8
14046 .byte 196,161,122,16,28,144 // vmovss (%rax,%r10,4),%xmm3
14047 .byte 196,163,97,33,28,128,16 // vinsertps $0x10,(%rax,%r8,4),%xmm3,%xmm3
14048 .byte 196,161,122,16,20,152 // vmovss (%rax,%r11,4),%xmm2
14049 .byte 196,227,97,33,210,32 // vinsertps $0x20,%xmm2,%xmm3,%xmm2
14050 .byte 196,161,122,16,28,136 // vmovss (%rax,%r9,4),%xmm3
14051 .byte 196,227,105,33,211,48 // vinsertps $0x30,%xmm3,%xmm2,%xmm2
14052 .byte 196,195,109,24,208,1 // vinsertf128 $0x1,%xmm8,%ymm2,%ymm2
14053 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
14054 .byte 197,249,110,216 // vmovd %eax,%xmm3
14055 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14056 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
14057 .byte 72,173 // lods %ds:(%rsi),%rax
14058 .byte 91 // pop %rbx
14059 .byte 65,92 // pop %r12
14060 .byte 65,93 // pop %r13
14061 .byte 65,94 // pop %r14
14062 .byte 65,95 // pop %r15
14063 .byte 93 // pop %rbp
14064 .byte 255,224 // jmpq *%rax
14065 .byte 196,129,121,110,4,72 // vmovd (%r8,%r9,2),%xmm0
14066 .byte 196,129,121,196,68,72,4,2 // vpinsrw $0x2,0x4(%r8,%r9,2),%xmm0,%xmm0
14067 .byte 72,131,249,1 // cmp $0x1,%rcx
14068 .byte 117,5 // jne 2000 <_sk_load_tables_rgb_u16_be_avx+0x2bd>
14069 .byte 233,137,253,255,255 // jmpq 1d89 <_sk_load_tables_rgb_u16_be_avx+0x46>
14070 .byte 196,129,121,110,76,72,6 // vmovd 0x6(%r8,%r9,2),%xmm1
14071 .byte 196,1,113,196,68,72,10,2 // vpinsrw $0x2,0xa(%r8,%r9,2),%xmm1,%xmm8
14072 .byte 72,131,249,3 // cmp $0x3,%rcx
14073 .byte 114,26 // jb 202f <_sk_load_tables_rgb_u16_be_avx+0x2ec>
14074 .byte 196,129,121,110,76,72,12 // vmovd 0xc(%r8,%r9,2),%xmm1
14075 .byte 196,129,113,196,84,72,16,2 // vpinsrw $0x2,0x10(%r8,%r9,2),%xmm1,%xmm2
14076 .byte 72,131,249,3 // cmp $0x3,%rcx
14077 .byte 117,10 // jne 2034 <_sk_load_tables_rgb_u16_be_avx+0x2f1>
14078 .byte 233,90,253,255,255 // jmpq 1d89 <_sk_load_tables_rgb_u16_be_avx+0x46>
14079 .byte 233,85,253,255,255 // jmpq 1d89 <_sk_load_tables_rgb_u16_be_avx+0x46>
14080 .byte 196,129,121,110,76,72,18 // vmovd 0x12(%r8,%r9,2),%xmm1
14081 .byte 196,1,113,196,76,72,22,2 // vpinsrw $0x2,0x16(%r8,%r9,2),%xmm1,%xmm9
14082 .byte 72,131,249,5 // cmp $0x5,%rcx
14083 .byte 114,26 // jb 2063 <_sk_load_tables_rgb_u16_be_avx+0x320>
14084 .byte 196,129,121,110,76,72,24 // vmovd 0x18(%r8,%r9,2),%xmm1
14085 .byte 196,129,113,196,76,72,28,2 // vpinsrw $0x2,0x1c(%r8,%r9,2),%xmm1,%xmm1
14086 .byte 72,131,249,5 // cmp $0x5,%rcx
14087 .byte 117,10 // jne 2068 <_sk_load_tables_rgb_u16_be_avx+0x325>
14088 .byte 233,38,253,255,255 // jmpq 1d89 <_sk_load_tables_rgb_u16_be_avx+0x46>
14089 .byte 233,33,253,255,255 // jmpq 1d89 <_sk_load_tables_rgb_u16_be_avx+0x46>
14090 .byte 196,129,121,110,92,72,30 // vmovd 0x1e(%r8,%r9,2),%xmm3
14091 .byte 196,1,97,196,92,72,34,2 // vpinsrw $0x2,0x22(%r8,%r9,2),%xmm3,%xmm11
14092 .byte 72,131,249,7 // cmp $0x7,%rcx
14093 .byte 114,20 // jb 2091 <_sk_load_tables_rgb_u16_be_avx+0x34e>
14094 .byte 196,129,121,110,92,72,36 // vmovd 0x24(%r8,%r9,2),%xmm3
14095 .byte 196,129,97,196,92,72,40,2 // vpinsrw $0x2,0x28(%r8,%r9,2),%xmm3,%xmm3
14096 .byte 233,248,252,255,255 // jmpq 1d89 <_sk_load_tables_rgb_u16_be_avx+0x46>
14097 .byte 233,243,252,255,255 // jmpq 1d89 <_sk_load_tables_rgb_u16_be_avx+0x46>
14098
Mike Klein40de6da2017-04-07 13:09:29 -040014099HIDDEN _sk_byte_tables_avx
14100.globl _sk_byte_tables_avx
Mike Klein86714282017-04-13 17:37:38 -040014101FUNCTION(_sk_byte_tables_avx)
Mike Klein40de6da2017-04-07 13:09:29 -040014102_sk_byte_tables_avx:
14103 .byte 85 // push %rbp
14104 .byte 65,87 // push %r15
14105 .byte 65,86 // push %r14
14106 .byte 65,85 // push %r13
14107 .byte 65,84 // push %r12
14108 .byte 83 // push %rbx
14109 .byte 72,173 // lods %ds:(%rsi),%rax
14110 .byte 65,184,0,0,127,67 // mov $0x437f0000,%r8d
14111 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
14112 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
14113 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
14114 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
14115 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
14116 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
14117 .byte 68,137,197 // mov %r8d,%ebp
14118 .byte 77,137,194 // mov %r8,%r10
14119 .byte 73,193,234,32 // shr $0x20,%r10
14120 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
14121 .byte 69,137,195 // mov %r8d,%r11d
14122 .byte 77,137,199 // mov %r8,%r15
14123 .byte 73,193,239,32 // shr $0x20,%r15
14124 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
14125 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
14126 .byte 69,137,198 // mov %r8d,%r14d
14127 .byte 77,137,196 // mov %r8,%r12
14128 .byte 73,193,236,32 // shr $0x20,%r12
14129 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
14130 .byte 65,137,221 // mov %ebx,%r13d
14131 .byte 72,193,235,32 // shr $0x20,%rbx
14132 .byte 76,139,8 // mov (%rax),%r9
14133 .byte 76,139,64,8 // mov 0x8(%rax),%r8
14134 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
14135 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
14136 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
14137 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
14138 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
14139 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
14140 .byte 196,98,121,49,200 // vpmovzxbd %xmm0,%xmm9
14141 .byte 196,131,121,32,4,41,0 // vpinsrb $0x0,(%r9,%r13,1),%xmm0,%xmm0
14142 .byte 196,195,121,32,4,25,1 // vpinsrb $0x1,(%r9,%rbx,1),%xmm0,%xmm0
14143 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
14144 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
14145 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
14146 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
14147 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
14148 .byte 196,227,53,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm0
14149 .byte 197,124,91,208 // vcvtdq2ps %ymm0,%ymm10
14150 .byte 189,129,128,128,59 // mov $0x3b808081,%ebp
14151 .byte 197,249,110,197 // vmovd %ebp,%xmm0
14152 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14153 .byte 196,99,125,24,200,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm9
14154 .byte 196,193,44,89,193 // vmulps %ymm9,%ymm10,%ymm0
14155 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
14156 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
14157 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
14158 .byte 65,137,233 // mov %ebp,%r9d
14159 .byte 72,193,237,32 // shr $0x20,%rbp
14160 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
14161 .byte 65,137,218 // mov %ebx,%r10d
14162 .byte 72,193,235,32 // shr $0x20,%rbx
14163 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
14164 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
14165 .byte 69,137,222 // mov %r11d,%r14d
14166 .byte 73,193,235,32 // shr $0x20,%r11
14167 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
14168 .byte 69,137,252 // mov %r15d,%r12d
14169 .byte 73,193,239,32 // shr $0x20,%r15
14170 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
14171 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
14172 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
14173 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
14174 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
14175 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
14176 .byte 196,98,121,49,209 // vpmovzxbd %xmm1,%xmm10
14177 .byte 196,131,121,32,12,32,0 // vpinsrb $0x0,(%r8,%r12,1),%xmm0,%xmm1
14178 .byte 196,131,113,32,12,56,1 // vpinsrb $0x1,(%r8,%r15,1),%xmm1,%xmm1
14179 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
14180 .byte 196,227,113,32,205,2 // vpinsrb $0x2,%ebp,%xmm1,%xmm1
14181 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
14182 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
14183 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
14184 .byte 196,227,45,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm10,%ymm1
14185 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
14186 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
14187 .byte 76,139,64,16 // mov 0x10(%rax),%r8
14188 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
14189 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
14190 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
14191 .byte 65,137,233 // mov %ebp,%r9d
14192 .byte 72,193,237,32 // shr $0x20,%rbp
14193 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
14194 .byte 65,137,218 // mov %ebx,%r10d
14195 .byte 72,193,235,32 // shr $0x20,%rbx
14196 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
14197 .byte 196,195,249,22,211,1 // vpextrq $0x1,%xmm2,%r11
14198 .byte 69,137,222 // mov %r11d,%r14d
14199 .byte 73,193,235,32 // shr $0x20,%r11
14200 .byte 196,193,249,126,215 // vmovq %xmm2,%r15
14201 .byte 69,137,252 // mov %r15d,%r12d
14202 .byte 73,193,239,32 // shr $0x20,%r15
14203 .byte 196,131,121,32,20,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm2
14204 .byte 196,195,105,32,20,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm2,%xmm2
14205 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
14206 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
14207 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
14208 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
14209 .byte 196,98,121,49,210 // vpmovzxbd %xmm2,%xmm10
14210 .byte 196,131,121,32,20,32,0 // vpinsrb $0x0,(%r8,%r12,1),%xmm0,%xmm2
14211 .byte 196,131,105,32,20,56,1 // vpinsrb $0x1,(%r8,%r15,1),%xmm2,%xmm2
14212 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
14213 .byte 196,227,105,32,213,2 // vpinsrb $0x2,%ebp,%xmm2,%xmm2
14214 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
14215 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
14216 .byte 196,226,121,49,210 // vpmovzxbd %xmm2,%xmm2
14217 .byte 196,227,45,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm10,%ymm2
14218 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
14219 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
14220 .byte 72,139,64,24 // mov 0x18(%rax),%rax
14221 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
14222 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
14223 .byte 196,227,249,22,221,1 // vpextrq $0x1,%xmm3,%rbp
14224 .byte 65,137,232 // mov %ebp,%r8d
14225 .byte 72,193,237,32 // shr $0x20,%rbp
14226 .byte 196,225,249,126,219 // vmovq %xmm3,%rbx
14227 .byte 65,137,217 // mov %ebx,%r9d
14228 .byte 72,193,235,32 // shr $0x20,%rbx
14229 .byte 196,227,125,25,219,1 // vextractf128 $0x1,%ymm3,%xmm3
14230 .byte 196,195,249,22,218,1 // vpextrq $0x1,%xmm3,%r10
14231 .byte 69,137,211 // mov %r10d,%r11d
14232 .byte 73,193,234,32 // shr $0x20,%r10
14233 .byte 196,193,249,126,222 // vmovq %xmm3,%r14
14234 .byte 69,137,247 // mov %r14d,%r15d
14235 .byte 73,193,238,32 // shr $0x20,%r14
14236 .byte 196,163,121,32,28,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm3
14237 .byte 196,227,97,32,28,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm3,%xmm3
14238 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
14239 .byte 196,227,97,32,219,2 // vpinsrb $0x2,%ebx,%xmm3,%xmm3
14240 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
14241 .byte 196,227,97,32,221,3 // vpinsrb $0x3,%ebp,%xmm3,%xmm3
14242 .byte 196,98,121,49,195 // vpmovzxbd %xmm3,%xmm8
14243 .byte 196,163,121,32,28,56,0 // vpinsrb $0x0,(%rax,%r15,1),%xmm0,%xmm3
14244 .byte 196,163,97,32,28,48,1 // vpinsrb $0x1,(%rax,%r14,1),%xmm3,%xmm3
14245 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
14246 .byte 196,227,97,32,221,2 // vpinsrb $0x2,%ebp,%xmm3,%xmm3
14247 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
14248 .byte 196,227,97,32,216,3 // vpinsrb $0x3,%eax,%xmm3,%xmm3
14249 .byte 196,226,121,49,219 // vpmovzxbd %xmm3,%xmm3
14250 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
14251 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
14252 .byte 197,180,89,219 // vmulps %ymm3,%ymm9,%ymm3
14253 .byte 72,173 // lods %ds:(%rsi),%rax
14254 .byte 91 // pop %rbx
14255 .byte 65,92 // pop %r12
14256 .byte 65,93 // pop %r13
14257 .byte 65,94 // pop %r14
14258 .byte 65,95 // pop %r15
14259 .byte 93 // pop %rbp
14260 .byte 255,224 // jmpq *%rax
14261
14262HIDDEN _sk_byte_tables_rgb_avx
14263.globl _sk_byte_tables_rgb_avx
Mike Klein86714282017-04-13 17:37:38 -040014264FUNCTION(_sk_byte_tables_rgb_avx)
Mike Klein40de6da2017-04-07 13:09:29 -040014265_sk_byte_tables_rgb_avx:
14266 .byte 85 // push %rbp
14267 .byte 65,87 // push %r15
14268 .byte 65,86 // push %r14
14269 .byte 65,85 // push %r13
14270 .byte 65,84 // push %r12
14271 .byte 83 // push %rbx
14272 .byte 72,173 // lods %ds:(%rsi),%rax
14273 .byte 68,139,64,24 // mov 0x18(%rax),%r8d
14274 .byte 65,255,200 // dec %r8d
14275 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
14276 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
14277 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
14278 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
14279 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
14280 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
14281 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
14282 .byte 68,137,197 // mov %r8d,%ebp
14283 .byte 77,137,194 // mov %r8,%r10
14284 .byte 73,193,234,32 // shr $0x20,%r10
14285 .byte 196,193,249,126,192 // vmovq %xmm0,%r8
14286 .byte 69,137,195 // mov %r8d,%r11d
14287 .byte 77,137,199 // mov %r8,%r15
14288 .byte 73,193,239,32 // shr $0x20,%r15
14289 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
14290 .byte 196,195,249,22,192,1 // vpextrq $0x1,%xmm0,%r8
14291 .byte 69,137,198 // mov %r8d,%r14d
14292 .byte 77,137,196 // mov %r8,%r12
14293 .byte 73,193,236,32 // shr $0x20,%r12
14294 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
14295 .byte 65,137,221 // mov %ebx,%r13d
14296 .byte 72,193,235,32 // shr $0x20,%rbx
14297 .byte 76,139,8 // mov (%rax),%r9
14298 .byte 76,139,64,8 // mov 0x8(%rax),%r8
14299 .byte 196,131,121,32,4,25,0 // vpinsrb $0x0,(%r9,%r11,1),%xmm0,%xmm0
14300 .byte 196,131,121,32,4,57,1 // vpinsrb $0x1,(%r9,%r15,1),%xmm0,%xmm0
14301 .byte 65,15,182,44,41 // movzbl (%r9,%rbp,1),%ebp
14302 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
14303 .byte 67,15,182,44,17 // movzbl (%r9,%r10,1),%ebp
14304 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
14305 .byte 196,98,121,49,200 // vpmovzxbd %xmm0,%xmm9
14306 .byte 196,131,121,32,4,41,0 // vpinsrb $0x0,(%r9,%r13,1),%xmm0,%xmm0
14307 .byte 196,195,121,32,4,25,1 // vpinsrb $0x1,(%r9,%rbx,1),%xmm0,%xmm0
14308 .byte 67,15,182,44,49 // movzbl (%r9,%r14,1),%ebp
14309 .byte 196,227,121,32,197,2 // vpinsrb $0x2,%ebp,%xmm0,%xmm0
14310 .byte 67,15,182,44,33 // movzbl (%r9,%r12,1),%ebp
14311 .byte 196,227,121,32,197,3 // vpinsrb $0x3,%ebp,%xmm0,%xmm0
14312 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
14313 .byte 196,227,53,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm0
14314 .byte 197,124,91,208 // vcvtdq2ps %ymm0,%ymm10
14315 .byte 189,129,128,128,59 // mov $0x3b808081,%ebp
14316 .byte 197,249,110,197 // vmovd %ebp,%xmm0
14317 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14318 .byte 196,99,125,24,200,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm9
14319 .byte 196,193,44,89,193 // vmulps %ymm9,%ymm10,%ymm0
14320 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
14321 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
14322 .byte 196,227,249,22,205,1 // vpextrq $0x1,%xmm1,%rbp
14323 .byte 65,137,233 // mov %ebp,%r9d
14324 .byte 72,193,237,32 // shr $0x20,%rbp
14325 .byte 196,225,249,126,203 // vmovq %xmm1,%rbx
14326 .byte 65,137,218 // mov %ebx,%r10d
14327 .byte 72,193,235,32 // shr $0x20,%rbx
14328 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
14329 .byte 196,195,249,22,203,1 // vpextrq $0x1,%xmm1,%r11
14330 .byte 69,137,222 // mov %r11d,%r14d
14331 .byte 73,193,235,32 // shr $0x20,%r11
14332 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
14333 .byte 69,137,252 // mov %r15d,%r12d
14334 .byte 73,193,239,32 // shr $0x20,%r15
14335 .byte 196,131,121,32,12,16,0 // vpinsrb $0x0,(%r8,%r10,1),%xmm0,%xmm1
14336 .byte 196,195,113,32,12,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm1,%xmm1
14337 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
14338 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
14339 .byte 65,15,182,44,40 // movzbl (%r8,%rbp,1),%ebp
14340 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
14341 .byte 196,98,121,49,209 // vpmovzxbd %xmm1,%xmm10
14342 .byte 196,131,121,32,12,32,0 // vpinsrb $0x0,(%r8,%r12,1),%xmm0,%xmm1
14343 .byte 196,131,113,32,12,56,1 // vpinsrb $0x1,(%r8,%r15,1),%xmm1,%xmm1
14344 .byte 67,15,182,44,48 // movzbl (%r8,%r14,1),%ebp
14345 .byte 196,227,113,32,205,2 // vpinsrb $0x2,%ebp,%xmm1,%xmm1
14346 .byte 67,15,182,44,24 // movzbl (%r8,%r11,1),%ebp
14347 .byte 196,227,113,32,205,3 // vpinsrb $0x3,%ebp,%xmm1,%xmm1
14348 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
14349 .byte 196,227,45,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm10,%ymm1
14350 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
14351 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
14352 .byte 72,139,64,16 // mov 0x10(%rax),%rax
14353 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
14354 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
14355 .byte 196,227,249,22,213,1 // vpextrq $0x1,%xmm2,%rbp
14356 .byte 65,137,232 // mov %ebp,%r8d
14357 .byte 72,193,237,32 // shr $0x20,%rbp
14358 .byte 196,225,249,126,211 // vmovq %xmm2,%rbx
14359 .byte 65,137,217 // mov %ebx,%r9d
14360 .byte 72,193,235,32 // shr $0x20,%rbx
14361 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
14362 .byte 196,195,249,22,210,1 // vpextrq $0x1,%xmm2,%r10
14363 .byte 69,137,211 // mov %r10d,%r11d
14364 .byte 73,193,234,32 // shr $0x20,%r10
14365 .byte 196,193,249,126,214 // vmovq %xmm2,%r14
14366 .byte 69,137,247 // mov %r14d,%r15d
14367 .byte 73,193,238,32 // shr $0x20,%r14
14368 .byte 196,163,121,32,20,8,0 // vpinsrb $0x0,(%rax,%r9,1),%xmm0,%xmm2
14369 .byte 196,227,105,32,20,24,1 // vpinsrb $0x1,(%rax,%rbx,1),%xmm2,%xmm2
14370 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
14371 .byte 196,227,105,32,211,2 // vpinsrb $0x2,%ebx,%xmm2,%xmm2
14372 .byte 15,182,44,40 // movzbl (%rax,%rbp,1),%ebp
14373 .byte 196,227,105,32,213,3 // vpinsrb $0x3,%ebp,%xmm2,%xmm2
14374 .byte 196,98,121,49,194 // vpmovzxbd %xmm2,%xmm8
14375 .byte 196,163,121,32,20,56,0 // vpinsrb $0x0,(%rax,%r15,1),%xmm0,%xmm2
14376 .byte 196,163,105,32,20,48,1 // vpinsrb $0x1,(%rax,%r14,1),%xmm2,%xmm2
14377 .byte 66,15,182,44,24 // movzbl (%rax,%r11,1),%ebp
14378 .byte 196,227,105,32,213,2 // vpinsrb $0x2,%ebp,%xmm2,%xmm2
14379 .byte 66,15,182,4,16 // movzbl (%rax,%r10,1),%eax
14380 .byte 196,227,105,32,208,3 // vpinsrb $0x3,%eax,%xmm2,%xmm2
14381 .byte 196,226,121,49,210 // vpmovzxbd %xmm2,%xmm2
14382 .byte 196,227,61,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm8,%ymm2
14383 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
14384 .byte 197,180,89,210 // vmulps %ymm2,%ymm9,%ymm2
14385 .byte 72,173 // lods %ds:(%rsi),%rax
14386 .byte 91 // pop %rbx
14387 .byte 65,92 // pop %r12
14388 .byte 65,93 // pop %r13
14389 .byte 65,94 // pop %r14
14390 .byte 65,95 // pop %r15
14391 .byte 93 // pop %rbp
14392 .byte 255,224 // jmpq *%rax
14393
Mike Kleinc7d9c0b2017-04-17 14:43:59 -040014394HIDDEN _sk_table_r_avx
14395.globl _sk_table_r_avx
14396FUNCTION(_sk_table_r_avx)
14397_sk_table_r_avx:
14398 .byte 65,87 // push %r15
14399 .byte 65,86 // push %r14
14400 .byte 65,84 // push %r12
14401 .byte 83 // push %rbx
14402 .byte 72,173 // lods %ds:(%rsi),%rax
14403 .byte 76,139,0 // mov (%rax),%r8
14404 .byte 139,64,8 // mov 0x8(%rax),%eax
14405 .byte 255,200 // dec %eax
14406 .byte 197,121,110,192 // vmovd %eax,%xmm8
14407 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
14408 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
14409 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
14410 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
14411 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
14412 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
14413 .byte 65,137,193 // mov %eax,%r9d
14414 .byte 72,193,232,32 // shr $0x20,%rax
14415 .byte 196,193,249,126,194 // vmovq %xmm0,%r10
14416 .byte 69,137,211 // mov %r10d,%r11d
14417 .byte 73,193,234,32 // shr $0x20,%r10
14418 .byte 196,227,125,25,192,1 // vextractf128 $0x1,%ymm0,%xmm0
14419 .byte 196,227,249,22,195,1 // vpextrq $0x1,%xmm0,%rbx
14420 .byte 65,137,222 // mov %ebx,%r14d
14421 .byte 72,193,235,32 // shr $0x20,%rbx
14422 .byte 196,193,249,126,199 // vmovq %xmm0,%r15
14423 .byte 69,137,252 // mov %r15d,%r12d
14424 .byte 73,193,239,32 // shr $0x20,%r15
14425 .byte 196,129,122,16,4,160 // vmovss (%r8,%r12,4),%xmm0
14426 .byte 196,3,121,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm0,%xmm8
14427 .byte 196,129,122,16,4,176 // vmovss (%r8,%r14,4),%xmm0
14428 .byte 196,99,57,33,192,32 // vinsertps $0x20,%xmm0,%xmm8,%xmm8
14429 .byte 196,193,122,16,4,152 // vmovss (%r8,%rbx,4),%xmm0
14430 .byte 196,99,57,33,192,48 // vinsertps $0x30,%xmm0,%xmm8,%xmm8
14431 .byte 196,129,122,16,4,152 // vmovss (%r8,%r11,4),%xmm0
14432 .byte 196,3,121,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm0,%xmm9
14433 .byte 196,129,122,16,4,136 // vmovss (%r8,%r9,4),%xmm0
14434 .byte 196,99,49,33,200,32 // vinsertps $0x20,%xmm0,%xmm9,%xmm9
14435 .byte 196,193,122,16,4,128 // vmovss (%r8,%rax,4),%xmm0
14436 .byte 196,227,49,33,192,48 // vinsertps $0x30,%xmm0,%xmm9,%xmm0
14437 .byte 196,195,125,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm0,%ymm0
14438 .byte 72,173 // lods %ds:(%rsi),%rax
14439 .byte 91 // pop %rbx
14440 .byte 65,92 // pop %r12
14441 .byte 65,94 // pop %r14
14442 .byte 65,95 // pop %r15
14443 .byte 255,224 // jmpq *%rax
14444
14445HIDDEN _sk_table_g_avx
14446.globl _sk_table_g_avx
14447FUNCTION(_sk_table_g_avx)
14448_sk_table_g_avx:
14449 .byte 65,87 // push %r15
14450 .byte 65,86 // push %r14
14451 .byte 65,84 // push %r12
14452 .byte 83 // push %rbx
14453 .byte 72,173 // lods %ds:(%rsi),%rax
14454 .byte 76,139,0 // mov (%rax),%r8
14455 .byte 139,64,8 // mov 0x8(%rax),%eax
14456 .byte 255,200 // dec %eax
14457 .byte 197,121,110,192 // vmovd %eax,%xmm8
14458 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
14459 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
14460 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
14461 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
14462 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
14463 .byte 196,227,249,22,200,1 // vpextrq $0x1,%xmm1,%rax
14464 .byte 65,137,193 // mov %eax,%r9d
14465 .byte 72,193,232,32 // shr $0x20,%rax
14466 .byte 196,193,249,126,202 // vmovq %xmm1,%r10
14467 .byte 69,137,211 // mov %r10d,%r11d
14468 .byte 73,193,234,32 // shr $0x20,%r10
14469 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
14470 .byte 196,227,249,22,203,1 // vpextrq $0x1,%xmm1,%rbx
14471 .byte 65,137,222 // mov %ebx,%r14d
14472 .byte 72,193,235,32 // shr $0x20,%rbx
14473 .byte 196,193,249,126,207 // vmovq %xmm1,%r15
14474 .byte 69,137,252 // mov %r15d,%r12d
14475 .byte 73,193,239,32 // shr $0x20,%r15
14476 .byte 196,129,122,16,12,160 // vmovss (%r8,%r12,4),%xmm1
14477 .byte 196,3,113,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm1,%xmm8
14478 .byte 196,129,122,16,12,176 // vmovss (%r8,%r14,4),%xmm1
14479 .byte 196,99,57,33,193,32 // vinsertps $0x20,%xmm1,%xmm8,%xmm8
14480 .byte 196,193,122,16,12,152 // vmovss (%r8,%rbx,4),%xmm1
14481 .byte 196,99,57,33,193,48 // vinsertps $0x30,%xmm1,%xmm8,%xmm8
14482 .byte 196,129,122,16,12,152 // vmovss (%r8,%r11,4),%xmm1
14483 .byte 196,3,113,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm1,%xmm9
14484 .byte 196,129,122,16,12,136 // vmovss (%r8,%r9,4),%xmm1
14485 .byte 196,99,49,33,201,32 // vinsertps $0x20,%xmm1,%xmm9,%xmm9
14486 .byte 196,193,122,16,12,128 // vmovss (%r8,%rax,4),%xmm1
14487 .byte 196,227,49,33,201,48 // vinsertps $0x30,%xmm1,%xmm9,%xmm1
14488 .byte 196,195,117,24,200,1 // vinsertf128 $0x1,%xmm8,%ymm1,%ymm1
14489 .byte 72,173 // lods %ds:(%rsi),%rax
14490 .byte 91 // pop %rbx
14491 .byte 65,92 // pop %r12
14492 .byte 65,94 // pop %r14
14493 .byte 65,95 // pop %r15
14494 .byte 255,224 // jmpq *%rax
14495
14496HIDDEN _sk_table_b_avx
14497.globl _sk_table_b_avx
14498FUNCTION(_sk_table_b_avx)
14499_sk_table_b_avx:
14500 .byte 65,87 // push %r15
14501 .byte 65,86 // push %r14
14502 .byte 65,84 // push %r12
14503 .byte 83 // push %rbx
14504 .byte 72,173 // lods %ds:(%rsi),%rax
14505 .byte 76,139,0 // mov (%rax),%r8
14506 .byte 139,64,8 // mov 0x8(%rax),%eax
14507 .byte 255,200 // dec %eax
14508 .byte 197,121,110,192 // vmovd %eax,%xmm8
14509 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
14510 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
14511 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
14512 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
14513 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
14514 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
14515 .byte 65,137,193 // mov %eax,%r9d
14516 .byte 72,193,232,32 // shr $0x20,%rax
14517 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
14518 .byte 69,137,211 // mov %r10d,%r11d
14519 .byte 73,193,234,32 // shr $0x20,%r10
14520 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
14521 .byte 196,227,249,22,211,1 // vpextrq $0x1,%xmm2,%rbx
14522 .byte 65,137,222 // mov %ebx,%r14d
14523 .byte 72,193,235,32 // shr $0x20,%rbx
14524 .byte 196,193,249,126,215 // vmovq %xmm2,%r15
14525 .byte 69,137,252 // mov %r15d,%r12d
14526 .byte 73,193,239,32 // shr $0x20,%r15
14527 .byte 196,129,122,16,20,160 // vmovss (%r8,%r12,4),%xmm2
14528 .byte 196,3,105,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm2,%xmm8
14529 .byte 196,129,122,16,20,176 // vmovss (%r8,%r14,4),%xmm2
14530 .byte 196,99,57,33,194,32 // vinsertps $0x20,%xmm2,%xmm8,%xmm8
14531 .byte 196,193,122,16,20,152 // vmovss (%r8,%rbx,4),%xmm2
14532 .byte 196,99,57,33,194,48 // vinsertps $0x30,%xmm2,%xmm8,%xmm8
14533 .byte 196,129,122,16,20,152 // vmovss (%r8,%r11,4),%xmm2
14534 .byte 196,3,105,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm2,%xmm9
14535 .byte 196,129,122,16,20,136 // vmovss (%r8,%r9,4),%xmm2
14536 .byte 196,99,49,33,202,32 // vinsertps $0x20,%xmm2,%xmm9,%xmm9
14537 .byte 196,193,122,16,20,128 // vmovss (%r8,%rax,4),%xmm2
14538 .byte 196,227,49,33,210,48 // vinsertps $0x30,%xmm2,%xmm9,%xmm2
14539 .byte 196,195,109,24,208,1 // vinsertf128 $0x1,%xmm8,%ymm2,%ymm2
14540 .byte 72,173 // lods %ds:(%rsi),%rax
14541 .byte 91 // pop %rbx
14542 .byte 65,92 // pop %r12
14543 .byte 65,94 // pop %r14
14544 .byte 65,95 // pop %r15
14545 .byte 255,224 // jmpq *%rax
14546
14547HIDDEN _sk_table_a_avx
14548.globl _sk_table_a_avx
14549FUNCTION(_sk_table_a_avx)
14550_sk_table_a_avx:
14551 .byte 65,87 // push %r15
14552 .byte 65,86 // push %r14
14553 .byte 65,84 // push %r12
14554 .byte 83 // push %rbx
14555 .byte 72,173 // lods %ds:(%rsi),%rax
14556 .byte 76,139,0 // mov (%rax),%r8
14557 .byte 139,64,8 // mov 0x8(%rax),%eax
14558 .byte 255,200 // dec %eax
14559 .byte 197,121,110,192 // vmovd %eax,%xmm8
14560 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
14561 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
14562 .byte 196,65,124,91,192 // vcvtdq2ps %ymm8,%ymm8
14563 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
14564 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
14565 .byte 196,227,249,22,216,1 // vpextrq $0x1,%xmm3,%rax
14566 .byte 65,137,193 // mov %eax,%r9d
14567 .byte 72,193,232,32 // shr $0x20,%rax
14568 .byte 196,193,249,126,218 // vmovq %xmm3,%r10
14569 .byte 69,137,211 // mov %r10d,%r11d
14570 .byte 73,193,234,32 // shr $0x20,%r10
14571 .byte 196,227,125,25,219,1 // vextractf128 $0x1,%ymm3,%xmm3
14572 .byte 196,227,249,22,219,1 // vpextrq $0x1,%xmm3,%rbx
14573 .byte 65,137,222 // mov %ebx,%r14d
14574 .byte 72,193,235,32 // shr $0x20,%rbx
14575 .byte 196,193,249,126,223 // vmovq %xmm3,%r15
14576 .byte 69,137,252 // mov %r15d,%r12d
14577 .byte 73,193,239,32 // shr $0x20,%r15
14578 .byte 196,129,122,16,28,160 // vmovss (%r8,%r12,4),%xmm3
14579 .byte 196,3,97,33,4,184,16 // vinsertps $0x10,(%r8,%r15,4),%xmm3,%xmm8
14580 .byte 196,129,122,16,28,176 // vmovss (%r8,%r14,4),%xmm3
14581 .byte 196,99,57,33,195,32 // vinsertps $0x20,%xmm3,%xmm8,%xmm8
14582 .byte 196,193,122,16,28,152 // vmovss (%r8,%rbx,4),%xmm3
14583 .byte 196,99,57,33,195,48 // vinsertps $0x30,%xmm3,%xmm8,%xmm8
14584 .byte 196,129,122,16,28,152 // vmovss (%r8,%r11,4),%xmm3
14585 .byte 196,3,97,33,12,144,16 // vinsertps $0x10,(%r8,%r10,4),%xmm3,%xmm9
14586 .byte 196,129,122,16,28,136 // vmovss (%r8,%r9,4),%xmm3
14587 .byte 196,99,49,33,203,32 // vinsertps $0x20,%xmm3,%xmm9,%xmm9
14588 .byte 196,193,122,16,28,128 // vmovss (%r8,%rax,4),%xmm3
14589 .byte 196,227,49,33,219,48 // vinsertps $0x30,%xmm3,%xmm9,%xmm3
14590 .byte 196,195,101,24,216,1 // vinsertf128 $0x1,%xmm8,%ymm3,%ymm3
14591 .byte 72,173 // lods %ds:(%rsi),%rax
14592 .byte 91 // pop %rbx
14593 .byte 65,92 // pop %r12
14594 .byte 65,94 // pop %r14
14595 .byte 65,95 // pop %r15
14596 .byte 255,224 // jmpq *%rax
14597
Mike Klein44375172017-04-17 19:32:05 -040014598HIDDEN _sk_parametric_r_avx
14599.globl _sk_parametric_r_avx
14600FUNCTION(_sk_parametric_r_avx)
14601_sk_parametric_r_avx:
14602 .byte 72,173 // lods %ds:(%rsi),%rax
14603 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
14604 .byte 196,65,124,194,192,2 // vcmpleps %ymm8,%ymm0,%ymm8
14605 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
14606 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
14607 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
14608 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
14609 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
14610 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
14611 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
Mike Kleinda164342017-04-19 14:33:58 -040014612 .byte 196,65,124,88,211 // vaddps %ymm11,%ymm0,%ymm10
14613 .byte 196,98,125,24,32 // vbroadcastss (%rax),%ymm12
14614 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014615 .byte 65,184,0,0,0,52 // mov $0x34000000,%r8d
14616 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14617 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14618 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
Mike Kleinda164342017-04-19 14:33:58 -040014619 .byte 197,36,89,216 // vmulps %ymm0,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014620 .byte 65,184,255,255,127,0 // mov $0x7fffff,%r8d
14621 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14622 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
14623 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
Mike Kleinda164342017-04-19 14:33:58 -040014624 .byte 196,65,124,84,210 // vandps %ymm10,%ymm0,%ymm10
Mike Klein44375172017-04-17 19:32:05 -040014625 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
14626 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14627 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
14628 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
Mike Kleinda164342017-04-19 14:33:58 -040014629 .byte 197,44,86,208 // vorps %ymm0,%ymm10,%ymm10
14630 .byte 65,184,119,115,248,66 // mov $0x42f87377,%r8d
Mike Klein44375172017-04-17 19:32:05 -040014631 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14632 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14633 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
Mike Kleinda164342017-04-19 14:33:58 -040014634 .byte 197,36,92,216 // vsubps %ymm0,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014635 .byte 65,184,117,191,191,63 // mov $0x3fbfbf75,%r8d
14636 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14637 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14638 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
Mike Kleinda164342017-04-19 14:33:58 -040014639 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
14640 .byte 197,36,92,216 // vsubps %ymm0,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014641 .byte 65,184,163,233,220,63 // mov $0x3fdce9a3,%r8d
14642 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14643 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -040014644 .byte 196,99,125,24,232,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm13
Mike Klein44375172017-04-17 19:32:05 -040014645 .byte 65,184,249,68,180,62 // mov $0x3eb444f9,%r8d
14646 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14647 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14648 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
Mike Kleinda164342017-04-19 14:33:58 -040014649 .byte 197,172,88,192 // vaddps %ymm0,%ymm10,%ymm0
14650 .byte 197,148,94,192 // vdivps %ymm0,%ymm13,%ymm0
14651 .byte 197,164,92,192 // vsubps %ymm0,%ymm11,%ymm0
14652 .byte 197,28,89,216 // vmulps %ymm0,%ymm12,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014653 .byte 196,67,125,8,211,1 // vroundps $0x1,%ymm11,%ymm10
14654 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
14655 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
14656 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14657 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14658 .byte 196,99,125,24,224,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm12
14659 .byte 65,184,81,140,242,66 // mov $0x42f28c51,%r8d
14660 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14661 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14662 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
14663 .byte 196,65,124,88,219 // vaddps %ymm11,%ymm0,%ymm11
14664 .byte 65,184,141,188,190,63 // mov $0x3fbebc8d,%r8d
14665 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14666 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14667 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
14668 .byte 196,193,124,89,194 // vmulps %ymm10,%ymm0,%ymm0
14669 .byte 197,36,92,216 // vsubps %ymm0,%ymm11,%ymm11
14670 .byte 65,184,254,210,221,65 // mov $0x41ddd2fe,%r8d
14671 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14672 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14673 .byte 196,99,125,24,232,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm13
14674 .byte 65,184,248,245,154,64 // mov $0x409af5f8,%r8d
14675 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
14676 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14677 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
14678 .byte 196,193,124,92,194 // vsubps %ymm10,%ymm0,%ymm0
14679 .byte 197,148,94,192 // vdivps %ymm0,%ymm13,%ymm0
14680 .byte 197,164,88,192 // vaddps %ymm0,%ymm11,%ymm0
14681 .byte 197,156,89,192 // vmulps %ymm0,%ymm12,%ymm0
14682 .byte 197,253,91,192 // vcvtps2dq %ymm0,%ymm0
14683 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
14684 .byte 196,193,124,88,194 // vaddps %ymm10,%ymm0,%ymm0
14685 .byte 196,195,125,74,193,128 // vblendvps %ymm8,%ymm9,%ymm0,%ymm0
14686 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
14687 .byte 196,65,124,95,192 // vmaxps %ymm8,%ymm0,%ymm8
14688 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
14689 .byte 197,249,110,192 // vmovd %eax,%xmm0
14690 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
14691 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
14692 .byte 197,188,93,192 // vminps %ymm0,%ymm8,%ymm0
14693 .byte 72,173 // lods %ds:(%rsi),%rax
14694 .byte 255,224 // jmpq *%rax
14695
14696HIDDEN _sk_parametric_g_avx
14697.globl _sk_parametric_g_avx
14698FUNCTION(_sk_parametric_g_avx)
14699_sk_parametric_g_avx:
14700 .byte 72,173 // lods %ds:(%rsi),%rax
14701 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
14702 .byte 196,65,116,194,192,2 // vcmpleps %ymm8,%ymm1,%ymm8
14703 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
14704 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
14705 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
14706 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
14707 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
14708 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
14709 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
Mike Kleinda164342017-04-19 14:33:58 -040014710 .byte 196,65,116,88,211 // vaddps %ymm11,%ymm1,%ymm10
14711 .byte 196,98,125,24,32 // vbroadcastss (%rax),%ymm12
14712 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014713 .byte 65,184,0,0,0,52 // mov $0x34000000,%r8d
14714 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14715 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
14716 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
Mike Kleinda164342017-04-19 14:33:58 -040014717 .byte 197,36,89,217 // vmulps %ymm1,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014718 .byte 65,184,255,255,127,0 // mov $0x7fffff,%r8d
14719 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14720 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
14721 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
Mike Kleinda164342017-04-19 14:33:58 -040014722 .byte 196,65,116,84,210 // vandps %ymm10,%ymm1,%ymm10
Mike Klein44375172017-04-17 19:32:05 -040014723 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
14724 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14725 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
14726 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
Mike Kleinda164342017-04-19 14:33:58 -040014727 .byte 197,44,86,209 // vorps %ymm1,%ymm10,%ymm10
14728 .byte 65,184,119,115,248,66 // mov $0x42f87377,%r8d
Mike Klein44375172017-04-17 19:32:05 -040014729 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14730 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
14731 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
Mike Kleinda164342017-04-19 14:33:58 -040014732 .byte 197,36,92,217 // vsubps %ymm1,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014733 .byte 65,184,117,191,191,63 // mov $0x3fbfbf75,%r8d
14734 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14735 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
14736 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
Mike Kleinda164342017-04-19 14:33:58 -040014737 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
14738 .byte 197,36,92,217 // vsubps %ymm1,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014739 .byte 65,184,163,233,220,63 // mov $0x3fdce9a3,%r8d
14740 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14741 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -040014742 .byte 196,99,117,24,233,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm13
Mike Klein44375172017-04-17 19:32:05 -040014743 .byte 65,184,249,68,180,62 // mov $0x3eb444f9,%r8d
14744 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14745 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
14746 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
Mike Kleinda164342017-04-19 14:33:58 -040014747 .byte 197,172,88,201 // vaddps %ymm1,%ymm10,%ymm1
14748 .byte 197,148,94,201 // vdivps %ymm1,%ymm13,%ymm1
14749 .byte 197,164,92,201 // vsubps %ymm1,%ymm11,%ymm1
14750 .byte 197,28,89,217 // vmulps %ymm1,%ymm12,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014751 .byte 196,67,125,8,211,1 // vroundps $0x1,%ymm11,%ymm10
14752 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
14753 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
14754 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14755 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
14756 .byte 196,99,117,24,225,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm12
14757 .byte 65,184,81,140,242,66 // mov $0x42f28c51,%r8d
14758 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14759 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
14760 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
14761 .byte 196,65,116,88,219 // vaddps %ymm11,%ymm1,%ymm11
14762 .byte 65,184,141,188,190,63 // mov $0x3fbebc8d,%r8d
14763 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14764 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
14765 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
14766 .byte 196,193,116,89,202 // vmulps %ymm10,%ymm1,%ymm1
14767 .byte 197,36,92,217 // vsubps %ymm1,%ymm11,%ymm11
14768 .byte 65,184,254,210,221,65 // mov $0x41ddd2fe,%r8d
14769 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14770 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
14771 .byte 196,99,117,24,233,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm13
14772 .byte 65,184,248,245,154,64 // mov $0x409af5f8,%r8d
14773 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
14774 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
14775 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
14776 .byte 196,193,116,92,202 // vsubps %ymm10,%ymm1,%ymm1
14777 .byte 197,148,94,201 // vdivps %ymm1,%ymm13,%ymm1
14778 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
14779 .byte 197,156,89,201 // vmulps %ymm1,%ymm12,%ymm1
14780 .byte 197,253,91,201 // vcvtps2dq %ymm1,%ymm1
14781 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
14782 .byte 196,193,116,88,202 // vaddps %ymm10,%ymm1,%ymm1
14783 .byte 196,195,117,74,201,128 // vblendvps %ymm8,%ymm9,%ymm1,%ymm1
14784 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
14785 .byte 196,65,116,95,192 // vmaxps %ymm8,%ymm1,%ymm8
14786 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
14787 .byte 197,249,110,200 // vmovd %eax,%xmm1
14788 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
14789 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
14790 .byte 197,188,93,201 // vminps %ymm1,%ymm8,%ymm1
14791 .byte 72,173 // lods %ds:(%rsi),%rax
14792 .byte 255,224 // jmpq *%rax
14793
14794HIDDEN _sk_parametric_b_avx
14795.globl _sk_parametric_b_avx
14796FUNCTION(_sk_parametric_b_avx)
14797_sk_parametric_b_avx:
14798 .byte 72,173 // lods %ds:(%rsi),%rax
14799 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
14800 .byte 196,65,108,194,192,2 // vcmpleps %ymm8,%ymm2,%ymm8
14801 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
14802 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
14803 .byte 197,52,89,202 // vmulps %ymm2,%ymm9,%ymm9
14804 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
14805 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
14806 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
14807 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
Mike Kleinda164342017-04-19 14:33:58 -040014808 .byte 196,65,108,88,211 // vaddps %ymm11,%ymm2,%ymm10
14809 .byte 196,98,125,24,32 // vbroadcastss (%rax),%ymm12
14810 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014811 .byte 65,184,0,0,0,52 // mov $0x34000000,%r8d
14812 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14813 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
14814 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
Mike Kleinda164342017-04-19 14:33:58 -040014815 .byte 197,36,89,218 // vmulps %ymm2,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014816 .byte 65,184,255,255,127,0 // mov $0x7fffff,%r8d
14817 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14818 .byte 197,249,112,210,0 // vpshufd $0x0,%xmm2,%xmm2
14819 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
Mike Kleinda164342017-04-19 14:33:58 -040014820 .byte 196,65,108,84,210 // vandps %ymm10,%ymm2,%ymm10
Mike Klein44375172017-04-17 19:32:05 -040014821 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
14822 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14823 .byte 197,249,112,210,0 // vpshufd $0x0,%xmm2,%xmm2
14824 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
Mike Kleinda164342017-04-19 14:33:58 -040014825 .byte 197,44,86,210 // vorps %ymm2,%ymm10,%ymm10
14826 .byte 65,184,119,115,248,66 // mov $0x42f87377,%r8d
Mike Klein44375172017-04-17 19:32:05 -040014827 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14828 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
14829 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
Mike Kleinda164342017-04-19 14:33:58 -040014830 .byte 197,36,92,218 // vsubps %ymm2,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014831 .byte 65,184,117,191,191,63 // mov $0x3fbfbf75,%r8d
14832 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14833 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
14834 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
Mike Kleinda164342017-04-19 14:33:58 -040014835 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
14836 .byte 197,36,92,218 // vsubps %ymm2,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014837 .byte 65,184,163,233,220,63 // mov $0x3fdce9a3,%r8d
14838 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14839 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040014840 .byte 196,99,109,24,234,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm13
Mike Klein44375172017-04-17 19:32:05 -040014841 .byte 65,184,249,68,180,62 // mov $0x3eb444f9,%r8d
14842 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14843 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
14844 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
Mike Kleinda164342017-04-19 14:33:58 -040014845 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
14846 .byte 197,148,94,210 // vdivps %ymm2,%ymm13,%ymm2
14847 .byte 197,164,92,210 // vsubps %ymm2,%ymm11,%ymm2
14848 .byte 197,28,89,218 // vmulps %ymm2,%ymm12,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014849 .byte 196,67,125,8,211,1 // vroundps $0x1,%ymm11,%ymm10
14850 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
14851 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
14852 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14853 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
14854 .byte 196,99,109,24,226,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm12
14855 .byte 65,184,81,140,242,66 // mov $0x42f28c51,%r8d
14856 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14857 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
14858 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
14859 .byte 196,65,108,88,219 // vaddps %ymm11,%ymm2,%ymm11
14860 .byte 65,184,141,188,190,63 // mov $0x3fbebc8d,%r8d
14861 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14862 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
14863 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
14864 .byte 196,193,108,89,210 // vmulps %ymm10,%ymm2,%ymm2
14865 .byte 197,36,92,218 // vsubps %ymm2,%ymm11,%ymm11
14866 .byte 65,184,254,210,221,65 // mov $0x41ddd2fe,%r8d
14867 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14868 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
14869 .byte 196,99,109,24,234,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm13
14870 .byte 65,184,248,245,154,64 // mov $0x409af5f8,%r8d
14871 .byte 196,193,121,110,208 // vmovd %r8d,%xmm2
14872 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
14873 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
14874 .byte 196,193,108,92,210 // vsubps %ymm10,%ymm2,%ymm2
14875 .byte 197,148,94,210 // vdivps %ymm2,%ymm13,%ymm2
14876 .byte 197,164,88,210 // vaddps %ymm2,%ymm11,%ymm2
14877 .byte 197,156,89,210 // vmulps %ymm2,%ymm12,%ymm2
14878 .byte 197,253,91,210 // vcvtps2dq %ymm2,%ymm2
14879 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
14880 .byte 196,193,108,88,210 // vaddps %ymm10,%ymm2,%ymm2
14881 .byte 196,195,109,74,209,128 // vblendvps %ymm8,%ymm9,%ymm2,%ymm2
14882 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
14883 .byte 196,65,108,95,192 // vmaxps %ymm8,%ymm2,%ymm8
14884 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
14885 .byte 197,249,110,208 // vmovd %eax,%xmm2
14886 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
14887 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
14888 .byte 197,188,93,210 // vminps %ymm2,%ymm8,%ymm2
14889 .byte 72,173 // lods %ds:(%rsi),%rax
14890 .byte 255,224 // jmpq *%rax
14891
14892HIDDEN _sk_parametric_a_avx
14893.globl _sk_parametric_a_avx
14894FUNCTION(_sk_parametric_a_avx)
14895_sk_parametric_a_avx:
14896 .byte 72,173 // lods %ds:(%rsi),%rax
14897 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
14898 .byte 196,65,100,194,192,2 // vcmpleps %ymm8,%ymm3,%ymm8
14899 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
14900 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
14901 .byte 197,52,89,203 // vmulps %ymm3,%ymm9,%ymm9
14902 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
14903 .byte 196,98,125,24,80,4 // vbroadcastss 0x4(%rax),%ymm10
14904 .byte 196,98,125,24,88,8 // vbroadcastss 0x8(%rax),%ymm11
14905 .byte 197,172,89,219 // vmulps %ymm3,%ymm10,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -040014906 .byte 196,65,100,88,211 // vaddps %ymm11,%ymm3,%ymm10
14907 .byte 196,98,125,24,32 // vbroadcastss (%rax),%ymm12
14908 .byte 196,65,124,91,218 // vcvtdq2ps %ymm10,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014909 .byte 65,184,0,0,0,52 // mov $0x34000000,%r8d
14910 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14911 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14912 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -040014913 .byte 197,36,89,219 // vmulps %ymm3,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014914 .byte 65,184,255,255,127,0 // mov $0x7fffff,%r8d
14915 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14916 .byte 197,249,112,219,0 // vpshufd $0x0,%xmm3,%xmm3
14917 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -040014918 .byte 196,65,100,84,210 // vandps %ymm10,%ymm3,%ymm10
Mike Klein44375172017-04-17 19:32:05 -040014919 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
14920 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14921 .byte 197,249,112,219,0 // vpshufd $0x0,%xmm3,%xmm3
14922 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -040014923 .byte 197,44,86,211 // vorps %ymm3,%ymm10,%ymm10
14924 .byte 65,184,119,115,248,66 // mov $0x42f87377,%r8d
Mike Klein44375172017-04-17 19:32:05 -040014925 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14926 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14927 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -040014928 .byte 197,36,92,219 // vsubps %ymm3,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014929 .byte 65,184,117,191,191,63 // mov $0x3fbfbf75,%r8d
14930 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14931 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14932 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -040014933 .byte 197,172,89,219 // vmulps %ymm3,%ymm10,%ymm3
14934 .byte 197,36,92,219 // vsubps %ymm3,%ymm11,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014935 .byte 65,184,163,233,220,63 // mov $0x3fdce9a3,%r8d
14936 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14937 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040014938 .byte 196,99,101,24,235,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm13
Mike Klein44375172017-04-17 19:32:05 -040014939 .byte 65,184,249,68,180,62 // mov $0x3eb444f9,%r8d
14940 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14941 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14942 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
Mike Kleinda164342017-04-19 14:33:58 -040014943 .byte 197,172,88,219 // vaddps %ymm3,%ymm10,%ymm3
14944 .byte 197,148,94,219 // vdivps %ymm3,%ymm13,%ymm3
14945 .byte 197,164,92,219 // vsubps %ymm3,%ymm11,%ymm3
14946 .byte 197,28,89,219 // vmulps %ymm3,%ymm12,%ymm11
Mike Klein44375172017-04-17 19:32:05 -040014947 .byte 196,67,125,8,211,1 // vroundps $0x1,%ymm11,%ymm10
14948 .byte 196,65,36,92,210 // vsubps %ymm10,%ymm11,%ymm10
14949 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
14950 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14951 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14952 .byte 196,99,101,24,227,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm12
14953 .byte 65,184,81,140,242,66 // mov $0x42f28c51,%r8d
14954 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14955 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14956 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
14957 .byte 196,65,100,88,219 // vaddps %ymm11,%ymm3,%ymm11
14958 .byte 65,184,141,188,190,63 // mov $0x3fbebc8d,%r8d
14959 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14960 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14961 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
14962 .byte 196,193,100,89,218 // vmulps %ymm10,%ymm3,%ymm3
14963 .byte 197,36,92,219 // vsubps %ymm3,%ymm11,%ymm11
14964 .byte 65,184,254,210,221,65 // mov $0x41ddd2fe,%r8d
14965 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14966 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14967 .byte 196,99,101,24,235,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm13
14968 .byte 65,184,248,245,154,64 // mov $0x409af5f8,%r8d
14969 .byte 196,193,121,110,216 // vmovd %r8d,%xmm3
14970 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14971 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
14972 .byte 196,193,100,92,218 // vsubps %ymm10,%ymm3,%ymm3
14973 .byte 197,148,94,219 // vdivps %ymm3,%ymm13,%ymm3
14974 .byte 197,164,88,219 // vaddps %ymm3,%ymm11,%ymm3
14975 .byte 197,156,89,219 // vmulps %ymm3,%ymm12,%ymm3
14976 .byte 197,253,91,219 // vcvtps2dq %ymm3,%ymm3
14977 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
14978 .byte 196,193,100,88,218 // vaddps %ymm10,%ymm3,%ymm3
14979 .byte 196,195,101,74,217,128 // vblendvps %ymm8,%ymm9,%ymm3,%ymm3
14980 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
14981 .byte 196,65,100,95,192 // vmaxps %ymm8,%ymm3,%ymm8
14982 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
14983 .byte 197,249,110,216 // vmovd %eax,%xmm3
14984 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
14985 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
14986 .byte 197,188,93,219 // vminps %ymm3,%ymm8,%ymm3
14987 .byte 72,173 // lods %ds:(%rsi),%rax
14988 .byte 255,224 // jmpq *%rax
14989
Mike Klein7c4af542017-03-29 18:21:14 -040014990HIDDEN _sk_load_a8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040014991.globl _sk_load_a8_avx
Mike Klein86714282017-04-13 17:37:38 -040014992FUNCTION(_sk_load_a8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040014993_sk_load_a8_avx:
14994 .byte 73,137,200 // mov %rcx,%r8
14995 .byte 72,173 // lods %ds:(%rsi),%rax
14996 .byte 72,139,0 // mov (%rax),%rax
14997 .byte 72,1,248 // add %rdi,%rax
14998 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -040014999 .byte 117,74 // jne 309e <_sk_load_a8_avx+0x5a>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015000 .byte 197,250,126,0 // vmovq (%rax),%xmm0
15001 .byte 196,226,121,49,200 // vpmovzxbd %xmm0,%xmm1
15002 .byte 196,227,121,4,192,229 // vpermilps $0xe5,%xmm0,%xmm0
15003 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
15004 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
15005 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
15006 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
15007 .byte 197,249,110,200 // vmovd %eax,%xmm1
15008 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15009 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15010 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
15011 .byte 72,173 // lods %ds:(%rsi),%rax
15012 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
15013 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
15014 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
15015 .byte 76,137,193 // mov %r8,%rcx
15016 .byte 255,224 // jmpq *%rax
15017 .byte 49,201 // xor %ecx,%ecx
15018 .byte 77,137,194 // mov %r8,%r10
15019 .byte 69,49,201 // xor %r9d,%r9d
15020 .byte 68,15,182,24 // movzbl (%rax),%r11d
15021 .byte 72,255,192 // inc %rax
15022 .byte 73,211,227 // shl %cl,%r11
15023 .byte 77,9,217 // or %r11,%r9
15024 .byte 72,131,193,8 // add $0x8,%rcx
15025 .byte 73,255,202 // dec %r10
Mike Kleinda164342017-04-19 14:33:58 -040015026 .byte 117,234 // jne 30a6 <_sk_load_a8_avx+0x62>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015027 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -040015028 .byte 235,149 // jmp 3058 <_sk_load_a8_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015029
Mike Klein21bd3e42017-04-06 16:32:29 -040015030HIDDEN _sk_gather_a8_avx
15031.globl _sk_gather_a8_avx
Mike Klein86714282017-04-13 17:37:38 -040015032FUNCTION(_sk_gather_a8_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040015033_sk_gather_a8_avx:
15034 .byte 65,87 // push %r15
15035 .byte 65,86 // push %r14
15036 .byte 65,84 // push %r12
15037 .byte 83 // push %rbx
15038 .byte 72,173 // lods %ds:(%rsi),%rax
15039 .byte 76,139,0 // mov (%rax),%r8
15040 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
15041 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
15042 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
15043 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
15044 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
15045 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
15046 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
15047 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
15048 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
15049 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
15050 .byte 65,137,193 // mov %eax,%r9d
15051 .byte 72,193,232,32 // shr $0x20,%rax
15052 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
15053 .byte 69,137,211 // mov %r10d,%r11d
15054 .byte 73,193,234,32 // shr $0x20,%r10
15055 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
15056 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
15057 .byte 65,137,222 // mov %ebx,%r14d
15058 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
15059 .byte 69,137,252 // mov %r15d,%r12d
15060 .byte 73,193,239,32 // shr $0x20,%r15
15061 .byte 72,193,235,32 // shr $0x20,%rbx
15062 .byte 196,131,121,32,4,48,0 // vpinsrb $0x0,(%r8,%r14,1),%xmm0,%xmm0
15063 .byte 196,195,121,32,4,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm0,%xmm0
15064 .byte 67,15,182,28,32 // movzbl (%r8,%r12,1),%ebx
15065 .byte 196,227,121,32,195,2 // vpinsrb $0x2,%ebx,%xmm0,%xmm0
15066 .byte 67,15,182,28,56 // movzbl (%r8,%r15,1),%ebx
15067 .byte 196,227,121,32,195,3 // vpinsrb $0x3,%ebx,%xmm0,%xmm0
15068 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
15069 .byte 196,131,121,32,12,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm1
15070 .byte 196,131,113,32,12,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm1,%xmm1
15071 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
15072 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
15073 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
15074 .byte 196,227,113,32,200,3 // vpinsrb $0x3,%eax,%xmm1,%xmm1
15075 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
15076 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
15077 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
15078 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
15079 .byte 197,249,110,200 // vmovd %eax,%xmm1
15080 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15081 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15082 .byte 197,252,89,217 // vmulps %ymm1,%ymm0,%ymm3
15083 .byte 72,173 // lods %ds:(%rsi),%rax
15084 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
15085 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
15086 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
15087 .byte 91 // pop %rbx
15088 .byte 65,92 // pop %r12
15089 .byte 65,94 // pop %r14
15090 .byte 65,95 // pop %r15
15091 .byte 255,224 // jmpq *%rax
15092
Mike Klein7c4af542017-03-29 18:21:14 -040015093HIDDEN _sk_store_a8_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015094.globl _sk_store_a8_avx
Mike Klein86714282017-04-13 17:37:38 -040015095FUNCTION(_sk_store_a8_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015096_sk_store_a8_avx:
15097 .byte 72,173 // lods %ds:(%rsi),%rax
15098 .byte 76,139,8 // mov (%rax),%r9
15099 .byte 184,0,0,127,67 // mov $0x437f0000,%eax
15100 .byte 197,121,110,192 // vmovd %eax,%xmm8
15101 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
15102 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
15103 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
15104 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
15105 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
15106 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
15107 .byte 196,65,57,103,192 // vpackuswb %xmm8,%xmm8,%xmm8
15108 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040015109 .byte 117,10 // jne 31ff <_sk_store_a8_avx+0x42>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015110 .byte 196,65,123,17,4,57 // vmovsd %xmm8,(%r9,%rdi,1)
15111 .byte 72,173 // lods %ds:(%rsi),%rax
15112 .byte 255,224 // jmpq *%rax
15113 .byte 65,137,200 // mov %ecx,%r8d
15114 .byte 65,128,224,7 // and $0x7,%r8b
15115 .byte 65,254,200 // dec %r8b
15116 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040015117 .byte 119,236 // ja 31fb <_sk_store_a8_avx+0x3e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015118 .byte 196,66,121,48,192 // vpmovzxbw %xmm8,%xmm8
15119 .byte 65,15,182,192 // movzbl %r8b,%eax
Mike Kleinda164342017-04-19 14:33:58 -040015120 .byte 76,141,5,69,0,0,0 // lea 0x45(%rip),%r8 # 3264 <_sk_store_a8_avx+0xa7>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015121 .byte 73,99,4,128 // movslq (%r8,%rax,4),%rax
15122 .byte 76,1,192 // add %r8,%rax
15123 .byte 255,224 // jmpq *%rax
15124 .byte 196,67,121,20,68,57,6,12 // vpextrb $0xc,%xmm8,0x6(%r9,%rdi,1)
15125 .byte 196,67,121,20,68,57,5,10 // vpextrb $0xa,%xmm8,0x5(%r9,%rdi,1)
15126 .byte 196,67,121,20,68,57,4,8 // vpextrb $0x8,%xmm8,0x4(%r9,%rdi,1)
15127 .byte 196,67,121,20,68,57,3,6 // vpextrb $0x6,%xmm8,0x3(%r9,%rdi,1)
15128 .byte 196,67,121,20,68,57,2,4 // vpextrb $0x4,%xmm8,0x2(%r9,%rdi,1)
15129 .byte 196,67,121,20,68,57,1,2 // vpextrb $0x2,%xmm8,0x1(%r9,%rdi,1)
15130 .byte 196,67,121,20,4,57,0 // vpextrb $0x0,%xmm8,(%r9,%rdi,1)
Mike Kleinda164342017-04-19 14:33:58 -040015131 .byte 235,154 // jmp 31fb <_sk_store_a8_avx+0x3e>
Mike Kleina3735cd2017-04-17 13:19:05 -040015132 .byte 15,31,0 // nopl (%rax)
15133 .byte 244 // hlt
Mike Kleind7e06ae2017-03-29 16:33:06 -040015134 .byte 255 // (bad)
15135 .byte 255 // (bad)
15136 .byte 255 // (bad)
Mike Kleina3735cd2017-04-17 13:19:05 -040015137 .byte 236 // in (%dx),%al
Mike Kleind7e06ae2017-03-29 16:33:06 -040015138 .byte 255 // (bad)
15139 .byte 255 // (bad)
Mike Kleina3735cd2017-04-17 13:19:05 -040015140 .byte 255,228 // jmpq *%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040015141 .byte 255 // (bad)
15142 .byte 255 // (bad)
Mike Kleina3735cd2017-04-17 13:19:05 -040015143 .byte 255 // (bad)
15144 .byte 220,255 // fdivr %st,%st(7)
15145 .byte 255 // (bad)
15146 .byte 255,212 // callq *%rsp
15147 .byte 255 // (bad)
15148 .byte 255 // (bad)
15149 .byte 255,204 // dec %esp
15150 .byte 255 // (bad)
15151 .byte 255 // (bad)
15152 .byte 255,196 // inc %esp
Mike Kleind7e06ae2017-03-29 16:33:06 -040015153 .byte 255 // (bad)
15154 .byte 255 // (bad)
15155 .byte 255 // .byte 0xff
15156
Mike Kleinf809fef2017-03-31 13:52:45 -040015157HIDDEN _sk_load_g8_avx
15158.globl _sk_load_g8_avx
Mike Klein86714282017-04-13 17:37:38 -040015159FUNCTION(_sk_load_g8_avx)
Mike Kleinf809fef2017-03-31 13:52:45 -040015160_sk_load_g8_avx:
15161 .byte 73,137,200 // mov %rcx,%r8
15162 .byte 72,173 // lods %ds:(%rsi),%rax
15163 .byte 72,139,0 // mov (%rax),%rax
15164 .byte 72,1,248 // add %rdi,%rax
15165 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -040015166 .byte 117,91 // jne 32eb <_sk_load_g8_avx+0x6b>
Mike Kleinf809fef2017-03-31 13:52:45 -040015167 .byte 197,250,126,0 // vmovq (%rax),%xmm0
15168 .byte 196,226,121,49,200 // vpmovzxbd %xmm0,%xmm1
15169 .byte 196,227,121,4,192,229 // vpermilps $0xe5,%xmm0,%xmm0
15170 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
15171 .byte 196,227,117,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm1,%ymm0
15172 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
15173 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
15174 .byte 197,249,110,200 // vmovd %eax,%xmm1
15175 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15176 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15177 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
15178 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
15179 .byte 197,249,110,200 // vmovd %eax,%xmm1
15180 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15181 .byte 196,227,117,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm3
15182 .byte 72,173 // lods %ds:(%rsi),%rax
15183 .byte 76,137,193 // mov %r8,%rcx
15184 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
15185 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
15186 .byte 255,224 // jmpq *%rax
15187 .byte 49,201 // xor %ecx,%ecx
15188 .byte 77,137,194 // mov %r8,%r10
15189 .byte 69,49,201 // xor %r9d,%r9d
15190 .byte 68,15,182,24 // movzbl (%rax),%r11d
15191 .byte 72,255,192 // inc %rax
15192 .byte 73,211,227 // shl %cl,%r11
15193 .byte 77,9,217 // or %r11,%r9
15194 .byte 72,131,193,8 // add $0x8,%rcx
15195 .byte 73,255,202 // dec %r10
Mike Kleinda164342017-04-19 14:33:58 -040015196 .byte 117,234 // jne 32f3 <_sk_load_g8_avx+0x73>
Mike Kleinf809fef2017-03-31 13:52:45 -040015197 .byte 196,193,249,110,193 // vmovq %r9,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -040015198 .byte 235,132 // jmp 3294 <_sk_load_g8_avx+0x14>
Mike Klein21bd3e42017-04-06 16:32:29 -040015199
15200HIDDEN _sk_gather_g8_avx
15201.globl _sk_gather_g8_avx
Mike Klein86714282017-04-13 17:37:38 -040015202FUNCTION(_sk_gather_g8_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040015203_sk_gather_g8_avx:
15204 .byte 65,87 // push %r15
15205 .byte 65,86 // push %r14
15206 .byte 65,84 // push %r12
15207 .byte 83 // push %rbx
15208 .byte 72,173 // lods %ds:(%rsi),%rax
15209 .byte 76,139,0 // mov (%rax),%r8
15210 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
15211 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
15212 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
15213 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
15214 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
15215 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
15216 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
15217 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
15218 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
15219 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
15220 .byte 65,137,193 // mov %eax,%r9d
15221 .byte 72,193,232,32 // shr $0x20,%rax
15222 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
15223 .byte 69,137,211 // mov %r10d,%r11d
15224 .byte 73,193,234,32 // shr $0x20,%r10
15225 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
15226 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
15227 .byte 65,137,222 // mov %ebx,%r14d
15228 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
15229 .byte 69,137,252 // mov %r15d,%r12d
15230 .byte 73,193,239,32 // shr $0x20,%r15
15231 .byte 72,193,235,32 // shr $0x20,%rbx
15232 .byte 196,131,121,32,4,48,0 // vpinsrb $0x0,(%r8,%r14,1),%xmm0,%xmm0
15233 .byte 196,195,121,32,4,24,1 // vpinsrb $0x1,(%r8,%rbx,1),%xmm0,%xmm0
15234 .byte 67,15,182,28,32 // movzbl (%r8,%r12,1),%ebx
15235 .byte 196,227,121,32,195,2 // vpinsrb $0x2,%ebx,%xmm0,%xmm0
15236 .byte 67,15,182,28,56 // movzbl (%r8,%r15,1),%ebx
15237 .byte 196,227,121,32,195,3 // vpinsrb $0x3,%ebx,%xmm0,%xmm0
15238 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
15239 .byte 196,131,121,32,12,24,0 // vpinsrb $0x0,(%r8,%r11,1),%xmm0,%xmm1
15240 .byte 196,131,113,32,12,16,1 // vpinsrb $0x1,(%r8,%r10,1),%xmm1,%xmm1
15241 .byte 67,15,182,28,8 // movzbl (%r8,%r9,1),%ebx
15242 .byte 196,227,113,32,203,2 // vpinsrb $0x2,%ebx,%xmm1,%xmm1
15243 .byte 65,15,182,4,0 // movzbl (%r8,%rax,1),%eax
15244 .byte 196,227,113,32,200,3 // vpinsrb $0x3,%eax,%xmm1,%xmm1
15245 .byte 196,226,121,49,201 // vpmovzxbd %xmm1,%xmm1
15246 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
15247 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
15248 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
15249 .byte 197,249,110,200 // vmovd %eax,%xmm1
15250 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15251 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15252 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
15253 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
15254 .byte 197,249,110,200 // vmovd %eax,%xmm1
15255 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15256 .byte 196,227,117,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm3
15257 .byte 72,173 // lods %ds:(%rsi),%rax
15258 .byte 197,252,40,200 // vmovaps %ymm0,%ymm1
15259 .byte 197,252,40,208 // vmovaps %ymm0,%ymm2
15260 .byte 91 // pop %rbx
15261 .byte 65,92 // pop %r12
15262 .byte 65,94 // pop %r14
15263 .byte 65,95 // pop %r15
15264 .byte 255,224 // jmpq *%rax
Mike Kleinf809fef2017-03-31 13:52:45 -040015265
Mike Klein7d3d8722017-04-06 17:53:18 -040015266HIDDEN _sk_gather_i8_avx
15267.globl _sk_gather_i8_avx
Mike Klein86714282017-04-13 17:37:38 -040015268FUNCTION(_sk_gather_i8_avx)
Mike Klein7d3d8722017-04-06 17:53:18 -040015269_sk_gather_i8_avx:
15270 .byte 72,173 // lods %ds:(%rsi),%rax
15271 .byte 73,137,192 // mov %rax,%r8
15272 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -040015273 .byte 116,5 // je 342a <_sk_gather_i8_avx+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040015274 .byte 76,137,192 // mov %r8,%rax
Mike Kleinda164342017-04-19 14:33:58 -040015275 .byte 235,2 // jmp 342c <_sk_gather_i8_avx+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040015276 .byte 72,173 // lods %ds:(%rsi),%rax
15277 .byte 65,87 // push %r15
15278 .byte 65,86 // push %r14
15279 .byte 65,85 // push %r13
15280 .byte 65,84 // push %r12
15281 .byte 83 // push %rbx
15282 .byte 76,139,8 // mov (%rax),%r9
15283 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
15284 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
15285 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
15286 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
15287 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
15288 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
15289 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
15290 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
15291 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
15292 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
15293 .byte 65,137,194 // mov %eax,%r10d
15294 .byte 72,193,232,32 // shr $0x20,%rax
15295 .byte 196,193,249,126,211 // vmovq %xmm2,%r11
15296 .byte 69,137,222 // mov %r11d,%r14d
15297 .byte 73,193,235,32 // shr $0x20,%r11
15298 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
15299 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
15300 .byte 65,137,223 // mov %ebx,%r15d
15301 .byte 196,195,249,22,196,1 // vpextrq $0x1,%xmm0,%r12
15302 .byte 69,137,229 // mov %r12d,%r13d
15303 .byte 73,193,236,32 // shr $0x20,%r12
15304 .byte 72,193,235,32 // shr $0x20,%rbx
15305 .byte 196,131,121,32,4,49,0 // vpinsrb $0x0,(%r9,%r14,1),%xmm0,%xmm0
15306 .byte 196,131,121,32,4,25,1 // vpinsrb $0x1,(%r9,%r11,1),%xmm0,%xmm0
15307 .byte 196,131,121,32,4,17,2 // vpinsrb $0x2,(%r9,%r10,1),%xmm0,%xmm0
15308 .byte 196,195,121,32,4,1,3 // vpinsrb $0x3,(%r9,%rax,1),%xmm0,%xmm0
15309 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
15310 .byte 196,195,249,22,194,1 // vpextrq $0x1,%xmm0,%r10
15311 .byte 196,193,249,126,195 // vmovq %xmm0,%r11
15312 .byte 196,131,121,32,4,57,0 // vpinsrb $0x0,(%r9,%r15,1),%xmm0,%xmm0
15313 .byte 196,195,121,32,4,25,1 // vpinsrb $0x1,(%r9,%rbx,1),%xmm0,%xmm0
15314 .byte 196,131,121,32,4,41,2 // vpinsrb $0x2,(%r9,%r13,1),%xmm0,%xmm0
15315 .byte 196,131,121,32,4,33,3 // vpinsrb $0x3,(%r9,%r12,1),%xmm0,%xmm0
15316 .byte 196,226,121,49,192 // vpmovzxbd %xmm0,%xmm0
15317 .byte 73,139,88,8 // mov 0x8(%r8),%rbx
15318 .byte 196,193,249,126,193 // vmovq %xmm0,%r9
15319 .byte 69,137,200 // mov %r9d,%r8d
15320 .byte 73,193,233,30 // shr $0x1e,%r9
15321 .byte 196,227,249,22,192,1 // vpextrq $0x1,%xmm0,%rax
15322 .byte 65,137,198 // mov %eax,%r14d
15323 .byte 72,193,232,30 // shr $0x1e,%rax
15324 .byte 69,137,223 // mov %r11d,%r15d
15325 .byte 73,193,235,30 // shr $0x1e,%r11
15326 .byte 69,137,212 // mov %r10d,%r12d
15327 .byte 73,193,234,30 // shr $0x1e,%r10
15328 .byte 196,161,121,110,4,131 // vmovd (%rbx,%r8,4),%xmm0
15329 .byte 196,163,121,34,4,11,1 // vpinsrd $0x1,(%rbx,%r9,1),%xmm0,%xmm0
15330 .byte 196,163,121,34,4,179,2 // vpinsrd $0x2,(%rbx,%r14,4),%xmm0,%xmm0
15331 .byte 196,99,121,34,4,3,3 // vpinsrd $0x3,(%rbx,%rax,1),%xmm0,%xmm8
15332 .byte 196,161,121,110,4,187 // vmovd (%rbx,%r15,4),%xmm0
15333 .byte 196,163,121,34,4,27,1 // vpinsrd $0x1,(%rbx,%r11,1),%xmm0,%xmm0
15334 .byte 196,163,121,34,4,163,2 // vpinsrd $0x2,(%rbx,%r12,4),%xmm0,%xmm0
15335 .byte 196,163,121,34,28,19,3 // vpinsrd $0x3,(%rbx,%r10,1),%xmm0,%xmm3
15336 .byte 196,227,61,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm0
15337 .byte 184,255,0,0,0 // mov $0xff,%eax
15338 .byte 197,249,110,200 // vmovd %eax,%xmm1
15339 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
15340 .byte 196,99,117,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm11
15341 .byte 197,164,84,192 // vandps %ymm0,%ymm11,%ymm0
15342 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
15343 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
15344 .byte 197,249,110,200 // vmovd %eax,%xmm1
15345 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15346 .byte 196,99,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm9
15347 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
15348 .byte 196,193,41,114,208,8 // vpsrld $0x8,%xmm8,%xmm10
15349 .byte 197,241,114,211,8 // vpsrld $0x8,%xmm3,%xmm1
15350 .byte 196,227,45,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm10,%ymm1
15351 .byte 197,164,84,201 // vandps %ymm1,%ymm11,%ymm1
15352 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
15353 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
15354 .byte 196,193,41,114,208,16 // vpsrld $0x10,%xmm8,%xmm10
15355 .byte 197,233,114,211,16 // vpsrld $0x10,%xmm3,%xmm2
15356 .byte 196,227,45,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm10,%ymm2
15357 .byte 197,164,84,210 // vandps %ymm2,%ymm11,%ymm2
15358 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
15359 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
15360 .byte 196,193,57,114,208,24 // vpsrld $0x18,%xmm8,%xmm8
15361 .byte 197,225,114,211,24 // vpsrld $0x18,%xmm3,%xmm3
15362 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
15363 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
15364 .byte 196,193,100,89,217 // vmulps %ymm9,%ymm3,%ymm3
15365 .byte 72,173 // lods %ds:(%rsi),%rax
15366 .byte 91 // pop %rbx
15367 .byte 65,92 // pop %r12
15368 .byte 65,93 // pop %r13
15369 .byte 65,94 // pop %r14
15370 .byte 65,95 // pop %r15
15371 .byte 255,224 // jmpq *%rax
15372
Mike Klein7c4af542017-03-29 18:21:14 -040015373HIDDEN _sk_load_565_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015374.globl _sk_load_565_avx
Mike Klein86714282017-04-13 17:37:38 -040015375FUNCTION(_sk_load_565_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015376_sk_load_565_avx:
15377 .byte 72,173 // lods %ds:(%rsi),%rax
15378 .byte 76,139,16 // mov (%rax),%r10
15379 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040015380 .byte 15,133,209,0,0,0 // jne 36c6 <_sk_load_565_avx+0xdf>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015381 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
15382 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
15383 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
15384 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
15385 .byte 196,227,125,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm2
15386 .byte 184,0,248,0,0 // mov $0xf800,%eax
15387 .byte 197,249,110,192 // vmovd %eax,%xmm0
15388 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
15389 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
15390 .byte 197,252,84,194 // vandps %ymm2,%ymm0,%ymm0
15391 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
15392 .byte 184,8,33,132,55 // mov $0x37842108,%eax
15393 .byte 197,249,110,200 // vmovd %eax,%xmm1
15394 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15395 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15396 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
15397 .byte 184,224,7,0,0 // mov $0x7e0,%eax
15398 .byte 197,249,110,200 // vmovd %eax,%xmm1
15399 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
15400 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15401 .byte 197,244,84,202 // vandps %ymm2,%ymm1,%ymm1
15402 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
15403 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
15404 .byte 197,249,110,216 // vmovd %eax,%xmm3
15405 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
15406 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15407 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
15408 .byte 184,31,0,0,0 // mov $0x1f,%eax
15409 .byte 197,249,110,216 // vmovd %eax,%xmm3
15410 .byte 197,249,112,219,0 // vpshufd $0x0,%xmm3,%xmm3
15411 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15412 .byte 197,228,84,210 // vandps %ymm2,%ymm3,%ymm2
15413 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
15414 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
15415 .byte 197,249,110,216 // vmovd %eax,%xmm3
15416 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
15417 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15418 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
15419 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
15420 .byte 197,249,110,216 // vmovd %eax,%xmm3
15421 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
15422 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15423 .byte 72,173 // lods %ds:(%rsi),%rax
15424 .byte 255,224 // jmpq *%rax
15425 .byte 65,137,200 // mov %ecx,%r8d
15426 .byte 65,128,224,7 // and $0x7,%r8b
15427 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
15428 .byte 65,254,200 // dec %r8b
15429 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040015430 .byte 15,135,29,255,255,255 // ja 35fb <_sk_load_565_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015431 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinda164342017-04-19 14:33:58 -040015432 .byte 76,141,13,75,0,0,0 // lea 0x4b(%rip),%r9 # 3734 <_sk_load_565_avx+0x14d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015433 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
15434 .byte 76,1,200 // add %r9,%rax
15435 .byte 255,224 // jmpq *%rax
15436 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
15437 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
15438 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
15439 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
15440 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
15441 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
15442 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
15443 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -040015444 .byte 233,201,254,255,255 // jmpq 35fb <_sk_load_565_avx+0x14>
Mike Klein21bd3e42017-04-06 16:32:29 -040015445 .byte 102,144 // xchg %ax,%ax
15446 .byte 242,255 // repnz (bad)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015447 .byte 255 // (bad)
15448 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015449 .byte 234 // (bad)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015450 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015451 .byte 255 // (bad)
15452 .byte 255,226 // jmpq *%rdx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015453 .byte 255 // (bad)
15454 .byte 255 // (bad)
15455 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015456 .byte 218,255 // (bad)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015457 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015458 .byte 255,210 // callq *%rdx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015459 .byte 255 // (bad)
15460 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015461 .byte 255,202 // dec %edx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015462 .byte 255 // (bad)
15463 .byte 255 // (bad)
15464 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015465 .byte 190 // .byte 0xbe
Mike Kleind7e06ae2017-03-29 16:33:06 -040015466 .byte 255 // (bad)
15467 .byte 255 // (bad)
15468 .byte 255 // .byte 0xff
15469
Mike Klein21bd3e42017-04-06 16:32:29 -040015470HIDDEN _sk_gather_565_avx
15471.globl _sk_gather_565_avx
Mike Klein86714282017-04-13 17:37:38 -040015472FUNCTION(_sk_gather_565_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040015473_sk_gather_565_avx:
15474 .byte 85 // push %rbp
15475 .byte 65,87 // push %r15
15476 .byte 65,86 // push %r14
15477 .byte 65,84 // push %r12
15478 .byte 83 // push %rbx
15479 .byte 72,173 // lods %ds:(%rsi),%rax
15480 .byte 76,139,0 // mov (%rax),%r8
15481 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
15482 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
15483 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
15484 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
15485 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
15486 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
15487 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
15488 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
15489 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
15490 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
15491 .byte 65,137,193 // mov %eax,%r9d
15492 .byte 72,193,232,32 // shr $0x20,%rax
15493 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
15494 .byte 69,137,211 // mov %r10d,%r11d
15495 .byte 73,193,234,32 // shr $0x20,%r10
15496 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
15497 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
15498 .byte 65,137,222 // mov %ebx,%r14d
15499 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
15500 .byte 69,137,252 // mov %r15d,%r12d
15501 .byte 73,193,239,32 // shr $0x20,%r15
15502 .byte 72,193,235,32 // shr $0x20,%rbx
15503 .byte 65,15,183,28,88 // movzwl (%r8,%rbx,2),%ebx
15504 .byte 67,15,183,44,112 // movzwl (%r8,%r14,2),%ebp
15505 .byte 197,249,110,197 // vmovd %ebp,%xmm0
15506 .byte 197,249,196,195,1 // vpinsrw $0x1,%ebx,%xmm0,%xmm0
15507 .byte 67,15,183,28,96 // movzwl (%r8,%r12,2),%ebx
15508 .byte 197,249,196,195,2 // vpinsrw $0x2,%ebx,%xmm0,%xmm0
15509 .byte 67,15,183,28,120 // movzwl (%r8,%r15,2),%ebx
15510 .byte 197,249,196,195,3 // vpinsrw $0x3,%ebx,%xmm0,%xmm0
15511 .byte 67,15,183,44,88 // movzwl (%r8,%r11,2),%ebp
15512 .byte 197,249,196,197,4 // vpinsrw $0x4,%ebp,%xmm0,%xmm0
15513 .byte 67,15,183,44,80 // movzwl (%r8,%r10,2),%ebp
15514 .byte 197,249,196,197,5 // vpinsrw $0x5,%ebp,%xmm0,%xmm0
15515 .byte 67,15,183,44,72 // movzwl (%r8,%r9,2),%ebp
15516 .byte 197,249,196,197,6 // vpinsrw $0x6,%ebp,%xmm0,%xmm0
15517 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
15518 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
15519 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
15520 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
15521 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
15522 .byte 196,227,125,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm2
15523 .byte 184,0,248,0,0 // mov $0xf800,%eax
15524 .byte 197,249,110,192 // vmovd %eax,%xmm0
15525 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
15526 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
15527 .byte 197,252,84,194 // vandps %ymm2,%ymm0,%ymm0
15528 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
15529 .byte 184,8,33,132,55 // mov $0x37842108,%eax
15530 .byte 197,249,110,200 // vmovd %eax,%xmm1
15531 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15532 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15533 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
15534 .byte 184,224,7,0,0 // mov $0x7e0,%eax
15535 .byte 197,249,110,200 // vmovd %eax,%xmm1
15536 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
15537 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15538 .byte 197,244,84,202 // vandps %ymm2,%ymm1,%ymm1
15539 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
15540 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
15541 .byte 197,249,110,216 // vmovd %eax,%xmm3
15542 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
15543 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15544 .byte 197,244,89,203 // vmulps %ymm3,%ymm1,%ymm1
15545 .byte 184,31,0,0,0 // mov $0x1f,%eax
15546 .byte 197,249,110,216 // vmovd %eax,%xmm3
15547 .byte 197,249,112,219,0 // vpshufd $0x0,%xmm3,%xmm3
15548 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15549 .byte 197,228,84,210 // vandps %ymm2,%ymm3,%ymm2
15550 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
15551 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
15552 .byte 197,249,110,216 // vmovd %eax,%xmm3
15553 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
15554 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15555 .byte 197,236,89,211 // vmulps %ymm3,%ymm2,%ymm2
15556 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
15557 .byte 197,249,110,216 // vmovd %eax,%xmm3
15558 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
15559 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15560 .byte 72,173 // lods %ds:(%rsi),%rax
15561 .byte 91 // pop %rbx
15562 .byte 65,92 // pop %r12
15563 .byte 65,94 // pop %r14
15564 .byte 65,95 // pop %r15
15565 .byte 93 // pop %rbp
15566 .byte 255,224 // jmpq *%rax
15567
Mike Klein7c4af542017-03-29 18:21:14 -040015568HIDDEN _sk_store_565_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015569.globl _sk_store_565_avx
Mike Klein86714282017-04-13 17:37:38 -040015570FUNCTION(_sk_store_565_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015571_sk_store_565_avx:
15572 .byte 72,173 // lods %ds:(%rsi),%rax
15573 .byte 76,139,8 // mov (%rax),%r9
15574 .byte 184,0,0,248,65 // mov $0x41f80000,%eax
15575 .byte 197,121,110,192 // vmovd %eax,%xmm8
15576 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
15577 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
15578 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
15579 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
15580 .byte 196,193,41,114,241,11 // vpslld $0xb,%xmm9,%xmm10
15581 .byte 196,67,125,25,201,1 // vextractf128 $0x1,%ymm9,%xmm9
15582 .byte 196,193,49,114,241,11 // vpslld $0xb,%xmm9,%xmm9
15583 .byte 196,67,45,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm9
15584 .byte 184,0,0,124,66 // mov $0x427c0000,%eax
15585 .byte 197,121,110,208 // vmovd %eax,%xmm10
15586 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
15587 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
15588 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
15589 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
15590 .byte 196,193,33,114,242,5 // vpslld $0x5,%xmm10,%xmm11
15591 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
15592 .byte 196,193,41,114,242,5 // vpslld $0x5,%xmm10,%xmm10
15593 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
15594 .byte 196,65,45,86,201 // vorpd %ymm9,%ymm10,%ymm9
15595 .byte 197,60,89,194 // vmulps %ymm2,%ymm8,%ymm8
15596 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
15597 .byte 196,65,53,86,192 // vorpd %ymm8,%ymm9,%ymm8
15598 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
15599 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
15600 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040015601 .byte 117,10 // jne 397f <_sk_store_565_avx+0x9e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015602 .byte 196,65,122,127,4,121 // vmovdqu %xmm8,(%r9,%rdi,2)
15603 .byte 72,173 // lods %ds:(%rsi),%rax
15604 .byte 255,224 // jmpq *%rax
15605 .byte 65,137,200 // mov %ecx,%r8d
15606 .byte 65,128,224,7 // and $0x7,%r8b
15607 .byte 65,254,200 // dec %r8b
15608 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040015609 .byte 119,236 // ja 397b <_sk_store_565_avx+0x9a>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015610 .byte 65,15,182,192 // movzbl %r8b,%eax
Mike Kleinda164342017-04-19 14:33:58 -040015611 .byte 76,141,5,66,0,0,0 // lea 0x42(%rip),%r8 # 39dc <_sk_store_565_avx+0xfb>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015612 .byte 73,99,4,128 // movslq (%r8,%rax,4),%rax
15613 .byte 76,1,192 // add %r8,%rax
15614 .byte 255,224 // jmpq *%rax
15615 .byte 196,67,121,21,68,121,12,6 // vpextrw $0x6,%xmm8,0xc(%r9,%rdi,2)
15616 .byte 196,67,121,21,68,121,10,5 // vpextrw $0x5,%xmm8,0xa(%r9,%rdi,2)
15617 .byte 196,67,121,21,68,121,8,4 // vpextrw $0x4,%xmm8,0x8(%r9,%rdi,2)
15618 .byte 196,67,121,21,68,121,6,3 // vpextrw $0x3,%xmm8,0x6(%r9,%rdi,2)
15619 .byte 196,67,121,21,68,121,4,2 // vpextrw $0x2,%xmm8,0x4(%r9,%rdi,2)
15620 .byte 196,67,121,21,68,121,2,1 // vpextrw $0x1,%xmm8,0x2(%r9,%rdi,2)
15621 .byte 196,67,121,21,4,121,0 // vpextrw $0x0,%xmm8,(%r9,%rdi,2)
Mike Kleinda164342017-04-19 14:33:58 -040015622 .byte 235,159 // jmp 397b <_sk_store_565_avx+0x9a>
Mike Klein21bd3e42017-04-06 16:32:29 -040015623 .byte 247,255 // idiv %edi
Mike Kleind7e06ae2017-03-29 16:33:06 -040015624 .byte 255 // (bad)
15625 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015626 .byte 239 // out %eax,(%dx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015627 .byte 255 // (bad)
15628 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015629 .byte 255,231 // jmpq *%rdi
Mike Kleind7e06ae2017-03-29 16:33:06 -040015630 .byte 255 // (bad)
15631 .byte 255 // (bad)
15632 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015633 .byte 223,255 // (bad)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015634 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015635 .byte 255,215 // callq *%rdi
Mike Kleind7e06ae2017-03-29 16:33:06 -040015636 .byte 255 // (bad)
15637 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015638 .byte 255,207 // dec %edi
Mike Kleind7e06ae2017-03-29 16:33:06 -040015639 .byte 255 // (bad)
15640 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015641 .byte 255,199 // inc %edi
Mike Kleind7e06ae2017-03-29 16:33:06 -040015642 .byte 255 // (bad)
15643 .byte 255 // (bad)
15644 .byte 255 // .byte 0xff
15645
Mike Kleinf809fef2017-03-31 13:52:45 -040015646HIDDEN _sk_load_4444_avx
15647.globl _sk_load_4444_avx
Mike Klein86714282017-04-13 17:37:38 -040015648FUNCTION(_sk_load_4444_avx)
Mike Kleinf809fef2017-03-31 13:52:45 -040015649_sk_load_4444_avx:
15650 .byte 72,173 // lods %ds:(%rsi),%rax
15651 .byte 76,139,16 // mov (%rax),%r10
15652 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040015653 .byte 15,133,245,0,0,0 // jne 3afb <_sk_load_4444_avx+0x103>
Mike Kleinf809fef2017-03-31 13:52:45 -040015654 .byte 196,193,122,111,4,122 // vmovdqu (%r10,%rdi,2),%xmm0
15655 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
15656 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
15657 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
15658 .byte 196,99,125,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm9
15659 .byte 184,0,240,0,0 // mov $0xf000,%eax
15660 .byte 197,249,110,192 // vmovd %eax,%xmm0
15661 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
15662 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
15663 .byte 196,193,124,84,193 // vandps %ymm9,%ymm0,%ymm0
15664 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
15665 .byte 184,137,136,136,55 // mov $0x37888889,%eax
15666 .byte 197,249,110,200 // vmovd %eax,%xmm1
15667 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15668 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15669 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
15670 .byte 184,0,15,0,0 // mov $0xf00,%eax
15671 .byte 197,249,110,200 // vmovd %eax,%xmm1
15672 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
15673 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15674 .byte 196,193,116,84,201 // vandps %ymm9,%ymm1,%ymm1
15675 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
15676 .byte 184,137,136,136,57 // mov $0x39888889,%eax
15677 .byte 197,249,110,208 // vmovd %eax,%xmm2
15678 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
15679 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
15680 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
15681 .byte 184,240,0,0,0 // mov $0xf0,%eax
15682 .byte 197,249,110,208 // vmovd %eax,%xmm2
15683 .byte 197,249,112,210,0 // vpshufd $0x0,%xmm2,%xmm2
15684 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
15685 .byte 196,193,108,84,209 // vandps %ymm9,%ymm2,%ymm2
15686 .byte 197,124,91,194 // vcvtdq2ps %ymm2,%ymm8
15687 .byte 184,137,136,136,59 // mov $0x3b888889,%eax
15688 .byte 197,249,110,208 // vmovd %eax,%xmm2
15689 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
15690 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
15691 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
15692 .byte 184,15,0,0,0 // mov $0xf,%eax
15693 .byte 197,249,110,216 // vmovd %eax,%xmm3
15694 .byte 197,249,112,219,0 // vpshufd $0x0,%xmm3,%xmm3
15695 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15696 .byte 196,193,100,84,217 // vandps %ymm9,%ymm3,%ymm3
15697 .byte 197,124,91,195 // vcvtdq2ps %ymm3,%ymm8
15698 .byte 184,137,136,136,61 // mov $0x3d888889,%eax
15699 .byte 197,249,110,216 // vmovd %eax,%xmm3
15700 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
15701 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15702 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
15703 .byte 72,173 // lods %ds:(%rsi),%rax
15704 .byte 255,224 // jmpq *%rax
15705 .byte 65,137,200 // mov %ecx,%r8d
15706 .byte 65,128,224,7 // and $0x7,%r8b
15707 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
15708 .byte 65,254,200 // dec %r8b
15709 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040015710 .byte 15,135,249,254,255,255 // ja 3a0c <_sk_load_4444_avx+0x14>
Mike Kleinf809fef2017-03-31 13:52:45 -040015711 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinda164342017-04-19 14:33:58 -040015712 .byte 76,141,13,74,0,0,0 // lea 0x4a(%rip),%r9 # 3b68 <_sk_load_4444_avx+0x170>
Mike Kleinf809fef2017-03-31 13:52:45 -040015713 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
15714 .byte 76,1,200 // add %r9,%rax
15715 .byte 255,224 // jmpq *%rax
15716 .byte 197,249,239,192 // vpxor %xmm0,%xmm0,%xmm0
15717 .byte 196,193,121,196,68,122,12,6 // vpinsrw $0x6,0xc(%r10,%rdi,2),%xmm0,%xmm0
15718 .byte 196,193,121,196,68,122,10,5 // vpinsrw $0x5,0xa(%r10,%rdi,2),%xmm0,%xmm0
15719 .byte 196,193,121,196,68,122,8,4 // vpinsrw $0x4,0x8(%r10,%rdi,2),%xmm0,%xmm0
15720 .byte 196,193,121,196,68,122,6,3 // vpinsrw $0x3,0x6(%r10,%rdi,2),%xmm0,%xmm0
15721 .byte 196,193,121,196,68,122,4,2 // vpinsrw $0x2,0x4(%r10,%rdi,2),%xmm0,%xmm0
15722 .byte 196,193,121,196,68,122,2,1 // vpinsrw $0x1,0x2(%r10,%rdi,2),%xmm0,%xmm0
15723 .byte 196,193,121,196,4,122,0 // vpinsrw $0x0,(%r10,%rdi,2),%xmm0,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -040015724 .byte 233,165,254,255,255 // jmpq 3a0c <_sk_load_4444_avx+0x14>
Mike Kleinf809fef2017-03-31 13:52:45 -040015725 .byte 144 // nop
15726 .byte 243,255 // repz (bad)
15727 .byte 255 // (bad)
15728 .byte 255 // (bad)
Mike Kleinda164342017-04-19 14:33:58 -040015729 .byte 235,255 // jmp 3b6d <_sk_load_4444_avx+0x175>
Mike Kleinf809fef2017-03-31 13:52:45 -040015730 .byte 255 // (bad)
15731 .byte 255,227 // jmpq *%rbx
15732 .byte 255 // (bad)
15733 .byte 255 // (bad)
15734 .byte 255 // (bad)
15735 .byte 219,255 // (bad)
15736 .byte 255 // (bad)
15737 .byte 255,211 // callq *%rbx
15738 .byte 255 // (bad)
15739 .byte 255 // (bad)
15740 .byte 255,203 // dec %ebx
15741 .byte 255 // (bad)
15742 .byte 255 // (bad)
15743 .byte 255 // (bad)
15744 .byte 191 // .byte 0xbf
15745 .byte 255 // (bad)
15746 .byte 255 // (bad)
15747 .byte 255 // .byte 0xff
15748
Mike Klein21bd3e42017-04-06 16:32:29 -040015749HIDDEN _sk_gather_4444_avx
15750.globl _sk_gather_4444_avx
Mike Klein86714282017-04-13 17:37:38 -040015751FUNCTION(_sk_gather_4444_avx)
Mike Klein21bd3e42017-04-06 16:32:29 -040015752_sk_gather_4444_avx:
15753 .byte 85 // push %rbp
15754 .byte 65,87 // push %r15
15755 .byte 65,86 // push %r14
15756 .byte 65,84 // push %r12
15757 .byte 83 // push %rbx
15758 .byte 72,173 // lods %ds:(%rsi),%rax
15759 .byte 76,139,0 // mov (%rax),%r8
15760 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
15761 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
15762 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
15763 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
15764 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
15765 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
15766 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
15767 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
15768 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
15769 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
15770 .byte 65,137,193 // mov %eax,%r9d
15771 .byte 72,193,232,32 // shr $0x20,%rax
15772 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
15773 .byte 69,137,211 // mov %r10d,%r11d
15774 .byte 73,193,234,32 // shr $0x20,%r10
15775 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
15776 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
15777 .byte 65,137,222 // mov %ebx,%r14d
15778 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
15779 .byte 69,137,252 // mov %r15d,%r12d
15780 .byte 73,193,239,32 // shr $0x20,%r15
15781 .byte 72,193,235,32 // shr $0x20,%rbx
15782 .byte 65,15,183,28,88 // movzwl (%r8,%rbx,2),%ebx
15783 .byte 67,15,183,44,112 // movzwl (%r8,%r14,2),%ebp
15784 .byte 197,249,110,197 // vmovd %ebp,%xmm0
15785 .byte 197,249,196,195,1 // vpinsrw $0x1,%ebx,%xmm0,%xmm0
15786 .byte 67,15,183,28,96 // movzwl (%r8,%r12,2),%ebx
15787 .byte 197,249,196,195,2 // vpinsrw $0x2,%ebx,%xmm0,%xmm0
15788 .byte 67,15,183,28,120 // movzwl (%r8,%r15,2),%ebx
15789 .byte 197,249,196,195,3 // vpinsrw $0x3,%ebx,%xmm0,%xmm0
15790 .byte 67,15,183,44,88 // movzwl (%r8,%r11,2),%ebp
15791 .byte 197,249,196,197,4 // vpinsrw $0x4,%ebp,%xmm0,%xmm0
15792 .byte 67,15,183,44,80 // movzwl (%r8,%r10,2),%ebp
15793 .byte 197,249,196,197,5 // vpinsrw $0x5,%ebp,%xmm0,%xmm0
15794 .byte 67,15,183,44,72 // movzwl (%r8,%r9,2),%ebp
15795 .byte 197,249,196,197,6 // vpinsrw $0x6,%ebp,%xmm0,%xmm0
15796 .byte 65,15,183,4,64 // movzwl (%r8,%rax,2),%eax
15797 .byte 197,249,196,192,7 // vpinsrw $0x7,%eax,%xmm0,%xmm0
15798 .byte 197,241,239,201 // vpxor %xmm1,%xmm1,%xmm1
15799 .byte 197,249,105,201 // vpunpckhwd %xmm1,%xmm0,%xmm1
15800 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
15801 .byte 196,99,125,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm9
15802 .byte 184,0,240,0,0 // mov $0xf000,%eax
15803 .byte 197,249,110,192 // vmovd %eax,%xmm0
15804 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
15805 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
15806 .byte 196,193,124,84,193 // vandps %ymm9,%ymm0,%ymm0
15807 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
15808 .byte 184,137,136,136,55 // mov $0x37888889,%eax
15809 .byte 197,249,110,200 // vmovd %eax,%xmm1
15810 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15811 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15812 .byte 197,252,89,193 // vmulps %ymm1,%ymm0,%ymm0
15813 .byte 184,0,15,0,0 // mov $0xf00,%eax
15814 .byte 197,249,110,200 // vmovd %eax,%xmm1
15815 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
15816 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
15817 .byte 196,193,116,84,201 // vandps %ymm9,%ymm1,%ymm1
15818 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
15819 .byte 184,137,136,136,57 // mov $0x39888889,%eax
15820 .byte 197,249,110,208 // vmovd %eax,%xmm2
15821 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
15822 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
15823 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
15824 .byte 184,240,0,0,0 // mov $0xf0,%eax
15825 .byte 197,249,110,208 // vmovd %eax,%xmm2
15826 .byte 197,249,112,210,0 // vpshufd $0x0,%xmm2,%xmm2
15827 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
15828 .byte 196,193,108,84,209 // vandps %ymm9,%ymm2,%ymm2
15829 .byte 197,124,91,194 // vcvtdq2ps %ymm2,%ymm8
15830 .byte 184,137,136,136,59 // mov $0x3b888889,%eax
15831 .byte 197,249,110,208 // vmovd %eax,%xmm2
15832 .byte 196,227,121,4,210,0 // vpermilps $0x0,%xmm2,%xmm2
15833 .byte 196,227,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm2
15834 .byte 197,188,89,210 // vmulps %ymm2,%ymm8,%ymm2
15835 .byte 184,15,0,0,0 // mov $0xf,%eax
15836 .byte 197,249,110,216 // vmovd %eax,%xmm3
15837 .byte 197,249,112,219,0 // vpshufd $0x0,%xmm3,%xmm3
15838 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15839 .byte 196,193,100,84,217 // vandps %ymm9,%ymm3,%ymm3
15840 .byte 197,124,91,195 // vcvtdq2ps %ymm3,%ymm8
15841 .byte 184,137,136,136,61 // mov $0x3d888889,%eax
15842 .byte 197,249,110,216 // vmovd %eax,%xmm3
15843 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
15844 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
15845 .byte 197,188,89,219 // vmulps %ymm3,%ymm8,%ymm3
15846 .byte 72,173 // lods %ds:(%rsi),%rax
15847 .byte 91 // pop %rbx
15848 .byte 65,92 // pop %r12
15849 .byte 65,94 // pop %r14
15850 .byte 65,95 // pop %r15
15851 .byte 93 // pop %rbp
15852 .byte 255,224 // jmpq *%rax
15853
Mike Kleinf809fef2017-03-31 13:52:45 -040015854HIDDEN _sk_store_4444_avx
15855.globl _sk_store_4444_avx
Mike Klein86714282017-04-13 17:37:38 -040015856FUNCTION(_sk_store_4444_avx)
Mike Kleinf809fef2017-03-31 13:52:45 -040015857_sk_store_4444_avx:
15858 .byte 72,173 // lods %ds:(%rsi),%rax
15859 .byte 76,139,8 // mov (%rax),%r9
15860 .byte 184,0,0,112,65 // mov $0x41700000,%eax
15861 .byte 197,121,110,192 // vmovd %eax,%xmm8
15862 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
15863 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
15864 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
15865 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
15866 .byte 196,193,41,114,241,12 // vpslld $0xc,%xmm9,%xmm10
15867 .byte 196,67,125,25,201,1 // vextractf128 $0x1,%ymm9,%xmm9
15868 .byte 196,193,49,114,241,12 // vpslld $0xc,%xmm9,%xmm9
15869 .byte 196,67,45,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm9
15870 .byte 197,60,89,209 // vmulps %ymm1,%ymm8,%ymm10
15871 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
15872 .byte 196,193,33,114,242,8 // vpslld $0x8,%xmm10,%xmm11
15873 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
15874 .byte 196,193,41,114,242,8 // vpslld $0x8,%xmm10,%xmm10
15875 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
15876 .byte 196,65,45,86,201 // vorpd %ymm9,%ymm10,%ymm9
15877 .byte 197,60,89,210 // vmulps %ymm2,%ymm8,%ymm10
15878 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
15879 .byte 196,193,33,114,242,4 // vpslld $0x4,%xmm10,%xmm11
15880 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
15881 .byte 196,193,41,114,242,4 // vpslld $0x4,%xmm10,%xmm10
15882 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
15883 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
15884 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
15885 .byte 196,65,45,86,192 // vorpd %ymm8,%ymm10,%ymm8
15886 .byte 196,65,53,86,192 // vorpd %ymm8,%ymm9,%ymm8
15887 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
15888 .byte 196,66,57,43,193 // vpackusdw %xmm9,%xmm8,%xmm8
15889 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040015890 .byte 117,10 // jne 3de8 <_sk_store_4444_avx+0xaf>
Mike Kleinf809fef2017-03-31 13:52:45 -040015891 .byte 196,65,122,127,4,121 // vmovdqu %xmm8,(%r9,%rdi,2)
15892 .byte 72,173 // lods %ds:(%rsi),%rax
15893 .byte 255,224 // jmpq *%rax
15894 .byte 65,137,200 // mov %ecx,%r8d
15895 .byte 65,128,224,7 // and $0x7,%r8b
15896 .byte 65,254,200 // dec %r8b
15897 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040015898 .byte 119,236 // ja 3de4 <_sk_store_4444_avx+0xab>
Mike Kleinf809fef2017-03-31 13:52:45 -040015899 .byte 65,15,182,192 // movzbl %r8b,%eax
Mike Kleinda164342017-04-19 14:33:58 -040015900 .byte 76,141,5,69,0,0,0 // lea 0x45(%rip),%r8 # 3e48 <_sk_store_4444_avx+0x10f>
Mike Kleinf809fef2017-03-31 13:52:45 -040015901 .byte 73,99,4,128 // movslq (%r8,%rax,4),%rax
15902 .byte 76,1,192 // add %r8,%rax
15903 .byte 255,224 // jmpq *%rax
15904 .byte 196,67,121,21,68,121,12,6 // vpextrw $0x6,%xmm8,0xc(%r9,%rdi,2)
15905 .byte 196,67,121,21,68,121,10,5 // vpextrw $0x5,%xmm8,0xa(%r9,%rdi,2)
15906 .byte 196,67,121,21,68,121,8,4 // vpextrw $0x4,%xmm8,0x8(%r9,%rdi,2)
15907 .byte 196,67,121,21,68,121,6,3 // vpextrw $0x3,%xmm8,0x6(%r9,%rdi,2)
15908 .byte 196,67,121,21,68,121,4,2 // vpextrw $0x2,%xmm8,0x4(%r9,%rdi,2)
15909 .byte 196,67,121,21,68,121,2,1 // vpextrw $0x1,%xmm8,0x2(%r9,%rdi,2)
15910 .byte 196,67,121,21,4,121,0 // vpextrw $0x0,%xmm8,(%r9,%rdi,2)
Mike Kleinda164342017-04-19 14:33:58 -040015911 .byte 235,159 // jmp 3de4 <_sk_store_4444_avx+0xab>
Mike Klein21bd3e42017-04-06 16:32:29 -040015912 .byte 15,31,0 // nopl (%rax)
15913 .byte 244 // hlt
Mike Kleinf809fef2017-03-31 13:52:45 -040015914 .byte 255 // (bad)
15915 .byte 255 // (bad)
15916 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015917 .byte 236 // in (%dx),%al
Mike Kleinf809fef2017-03-31 13:52:45 -040015918 .byte 255 // (bad)
15919 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015920 .byte 255,228 // jmpq *%rsp
Mike Kleinf809fef2017-03-31 13:52:45 -040015921 .byte 255 // (bad)
15922 .byte 255 // (bad)
Mike Klein21bd3e42017-04-06 16:32:29 -040015923 .byte 255 // (bad)
15924 .byte 220,255 // fdivr %st,%st(7)
15925 .byte 255 // (bad)
15926 .byte 255,212 // callq *%rsp
15927 .byte 255 // (bad)
15928 .byte 255 // (bad)
15929 .byte 255,204 // dec %esp
15930 .byte 255 // (bad)
15931 .byte 255 // (bad)
15932 .byte 255,196 // inc %esp
Mike Kleinf809fef2017-03-31 13:52:45 -040015933 .byte 255 // (bad)
15934 .byte 255 // (bad)
15935 .byte 255 // .byte 0xff
15936
Mike Klein7c4af542017-03-29 18:21:14 -040015937HIDDEN _sk_load_8888_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040015938.globl _sk_load_8888_avx
Mike Klein86714282017-04-13 17:37:38 -040015939FUNCTION(_sk_load_8888_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040015940_sk_load_8888_avx:
15941 .byte 72,173 // lods %ds:(%rsi),%rax
15942 .byte 76,139,16 // mov (%rax),%r10
15943 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040015944 .byte 15,133,157,0,0,0 // jne 3f0f <_sk_load_8888_avx+0xab>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015945 .byte 196,65,124,16,12,186 // vmovups (%r10,%rdi,4),%ymm9
15946 .byte 184,255,0,0,0 // mov $0xff,%eax
15947 .byte 197,249,110,192 // vmovd %eax,%xmm0
15948 .byte 197,249,112,192,0 // vpshufd $0x0,%xmm0,%xmm0
15949 .byte 196,99,125,24,216,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm11
15950 .byte 196,193,36,84,193 // vandps %ymm9,%ymm11,%ymm0
15951 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
15952 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
15953 .byte 197,249,110,200 // vmovd %eax,%xmm1
15954 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
15955 .byte 196,99,117,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm8
15956 .byte 196,193,124,89,192 // vmulps %ymm8,%ymm0,%ymm0
15957 .byte 196,193,41,114,209,8 // vpsrld $0x8,%xmm9,%xmm10
15958 .byte 196,99,125,25,203,1 // vextractf128 $0x1,%ymm9,%xmm3
15959 .byte 197,241,114,211,8 // vpsrld $0x8,%xmm3,%xmm1
15960 .byte 196,227,45,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm10,%ymm1
15961 .byte 197,164,84,201 // vandps %ymm1,%ymm11,%ymm1
15962 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
15963 .byte 196,193,116,89,200 // vmulps %ymm8,%ymm1,%ymm1
15964 .byte 196,193,41,114,209,16 // vpsrld $0x10,%xmm9,%xmm10
15965 .byte 197,233,114,211,16 // vpsrld $0x10,%xmm3,%xmm2
15966 .byte 196,227,45,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm10,%ymm2
15967 .byte 197,164,84,210 // vandps %ymm2,%ymm11,%ymm2
15968 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
15969 .byte 196,193,108,89,208 // vmulps %ymm8,%ymm2,%ymm2
15970 .byte 196,193,49,114,209,24 // vpsrld $0x18,%xmm9,%xmm9
15971 .byte 197,225,114,211,24 // vpsrld $0x18,%xmm3,%xmm3
15972 .byte 196,227,53,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm9,%ymm3
15973 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
15974 .byte 196,193,100,89,216 // vmulps %ymm8,%ymm3,%ymm3
15975 .byte 72,173 // lods %ds:(%rsi),%rax
15976 .byte 255,224 // jmpq *%rax
15977 .byte 65,137,200 // mov %ecx,%r8d
15978 .byte 65,128,224,7 // and $0x7,%r8b
15979 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
15980 .byte 65,254,200 // dec %r8b
15981 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040015982 .byte 15,135,80,255,255,255 // ja 3e78 <_sk_load_8888_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015983 .byte 69,15,182,192 // movzbl %r8b,%r8d
Mike Kleinda164342017-04-19 14:33:58 -040015984 .byte 76,141,13,137,0,0,0 // lea 0x89(%rip),%r9 # 3fbc <_sk_load_8888_avx+0x158>
Mike Kleind7e06ae2017-03-29 16:33:06 -040015985 .byte 75,99,4,129 // movslq (%r9,%r8,4),%rax
15986 .byte 76,1,200 // add %r9,%rax
15987 .byte 255,224 // jmpq *%rax
15988 .byte 196,193,121,110,68,186,24 // vmovd 0x18(%r10,%rdi,4),%xmm0
15989 .byte 197,249,112,192,68 // vpshufd $0x44,%xmm0,%xmm0
15990 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
15991 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
15992 .byte 196,99,117,12,200,64 // vblendps $0x40,%ymm0,%ymm1,%ymm9
15993 .byte 196,99,125,25,200,1 // vextractf128 $0x1,%ymm9,%xmm0
15994 .byte 196,195,121,34,68,186,20,1 // vpinsrd $0x1,0x14(%r10,%rdi,4),%xmm0,%xmm0
15995 .byte 196,99,53,24,200,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm9
15996 .byte 196,99,125,25,200,1 // vextractf128 $0x1,%ymm9,%xmm0
15997 .byte 196,195,121,34,68,186,16,0 // vpinsrd $0x0,0x10(%r10,%rdi,4),%xmm0,%xmm0
15998 .byte 196,99,53,24,200,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm9
15999 .byte 196,195,49,34,68,186,12,3 // vpinsrd $0x3,0xc(%r10,%rdi,4),%xmm9,%xmm0
16000 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
16001 .byte 196,195,49,34,68,186,8,2 // vpinsrd $0x2,0x8(%r10,%rdi,4),%xmm9,%xmm0
16002 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
16003 .byte 196,195,49,34,68,186,4,1 // vpinsrd $0x1,0x4(%r10,%rdi,4),%xmm9,%xmm0
16004 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
16005 .byte 196,195,49,34,4,186,0 // vpinsrd $0x0,(%r10,%rdi,4),%xmm9,%xmm0
16006 .byte 196,99,53,12,200,15 // vblendps $0xf,%ymm0,%ymm9,%ymm9
Mike Kleinda164342017-04-19 14:33:58 -040016007 .byte 233,188,254,255,255 // jmpq 3e78 <_sk_load_8888_avx+0x14>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016008 .byte 238 // out %al,(%dx)
16009 .byte 255 // (bad)
16010 .byte 255 // (bad)
16011 .byte 255,224 // jmpq *%rax
16012 .byte 255 // (bad)
16013 .byte 255 // (bad)
16014 .byte 255,210 // callq *%rdx
16015 .byte 255 // (bad)
16016 .byte 255 // (bad)
16017 .byte 255,196 // inc %esp
16018 .byte 255 // (bad)
16019 .byte 255 // (bad)
16020 .byte 255,176,255,255,255,156 // pushq -0x63000001(%rax)
16021 .byte 255 // (bad)
16022 .byte 255 // (bad)
16023 .byte 255 // .byte 0xff
16024 .byte 128,255,255 // cmp $0xff,%bh
16025 .byte 255 // .byte 0xff
16026
Mike Kleindec4ea82017-04-06 15:04:05 -040016027HIDDEN _sk_gather_8888_avx
16028.globl _sk_gather_8888_avx
Mike Klein86714282017-04-13 17:37:38 -040016029FUNCTION(_sk_gather_8888_avx)
Mike Kleindec4ea82017-04-06 15:04:05 -040016030_sk_gather_8888_avx:
16031 .byte 65,87 // push %r15
16032 .byte 65,86 // push %r14
16033 .byte 65,84 // push %r12
16034 .byte 83 // push %rbx
16035 .byte 72,173 // lods %ds:(%rsi),%rax
16036 .byte 76,139,0 // mov (%rax),%r8
16037 .byte 197,254,91,201 // vcvttps2dq %ymm1,%ymm1
16038 .byte 197,249,110,80,16 // vmovd 0x10(%rax),%xmm2
16039 .byte 197,249,112,210,0 // vpshufd $0x0,%xmm2,%xmm2
16040 .byte 196,226,105,64,217 // vpmulld %xmm1,%xmm2,%xmm3
16041 .byte 196,227,125,25,201,1 // vextractf128 $0x1,%ymm1,%xmm1
16042 .byte 196,226,105,64,201 // vpmulld %xmm1,%xmm2,%xmm1
16043 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
16044 .byte 196,227,125,25,194,1 // vextractf128 $0x1,%ymm0,%xmm2
16045 .byte 197,241,254,202 // vpaddd %xmm2,%xmm1,%xmm1
16046 .byte 196,225,249,126,200 // vmovq %xmm1,%rax
16047 .byte 65,137,193 // mov %eax,%r9d
16048 .byte 72,193,232,32 // shr $0x20,%rax
16049 .byte 196,195,249,22,202,1 // vpextrq $0x1,%xmm1,%r10
16050 .byte 69,137,211 // mov %r10d,%r11d
16051 .byte 73,193,234,32 // shr $0x20,%r10
16052 .byte 197,225,254,192 // vpaddd %xmm0,%xmm3,%xmm0
16053 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
16054 .byte 65,137,222 // mov %ebx,%r14d
16055 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
16056 .byte 69,137,252 // mov %r15d,%r12d
16057 .byte 72,193,235,32 // shr $0x20,%rbx
16058 .byte 73,193,239,32 // shr $0x20,%r15
16059 .byte 196,129,121,110,4,176 // vmovd (%r8,%r14,4),%xmm0
16060 .byte 196,195,121,34,4,152,1 // vpinsrd $0x1,(%r8,%rbx,4),%xmm0,%xmm0
16061 .byte 196,131,121,34,4,160,2 // vpinsrd $0x2,(%r8,%r12,4),%xmm0,%xmm0
16062 .byte 196,3,121,34,4,184,3 // vpinsrd $0x3,(%r8,%r15,4),%xmm0,%xmm8
16063 .byte 196,129,121,110,4,136 // vmovd (%r8,%r9,4),%xmm0
16064 .byte 196,195,121,34,4,128,1 // vpinsrd $0x1,(%r8,%rax,4),%xmm0,%xmm0
16065 .byte 196,131,121,34,4,152,2 // vpinsrd $0x2,(%r8,%r11,4),%xmm0,%xmm0
16066 .byte 196,131,121,34,28,144,3 // vpinsrd $0x3,(%r8,%r10,4),%xmm0,%xmm3
16067 .byte 196,227,61,24,195,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm0
16068 .byte 184,255,0,0,0 // mov $0xff,%eax
16069 .byte 197,249,110,200 // vmovd %eax,%xmm1
16070 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
16071 .byte 196,99,117,24,217,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm11
16072 .byte 197,164,84,192 // vandps %ymm0,%ymm11,%ymm0
16073 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
16074 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
16075 .byte 197,249,110,200 // vmovd %eax,%xmm1
16076 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
16077 .byte 196,99,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm9
16078 .byte 196,193,124,89,193 // vmulps %ymm9,%ymm0,%ymm0
16079 .byte 196,193,41,114,208,8 // vpsrld $0x8,%xmm8,%xmm10
16080 .byte 197,241,114,211,8 // vpsrld $0x8,%xmm3,%xmm1
16081 .byte 196,227,45,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm10,%ymm1
16082 .byte 197,164,84,201 // vandps %ymm1,%ymm11,%ymm1
16083 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
16084 .byte 196,193,116,89,201 // vmulps %ymm9,%ymm1,%ymm1
16085 .byte 196,193,41,114,208,16 // vpsrld $0x10,%xmm8,%xmm10
16086 .byte 197,233,114,211,16 // vpsrld $0x10,%xmm3,%xmm2
16087 .byte 196,227,45,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm10,%ymm2
16088 .byte 197,164,84,210 // vandps %ymm2,%ymm11,%ymm2
16089 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
16090 .byte 196,193,108,89,209 // vmulps %ymm9,%ymm2,%ymm2
16091 .byte 196,193,57,114,208,24 // vpsrld $0x18,%xmm8,%xmm8
16092 .byte 197,225,114,211,24 // vpsrld $0x18,%xmm3,%xmm3
16093 .byte 196,227,61,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm8,%ymm3
16094 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
16095 .byte 196,193,100,89,217 // vmulps %ymm9,%ymm3,%ymm3
16096 .byte 72,173 // lods %ds:(%rsi),%rax
16097 .byte 91 // pop %rbx
16098 .byte 65,92 // pop %r12
16099 .byte 65,94 // pop %r14
16100 .byte 65,95 // pop %r15
16101 .byte 255,224 // jmpq *%rax
16102
Mike Klein7c4af542017-03-29 18:21:14 -040016103HIDDEN _sk_store_8888_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016104.globl _sk_store_8888_avx
Mike Klein86714282017-04-13 17:37:38 -040016105FUNCTION(_sk_store_8888_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016106_sk_store_8888_avx:
16107 .byte 72,173 // lods %ds:(%rsi),%rax
16108 .byte 76,139,8 // mov (%rax),%r9
16109 .byte 184,0,0,127,67 // mov $0x437f0000,%eax
16110 .byte 197,121,110,192 // vmovd %eax,%xmm8
16111 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
16112 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
16113 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
16114 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
16115 .byte 197,60,89,209 // vmulps %ymm1,%ymm8,%ymm10
16116 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
16117 .byte 196,193,33,114,242,8 // vpslld $0x8,%xmm10,%xmm11
16118 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
16119 .byte 196,193,41,114,242,8 // vpslld $0x8,%xmm10,%xmm10
16120 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
16121 .byte 196,65,45,86,201 // vorpd %ymm9,%ymm10,%ymm9
16122 .byte 197,60,89,210 // vmulps %ymm2,%ymm8,%ymm10
16123 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
16124 .byte 196,193,33,114,242,16 // vpslld $0x10,%xmm10,%xmm11
16125 .byte 196,67,125,25,210,1 // vextractf128 $0x1,%ymm10,%xmm10
16126 .byte 196,193,41,114,242,16 // vpslld $0x10,%xmm10,%xmm10
16127 .byte 196,67,37,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm11,%ymm10
16128 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
16129 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
16130 .byte 196,193,33,114,240,24 // vpslld $0x18,%xmm8,%xmm11
16131 .byte 196,67,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm8
16132 .byte 196,193,57,114,240,24 // vpslld $0x18,%xmm8,%xmm8
16133 .byte 196,67,37,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm11,%ymm8
16134 .byte 196,65,45,86,192 // vorpd %ymm8,%ymm10,%ymm8
16135 .byte 196,65,53,86,192 // vorpd %ymm8,%ymm9,%ymm8
16136 .byte 72,133,201 // test %rcx,%rcx
Mike Kleinda164342017-04-19 14:33:58 -040016137 .byte 117,10 // jne 41bd <_sk_store_8888_avx+0xa4>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016138 .byte 196,65,124,17,4,185 // vmovups %ymm8,(%r9,%rdi,4)
16139 .byte 72,173 // lods %ds:(%rsi),%rax
16140 .byte 255,224 // jmpq *%rax
16141 .byte 65,137,200 // mov %ecx,%r8d
16142 .byte 65,128,224,7 // and $0x7,%r8b
16143 .byte 65,254,200 // dec %r8b
16144 .byte 65,128,248,6 // cmp $0x6,%r8b
Mike Kleinda164342017-04-19 14:33:58 -040016145 .byte 119,236 // ja 41b9 <_sk_store_8888_avx+0xa0>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016146 .byte 65,15,182,192 // movzbl %r8b,%eax
Mike Kleinda164342017-04-19 14:33:58 -040016147 .byte 76,141,5,84,0,0,0 // lea 0x54(%rip),%r8 # 422c <_sk_store_8888_avx+0x113>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016148 .byte 73,99,4,128 // movslq (%r8,%rax,4),%rax
16149 .byte 76,1,192 // add %r8,%rax
16150 .byte 255,224 // jmpq *%rax
16151 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
16152 .byte 196,67,121,22,76,185,24,2 // vpextrd $0x2,%xmm9,0x18(%r9,%rdi,4)
16153 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
16154 .byte 196,67,121,22,76,185,20,1 // vpextrd $0x1,%xmm9,0x14(%r9,%rdi,4)
16155 .byte 196,67,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm9
16156 .byte 196,65,122,17,76,185,16 // vmovss %xmm9,0x10(%r9,%rdi,4)
16157 .byte 196,67,121,22,68,185,12,3 // vpextrd $0x3,%xmm8,0xc(%r9,%rdi,4)
16158 .byte 196,67,121,22,68,185,8,2 // vpextrd $0x2,%xmm8,0x8(%r9,%rdi,4)
16159 .byte 196,67,121,22,68,185,4,1 // vpextrd $0x1,%xmm8,0x4(%r9,%rdi,4)
16160 .byte 196,65,121,126,4,185 // vmovd %xmm8,(%r9,%rdi,4)
Mike Kleinda164342017-04-19 14:33:58 -040016161 .byte 235,143 // jmp 41b9 <_sk_store_8888_avx+0xa0>
Mike Kleindec4ea82017-04-06 15:04:05 -040016162 .byte 102,144 // xchg %ax,%ax
16163 .byte 246,255 // idiv %bh
16164 .byte 255 // (bad)
16165 .byte 255 // (bad)
16166 .byte 238 // out %al,(%dx)
16167 .byte 255 // (bad)
16168 .byte 255 // (bad)
16169 .byte 255,230 // jmpq *%rsi
Mike Kleind7e06ae2017-03-29 16:33:06 -040016170 .byte 255 // (bad)
16171 .byte 255 // (bad)
16172 .byte 255 // (bad)
Mike Kleindec4ea82017-04-06 15:04:05 -040016173 .byte 222,255 // fdivrp %st,%st(7)
16174 .byte 255 // (bad)
16175 .byte 255,209 // callq *%rcx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016176 .byte 255 // (bad)
16177 .byte 255 // (bad)
Mike Kleindec4ea82017-04-06 15:04:05 -040016178 .byte 255,195 // inc %ebx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016179 .byte 255 // (bad)
16180 .byte 255 // (bad)
16181 .byte 255 // .byte 0xff
Mike Kleindec4ea82017-04-06 15:04:05 -040016182 .byte 181,255 // mov $0xff,%ch
Mike Kleind7e06ae2017-03-29 16:33:06 -040016183 .byte 255 // (bad)
16184 .byte 255 // .byte 0xff
16185
Mike Klein7c4af542017-03-29 18:21:14 -040016186HIDDEN _sk_load_f16_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016187.globl _sk_load_f16_avx
Mike Klein86714282017-04-13 17:37:38 -040016188FUNCTION(_sk_load_f16_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016189_sk_load_f16_avx:
16190 .byte 72,173 // lods %ds:(%rsi),%rax
16191 .byte 72,139,0 // mov (%rax),%rax
16192 .byte 72,133,201 // test %rcx,%rcx
Mike Kleind0ce1482017-04-19 17:19:30 -040016193 .byte 197,252,17,124,36,200 // vmovups %ymm7,-0x38(%rsp)
16194 .byte 197,252,17,116,36,168 // vmovups %ymm6,-0x58(%rsp)
16195 .byte 197,252,17,108,36,136 // vmovups %ymm5,-0x78(%rsp)
Mike Klein097d0932017-04-20 09:11:53 -040016196 .byte 15,133,46,2,0,0 // jne 4496 <_sk_load_f16_avx+0x24e>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016197 .byte 197,121,16,4,248 // vmovupd (%rax,%rdi,8),%xmm8
16198 .byte 197,249,16,84,248,16 // vmovupd 0x10(%rax,%rdi,8),%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016199 .byte 197,249,16,76,248,32 // vmovupd 0x20(%rax,%rdi,8),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040016200 .byte 197,122,111,76,248,48 // vmovdqu 0x30(%rax,%rdi,8),%xmm9
16201 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
16202 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016203 .byte 196,193,113,97,217 // vpunpcklwd %xmm9,%xmm1,%xmm3
16204 .byte 196,193,113,105,201 // vpunpckhwd %xmm9,%xmm1,%xmm1
16205 .byte 197,121,97,242 // vpunpcklwd %xmm2,%xmm0,%xmm14
Mike Klein114e6b32017-04-03 22:21:15 -040016206 .byte 197,121,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040016207 .byte 197,97,97,249 // vpunpcklwd %xmm1,%xmm3,%xmm15
Mike Klein097d0932017-04-20 09:11:53 -040016208 .byte 197,97,105,217 // vpunpckhwd %xmm1,%xmm3,%xmm11
Mike Kleind0ce1482017-04-19 17:19:30 -040016209 .byte 196,193,9,108,199 // vpunpcklqdq %xmm15,%xmm14,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040016210 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
16211 .byte 196,193,121,105,201 // vpunpckhwd %xmm9,%xmm0,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040016212 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
16213 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
16214 .byte 184,0,128,0,0 // mov $0x8000,%eax
Mike Klein114e6b32017-04-03 22:21:15 -040016215 .byte 197,249,110,200 // vmovd %eax,%xmm1
16216 .byte 197,249,112,201,0 // vpshufd $0x0,%xmm1,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040016217 .byte 196,99,117,24,209,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm10
16218 .byte 196,193,124,84,202 // vandps %ymm10,%ymm0,%ymm1
Mike Kleind0ce1482017-04-19 17:19:30 -040016219 .byte 197,252,87,193 // vxorps %ymm1,%ymm0,%ymm0
Mike Klein097d0932017-04-20 09:11:53 -040016220 .byte 184,0,4,0,0 // mov $0x400,%eax
Mike Kleind0ce1482017-04-19 17:19:30 -040016221 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
Mike Klein097d0932017-04-20 09:11:53 -040016222 .byte 197,249,110,208 // vmovd %eax,%xmm2
16223 .byte 197,121,112,226,0 // vpshufd $0x0,%xmm2,%xmm12
16224 .byte 197,153,102,211 // vpcmpgtd %xmm3,%xmm12,%xmm2
16225 .byte 197,25,102,232 // vpcmpgtd %xmm0,%xmm12,%xmm13
16226 .byte 196,227,21,24,242,1 // vinsertf128 $0x1,%xmm2,%ymm13,%ymm6
16227 .byte 196,227,125,25,202,1 // vextractf128 $0x1,%ymm1,%xmm2
16228 .byte 197,145,114,242,16 // vpslld $0x10,%xmm2,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040016229 .byte 197,233,114,243,13 // vpslld $0xd,%xmm3,%xmm2
16230 .byte 184,0,0,0,56 // mov $0x38000000,%eax
16231 .byte 197,249,110,216 // vmovd %eax,%xmm3
Mike Klein097d0932017-04-20 09:11:53 -040016232 .byte 197,249,112,235,0 // vpshufd $0x0,%xmm3,%xmm5
16233 .byte 197,145,254,253 // vpaddd %xmm5,%xmm13,%xmm7
Mike Kleind0ce1482017-04-19 17:19:30 -040016234 .byte 197,193,254,210 // vpaddd %xmm2,%xmm7,%xmm2
16235 .byte 197,241,114,241,16 // vpslld $0x10,%xmm1,%xmm1
16236 .byte 197,249,114,240,13 // vpslld $0xd,%xmm0,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040016237 .byte 197,241,254,205 // vpaddd %xmm5,%xmm1,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040016238 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
16239 .byte 196,227,125,24,194,1 // vinsertf128 $0x1,%xmm2,%ymm0,%ymm0
16240 .byte 196,65,20,87,237 // vxorps %ymm13,%ymm13,%ymm13
16241 .byte 196,195,125,74,197,96 // vblendvps %ymm6,%ymm13,%ymm0,%ymm0
16242 .byte 196,193,9,109,207 // vpunpckhqdq %xmm15,%xmm14,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040016243 .byte 196,193,113,105,209 // vpunpckhwd %xmm9,%xmm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016244 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
16245 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
Mike Klein097d0932017-04-20 09:11:53 -040016246 .byte 196,193,116,84,210 // vandps %ymm10,%ymm1,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016247 .byte 197,244,87,202 // vxorps %ymm2,%ymm1,%ymm1
Mike Klein097d0932017-04-20 09:11:53 -040016248 .byte 196,227,125,25,206,1 // vextractf128 $0x1,%ymm1,%xmm6
16249 .byte 197,153,102,254 // vpcmpgtd %xmm6,%xmm12,%xmm7
16250 .byte 197,25,102,241 // vpcmpgtd %xmm1,%xmm12,%xmm14
16251 .byte 196,99,13,24,247,1 // vinsertf128 $0x1,%xmm7,%ymm14,%ymm14
Mike Kleind0ce1482017-04-19 17:19:30 -040016252 .byte 196,227,125,25,215,1 // vextractf128 $0x1,%ymm2,%xmm7
16253 .byte 197,193,114,247,16 // vpslld $0x10,%xmm7,%xmm7
Mike Kleind0ce1482017-04-19 17:19:30 -040016254 .byte 197,201,114,246,13 // vpslld $0xd,%xmm6,%xmm6
Mike Klein097d0932017-04-20 09:11:53 -040016255 .byte 197,193,254,253 // vpaddd %xmm5,%xmm7,%xmm7
Mike Kleind0ce1482017-04-19 17:19:30 -040016256 .byte 197,193,254,246 // vpaddd %xmm6,%xmm7,%xmm6
16257 .byte 197,233,114,242,16 // vpslld $0x10,%xmm2,%xmm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040016258 .byte 197,241,114,241,13 // vpslld $0xd,%xmm1,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040016259 .byte 197,233,254,213 // vpaddd %xmm5,%xmm2,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016260 .byte 197,233,254,201 // vpaddd %xmm1,%xmm2,%xmm1
16261 .byte 196,227,117,24,206,1 // vinsertf128 $0x1,%xmm6,%ymm1,%ymm1
16262 .byte 196,195,117,74,205,224 // vblendvps %ymm14,%ymm13,%ymm1,%ymm1
Mike Klein097d0932017-04-20 09:11:53 -040016263 .byte 196,193,57,108,211 // vpunpcklqdq %xmm11,%xmm8,%xmm2
16264 .byte 196,193,105,105,241 // vpunpckhwd %xmm9,%xmm2,%xmm6
Mike Kleind0ce1482017-04-19 17:19:30 -040016265 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
16266 .byte 196,227,109,24,214,1 // vinsertf128 $0x1,%xmm6,%ymm2,%ymm2
Mike Klein097d0932017-04-20 09:11:53 -040016267 .byte 196,193,108,84,242 // vandps %ymm10,%ymm2,%ymm6
16268 .byte 197,236,87,214 // vxorps %ymm6,%ymm2,%ymm2
16269 .byte 196,195,125,25,214,1 // vextractf128 $0x1,%ymm2,%xmm14
16270 .byte 196,193,25,102,254 // vpcmpgtd %xmm14,%xmm12,%xmm7
16271 .byte 197,25,102,250 // vpcmpgtd %xmm2,%xmm12,%xmm15
16272 .byte 196,99,5,24,255,1 // vinsertf128 $0x1,%xmm7,%ymm15,%ymm15
Mike Kleind0ce1482017-04-19 17:19:30 -040016273 .byte 196,227,125,25,247,1 // vextractf128 $0x1,%ymm6,%xmm7
Mike Kleind0ce1482017-04-19 17:19:30 -040016274 .byte 197,193,114,247,16 // vpslld $0x10,%xmm7,%xmm7
Mike Klein097d0932017-04-20 09:11:53 -040016275 .byte 196,193,9,114,246,13 // vpslld $0xd,%xmm14,%xmm14
16276 .byte 197,193,254,253 // vpaddd %xmm5,%xmm7,%xmm7
16277 .byte 196,193,65,254,254 // vpaddd %xmm14,%xmm7,%xmm7
16278 .byte 197,201,114,246,16 // vpslld $0x10,%xmm6,%xmm6
16279 .byte 197,233,114,242,13 // vpslld $0xd,%xmm2,%xmm2
16280 .byte 197,201,254,245 // vpaddd %xmm5,%xmm6,%xmm6
16281 .byte 197,201,254,210 // vpaddd %xmm2,%xmm6,%xmm2
16282 .byte 196,227,109,24,215,1 // vinsertf128 $0x1,%xmm7,%ymm2,%ymm2
16283 .byte 196,195,109,74,213,240 // vblendvps %ymm15,%ymm13,%ymm2,%ymm2
16284 .byte 196,193,57,109,243 // vpunpckhqdq %xmm11,%xmm8,%xmm6
16285 .byte 196,193,73,105,249 // vpunpckhwd %xmm9,%xmm6,%xmm7
16286 .byte 196,226,121,51,246 // vpmovzxwd %xmm6,%xmm6
16287 .byte 196,227,77,24,247,1 // vinsertf128 $0x1,%xmm7,%ymm6,%ymm6
16288 .byte 196,193,76,84,250 // vandps %ymm10,%ymm6,%ymm7
16289 .byte 197,204,87,247 // vxorps %ymm7,%ymm6,%ymm6
16290 .byte 196,195,125,25,240,1 // vextractf128 $0x1,%ymm6,%xmm8
16291 .byte 196,65,25,102,200 // vpcmpgtd %xmm8,%xmm12,%xmm9
16292 .byte 197,25,102,214 // vpcmpgtd %xmm6,%xmm12,%xmm10
16293 .byte 196,67,45,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm9
16294 .byte 196,227,125,25,251,1 // vextractf128 $0x1,%ymm7,%xmm3
16295 .byte 197,225,114,243,16 // vpslld $0x10,%xmm3,%xmm3
16296 .byte 197,193,114,247,16 // vpslld $0x10,%xmm7,%xmm7
16297 .byte 197,193,254,253 // vpaddd %xmm5,%xmm7,%xmm7
16298 .byte 197,225,254,221 // vpaddd %xmm5,%xmm3,%xmm3
16299 .byte 196,193,81,114,240,13 // vpslld $0xd,%xmm8,%xmm5
16300 .byte 197,225,254,221 // vpaddd %xmm5,%xmm3,%xmm3
16301 .byte 197,209,114,246,13 // vpslld $0xd,%xmm6,%xmm5
16302 .byte 197,193,254,237 // vpaddd %xmm5,%xmm7,%xmm5
Mike Kleind0ce1482017-04-19 17:19:30 -040016303 .byte 196,227,85,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm5,%ymm3
16304 .byte 196,195,101,74,221,144 // vblendvps %ymm9,%ymm13,%ymm3,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040016305 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleind0ce1482017-04-19 17:19:30 -040016306 .byte 197,252,16,108,36,136 // vmovups -0x78(%rsp),%ymm5
16307 .byte 197,252,16,116,36,168 // vmovups -0x58(%rsp),%ymm6
16308 .byte 197,252,16,124,36,200 // vmovups -0x38(%rsp),%ymm7
Mike Kleind7e06ae2017-03-29 16:33:06 -040016309 .byte 255,224 // jmpq *%rax
16310 .byte 197,123,16,4,248 // vmovsd (%rax,%rdi,8),%xmm8
16311 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
16312 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016313 .byte 116,79 // je 44f5 <_sk_load_f16_avx+0x2ad>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016314 .byte 197,57,22,68,248,8 // vmovhpd 0x8(%rax,%rdi,8),%xmm8,%xmm8
16315 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016316 .byte 114,67 // jb 44f5 <_sk_load_f16_avx+0x2ad>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016317 .byte 197,251,16,84,248,16 // vmovsd 0x10(%rax,%rdi,8),%xmm2
16318 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016319 .byte 116,68 // je 4502 <_sk_load_f16_avx+0x2ba>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016320 .byte 197,233,22,84,248,24 // vmovhpd 0x18(%rax,%rdi,8),%xmm2,%xmm2
16321 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016322 .byte 114,56 // jb 4502 <_sk_load_f16_avx+0x2ba>
Mike Kleind0ce1482017-04-19 17:19:30 -040016323 .byte 197,251,16,76,248,32 // vmovsd 0x20(%rax,%rdi,8),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040016324 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016325 .byte 15,132,165,253,255,255 // je 427f <_sk_load_f16_avx+0x37>
Mike Kleind0ce1482017-04-19 17:19:30 -040016326 .byte 197,241,22,76,248,40 // vmovhpd 0x28(%rax,%rdi,8),%xmm1,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040016327 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016328 .byte 15,130,149,253,255,255 // jb 427f <_sk_load_f16_avx+0x37>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016329 .byte 197,122,126,76,248,48 // vmovq 0x30(%rax,%rdi,8),%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040016330 .byte 233,138,253,255,255 // jmpq 427f <_sk_load_f16_avx+0x37>
Mike Kleind0ce1482017-04-19 17:19:30 -040016331 .byte 197,241,87,201 // vxorpd %xmm1,%xmm1,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040016332 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040016333 .byte 233,125,253,255,255 // jmpq 427f <_sk_load_f16_avx+0x37>
Mike Kleind0ce1482017-04-19 17:19:30 -040016334 .byte 197,241,87,201 // vxorpd %xmm1,%xmm1,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040016335 .byte 233,116,253,255,255 // jmpq 427f <_sk_load_f16_avx+0x37>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016336
Mike Klein5f055f02017-04-06 20:02:11 -040016337HIDDEN _sk_gather_f16_avx
16338.globl _sk_gather_f16_avx
Mike Klein86714282017-04-13 17:37:38 -040016339FUNCTION(_sk_gather_f16_avx)
Mike Klein5f055f02017-04-06 20:02:11 -040016340_sk_gather_f16_avx:
16341 .byte 65,87 // push %r15
16342 .byte 65,86 // push %r14
16343 .byte 65,84 // push %r12
16344 .byte 83 // push %rbx
Mike Kleind0ce1482017-04-19 17:19:30 -040016345 .byte 72,131,236,24 // sub $0x18,%rsp
16346 .byte 197,252,17,124,36,224 // vmovups %ymm7,-0x20(%rsp)
16347 .byte 197,252,17,116,36,192 // vmovups %ymm6,-0x40(%rsp)
16348 .byte 197,252,17,108,36,160 // vmovups %ymm5,-0x60(%rsp)
16349 .byte 197,252,17,100,36,128 // vmovups %ymm4,-0x80(%rsp)
Mike Klein5f055f02017-04-06 20:02:11 -040016350 .byte 72,173 // lods %ds:(%rsi),%rax
16351 .byte 76,139,0 // mov (%rax),%r8
16352 .byte 197,254,91,209 // vcvttps2dq %ymm1,%ymm2
16353 .byte 197,249,110,72,16 // vmovd 0x10(%rax),%xmm1
16354 .byte 197,249,112,217,0 // vpshufd $0x0,%xmm1,%xmm3
16355 .byte 196,226,97,64,202 // vpmulld %xmm2,%xmm3,%xmm1
16356 .byte 196,227,125,25,210,1 // vextractf128 $0x1,%ymm2,%xmm2
16357 .byte 196,226,97,64,210 // vpmulld %xmm2,%xmm3,%xmm2
16358 .byte 197,254,91,192 // vcvttps2dq %ymm0,%ymm0
16359 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
16360 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
16361 .byte 196,227,249,22,208,1 // vpextrq $0x1,%xmm2,%rax
16362 .byte 65,137,193 // mov %eax,%r9d
16363 .byte 72,193,232,32 // shr $0x20,%rax
16364 .byte 196,193,249,126,210 // vmovq %xmm2,%r10
16365 .byte 69,137,211 // mov %r10d,%r11d
16366 .byte 73,193,234,32 // shr $0x20,%r10
16367 .byte 197,241,254,192 // vpaddd %xmm0,%xmm1,%xmm0
16368 .byte 196,225,249,126,195 // vmovq %xmm0,%rbx
16369 .byte 65,137,222 // mov %ebx,%r14d
16370 .byte 196,195,249,22,199,1 // vpextrq $0x1,%xmm0,%r15
16371 .byte 69,137,252 // mov %r15d,%r12d
16372 .byte 73,193,239,32 // shr $0x20,%r15
16373 .byte 72,193,235,32 // shr $0x20,%rbx
16374 .byte 196,193,122,126,4,216 // vmovq (%r8,%rbx,8),%xmm0
16375 .byte 196,129,122,126,12,240 // vmovq (%r8,%r14,8),%xmm1
16376 .byte 197,113,108,200 // vpunpcklqdq %xmm0,%xmm1,%xmm9
16377 .byte 196,129,122,126,12,248 // vmovq (%r8,%r15,8),%xmm1
16378 .byte 196,129,122,126,20,224 // vmovq (%r8,%r12,8),%xmm2
16379 .byte 197,233,108,201 // vpunpcklqdq %xmm1,%xmm2,%xmm1
16380 .byte 196,129,122,126,20,208 // vmovq (%r8,%r10,8),%xmm2
16381 .byte 196,129,122,126,28,216 // vmovq (%r8,%r11,8),%xmm3
16382 .byte 197,97,108,210 // vpunpcklqdq %xmm2,%xmm3,%xmm10
16383 .byte 196,65,122,126,4,192 // vmovq (%r8,%rax,8),%xmm8
16384 .byte 196,129,122,126,28,200 // vmovq (%r8,%r9,8),%xmm3
16385 .byte 196,193,97,108,216 // vpunpcklqdq %xmm8,%xmm3,%xmm3
16386 .byte 197,177,97,193 // vpunpcklwd %xmm1,%xmm9,%xmm0
16387 .byte 197,177,105,201 // vpunpckhwd %xmm1,%xmm9,%xmm1
16388 .byte 197,169,97,211 // vpunpcklwd %xmm3,%xmm10,%xmm2
16389 .byte 197,169,105,219 // vpunpckhwd %xmm3,%xmm10,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040016390 .byte 197,121,97,241 // vpunpcklwd %xmm1,%xmm0,%xmm14
Mike Klein5f055f02017-04-06 20:02:11 -040016391 .byte 197,121,105,193 // vpunpckhwd %xmm1,%xmm0,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040016392 .byte 197,105,97,251 // vpunpcklwd %xmm3,%xmm2,%xmm15
Mike Klein097d0932017-04-20 09:11:53 -040016393 .byte 197,105,105,219 // vpunpckhwd %xmm3,%xmm2,%xmm11
Mike Kleind0ce1482017-04-19 17:19:30 -040016394 .byte 196,193,9,108,199 // vpunpcklqdq %xmm15,%xmm14,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040016395 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
16396 .byte 196,193,121,105,209 // vpunpckhwd %xmm9,%xmm0,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016397 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
16398 .byte 196,227,125,24,194,1 // vinsertf128 $0x1,%xmm2,%ymm0,%ymm0
16399 .byte 184,0,128,0,0 // mov $0x8000,%eax
Mike Klein5f055f02017-04-06 20:02:11 -040016400 .byte 197,249,110,208 // vmovd %eax,%xmm2
16401 .byte 197,249,112,210,0 // vpshufd $0x0,%xmm2,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040016402 .byte 196,99,109,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm2,%ymm10
16403 .byte 196,193,124,84,210 // vandps %ymm10,%ymm0,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016404 .byte 197,252,87,194 // vxorps %ymm2,%ymm0,%ymm0
Mike Klein097d0932017-04-20 09:11:53 -040016405 .byte 184,0,4,0,0 // mov $0x400,%eax
Mike Kleind0ce1482017-04-19 17:19:30 -040016406 .byte 196,227,125,25,195,1 // vextractf128 $0x1,%ymm0,%xmm3
Mike Klein097d0932017-04-20 09:11:53 -040016407 .byte 197,249,110,200 // vmovd %eax,%xmm1
16408 .byte 197,121,112,225,0 // vpshufd $0x0,%xmm1,%xmm12
16409 .byte 197,153,102,203 // vpcmpgtd %xmm3,%xmm12,%xmm1
16410 .byte 197,25,102,232 // vpcmpgtd %xmm0,%xmm12,%xmm13
16411 .byte 196,227,21,24,225,1 // vinsertf128 $0x1,%xmm1,%ymm13,%ymm4
16412 .byte 196,227,125,25,209,1 // vextractf128 $0x1,%ymm2,%xmm1
16413 .byte 197,145,114,241,16 // vpslld $0x10,%xmm1,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040016414 .byte 197,241,114,243,13 // vpslld $0xd,%xmm3,%xmm1
16415 .byte 184,0,0,0,56 // mov $0x38000000,%eax
16416 .byte 197,249,110,216 // vmovd %eax,%xmm3
16417 .byte 197,249,112,219,0 // vpshufd $0x0,%xmm3,%xmm3
16418 .byte 197,145,254,251 // vpaddd %xmm3,%xmm13,%xmm7
16419 .byte 197,193,254,201 // vpaddd %xmm1,%xmm7,%xmm1
16420 .byte 197,233,114,242,16 // vpslld $0x10,%xmm2,%xmm2
16421 .byte 197,249,114,240,13 // vpslld $0xd,%xmm0,%xmm0
16422 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
16423 .byte 197,233,254,192 // vpaddd %xmm0,%xmm2,%xmm0
16424 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
16425 .byte 196,65,20,87,237 // vxorps %ymm13,%ymm13,%ymm13
16426 .byte 196,195,125,74,197,64 // vblendvps %ymm4,%ymm13,%ymm0,%ymm0
16427 .byte 196,193,9,109,207 // vpunpckhqdq %xmm15,%xmm14,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040016428 .byte 196,193,113,105,209 // vpunpckhwd %xmm9,%xmm1,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016429 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
16430 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
Mike Klein097d0932017-04-20 09:11:53 -040016431 .byte 196,193,116,84,210 // vandps %ymm10,%ymm1,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016432 .byte 197,244,87,202 // vxorps %ymm2,%ymm1,%ymm1
Mike Klein097d0932017-04-20 09:11:53 -040016433 .byte 196,227,125,25,204,1 // vextractf128 $0x1,%ymm1,%xmm4
16434 .byte 197,153,102,252 // vpcmpgtd %xmm4,%xmm12,%xmm7
16435 .byte 197,25,102,241 // vpcmpgtd %xmm1,%xmm12,%xmm14
16436 .byte 196,227,13,24,255,1 // vinsertf128 $0x1,%xmm7,%ymm14,%ymm7
16437 .byte 196,227,125,25,214,1 // vextractf128 $0x1,%ymm2,%xmm6
16438 .byte 197,201,114,246,16 // vpslld $0x10,%xmm6,%xmm6
16439 .byte 197,217,114,244,13 // vpslld $0xd,%xmm4,%xmm4
16440 .byte 197,201,254,243 // vpaddd %xmm3,%xmm6,%xmm6
16441 .byte 197,201,254,228 // vpaddd %xmm4,%xmm6,%xmm4
Mike Kleind0ce1482017-04-19 17:19:30 -040016442 .byte 197,233,114,242,16 // vpslld $0x10,%xmm2,%xmm2
Mike Klein5f055f02017-04-06 20:02:11 -040016443 .byte 197,241,114,241,13 // vpslld $0xd,%xmm1,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040016444 .byte 197,233,254,211 // vpaddd %xmm3,%xmm2,%xmm2
16445 .byte 197,233,254,201 // vpaddd %xmm1,%xmm2,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040016446 .byte 196,227,117,24,204,1 // vinsertf128 $0x1,%xmm4,%ymm1,%ymm1
16447 .byte 196,195,117,74,205,112 // vblendvps %ymm7,%ymm13,%ymm1,%ymm1
16448 .byte 196,193,57,108,211 // vpunpcklqdq %xmm11,%xmm8,%xmm2
16449 .byte 196,193,105,105,225 // vpunpckhwd %xmm9,%xmm2,%xmm4
Mike Kleind0ce1482017-04-19 17:19:30 -040016450 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
16451 .byte 196,227,109,24,212,1 // vinsertf128 $0x1,%xmm4,%ymm2,%ymm2
Mike Klein097d0932017-04-20 09:11:53 -040016452 .byte 196,193,108,84,226 // vandps %ymm10,%ymm2,%ymm4
16453 .byte 197,236,87,212 // vxorps %ymm4,%ymm2,%ymm2
16454 .byte 196,227,125,25,214,1 // vextractf128 $0x1,%ymm2,%xmm6
16455 .byte 197,153,102,254 // vpcmpgtd %xmm6,%xmm12,%xmm7
16456 .byte 197,25,102,242 // vpcmpgtd %xmm2,%xmm12,%xmm14
16457 .byte 196,227,13,24,255,1 // vinsertf128 $0x1,%xmm7,%ymm14,%ymm7
16458 .byte 196,227,125,25,229,1 // vextractf128 $0x1,%ymm4,%xmm5
16459 .byte 197,209,114,245,16 // vpslld $0x10,%xmm5,%xmm5
16460 .byte 197,201,114,246,13 // vpslld $0xd,%xmm6,%xmm6
16461 .byte 197,209,254,235 // vpaddd %xmm3,%xmm5,%xmm5
16462 .byte 197,209,254,238 // vpaddd %xmm6,%xmm5,%xmm5
16463 .byte 197,217,114,244,16 // vpslld $0x10,%xmm4,%xmm4
Mike Klein5f055f02017-04-06 20:02:11 -040016464 .byte 197,233,114,242,13 // vpslld $0xd,%xmm2,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040016465 .byte 197,217,254,227 // vpaddd %xmm3,%xmm4,%xmm4
16466 .byte 197,217,254,210 // vpaddd %xmm2,%xmm4,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016467 .byte 196,227,109,24,213,1 // vinsertf128 $0x1,%xmm5,%ymm2,%ymm2
Mike Klein097d0932017-04-20 09:11:53 -040016468 .byte 196,195,109,74,213,112 // vblendvps %ymm7,%ymm13,%ymm2,%ymm2
16469 .byte 196,193,57,109,227 // vpunpckhqdq %xmm11,%xmm8,%xmm4
16470 .byte 196,193,89,105,233 // vpunpckhwd %xmm9,%xmm4,%xmm5
Mike Kleind0ce1482017-04-19 17:19:30 -040016471 .byte 196,226,121,51,228 // vpmovzxwd %xmm4,%xmm4
16472 .byte 196,227,93,24,229,1 // vinsertf128 $0x1,%xmm5,%ymm4,%ymm4
Mike Klein097d0932017-04-20 09:11:53 -040016473 .byte 196,193,92,84,234 // vandps %ymm10,%ymm4,%ymm5
16474 .byte 197,220,87,229 // vxorps %ymm5,%ymm4,%ymm4
Mike Kleind0ce1482017-04-19 17:19:30 -040016475 .byte 196,227,125,25,230,1 // vextractf128 $0x1,%ymm4,%xmm6
Mike Klein097d0932017-04-20 09:11:53 -040016476 .byte 197,153,102,254 // vpcmpgtd %xmm6,%xmm12,%xmm7
16477 .byte 197,25,102,196 // vpcmpgtd %xmm4,%xmm12,%xmm8
16478 .byte 196,99,61,24,199,1 // vinsertf128 $0x1,%xmm7,%ymm8,%ymm8
16479 .byte 196,227,125,25,239,1 // vextractf128 $0x1,%ymm5,%xmm7
16480 .byte 197,193,114,247,16 // vpslld $0x10,%xmm7,%xmm7
16481 .byte 197,209,114,245,16 // vpslld $0x10,%xmm5,%xmm5
16482 .byte 197,209,254,235 // vpaddd %xmm3,%xmm5,%xmm5
16483 .byte 197,193,254,219 // vpaddd %xmm3,%xmm7,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040016484 .byte 197,201,114,246,13 // vpslld $0xd,%xmm6,%xmm6
16485 .byte 197,225,254,222 // vpaddd %xmm6,%xmm3,%xmm3
16486 .byte 197,217,114,244,13 // vpslld $0xd,%xmm4,%xmm4
Mike Klein097d0932017-04-20 09:11:53 -040016487 .byte 197,209,254,228 // vpaddd %xmm4,%xmm5,%xmm4
Mike Kleind0ce1482017-04-19 17:19:30 -040016488 .byte 196,227,93,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm4,%ymm3
Mike Klein097d0932017-04-20 09:11:53 -040016489 .byte 196,195,101,74,221,128 // vblendvps %ymm8,%ymm13,%ymm3,%ymm3
Mike Klein5f055f02017-04-06 20:02:11 -040016490 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleind0ce1482017-04-19 17:19:30 -040016491 .byte 197,252,16,100,36,128 // vmovups -0x80(%rsp),%ymm4
16492 .byte 197,252,16,108,36,160 // vmovups -0x60(%rsp),%ymm5
16493 .byte 197,252,16,116,36,192 // vmovups -0x40(%rsp),%ymm6
16494 .byte 197,252,16,124,36,224 // vmovups -0x20(%rsp),%ymm7
16495 .byte 72,131,196,24 // add $0x18,%rsp
Mike Klein5f055f02017-04-06 20:02:11 -040016496 .byte 91 // pop %rbx
16497 .byte 65,92 // pop %r12
16498 .byte 65,94 // pop %r14
16499 .byte 65,95 // pop %r15
16500 .byte 255,224 // jmpq *%rax
16501
Mike Klein7c4af542017-03-29 18:21:14 -040016502HIDDEN _sk_store_f16_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016503.globl _sk_store_f16_avx
Mike Klein86714282017-04-13 17:37:38 -040016504FUNCTION(_sk_store_f16_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016505_sk_store_f16_avx:
Mike Kleind0ce1482017-04-19 17:19:30 -040016506 .byte 72,131,236,88 // sub $0x58,%rsp
16507 .byte 197,252,17,124,36,32 // vmovups %ymm7,0x20(%rsp)
16508 .byte 197,252,17,52,36 // vmovups %ymm6,(%rsp)
16509 .byte 197,252,17,108,36,224 // vmovups %ymm5,-0x20(%rsp)
16510 .byte 197,252,17,100,36,192 // vmovups %ymm4,-0x40(%rsp)
Mike Klein097d0932017-04-20 09:11:53 -040016511 .byte 197,252,40,225 // vmovaps %ymm1,%ymm4
Mike Kleind7e06ae2017-03-29 16:33:06 -040016512 .byte 72,173 // lods %ds:(%rsi),%rax
16513 .byte 76,139,0 // mov (%rax),%r8
Mike Kleind0ce1482017-04-19 17:19:30 -040016514 .byte 184,0,0,0,128 // mov $0x80000000,%eax
Mike Kleind7e06ae2017-03-29 16:33:06 -040016515 .byte 197,121,110,192 // vmovd %eax,%xmm8
16516 .byte 196,65,121,112,192,0 // vpshufd $0x0,%xmm8,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040016517 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
16518 .byte 197,60,84,208 // vandps %ymm0,%ymm8,%ymm10
Mike Kleind0ce1482017-04-19 17:19:30 -040016519 .byte 196,65,124,87,218 // vxorps %ymm10,%ymm0,%ymm11
16520 .byte 184,0,0,128,56 // mov $0x38800000,%eax
Mike Klein097d0932017-04-20 09:11:53 -040016521 .byte 196,67,125,25,220,1 // vextractf128 $0x1,%ymm11,%xmm12
16522 .byte 197,121,110,200 // vmovd %eax,%xmm9
16523 .byte 196,65,121,112,201,0 // vpshufd $0x0,%xmm9,%xmm9
16524 .byte 196,65,49,102,236 // vpcmpgtd %xmm12,%xmm9,%xmm13
16525 .byte 196,65,49,102,243 // vpcmpgtd %xmm11,%xmm9,%xmm14
16526 .byte 196,67,13,24,237,1 // vinsertf128 $0x1,%xmm13,%ymm14,%ymm13
16527 .byte 196,67,125,25,214,1 // vextractf128 $0x1,%ymm10,%xmm14
16528 .byte 196,193,9,114,214,16 // vpsrld $0x10,%xmm14,%xmm14
16529 .byte 196,193,1,114,210,16 // vpsrld $0x10,%xmm10,%xmm15
16530 .byte 196,193,33,114,211,13 // vpsrld $0xd,%xmm11,%xmm11
16531 .byte 196,193,25,114,212,13 // vpsrld $0xd,%xmm12,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040016532 .byte 184,0,192,1,0 // mov $0x1c000,%eax
16533 .byte 197,121,110,208 // vmovd %eax,%xmm10
16534 .byte 196,65,121,112,210,0 // vpshufd $0x0,%xmm10,%xmm10
Mike Klein097d0932017-04-20 09:11:53 -040016535 .byte 196,65,1,250,250 // vpsubd %xmm10,%xmm15,%xmm15
Mike Kleind0ce1482017-04-19 17:19:30 -040016536 .byte 196,65,9,250,242 // vpsubd %xmm10,%xmm14,%xmm14
Mike Klein097d0932017-04-20 09:11:53 -040016537 .byte 196,65,9,254,228 // vpaddd %xmm12,%xmm14,%xmm12
16538 .byte 196,65,1,254,219 // vpaddd %xmm11,%xmm15,%xmm11
16539 .byte 196,67,37,24,228,1 // vinsertf128 $0x1,%xmm12,%ymm11,%ymm12
16540 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
16541 .byte 196,99,29,74,225,208 // vblendvps %ymm13,%ymm1,%ymm12,%ymm12
16542 .byte 197,60,84,236 // vandps %ymm4,%ymm8,%ymm13
16543 .byte 197,252,17,100,36,128 // vmovups %ymm4,-0x80(%rsp)
16544 .byte 196,65,92,87,245 // vxorps %ymm13,%ymm4,%ymm14
16545 .byte 196,67,125,25,247,1 // vextractf128 $0x1,%ymm14,%xmm15
16546 .byte 196,193,49,102,255 // vpcmpgtd %xmm15,%xmm9,%xmm7
16547 .byte 196,65,49,102,222 // vpcmpgtd %xmm14,%xmm9,%xmm11
16548 .byte 196,99,37,24,223,1 // vinsertf128 $0x1,%xmm7,%ymm11,%ymm11
16549 .byte 196,99,125,25,238,1 // vextractf128 $0x1,%ymm13,%xmm6
Mike Kleind0ce1482017-04-19 17:19:30 -040016550 .byte 197,201,114,214,16 // vpsrld $0x10,%xmm6,%xmm6
Mike Klein097d0932017-04-20 09:11:53 -040016551 .byte 196,193,65,114,215,13 // vpsrld $0xd,%xmm15,%xmm7
Mike Kleind0ce1482017-04-19 17:19:30 -040016552 .byte 196,193,73,250,242 // vpsubd %xmm10,%xmm6,%xmm6
Mike Klein097d0932017-04-20 09:11:53 -040016553 .byte 197,73,254,255 // vpaddd %xmm7,%xmm6,%xmm15
16554 .byte 196,193,65,114,213,16 // vpsrld $0x10,%xmm13,%xmm7
16555 .byte 196,193,73,114,214,13 // vpsrld $0xd,%xmm14,%xmm6
16556 .byte 196,193,65,250,250 // vpsubd %xmm10,%xmm7,%xmm7
16557 .byte 197,193,254,246 // vpaddd %xmm6,%xmm7,%xmm6
16558 .byte 196,195,77,24,247,1 // vinsertf128 $0x1,%xmm15,%ymm6,%ymm6
16559 .byte 196,99,77,74,233,176 // vblendvps %ymm11,%ymm1,%ymm6,%ymm13
16560 .byte 197,188,84,242 // vandps %ymm2,%ymm8,%ymm6
16561 .byte 197,252,17,84,36,160 // vmovups %ymm2,-0x60(%rsp)
16562 .byte 197,236,87,254 // vxorps %ymm6,%ymm2,%ymm7
16563 .byte 196,195,125,25,251,1 // vextractf128 $0x1,%ymm7,%xmm11
16564 .byte 196,65,49,102,243 // vpcmpgtd %xmm11,%xmm9,%xmm14
16565 .byte 197,49,102,255 // vpcmpgtd %xmm7,%xmm9,%xmm15
16566 .byte 196,67,5,24,246,1 // vinsertf128 $0x1,%xmm14,%ymm15,%ymm14
16567 .byte 196,227,125,25,245,1 // vextractf128 $0x1,%ymm6,%xmm5
16568 .byte 197,129,114,213,16 // vpsrld $0x10,%xmm5,%xmm15
16569 .byte 196,193,81,114,211,13 // vpsrld $0xd,%xmm11,%xmm5
16570 .byte 196,193,1,250,226 // vpsubd %xmm10,%xmm15,%xmm4
16571 .byte 197,217,254,229 // vpaddd %xmm5,%xmm4,%xmm4
16572 .byte 197,209,114,214,16 // vpsrld $0x10,%xmm6,%xmm5
Mike Kleind0ce1482017-04-19 17:19:30 -040016573 .byte 197,201,114,215,13 // vpsrld $0xd,%xmm7,%xmm6
Mike Klein097d0932017-04-20 09:11:53 -040016574 .byte 196,193,81,250,234 // vpsubd %xmm10,%xmm5,%xmm5
Mike Kleind0ce1482017-04-19 17:19:30 -040016575 .byte 197,209,254,238 // vpaddd %xmm6,%xmm5,%xmm5
16576 .byte 196,227,85,24,228,1 // vinsertf128 $0x1,%xmm4,%ymm5,%ymm4
Mike Klein097d0932017-04-20 09:11:53 -040016577 .byte 196,99,93,74,217,224 // vblendvps %ymm14,%ymm1,%ymm4,%ymm11
16578 .byte 197,188,84,235 // vandps %ymm3,%ymm8,%ymm5
16579 .byte 197,228,87,245 // vxorps %ymm5,%ymm3,%ymm6
16580 .byte 196,227,125,25,247,1 // vextractf128 $0x1,%ymm6,%xmm7
16581 .byte 197,177,102,231 // vpcmpgtd %xmm7,%xmm9,%xmm4
16582 .byte 197,49,102,198 // vpcmpgtd %xmm6,%xmm9,%xmm8
16583 .byte 196,227,61,24,228,1 // vinsertf128 $0x1,%xmm4,%ymm8,%ymm4
16584 .byte 196,227,125,25,234,1 // vextractf128 $0x1,%ymm5,%xmm2
16585 .byte 197,233,114,210,16 // vpsrld $0x10,%xmm2,%xmm2
16586 .byte 197,209,114,213,16 // vpsrld $0x10,%xmm5,%xmm5
16587 .byte 196,193,81,250,234 // vpsubd %xmm10,%xmm5,%xmm5
16588 .byte 196,193,105,250,210 // vpsubd %xmm10,%xmm2,%xmm2
16589 .byte 197,193,114,215,13 // vpsrld $0xd,%xmm7,%xmm7
16590 .byte 197,233,254,215 // vpaddd %xmm7,%xmm2,%xmm2
16591 .byte 197,201,114,214,13 // vpsrld $0xd,%xmm6,%xmm6
16592 .byte 197,209,254,238 // vpaddd %xmm6,%xmm5,%xmm5
16593 .byte 196,227,85,24,210,1 // vinsertf128 $0x1,%xmm2,%ymm5,%ymm2
16594 .byte 196,227,109,74,209,64 // vblendvps %ymm4,%ymm1,%ymm2,%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016595 .byte 196,99,125,25,225,1 // vextractf128 $0x1,%ymm12,%xmm1
16596 .byte 196,226,25,43,201 // vpackusdw %xmm1,%xmm12,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040016597 .byte 196,99,125,25,236,1 // vextractf128 $0x1,%ymm13,%xmm4
16598 .byte 196,226,17,43,228 // vpackusdw %xmm4,%xmm13,%xmm4
16599 .byte 196,99,125,25,221,1 // vextractf128 $0x1,%ymm11,%xmm5
16600 .byte 196,226,33,43,237 // vpackusdw %xmm5,%xmm11,%xmm5
16601 .byte 196,227,125,25,214,1 // vextractf128 $0x1,%ymm2,%xmm6
16602 .byte 196,226,105,43,214 // vpackusdw %xmm6,%xmm2,%xmm2
16603 .byte 197,241,97,244 // vpunpcklwd %xmm4,%xmm1,%xmm6
16604 .byte 197,241,105,204 // vpunpckhwd %xmm4,%xmm1,%xmm1
16605 .byte 197,209,97,226 // vpunpcklwd %xmm2,%xmm5,%xmm4
16606 .byte 197,209,105,210 // vpunpckhwd %xmm2,%xmm5,%xmm2
16607 .byte 197,73,98,220 // vpunpckldq %xmm4,%xmm6,%xmm11
16608 .byte 197,73,106,212 // vpunpckhdq %xmm4,%xmm6,%xmm10
16609 .byte 197,113,98,202 // vpunpckldq %xmm2,%xmm1,%xmm9
16610 .byte 197,113,106,194 // vpunpckhdq %xmm2,%xmm1,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040016611 .byte 72,133,201 // test %rcx,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016612 .byte 117,70 // jne 4a56 <_sk_store_f16_avx+0x25f>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016613 .byte 196,65,120,17,28,248 // vmovups %xmm11,(%r8,%rdi,8)
16614 .byte 196,65,120,17,84,248,16 // vmovups %xmm10,0x10(%r8,%rdi,8)
16615 .byte 196,65,120,17,76,248,32 // vmovups %xmm9,0x20(%r8,%rdi,8)
16616 .byte 196,65,122,127,68,248,48 // vmovdqu %xmm8,0x30(%r8,%rdi,8)
16617 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein097d0932017-04-20 09:11:53 -040016618 .byte 197,252,16,76,36,128 // vmovups -0x80(%rsp),%ymm1
16619 .byte 197,252,16,84,36,160 // vmovups -0x60(%rsp),%ymm2
Mike Kleind0ce1482017-04-19 17:19:30 -040016620 .byte 197,252,16,100,36,192 // vmovups -0x40(%rsp),%ymm4
16621 .byte 197,252,16,108,36,224 // vmovups -0x20(%rsp),%ymm5
16622 .byte 197,252,16,52,36 // vmovups (%rsp),%ymm6
16623 .byte 197,252,16,124,36,32 // vmovups 0x20(%rsp),%ymm7
16624 .byte 72,131,196,88 // add $0x58,%rsp
Mike Kleind7e06ae2017-03-29 16:33:06 -040016625 .byte 255,224 // jmpq *%rax
16626 .byte 196,65,121,214,28,248 // vmovq %xmm11,(%r8,%rdi,8)
16627 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016628 .byte 116,201 // je 4a2b <_sk_store_f16_avx+0x234>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016629 .byte 196,65,121,23,92,248,8 // vmovhpd %xmm11,0x8(%r8,%rdi,8)
16630 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016631 .byte 114,188 // jb 4a2b <_sk_store_f16_avx+0x234>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016632 .byte 196,65,121,214,84,248,16 // vmovq %xmm10,0x10(%r8,%rdi,8)
Mike Klein097d0932017-04-20 09:11:53 -040016633 .byte 116,179 // je 4a2b <_sk_store_f16_avx+0x234>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016634 .byte 196,65,121,23,84,248,24 // vmovhpd %xmm10,0x18(%r8,%rdi,8)
16635 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016636 .byte 114,166 // jb 4a2b <_sk_store_f16_avx+0x234>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016637 .byte 196,65,121,214,76,248,32 // vmovq %xmm9,0x20(%r8,%rdi,8)
Mike Klein097d0932017-04-20 09:11:53 -040016638 .byte 116,157 // je 4a2b <_sk_store_f16_avx+0x234>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016639 .byte 196,65,121,23,76,248,40 // vmovhpd %xmm9,0x28(%r8,%rdi,8)
16640 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016641 .byte 114,144 // jb 4a2b <_sk_store_f16_avx+0x234>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016642 .byte 196,65,121,214,68,248,48 // vmovq %xmm8,0x30(%r8,%rdi,8)
Mike Klein097d0932017-04-20 09:11:53 -040016643 .byte 235,135 // jmp 4a2b <_sk_store_f16_avx+0x234>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016644
Mike Klein3146bb92017-04-05 14:45:02 -040016645HIDDEN _sk_load_u16_be_avx
16646.globl _sk_load_u16_be_avx
Mike Klein86714282017-04-13 17:37:38 -040016647FUNCTION(_sk_load_u16_be_avx)
Mike Klein3146bb92017-04-05 14:45:02 -040016648_sk_load_u16_be_avx:
16649 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleinb3821732017-04-17 10:58:05 -040016650 .byte 76,139,0 // mov (%rax),%r8
16651 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
Mike Klein3146bb92017-04-05 14:45:02 -040016652 .byte 72,133,201 // test %rcx,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016653 .byte 15,133,5,1,0,0 // jne 4bbf <_sk_load_u16_be_avx+0x11b>
Mike Kleinb3821732017-04-17 10:58:05 -040016654 .byte 196,65,121,16,4,64 // vmovupd (%r8,%rax,2),%xmm8
16655 .byte 196,193,121,16,84,64,16 // vmovupd 0x10(%r8,%rax,2),%xmm2
16656 .byte 196,193,121,16,92,64,32 // vmovupd 0x20(%r8,%rax,2),%xmm3
16657 .byte 196,65,122,111,76,64,48 // vmovdqu 0x30(%r8,%rax,2),%xmm9
Mike Klein3146bb92017-04-05 14:45:02 -040016658 .byte 197,185,97,194 // vpunpcklwd %xmm2,%xmm8,%xmm0
16659 .byte 197,185,105,210 // vpunpckhwd %xmm2,%xmm8,%xmm2
16660 .byte 196,193,97,97,201 // vpunpcklwd %xmm9,%xmm3,%xmm1
16661 .byte 196,193,97,105,217 // vpunpckhwd %xmm9,%xmm3,%xmm3
16662 .byte 197,121,97,210 // vpunpcklwd %xmm2,%xmm0,%xmm10
16663 .byte 197,121,105,194 // vpunpckhwd %xmm2,%xmm0,%xmm8
16664 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
16665 .byte 197,113,105,203 // vpunpckhwd %xmm3,%xmm1,%xmm9
16666 .byte 184,128,0,128,55 // mov $0x37800080,%eax
16667 .byte 197,249,110,192 // vmovd %eax,%xmm0
16668 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
16669 .byte 196,99,125,24,224,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm12
16670 .byte 197,169,108,194 // vpunpcklqdq %xmm2,%xmm10,%xmm0
16671 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
16672 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
16673 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
16674 .byte 196,65,33,239,219 // vpxor %xmm11,%xmm11,%xmm11
16675 .byte 196,193,121,105,203 // vpunpckhwd %xmm11,%xmm0,%xmm1
16676 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
16677 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
16678 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
16679 .byte 197,156,89,192 // vmulps %ymm0,%ymm12,%ymm0
16680 .byte 197,169,109,202 // vpunpckhqdq %xmm2,%xmm10,%xmm1
16681 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
16682 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
16683 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
16684 .byte 196,193,113,105,211 // vpunpckhwd %xmm11,%xmm1,%xmm2
16685 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
16686 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
16687 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
16688 .byte 197,156,89,201 // vmulps %ymm1,%ymm12,%ymm1
16689 .byte 196,193,57,108,209 // vpunpcklqdq %xmm9,%xmm8,%xmm2
16690 .byte 197,169,113,242,8 // vpsllw $0x8,%xmm2,%xmm10
16691 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
16692 .byte 197,169,235,210 // vpor %xmm2,%xmm10,%xmm2
16693 .byte 196,65,105,105,211 // vpunpckhwd %xmm11,%xmm2,%xmm10
16694 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
16695 .byte 196,195,109,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm2,%ymm2
16696 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
16697 .byte 197,156,89,210 // vmulps %ymm2,%ymm12,%ymm2
16698 .byte 196,193,57,109,217 // vpunpckhqdq %xmm9,%xmm8,%xmm3
16699 .byte 197,185,113,243,8 // vpsllw $0x8,%xmm3,%xmm8
16700 .byte 197,225,113,211,8 // vpsrlw $0x8,%xmm3,%xmm3
16701 .byte 197,185,235,219 // vpor %xmm3,%xmm8,%xmm3
16702 .byte 196,65,97,105,195 // vpunpckhwd %xmm11,%xmm3,%xmm8
16703 .byte 196,226,121,51,219 // vpmovzxwd %xmm3,%xmm3
16704 .byte 196,195,101,24,216,1 // vinsertf128 $0x1,%xmm8,%ymm3,%ymm3
16705 .byte 197,252,91,219 // vcvtdq2ps %ymm3,%ymm3
16706 .byte 197,156,89,219 // vmulps %ymm3,%ymm12,%ymm3
16707 .byte 72,173 // lods %ds:(%rsi),%rax
16708 .byte 255,224 // jmpq *%rax
Mike Kleinb3821732017-04-17 10:58:05 -040016709 .byte 196,65,123,16,4,64 // vmovsd (%r8,%rax,2),%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040016710 .byte 196,65,49,239,201 // vpxor %xmm9,%xmm9,%xmm9
16711 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016712 .byte 116,85 // je 4c25 <_sk_load_u16_be_avx+0x181>
Mike Kleinb3821732017-04-17 10:58:05 -040016713 .byte 196,65,57,22,68,64,8 // vmovhpd 0x8(%r8,%rax,2),%xmm8,%xmm8
Mike Klein3146bb92017-04-05 14:45:02 -040016714 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016715 .byte 114,72 // jb 4c25 <_sk_load_u16_be_avx+0x181>
Mike Kleinb3821732017-04-17 10:58:05 -040016716 .byte 196,193,123,16,84,64,16 // vmovsd 0x10(%r8,%rax,2),%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040016717 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016718 .byte 116,72 // je 4c32 <_sk_load_u16_be_avx+0x18e>
Mike Kleinb3821732017-04-17 10:58:05 -040016719 .byte 196,193,105,22,84,64,24 // vmovhpd 0x18(%r8,%rax,2),%xmm2,%xmm2
Mike Klein3146bb92017-04-05 14:45:02 -040016720 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016721 .byte 114,59 // jb 4c32 <_sk_load_u16_be_avx+0x18e>
Mike Kleinb3821732017-04-17 10:58:05 -040016722 .byte 196,193,123,16,92,64,32 // vmovsd 0x20(%r8,%rax,2),%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040016723 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016724 .byte 15,132,205,254,255,255 // je 4ad5 <_sk_load_u16_be_avx+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040016725 .byte 196,193,97,22,92,64,40 // vmovhpd 0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Klein3146bb92017-04-05 14:45:02 -040016726 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016727 .byte 15,130,188,254,255,255 // jb 4ad5 <_sk_load_u16_be_avx+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040016728 .byte 196,65,122,126,76,64,48 // vmovq 0x30(%r8,%rax,2),%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040016729 .byte 233,176,254,255,255 // jmpq 4ad5 <_sk_load_u16_be_avx+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040016730 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
16731 .byte 197,233,87,210 // vxorpd %xmm2,%xmm2,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040016732 .byte 233,163,254,255,255 // jmpq 4ad5 <_sk_load_u16_be_avx+0x31>
Mike Klein3146bb92017-04-05 14:45:02 -040016733 .byte 197,225,87,219 // vxorpd %xmm3,%xmm3,%xmm3
Mike Klein097d0932017-04-20 09:11:53 -040016734 .byte 233,154,254,255,255 // jmpq 4ad5 <_sk_load_u16_be_avx+0x31>
Mike Kleinb3821732017-04-17 10:58:05 -040016735
16736HIDDEN _sk_load_rgb_u16_be_avx
16737.globl _sk_load_rgb_u16_be_avx
16738FUNCTION(_sk_load_rgb_u16_be_avx)
16739_sk_load_rgb_u16_be_avx:
16740 .byte 72,173 // lods %ds:(%rsi),%rax
16741 .byte 76,139,0 // mov (%rax),%r8
16742 .byte 72,141,4,127 // lea (%rdi,%rdi,2),%rax
16743 .byte 72,133,201 // test %rcx,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016744 .byte 15,133,8,1,0,0 // jne 4d55 <_sk_load_rgb_u16_be_avx+0x11a>
Mike Kleinb3821732017-04-17 10:58:05 -040016745 .byte 196,193,122,111,4,64 // vmovdqu (%r8,%rax,2),%xmm0
16746 .byte 196,193,122,111,84,64,12 // vmovdqu 0xc(%r8,%rax,2),%xmm2
16747 .byte 196,193,122,111,76,64,24 // vmovdqu 0x18(%r8,%rax,2),%xmm1
16748 .byte 196,193,122,111,92,64,32 // vmovdqu 0x20(%r8,%rax,2),%xmm3
16749 .byte 197,225,115,219,4 // vpsrldq $0x4,%xmm3,%xmm3
16750 .byte 197,185,115,216,6 // vpsrldq $0x6,%xmm0,%xmm8
16751 .byte 197,177,115,218,6 // vpsrldq $0x6,%xmm2,%xmm9
16752 .byte 197,161,115,217,6 // vpsrldq $0x6,%xmm1,%xmm11
16753 .byte 197,169,115,219,6 // vpsrldq $0x6,%xmm3,%xmm10
16754 .byte 197,249,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm0
16755 .byte 196,193,57,97,209 // vpunpcklwd %xmm9,%xmm8,%xmm2
16756 .byte 197,241,97,203 // vpunpcklwd %xmm3,%xmm1,%xmm1
16757 .byte 196,193,33,97,218 // vpunpcklwd %xmm10,%xmm11,%xmm3
16758 .byte 197,121,97,194 // vpunpcklwd %xmm2,%xmm0,%xmm8
16759 .byte 197,121,105,202 // vpunpckhwd %xmm2,%xmm0,%xmm9
16760 .byte 197,241,97,211 // vpunpcklwd %xmm3,%xmm1,%xmm2
16761 .byte 197,113,105,219 // vpunpckhwd %xmm3,%xmm1,%xmm11
16762 .byte 184,128,0,128,55 // mov $0x37800080,%eax
16763 .byte 197,249,110,192 // vmovd %eax,%xmm0
16764 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
16765 .byte 196,99,125,24,208,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm10
16766 .byte 197,185,108,194 // vpunpcklqdq %xmm2,%xmm8,%xmm0
16767 .byte 197,241,113,240,8 // vpsllw $0x8,%xmm0,%xmm1
16768 .byte 197,249,113,208,8 // vpsrlw $0x8,%xmm0,%xmm0
16769 .byte 197,241,235,192 // vpor %xmm0,%xmm1,%xmm0
16770 .byte 196,65,25,239,228 // vpxor %xmm12,%xmm12,%xmm12
16771 .byte 196,193,121,105,204 // vpunpckhwd %xmm12,%xmm0,%xmm1
16772 .byte 196,226,121,51,192 // vpmovzxwd %xmm0,%xmm0
16773 .byte 196,227,125,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm0,%ymm0
16774 .byte 197,252,91,192 // vcvtdq2ps %ymm0,%ymm0
16775 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
16776 .byte 197,185,109,202 // vpunpckhqdq %xmm2,%xmm8,%xmm1
16777 .byte 197,233,113,241,8 // vpsllw $0x8,%xmm1,%xmm2
16778 .byte 197,241,113,209,8 // vpsrlw $0x8,%xmm1,%xmm1
16779 .byte 197,233,235,201 // vpor %xmm1,%xmm2,%xmm1
16780 .byte 196,193,113,105,212 // vpunpckhwd %xmm12,%xmm1,%xmm2
16781 .byte 196,226,121,51,201 // vpmovzxwd %xmm1,%xmm1
16782 .byte 196,227,117,24,202,1 // vinsertf128 $0x1,%xmm2,%ymm1,%ymm1
16783 .byte 197,252,91,201 // vcvtdq2ps %ymm1,%ymm1
16784 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
16785 .byte 196,193,49,108,211 // vpunpcklqdq %xmm11,%xmm9,%xmm2
16786 .byte 197,225,113,242,8 // vpsllw $0x8,%xmm2,%xmm3
16787 .byte 197,233,113,210,8 // vpsrlw $0x8,%xmm2,%xmm2
16788 .byte 197,225,235,210 // vpor %xmm2,%xmm3,%xmm2
16789 .byte 196,193,105,105,220 // vpunpckhwd %xmm12,%xmm2,%xmm3
16790 .byte 196,226,121,51,210 // vpmovzxwd %xmm2,%xmm2
16791 .byte 196,227,109,24,211,1 // vinsertf128 $0x1,%xmm3,%ymm2,%ymm2
16792 .byte 197,252,91,210 // vcvtdq2ps %ymm2,%ymm2
16793 .byte 197,172,89,210 // vmulps %ymm2,%ymm10,%ymm2
16794 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
16795 .byte 197,249,110,216 // vmovd %eax,%xmm3
16796 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
16797 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
16798 .byte 72,173 // lods %ds:(%rsi),%rax
16799 .byte 255,224 // jmpq *%rax
16800 .byte 196,193,121,110,4,64 // vmovd (%r8,%rax,2),%xmm0
16801 .byte 196,193,121,196,68,64,4,2 // vpinsrw $0x2,0x4(%r8,%rax,2),%xmm0,%xmm0
16802 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016803 .byte 117,5 // jne 4d6e <_sk_load_rgb_u16_be_avx+0x133>
16804 .byte 233,19,255,255,255 // jmpq 4c81 <_sk_load_rgb_u16_be_avx+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040016805 .byte 196,193,121,110,76,64,6 // vmovd 0x6(%r8,%rax,2),%xmm1
16806 .byte 196,65,113,196,68,64,10,2 // vpinsrw $0x2,0xa(%r8,%rax,2),%xmm1,%xmm8
16807 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016808 .byte 114,26 // jb 4d9d <_sk_load_rgb_u16_be_avx+0x162>
Mike Kleinb3821732017-04-17 10:58:05 -040016809 .byte 196,193,121,110,76,64,12 // vmovd 0xc(%r8,%rax,2),%xmm1
16810 .byte 196,193,113,196,84,64,16,2 // vpinsrw $0x2,0x10(%r8,%rax,2),%xmm1,%xmm2
16811 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016812 .byte 117,10 // jne 4da2 <_sk_load_rgb_u16_be_avx+0x167>
16813 .byte 233,228,254,255,255 // jmpq 4c81 <_sk_load_rgb_u16_be_avx+0x46>
16814 .byte 233,223,254,255,255 // jmpq 4c81 <_sk_load_rgb_u16_be_avx+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040016815 .byte 196,193,121,110,76,64,18 // vmovd 0x12(%r8,%rax,2),%xmm1
16816 .byte 196,65,113,196,76,64,22,2 // vpinsrw $0x2,0x16(%r8,%rax,2),%xmm1,%xmm9
16817 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016818 .byte 114,26 // jb 4dd1 <_sk_load_rgb_u16_be_avx+0x196>
Mike Kleinb3821732017-04-17 10:58:05 -040016819 .byte 196,193,121,110,76,64,24 // vmovd 0x18(%r8,%rax,2),%xmm1
16820 .byte 196,193,113,196,76,64,28,2 // vpinsrw $0x2,0x1c(%r8,%rax,2),%xmm1,%xmm1
16821 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016822 .byte 117,10 // jne 4dd6 <_sk_load_rgb_u16_be_avx+0x19b>
16823 .byte 233,176,254,255,255 // jmpq 4c81 <_sk_load_rgb_u16_be_avx+0x46>
16824 .byte 233,171,254,255,255 // jmpq 4c81 <_sk_load_rgb_u16_be_avx+0x46>
Mike Kleinb3821732017-04-17 10:58:05 -040016825 .byte 196,193,121,110,92,64,30 // vmovd 0x1e(%r8,%rax,2),%xmm3
16826 .byte 196,65,97,196,92,64,34,2 // vpinsrw $0x2,0x22(%r8,%rax,2),%xmm3,%xmm11
16827 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016828 .byte 114,20 // jb 4dff <_sk_load_rgb_u16_be_avx+0x1c4>
Mike Kleinb3821732017-04-17 10:58:05 -040016829 .byte 196,193,121,110,92,64,36 // vmovd 0x24(%r8,%rax,2),%xmm3
16830 .byte 196,193,97,196,92,64,40,2 // vpinsrw $0x2,0x28(%r8,%rax,2),%xmm3,%xmm3
Mike Klein097d0932017-04-20 09:11:53 -040016831 .byte 233,130,254,255,255 // jmpq 4c81 <_sk_load_rgb_u16_be_avx+0x46>
16832 .byte 233,125,254,255,255 // jmpq 4c81 <_sk_load_rgb_u16_be_avx+0x46>
Mike Klein3146bb92017-04-05 14:45:02 -040016833
16834HIDDEN _sk_store_u16_be_avx
16835.globl _sk_store_u16_be_avx
Mike Klein86714282017-04-13 17:37:38 -040016836FUNCTION(_sk_store_u16_be_avx)
Mike Klein3146bb92017-04-05 14:45:02 -040016837_sk_store_u16_be_avx:
16838 .byte 72,173 // lods %ds:(%rsi),%rax
16839 .byte 76,139,0 // mov (%rax),%r8
Mike Kleinb3821732017-04-17 10:58:05 -040016840 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
Mike Klein3146bb92017-04-05 14:45:02 -040016841 .byte 184,0,255,127,71 // mov $0x477fff00,%eax
16842 .byte 197,121,110,192 // vmovd %eax,%xmm8
16843 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
16844 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
16845 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
16846 .byte 196,65,125,91,201 // vcvtps2dq %ymm9,%ymm9
16847 .byte 196,67,125,25,202,1 // vextractf128 $0x1,%ymm9,%xmm10
16848 .byte 196,66,49,43,202 // vpackusdw %xmm10,%xmm9,%xmm9
16849 .byte 196,193,41,113,241,8 // vpsllw $0x8,%xmm9,%xmm10
16850 .byte 196,193,49,113,209,8 // vpsrlw $0x8,%xmm9,%xmm9
16851 .byte 196,65,41,235,201 // vpor %xmm9,%xmm10,%xmm9
16852 .byte 197,60,89,209 // vmulps %ymm1,%ymm8,%ymm10
16853 .byte 196,65,125,91,210 // vcvtps2dq %ymm10,%ymm10
16854 .byte 196,67,125,25,211,1 // vextractf128 $0x1,%ymm10,%xmm11
16855 .byte 196,66,41,43,211 // vpackusdw %xmm11,%xmm10,%xmm10
16856 .byte 196,193,33,113,242,8 // vpsllw $0x8,%xmm10,%xmm11
16857 .byte 196,193,41,113,210,8 // vpsrlw $0x8,%xmm10,%xmm10
16858 .byte 196,65,33,235,210 // vpor %xmm10,%xmm11,%xmm10
16859 .byte 197,60,89,218 // vmulps %ymm2,%ymm8,%ymm11
16860 .byte 196,65,125,91,219 // vcvtps2dq %ymm11,%ymm11
16861 .byte 196,67,125,25,220,1 // vextractf128 $0x1,%ymm11,%xmm12
16862 .byte 196,66,33,43,220 // vpackusdw %xmm12,%xmm11,%xmm11
16863 .byte 196,193,25,113,243,8 // vpsllw $0x8,%xmm11,%xmm12
16864 .byte 196,193,33,113,211,8 // vpsrlw $0x8,%xmm11,%xmm11
16865 .byte 196,65,25,235,219 // vpor %xmm11,%xmm12,%xmm11
16866 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
16867 .byte 196,65,125,91,192 // vcvtps2dq %ymm8,%ymm8
16868 .byte 196,67,125,25,196,1 // vextractf128 $0x1,%ymm8,%xmm12
16869 .byte 196,66,57,43,196 // vpackusdw %xmm12,%xmm8,%xmm8
16870 .byte 196,193,25,113,240,8 // vpsllw $0x8,%xmm8,%xmm12
16871 .byte 196,193,57,113,208,8 // vpsrlw $0x8,%xmm8,%xmm8
16872 .byte 196,65,25,235,192 // vpor %xmm8,%xmm12,%xmm8
16873 .byte 196,65,49,97,226 // vpunpcklwd %xmm10,%xmm9,%xmm12
16874 .byte 196,65,49,105,234 // vpunpckhwd %xmm10,%xmm9,%xmm13
16875 .byte 196,65,33,97,200 // vpunpcklwd %xmm8,%xmm11,%xmm9
16876 .byte 196,65,33,105,192 // vpunpckhwd %xmm8,%xmm11,%xmm8
16877 .byte 196,65,25,98,217 // vpunpckldq %xmm9,%xmm12,%xmm11
16878 .byte 196,65,25,106,209 // vpunpckhdq %xmm9,%xmm12,%xmm10
16879 .byte 196,65,17,98,200 // vpunpckldq %xmm8,%xmm13,%xmm9
16880 .byte 196,65,17,106,192 // vpunpckhdq %xmm8,%xmm13,%xmm8
16881 .byte 72,133,201 // test %rcx,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016882 .byte 117,31 // jne 4f06 <_sk_store_u16_be_avx+0x102>
Mike Kleinb3821732017-04-17 10:58:05 -040016883 .byte 196,1,120,17,28,72 // vmovups %xmm11,(%r8,%r9,2)
16884 .byte 196,1,120,17,84,72,16 // vmovups %xmm10,0x10(%r8,%r9,2)
16885 .byte 196,1,120,17,76,72,32 // vmovups %xmm9,0x20(%r8,%r9,2)
16886 .byte 196,1,122,127,68,72,48 // vmovdqu %xmm8,0x30(%r8,%r9,2)
Mike Klein3146bb92017-04-05 14:45:02 -040016887 .byte 72,173 // lods %ds:(%rsi),%rax
16888 .byte 255,224 // jmpq *%rax
Mike Kleinb3821732017-04-17 10:58:05 -040016889 .byte 196,1,121,214,28,72 // vmovq %xmm11,(%r8,%r9,2)
Mike Klein3146bb92017-04-05 14:45:02 -040016890 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016891 .byte 116,240 // je 4f02 <_sk_store_u16_be_avx+0xfe>
Mike Kleinb3821732017-04-17 10:58:05 -040016892 .byte 196,1,121,23,92,72,8 // vmovhpd %xmm11,0x8(%r8,%r9,2)
Mike Klein3146bb92017-04-05 14:45:02 -040016893 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016894 .byte 114,227 // jb 4f02 <_sk_store_u16_be_avx+0xfe>
Mike Kleinb3821732017-04-17 10:58:05 -040016895 .byte 196,1,121,214,84,72,16 // vmovq %xmm10,0x10(%r8,%r9,2)
Mike Klein097d0932017-04-20 09:11:53 -040016896 .byte 116,218 // je 4f02 <_sk_store_u16_be_avx+0xfe>
Mike Kleinb3821732017-04-17 10:58:05 -040016897 .byte 196,1,121,23,84,72,24 // vmovhpd %xmm10,0x18(%r8,%r9,2)
Mike Klein3146bb92017-04-05 14:45:02 -040016898 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016899 .byte 114,205 // jb 4f02 <_sk_store_u16_be_avx+0xfe>
Mike Kleinb3821732017-04-17 10:58:05 -040016900 .byte 196,1,121,214,76,72,32 // vmovq %xmm9,0x20(%r8,%r9,2)
Mike Klein097d0932017-04-20 09:11:53 -040016901 .byte 116,196 // je 4f02 <_sk_store_u16_be_avx+0xfe>
Mike Kleinb3821732017-04-17 10:58:05 -040016902 .byte 196,1,121,23,76,72,40 // vmovhpd %xmm9,0x28(%r8,%r9,2)
Mike Klein3146bb92017-04-05 14:45:02 -040016903 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016904 .byte 114,183 // jb 4f02 <_sk_store_u16_be_avx+0xfe>
Mike Kleinb3821732017-04-17 10:58:05 -040016905 .byte 196,1,121,214,68,72,48 // vmovq %xmm8,0x30(%r8,%r9,2)
Mike Klein097d0932017-04-20 09:11:53 -040016906 .byte 235,174 // jmp 4f02 <_sk_store_u16_be_avx+0xfe>
Mike Klein3146bb92017-04-05 14:45:02 -040016907
Mike Klein14987eb2017-04-06 10:22:26 -040016908HIDDEN _sk_load_f32_avx
16909.globl _sk_load_f32_avx
Mike Klein86714282017-04-13 17:37:38 -040016910FUNCTION(_sk_load_f32_avx)
Mike Klein14987eb2017-04-06 10:22:26 -040016911_sk_load_f32_avx:
16912 .byte 72,173 // lods %ds:(%rsi),%rax
16913 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016914 .byte 119,110 // ja 4fca <_sk_load_f32_avx+0x76>
Mike Klein14987eb2017-04-06 10:22:26 -040016915 .byte 76,139,0 // mov (%rax),%r8
16916 .byte 76,141,12,189,0,0,0,0 // lea 0x0(,%rdi,4),%r9
Mike Klein097d0932017-04-20 09:11:53 -040016917 .byte 76,141,21,134,0,0,0 // lea 0x86(%rip),%r10 # 4ff4 <_sk_load_f32_avx+0xa0>
Mike Klein14987eb2017-04-06 10:22:26 -040016918 .byte 73,99,4,138 // movslq (%r10,%rcx,4),%rax
16919 .byte 76,1,208 // add %r10,%rax
16920 .byte 255,224 // jmpq *%rax
16921 .byte 196,3,125,24,68,136,112,1 // vinsertf128 $0x1,0x70(%r8,%r9,4),%ymm0,%ymm8
16922 .byte 196,131,125,24,92,136,96,1 // vinsertf128 $0x1,0x60(%r8,%r9,4),%ymm0,%ymm3
16923 .byte 196,131,125,24,76,136,80,1 // vinsertf128 $0x1,0x50(%r8,%r9,4),%ymm0,%ymm1
16924 .byte 196,131,125,24,84,136,64,1 // vinsertf128 $0x1,0x40(%r8,%r9,4),%ymm0,%ymm2
16925 .byte 196,129,121,16,68,136,48 // vmovupd 0x30(%r8,%r9,4),%xmm0
16926 .byte 196,195,125,13,192,12 // vblendpd $0xc,%ymm8,%ymm0,%ymm0
16927 .byte 196,1,121,16,68,136,32 // vmovupd 0x20(%r8,%r9,4),%xmm8
16928 .byte 196,99,61,13,203,12 // vblendpd $0xc,%ymm3,%ymm8,%ymm9
16929 .byte 196,129,121,16,92,136,16 // vmovupd 0x10(%r8,%r9,4),%xmm3
16930 .byte 196,99,101,13,209,12 // vblendpd $0xc,%ymm1,%ymm3,%ymm10
16931 .byte 196,129,121,16,12,136 // vmovupd (%r8,%r9,4),%xmm1
16932 .byte 196,227,117,13,202,12 // vblendpd $0xc,%ymm2,%ymm1,%ymm1
16933 .byte 196,193,116,20,210 // vunpcklps %ymm10,%ymm1,%ymm2
16934 .byte 196,193,116,21,218 // vunpckhps %ymm10,%ymm1,%ymm3
16935 .byte 197,180,20,200 // vunpcklps %ymm0,%ymm9,%ymm1
16936 .byte 197,52,21,192 // vunpckhps %ymm0,%ymm9,%ymm8
16937 .byte 197,237,20,193 // vunpcklpd %ymm1,%ymm2,%ymm0
16938 .byte 197,237,21,201 // vunpckhpd %ymm1,%ymm2,%ymm1
16939 .byte 196,193,101,20,208 // vunpcklpd %ymm8,%ymm3,%ymm2
16940 .byte 196,193,101,21,216 // vunpckhpd %ymm8,%ymm3,%ymm3
16941 .byte 72,173 // lods %ds:(%rsi),%rax
16942 .byte 255,224 // jmpq *%rax
Mike Klein097d0932017-04-20 09:11:53 -040016943 .byte 102,144 // xchg %ax,%ax
16944 .byte 131,255,255 // cmp $0xffffffff,%edi
16945 .byte 255,202 // dec %edx
Mike Klein14987eb2017-04-06 10:22:26 -040016946 .byte 255 // (bad)
16947 .byte 255 // (bad)
16948 .byte 255 // (bad)
Mike Klein097d0932017-04-20 09:11:53 -040016949 .byte 189,255,255,255,176 // mov $0xb0ffffff,%ebp
Mike Klein14987eb2017-04-06 10:22:26 -040016950 .byte 255 // (bad)
16951 .byte 255 // (bad)
Mike Klein097d0932017-04-20 09:11:53 -040016952 .byte 255,163,255,255,255,155 // jmpq *-0x64000001(%rbx)
Mike Klein14987eb2017-04-06 10:22:26 -040016953 .byte 255 // (bad)
16954 .byte 255 // (bad)
Mike Klein097d0932017-04-20 09:11:53 -040016955 .byte 255,147,255,255,255,139 // callq *-0x74000001(%rbx)
Mike Klein14987eb2017-04-06 10:22:26 -040016956 .byte 255 // (bad)
16957 .byte 255 // (bad)
16958 .byte 255 // .byte 0xff
16959
Mike Klein7c4af542017-03-29 18:21:14 -040016960HIDDEN _sk_store_f32_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040016961.globl _sk_store_f32_avx
Mike Klein86714282017-04-13 17:37:38 -040016962FUNCTION(_sk_store_f32_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040016963_sk_store_f32_avx:
16964 .byte 72,173 // lods %ds:(%rsi),%rax
16965 .byte 76,139,0 // mov (%rax),%r8
16966 .byte 72,141,4,189,0,0,0,0 // lea 0x0(,%rdi,4),%rax
16967 .byte 197,124,20,193 // vunpcklps %ymm1,%ymm0,%ymm8
16968 .byte 197,124,21,217 // vunpckhps %ymm1,%ymm0,%ymm11
16969 .byte 197,108,20,203 // vunpcklps %ymm3,%ymm2,%ymm9
16970 .byte 197,108,21,227 // vunpckhps %ymm3,%ymm2,%ymm12
16971 .byte 196,65,61,20,209 // vunpcklpd %ymm9,%ymm8,%ymm10
16972 .byte 196,65,61,21,201 // vunpckhpd %ymm9,%ymm8,%ymm9
16973 .byte 196,65,37,20,196 // vunpcklpd %ymm12,%ymm11,%ymm8
16974 .byte 196,65,37,21,220 // vunpckhpd %ymm12,%ymm11,%ymm11
16975 .byte 72,133,201 // test %rcx,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016976 .byte 117,55 // jne 5081 <_sk_store_f32_avx+0x6d>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016977 .byte 196,67,45,24,225,1 // vinsertf128 $0x1,%xmm9,%ymm10,%ymm12
16978 .byte 196,67,61,24,235,1 // vinsertf128 $0x1,%xmm11,%ymm8,%ymm13
16979 .byte 196,67,45,6,201,49 // vperm2f128 $0x31,%ymm9,%ymm10,%ymm9
16980 .byte 196,67,61,6,195,49 // vperm2f128 $0x31,%ymm11,%ymm8,%ymm8
16981 .byte 196,65,125,17,36,128 // vmovupd %ymm12,(%r8,%rax,4)
16982 .byte 196,65,125,17,108,128,32 // vmovupd %ymm13,0x20(%r8,%rax,4)
16983 .byte 196,65,125,17,76,128,64 // vmovupd %ymm9,0x40(%r8,%rax,4)
16984 .byte 196,65,125,17,68,128,96 // vmovupd %ymm8,0x60(%r8,%rax,4)
16985 .byte 72,173 // lods %ds:(%rsi),%rax
16986 .byte 255,224 // jmpq *%rax
16987 .byte 196,65,121,17,20,128 // vmovupd %xmm10,(%r8,%rax,4)
16988 .byte 72,131,249,1 // cmp $0x1,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016989 .byte 116,240 // je 507d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016990 .byte 196,65,121,17,76,128,16 // vmovupd %xmm9,0x10(%r8,%rax,4)
16991 .byte 72,131,249,3 // cmp $0x3,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016992 .byte 114,227 // jb 507d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016993 .byte 196,65,121,17,68,128,32 // vmovupd %xmm8,0x20(%r8,%rax,4)
Mike Klein097d0932017-04-20 09:11:53 -040016994 .byte 116,218 // je 507d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016995 .byte 196,65,121,17,92,128,48 // vmovupd %xmm11,0x30(%r8,%rax,4)
16996 .byte 72,131,249,5 // cmp $0x5,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040016997 .byte 114,205 // jb 507d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040016998 .byte 196,67,125,25,84,128,64,1 // vextractf128 $0x1,%ymm10,0x40(%r8,%rax,4)
Mike Klein097d0932017-04-20 09:11:53 -040016999 .byte 116,195 // je 507d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017000 .byte 196,67,125,25,76,128,80,1 // vextractf128 $0x1,%ymm9,0x50(%r8,%rax,4)
17001 .byte 72,131,249,7 // cmp $0x7,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040017002 .byte 114,181 // jb 507d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017003 .byte 196,67,125,25,68,128,96,1 // vextractf128 $0x1,%ymm8,0x60(%r8,%rax,4)
Mike Klein097d0932017-04-20 09:11:53 -040017004 .byte 235,171 // jmp 507d <_sk_store_f32_avx+0x69>
Mike Kleind7e06ae2017-03-29 16:33:06 -040017005
Mike Klein7c4af542017-03-29 18:21:14 -040017006HIDDEN _sk_clamp_x_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017007.globl _sk_clamp_x_avx
Mike Klein86714282017-04-13 17:37:38 -040017008FUNCTION(_sk_clamp_x_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017009_sk_clamp_x_avx:
17010 .byte 72,173 // lods %ds:(%rsi),%rax
17011 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
17012 .byte 197,60,95,200 // vmaxps %ymm0,%ymm8,%ymm9
17013 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
17014 .byte 196,99,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm0
17015 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
17016 .byte 196,193,121,254,194 // vpaddd %xmm10,%xmm0,%xmm0
17017 .byte 196,65,57,254,194 // vpaddd %xmm10,%xmm8,%xmm8
17018 .byte 196,227,61,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm8,%ymm0
17019 .byte 197,180,93,192 // vminps %ymm0,%ymm9,%ymm0
17020 .byte 72,173 // lods %ds:(%rsi),%rax
17021 .byte 255,224 // jmpq *%rax
17022
Mike Klein7c4af542017-03-29 18:21:14 -040017023HIDDEN _sk_clamp_y_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017024.globl _sk_clamp_y_avx
Mike Klein86714282017-04-13 17:37:38 -040017025FUNCTION(_sk_clamp_y_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017026_sk_clamp_y_avx:
17027 .byte 72,173 // lods %ds:(%rsi),%rax
17028 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
17029 .byte 197,60,95,201 // vmaxps %ymm1,%ymm8,%ymm9
17030 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
17031 .byte 196,99,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm1
17032 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
17033 .byte 196,193,113,254,202 // vpaddd %xmm10,%xmm1,%xmm1
17034 .byte 196,65,57,254,194 // vpaddd %xmm10,%xmm8,%xmm8
17035 .byte 196,227,61,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm8,%ymm1
17036 .byte 197,180,93,201 // vminps %ymm1,%ymm9,%ymm1
17037 .byte 72,173 // lods %ds:(%rsi),%rax
17038 .byte 255,224 // jmpq *%rax
17039
Mike Klein7c4af542017-03-29 18:21:14 -040017040HIDDEN _sk_repeat_x_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017041.globl _sk_repeat_x_avx
Mike Klein86714282017-04-13 17:37:38 -040017042FUNCTION(_sk_repeat_x_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017043_sk_repeat_x_avx:
17044 .byte 72,173 // lods %ds:(%rsi),%rax
17045 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
17046 .byte 196,65,124,94,200 // vdivps %ymm8,%ymm0,%ymm9
17047 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
17048 .byte 196,65,52,89,200 // vmulps %ymm8,%ymm9,%ymm9
17049 .byte 196,65,124,92,201 // vsubps %ymm9,%ymm0,%ymm9
17050 .byte 196,99,125,25,192,1 // vextractf128 $0x1,%ymm8,%xmm0
17051 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
17052 .byte 196,193,121,254,194 // vpaddd %xmm10,%xmm0,%xmm0
17053 .byte 196,65,57,254,194 // vpaddd %xmm10,%xmm8,%xmm8
17054 .byte 196,227,61,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm8,%ymm0
17055 .byte 197,180,93,192 // vminps %ymm0,%ymm9,%ymm0
17056 .byte 72,173 // lods %ds:(%rsi),%rax
17057 .byte 255,224 // jmpq *%rax
17058
Mike Klein7c4af542017-03-29 18:21:14 -040017059HIDDEN _sk_repeat_y_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017060.globl _sk_repeat_y_avx
Mike Klein86714282017-04-13 17:37:38 -040017061FUNCTION(_sk_repeat_y_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017062_sk_repeat_y_avx:
17063 .byte 72,173 // lods %ds:(%rsi),%rax
17064 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
17065 .byte 196,65,116,94,200 // vdivps %ymm8,%ymm1,%ymm9
17066 .byte 196,67,125,8,201,1 // vroundps $0x1,%ymm9,%ymm9
17067 .byte 196,65,52,89,200 // vmulps %ymm8,%ymm9,%ymm9
17068 .byte 196,65,116,92,201 // vsubps %ymm9,%ymm1,%ymm9
17069 .byte 196,99,125,25,193,1 // vextractf128 $0x1,%ymm8,%xmm1
17070 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
17071 .byte 196,193,113,254,202 // vpaddd %xmm10,%xmm1,%xmm1
17072 .byte 196,65,57,254,194 // vpaddd %xmm10,%xmm8,%xmm8
17073 .byte 196,227,61,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm8,%ymm1
17074 .byte 197,180,93,201 // vminps %ymm1,%ymm9,%ymm1
17075 .byte 72,173 // lods %ds:(%rsi),%rax
17076 .byte 255,224 // jmpq *%rax
17077
Mike Klein7c4af542017-03-29 18:21:14 -040017078HIDDEN _sk_mirror_x_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017079.globl _sk_mirror_x_avx
Mike Klein86714282017-04-13 17:37:38 -040017080FUNCTION(_sk_mirror_x_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017081_sk_mirror_x_avx:
17082 .byte 72,173 // lods %ds:(%rsi),%rax
17083 .byte 197,121,110,0 // vmovd (%rax),%xmm8
17084 .byte 196,65,121,112,200,0 // vpshufd $0x0,%xmm8,%xmm9
17085 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
17086 .byte 196,65,124,92,209 // vsubps %ymm9,%ymm0,%ymm10
17087 .byte 196,193,58,88,192 // vaddss %xmm8,%xmm8,%xmm0
17088 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
17089 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
17090 .byte 197,44,94,192 // vdivps %ymm0,%ymm10,%ymm8
17091 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
17092 .byte 197,188,89,192 // vmulps %ymm0,%ymm8,%ymm0
17093 .byte 197,172,92,192 // vsubps %ymm0,%ymm10,%ymm0
17094 .byte 196,193,124,92,193 // vsubps %ymm9,%ymm0,%ymm0
17095 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
17096 .byte 197,60,92,192 // vsubps %ymm0,%ymm8,%ymm8
17097 .byte 197,60,84,192 // vandps %ymm0,%ymm8,%ymm8
17098 .byte 196,99,125,25,200,1 // vextractf128 $0x1,%ymm9,%xmm0
17099 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
17100 .byte 196,193,121,254,194 // vpaddd %xmm10,%xmm0,%xmm0
17101 .byte 196,65,49,254,202 // vpaddd %xmm10,%xmm9,%xmm9
17102 .byte 196,227,53,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm9,%ymm0
17103 .byte 197,188,93,192 // vminps %ymm0,%ymm8,%ymm0
17104 .byte 72,173 // lods %ds:(%rsi),%rax
17105 .byte 255,224 // jmpq *%rax
17106
Mike Klein7c4af542017-03-29 18:21:14 -040017107HIDDEN _sk_mirror_y_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017108.globl _sk_mirror_y_avx
Mike Klein86714282017-04-13 17:37:38 -040017109FUNCTION(_sk_mirror_y_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017110_sk_mirror_y_avx:
17111 .byte 72,173 // lods %ds:(%rsi),%rax
17112 .byte 197,121,110,0 // vmovd (%rax),%xmm8
17113 .byte 196,65,121,112,200,0 // vpshufd $0x0,%xmm8,%xmm9
17114 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
17115 .byte 196,65,116,92,209 // vsubps %ymm9,%ymm1,%ymm10
17116 .byte 196,193,58,88,200 // vaddss %xmm8,%xmm8,%xmm1
17117 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
17118 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
17119 .byte 197,44,94,193 // vdivps %ymm1,%ymm10,%ymm8
17120 .byte 196,67,125,8,192,1 // vroundps $0x1,%ymm8,%ymm8
17121 .byte 197,188,89,201 // vmulps %ymm1,%ymm8,%ymm1
17122 .byte 197,172,92,201 // vsubps %ymm1,%ymm10,%ymm1
17123 .byte 196,193,116,92,201 // vsubps %ymm9,%ymm1,%ymm1
17124 .byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
17125 .byte 197,60,92,193 // vsubps %ymm1,%ymm8,%ymm8
17126 .byte 197,60,84,193 // vandps %ymm1,%ymm8,%ymm8
17127 .byte 196,99,125,25,201,1 // vextractf128 $0x1,%ymm9,%xmm1
17128 .byte 196,65,41,118,210 // vpcmpeqd %xmm10,%xmm10,%xmm10
17129 .byte 196,193,113,254,202 // vpaddd %xmm10,%xmm1,%xmm1
17130 .byte 196,65,49,254,202 // vpaddd %xmm10,%xmm9,%xmm9
17131 .byte 196,227,53,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm9,%ymm1
17132 .byte 197,188,93,201 // vminps %ymm1,%ymm8,%ymm1
17133 .byte 72,173 // lods %ds:(%rsi),%rax
17134 .byte 255,224 // jmpq *%rax
17135
Mike Klein7c4af542017-03-29 18:21:14 -040017136HIDDEN _sk_luminance_to_alpha_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017137.globl _sk_luminance_to_alpha_avx
Mike Klein86714282017-04-13 17:37:38 -040017138FUNCTION(_sk_luminance_to_alpha_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017139_sk_luminance_to_alpha_avx:
17140 .byte 184,208,179,89,62 // mov $0x3e59b3d0,%eax
17141 .byte 197,249,110,216 // vmovd %eax,%xmm3
17142 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
17143 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
17144 .byte 197,228,89,192 // vmulps %ymm0,%ymm3,%ymm0
17145 .byte 184,89,23,55,63 // mov $0x3f371759,%eax
17146 .byte 197,249,110,216 // vmovd %eax,%xmm3
17147 .byte 196,227,121,4,219,0 // vpermilps $0x0,%xmm3,%xmm3
17148 .byte 196,227,101,24,219,1 // vinsertf128 $0x1,%xmm3,%ymm3,%ymm3
17149 .byte 197,228,89,201 // vmulps %ymm1,%ymm3,%ymm1
17150 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
17151 .byte 184,152,221,147,61 // mov $0x3d93dd98,%eax
17152 .byte 197,249,110,200 // vmovd %eax,%xmm1
17153 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
17154 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
17155 .byte 197,244,89,202 // vmulps %ymm2,%ymm1,%ymm1
17156 .byte 197,252,88,217 // vaddps %ymm1,%ymm0,%ymm3
17157 .byte 72,173 // lods %ds:(%rsi),%rax
17158 .byte 197,252,87,192 // vxorps %ymm0,%ymm0,%ymm0
17159 .byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
17160 .byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
17161 .byte 255,224 // jmpq *%rax
17162
Mike Klein7c4af542017-03-29 18:21:14 -040017163HIDDEN _sk_matrix_2x3_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017164.globl _sk_matrix_2x3_avx
Mike Klein86714282017-04-13 17:37:38 -040017165FUNCTION(_sk_matrix_2x3_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017166_sk_matrix_2x3_avx:
17167 .byte 72,173 // lods %ds:(%rsi),%rax
17168 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
17169 .byte 196,98,125,24,72,8 // vbroadcastss 0x8(%rax),%ymm9
17170 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
17171 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
17172 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17173 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
17174 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
17175 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
17176 .byte 196,98,125,24,80,12 // vbroadcastss 0xc(%rax),%ymm10
17177 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
17178 .byte 197,172,89,201 // vmulps %ymm1,%ymm10,%ymm1
17179 .byte 196,193,116,88,203 // vaddps %ymm11,%ymm1,%ymm1
17180 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
17181 .byte 197,252,88,201 // vaddps %ymm1,%ymm0,%ymm1
17182 .byte 72,173 // lods %ds:(%rsi),%rax
17183 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
17184 .byte 255,224 // jmpq *%rax
17185
Mike Klein7c4af542017-03-29 18:21:14 -040017186HIDDEN _sk_matrix_3x4_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017187.globl _sk_matrix_3x4_avx
Mike Klein86714282017-04-13 17:37:38 -040017188FUNCTION(_sk_matrix_3x4_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017189_sk_matrix_3x4_avx:
17190 .byte 72,173 // lods %ds:(%rsi),%rax
17191 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
17192 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
17193 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
17194 .byte 196,98,125,24,88,36 // vbroadcastss 0x24(%rax),%ymm11
17195 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
17196 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
17197 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
17198 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17199 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
17200 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
17201 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
17202 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
17203 .byte 196,98,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm11
17204 .byte 196,98,125,24,96,40 // vbroadcastss 0x28(%rax),%ymm12
17205 .byte 197,36,89,218 // vmulps %ymm2,%ymm11,%ymm11
17206 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
17207 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
17208 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
17209 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
17210 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17211 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
17212 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
17213 .byte 196,98,125,24,96,32 // vbroadcastss 0x20(%rax),%ymm12
17214 .byte 196,98,125,24,104,44 // vbroadcastss 0x2c(%rax),%ymm13
17215 .byte 197,156,89,210 // vmulps %ymm2,%ymm12,%ymm2
17216 .byte 196,193,108,88,213 // vaddps %ymm13,%ymm2,%ymm2
17217 .byte 197,164,89,201 // vmulps %ymm1,%ymm11,%ymm1
17218 .byte 197,244,88,202 // vaddps %ymm2,%ymm1,%ymm1
17219 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
17220 .byte 197,252,88,209 // vaddps %ymm1,%ymm0,%ymm2
17221 .byte 72,173 // lods %ds:(%rsi),%rax
17222 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
17223 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
17224 .byte 255,224 // jmpq *%rax
17225
Mike Klein7c4af542017-03-29 18:21:14 -040017226HIDDEN _sk_matrix_4x5_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017227.globl _sk_matrix_4x5_avx
Mike Klein86714282017-04-13 17:37:38 -040017228FUNCTION(_sk_matrix_4x5_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017229_sk_matrix_4x5_avx:
17230 .byte 72,173 // lods %ds:(%rsi),%rax
17231 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
17232 .byte 196,98,125,24,72,16 // vbroadcastss 0x10(%rax),%ymm9
17233 .byte 196,98,125,24,80,32 // vbroadcastss 0x20(%rax),%ymm10
17234 .byte 196,98,125,24,88,48 // vbroadcastss 0x30(%rax),%ymm11
17235 .byte 196,98,125,24,96,64 // vbroadcastss 0x40(%rax),%ymm12
17236 .byte 197,36,89,219 // vmulps %ymm3,%ymm11,%ymm11
17237 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
17238 .byte 197,44,89,210 // vmulps %ymm2,%ymm10,%ymm10
17239 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
17240 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
17241 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17242 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
17243 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
17244 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
17245 .byte 196,98,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm10
17246 .byte 196,98,125,24,88,36 // vbroadcastss 0x24(%rax),%ymm11
17247 .byte 196,98,125,24,96,52 // vbroadcastss 0x34(%rax),%ymm12
17248 .byte 196,98,125,24,104,68 // vbroadcastss 0x44(%rax),%ymm13
17249 .byte 197,28,89,227 // vmulps %ymm3,%ymm12,%ymm12
17250 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
17251 .byte 197,36,89,218 // vmulps %ymm2,%ymm11,%ymm11
17252 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
17253 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
17254 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
17255 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
17256 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17257 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
17258 .byte 196,98,125,24,88,24 // vbroadcastss 0x18(%rax),%ymm11
17259 .byte 196,98,125,24,96,40 // vbroadcastss 0x28(%rax),%ymm12
17260 .byte 196,98,125,24,104,56 // vbroadcastss 0x38(%rax),%ymm13
17261 .byte 196,98,125,24,112,72 // vbroadcastss 0x48(%rax),%ymm14
17262 .byte 197,20,89,235 // vmulps %ymm3,%ymm13,%ymm13
17263 .byte 196,65,20,88,238 // vaddps %ymm14,%ymm13,%ymm13
17264 .byte 197,28,89,226 // vmulps %ymm2,%ymm12,%ymm12
17265 .byte 196,65,28,88,229 // vaddps %ymm13,%ymm12,%ymm12
17266 .byte 197,36,89,217 // vmulps %ymm1,%ymm11,%ymm11
17267 .byte 196,65,36,88,220 // vaddps %ymm12,%ymm11,%ymm11
17268 .byte 197,44,89,208 // vmulps %ymm0,%ymm10,%ymm10
17269 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
17270 .byte 196,98,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm11
17271 .byte 196,98,125,24,96,28 // vbroadcastss 0x1c(%rax),%ymm12
17272 .byte 196,98,125,24,104,44 // vbroadcastss 0x2c(%rax),%ymm13
17273 .byte 196,98,125,24,112,60 // vbroadcastss 0x3c(%rax),%ymm14
17274 .byte 196,98,125,24,120,76 // vbroadcastss 0x4c(%rax),%ymm15
17275 .byte 197,140,89,219 // vmulps %ymm3,%ymm14,%ymm3
17276 .byte 196,193,100,88,223 // vaddps %ymm15,%ymm3,%ymm3
17277 .byte 197,148,89,210 // vmulps %ymm2,%ymm13,%ymm2
17278 .byte 197,236,88,211 // vaddps %ymm3,%ymm2,%ymm2
17279 .byte 197,156,89,201 // vmulps %ymm1,%ymm12,%ymm1
17280 .byte 197,244,88,202 // vaddps %ymm2,%ymm1,%ymm1
17281 .byte 197,164,89,192 // vmulps %ymm0,%ymm11,%ymm0
17282 .byte 197,252,88,217 // vaddps %ymm1,%ymm0,%ymm3
17283 .byte 72,173 // lods %ds:(%rsi),%rax
17284 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
17285 .byte 197,124,41,201 // vmovaps %ymm9,%ymm1
17286 .byte 197,124,41,210 // vmovaps %ymm10,%ymm2
17287 .byte 255,224 // jmpq *%rax
17288
Mike Klein7c4af542017-03-29 18:21:14 -040017289HIDDEN _sk_matrix_perspective_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017290.globl _sk_matrix_perspective_avx
Mike Klein86714282017-04-13 17:37:38 -040017291FUNCTION(_sk_matrix_perspective_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017292_sk_matrix_perspective_avx:
17293 .byte 72,173 // lods %ds:(%rsi),%rax
17294 .byte 196,98,125,24,0 // vbroadcastss (%rax),%ymm8
17295 .byte 196,98,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm9
17296 .byte 196,98,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm10
17297 .byte 197,52,89,201 // vmulps %ymm1,%ymm9,%ymm9
17298 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17299 .byte 197,60,89,192 // vmulps %ymm0,%ymm8,%ymm8
17300 .byte 196,65,60,88,193 // vaddps %ymm9,%ymm8,%ymm8
17301 .byte 196,98,125,24,72,12 // vbroadcastss 0xc(%rax),%ymm9
17302 .byte 196,98,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm10
17303 .byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
17304 .byte 197,44,89,209 // vmulps %ymm1,%ymm10,%ymm10
17305 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
17306 .byte 197,52,89,200 // vmulps %ymm0,%ymm9,%ymm9
17307 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17308 .byte 196,98,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm10
17309 .byte 196,98,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm11
17310 .byte 196,98,125,24,96,32 // vbroadcastss 0x20(%rax),%ymm12
17311 .byte 197,164,89,201 // vmulps %ymm1,%ymm11,%ymm1
17312 .byte 196,193,116,88,204 // vaddps %ymm12,%ymm1,%ymm1
17313 .byte 197,172,89,192 // vmulps %ymm0,%ymm10,%ymm0
17314 .byte 197,252,88,193 // vaddps %ymm1,%ymm0,%ymm0
17315 .byte 197,252,83,200 // vrcpps %ymm0,%ymm1
17316 .byte 197,188,89,193 // vmulps %ymm1,%ymm8,%ymm0
17317 .byte 197,180,89,201 // vmulps %ymm1,%ymm9,%ymm1
17318 .byte 72,173 // lods %ds:(%rsi),%rax
17319 .byte 255,224 // jmpq *%rax
17320
Herb Derby7b4202d2017-04-10 10:52:34 -040017321HIDDEN _sk_linear_gradient_avx
17322.globl _sk_linear_gradient_avx
Mike Klein86714282017-04-13 17:37:38 -040017323FUNCTION(_sk_linear_gradient_avx)
Herb Derby7b4202d2017-04-10 10:52:34 -040017324_sk_linear_gradient_avx:
17325 .byte 72,173 // lods %ds:(%rsi),%rax
17326 .byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
17327 .byte 196,226,125,24,72,20 // vbroadcastss 0x14(%rax),%ymm1
17328 .byte 196,226,125,24,80,24 // vbroadcastss 0x18(%rax),%ymm2
17329 .byte 196,226,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm3
17330 .byte 76,139,0 // mov (%rax),%r8
17331 .byte 77,133,192 // test %r8,%r8
Mike Klein097d0932017-04-20 09:11:53 -040017332 .byte 15,132,146,0,0,0 // je 5635 <_sk_linear_gradient_avx+0xb8>
Herb Derby7b4202d2017-04-10 10:52:34 -040017333 .byte 72,139,64,8 // mov 0x8(%rax),%rax
17334 .byte 72,131,192,32 // add $0x20,%rax
17335 .byte 196,65,28,87,228 // vxorps %ymm12,%ymm12,%ymm12
17336 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
17337 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
17338 .byte 196,65,36,87,219 // vxorps %ymm11,%ymm11,%ymm11
17339 .byte 196,98,125,24,104,224 // vbroadcastss -0x20(%rax),%ymm13
17340 .byte 196,65,124,194,237,1 // vcmpltps %ymm13,%ymm0,%ymm13
17341 .byte 196,98,125,24,112,228 // vbroadcastss -0x1c(%rax),%ymm14
17342 .byte 196,67,13,74,228,208 // vblendvps %ymm13,%ymm12,%ymm14,%ymm12
17343 .byte 196,98,125,24,112,232 // vbroadcastss -0x18(%rax),%ymm14
17344 .byte 196,67,13,74,219,208 // vblendvps %ymm13,%ymm11,%ymm14,%ymm11
17345 .byte 196,98,125,24,112,236 // vbroadcastss -0x14(%rax),%ymm14
17346 .byte 196,67,13,74,210,208 // vblendvps %ymm13,%ymm10,%ymm14,%ymm10
17347 .byte 196,98,125,24,112,240 // vbroadcastss -0x10(%rax),%ymm14
17348 .byte 196,67,13,74,201,208 // vblendvps %ymm13,%ymm9,%ymm14,%ymm9
17349 .byte 196,98,125,24,112,244 // vbroadcastss -0xc(%rax),%ymm14
17350 .byte 196,67,13,74,192,208 // vblendvps %ymm13,%ymm8,%ymm14,%ymm8
17351 .byte 196,98,125,24,112,248 // vbroadcastss -0x8(%rax),%ymm14
17352 .byte 196,227,13,74,201,208 // vblendvps %ymm13,%ymm1,%ymm14,%ymm1
17353 .byte 196,98,125,24,112,252 // vbroadcastss -0x4(%rax),%ymm14
17354 .byte 196,227,13,74,210,208 // vblendvps %ymm13,%ymm2,%ymm14,%ymm2
17355 .byte 196,98,125,24,48 // vbroadcastss (%rax),%ymm14
17356 .byte 196,227,13,74,219,208 // vblendvps %ymm13,%ymm3,%ymm14,%ymm3
17357 .byte 72,131,192,36 // add $0x24,%rax
17358 .byte 73,255,200 // dec %r8
Mike Klein097d0932017-04-20 09:11:53 -040017359 .byte 117,140 // jne 55bf <_sk_linear_gradient_avx+0x42>
17360 .byte 235,20 // jmp 5649 <_sk_linear_gradient_avx+0xcc>
Herb Derby7b4202d2017-04-10 10:52:34 -040017361 .byte 196,65,36,87,219 // vxorps %ymm11,%ymm11,%ymm11
17362 .byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
17363 .byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
17364 .byte 196,65,28,87,228 // vxorps %ymm12,%ymm12,%ymm12
17365 .byte 197,28,89,224 // vmulps %ymm0,%ymm12,%ymm12
17366 .byte 196,65,60,88,196 // vaddps %ymm12,%ymm8,%ymm8
17367 .byte 197,36,89,216 // vmulps %ymm0,%ymm11,%ymm11
17368 .byte 197,164,88,201 // vaddps %ymm1,%ymm11,%ymm1
17369 .byte 197,44,89,208 // vmulps %ymm0,%ymm10,%ymm10
17370 .byte 197,172,88,210 // vaddps %ymm2,%ymm10,%ymm2
17371 .byte 197,180,89,192 // vmulps %ymm0,%ymm9,%ymm0
17372 .byte 197,252,88,219 // vaddps %ymm3,%ymm0,%ymm3
17373 .byte 72,173 // lods %ds:(%rsi),%rax
17374 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
17375 .byte 255,224 // jmpq *%rax
17376
Mike Klein7c4af542017-03-29 18:21:14 -040017377HIDDEN _sk_linear_gradient_2stops_avx
Mike Kleind7e06ae2017-03-29 16:33:06 -040017378.globl _sk_linear_gradient_2stops_avx
Mike Klein86714282017-04-13 17:37:38 -040017379FUNCTION(_sk_linear_gradient_2stops_avx)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017380_sk_linear_gradient_2stops_avx:
17381 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040017382 .byte 196,226,125,24,8 // vbroadcastss (%rax),%ymm1
17383 .byte 196,226,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040017384 .byte 197,244,89,200 // vmulps %ymm0,%ymm1,%ymm1
Mike Klein8a823fa2017-04-05 17:29:26 -040017385 .byte 197,116,88,194 // vaddps %ymm2,%ymm1,%ymm8
Herb Derby7b4202d2017-04-10 10:52:34 -040017386 .byte 196,226,125,24,72,4 // vbroadcastss 0x4(%rax),%ymm1
17387 .byte 196,226,125,24,80,20 // vbroadcastss 0x14(%rax),%ymm2
Mike Kleind7e06ae2017-03-29 16:33:06 -040017388 .byte 197,244,89,200 // vmulps %ymm0,%ymm1,%ymm1
Mike Klein8a823fa2017-04-05 17:29:26 -040017389 .byte 197,244,88,202 // vaddps %ymm2,%ymm1,%ymm1
Herb Derby7b4202d2017-04-10 10:52:34 -040017390 .byte 196,226,125,24,80,8 // vbroadcastss 0x8(%rax),%ymm2
17391 .byte 196,226,125,24,88,24 // vbroadcastss 0x18(%rax),%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040017392 .byte 197,236,89,208 // vmulps %ymm0,%ymm2,%ymm2
Mike Klein8a823fa2017-04-05 17:29:26 -040017393 .byte 197,236,88,211 // vaddps %ymm3,%ymm2,%ymm2
Herb Derby7b4202d2017-04-10 10:52:34 -040017394 .byte 196,226,125,24,88,12 // vbroadcastss 0xc(%rax),%ymm3
17395 .byte 196,98,125,24,72,28 // vbroadcastss 0x1c(%rax),%ymm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040017396 .byte 197,228,89,192 // vmulps %ymm0,%ymm3,%ymm0
Mike Klein8a823fa2017-04-05 17:29:26 -040017397 .byte 196,193,124,88,217 // vaddps %ymm9,%ymm0,%ymm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040017398 .byte 72,173 // lods %ds:(%rsi),%rax
17399 .byte 197,124,41,192 // vmovaps %ymm8,%ymm0
17400 .byte 255,224 // jmpq *%rax
17401
Mike Klein0a904492017-04-12 12:52:48 -040017402HIDDEN _sk_save_xy_avx
17403.globl _sk_save_xy_avx
Mike Klein86714282017-04-13 17:37:38 -040017404FUNCTION(_sk_save_xy_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017405_sk_save_xy_avx:
17406 .byte 72,173 // lods %ds:(%rsi),%rax
17407 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
17408 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
17409 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
17410 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
17411 .byte 197,60,88,200 // vaddps %ymm0,%ymm8,%ymm9
17412 .byte 196,67,125,8,209,1 // vroundps $0x1,%ymm9,%ymm10
17413 .byte 196,65,52,92,202 // vsubps %ymm10,%ymm9,%ymm9
17414 .byte 197,60,88,193 // vaddps %ymm1,%ymm8,%ymm8
17415 .byte 196,67,125,8,208,1 // vroundps $0x1,%ymm8,%ymm10
17416 .byte 196,65,60,92,194 // vsubps %ymm10,%ymm8,%ymm8
17417 .byte 197,252,17,0 // vmovups %ymm0,(%rax)
17418 .byte 197,252,17,72,32 // vmovups %ymm1,0x20(%rax)
17419 .byte 197,124,17,72,64 // vmovups %ymm9,0x40(%rax)
17420 .byte 197,124,17,64,96 // vmovups %ymm8,0x60(%rax)
17421 .byte 72,173 // lods %ds:(%rsi),%rax
17422 .byte 255,224 // jmpq *%rax
17423
17424HIDDEN _sk_accumulate_avx
17425.globl _sk_accumulate_avx
Mike Klein86714282017-04-13 17:37:38 -040017426FUNCTION(_sk_accumulate_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017427_sk_accumulate_avx:
17428 .byte 72,173 // lods %ds:(%rsi),%rax
17429 .byte 197,124,16,128,128,0,0,0 // vmovups 0x80(%rax),%ymm8
17430 .byte 197,60,89,128,160,0,0,0 // vmulps 0xa0(%rax),%ymm8,%ymm8
17431 .byte 197,60,89,200 // vmulps %ymm0,%ymm8,%ymm9
17432 .byte 197,180,88,228 // vaddps %ymm4,%ymm9,%ymm4
17433 .byte 197,60,89,201 // vmulps %ymm1,%ymm8,%ymm9
17434 .byte 197,180,88,237 // vaddps %ymm5,%ymm9,%ymm5
17435 .byte 197,60,89,202 // vmulps %ymm2,%ymm8,%ymm9
17436 .byte 197,180,88,246 // vaddps %ymm6,%ymm9,%ymm6
17437 .byte 197,60,89,195 // vmulps %ymm3,%ymm8,%ymm8
17438 .byte 197,188,88,255 // vaddps %ymm7,%ymm8,%ymm7
17439 .byte 72,173 // lods %ds:(%rsi),%rax
17440 .byte 255,224 // jmpq *%rax
17441
17442HIDDEN _sk_bilinear_nx_avx
17443.globl _sk_bilinear_nx_avx
Mike Klein86714282017-04-13 17:37:38 -040017444FUNCTION(_sk_bilinear_nx_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017445_sk_bilinear_nx_avx:
17446 .byte 72,173 // lods %ds:(%rsi),%rax
17447 .byte 65,184,0,0,0,191 // mov $0xbf000000,%r8d
17448 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
17449 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
17450 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
17451 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
17452 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
17453 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
17454 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
17455 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
17456 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
17457 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
17458 .byte 72,173 // lods %ds:(%rsi),%rax
17459 .byte 255,224 // jmpq *%rax
17460
17461HIDDEN _sk_bilinear_px_avx
17462.globl _sk_bilinear_px_avx
Mike Klein86714282017-04-13 17:37:38 -040017463FUNCTION(_sk_bilinear_px_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017464_sk_bilinear_px_avx:
17465 .byte 72,173 // lods %ds:(%rsi),%rax
17466 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
17467 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
17468 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
17469 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
17470 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
17471 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
17472 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
17473 .byte 72,173 // lods %ds:(%rsi),%rax
17474 .byte 255,224 // jmpq *%rax
17475
17476HIDDEN _sk_bilinear_ny_avx
17477.globl _sk_bilinear_ny_avx
Mike Klein86714282017-04-13 17:37:38 -040017478FUNCTION(_sk_bilinear_ny_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017479_sk_bilinear_ny_avx:
17480 .byte 72,173 // lods %ds:(%rsi),%rax
17481 .byte 65,184,0,0,0,191 // mov $0xbf000000,%r8d
17482 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
17483 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
17484 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
17485 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
17486 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
17487 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
17488 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
17489 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
17490 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
17491 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
17492 .byte 72,173 // lods %ds:(%rsi),%rax
17493 .byte 255,224 // jmpq *%rax
17494
17495HIDDEN _sk_bilinear_py_avx
17496.globl _sk_bilinear_py_avx
Mike Klein86714282017-04-13 17:37:38 -040017497FUNCTION(_sk_bilinear_py_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017498_sk_bilinear_py_avx:
17499 .byte 72,173 // lods %ds:(%rsi),%rax
17500 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
17501 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
17502 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
17503 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
17504 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
17505 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
17506 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
17507 .byte 72,173 // lods %ds:(%rsi),%rax
17508 .byte 255,224 // jmpq *%rax
17509
17510HIDDEN _sk_bicubic_n3x_avx
17511.globl _sk_bicubic_n3x_avx
Mike Klein86714282017-04-13 17:37:38 -040017512FUNCTION(_sk_bicubic_n3x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017513_sk_bicubic_n3x_avx:
17514 .byte 72,173 // lods %ds:(%rsi),%rax
17515 .byte 65,184,0,0,192,191 // mov $0xbfc00000,%r8d
17516 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
17517 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
17518 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
17519 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
17520 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
17521 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
17522 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
17523 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
17524 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
17525 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
17526 .byte 65,184,114,28,199,62 // mov $0x3ec71c72,%r8d
17527 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17528 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17529 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17530 .byte 65,184,171,170,170,190 // mov $0xbeaaaaab,%r8d
17531 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
17532 .byte 196,67,121,4,219,0 // vpermilps $0x0,%xmm11,%xmm11
17533 .byte 196,67,37,24,219,1 // vinsertf128 $0x1,%xmm11,%ymm11,%ymm11
17534 .byte 196,65,44,89,192 // vmulps %ymm8,%ymm10,%ymm8
17535 .byte 196,65,60,88,195 // vaddps %ymm11,%ymm8,%ymm8
17536 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
17537 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
17538 .byte 72,173 // lods %ds:(%rsi),%rax
17539 .byte 255,224 // jmpq *%rax
17540
17541HIDDEN _sk_bicubic_n1x_avx
17542.globl _sk_bicubic_n1x_avx
Mike Klein86714282017-04-13 17:37:38 -040017543FUNCTION(_sk_bicubic_n1x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017544_sk_bicubic_n1x_avx:
17545 .byte 72,173 // lods %ds:(%rsi),%rax
17546 .byte 65,184,0,0,0,191 // mov $0xbf000000,%r8d
17547 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
17548 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
17549 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
17550 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
17551 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
17552 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
17553 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
17554 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
17555 .byte 197,60,92,64,64 // vsubps 0x40(%rax),%ymm8,%ymm8
17556 .byte 65,184,85,85,149,191 // mov $0xbf955555,%r8d
17557 .byte 196,65,121,110,200 // vmovd %r8d,%xmm9
17558 .byte 196,67,121,4,201,0 // vpermilps $0x0,%xmm9,%xmm9
17559 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
17560 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
17561 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17562 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17563 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17564 .byte 196,65,52,89,200 // vmulps %ymm8,%ymm9,%ymm9
17565 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17566 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
17567 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17568 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17569 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17570 .byte 196,65,60,89,201 // vmulps %ymm9,%ymm8,%ymm9
17571 .byte 196,65,44,88,201 // vaddps %ymm9,%ymm10,%ymm9
17572 .byte 65,184,57,142,99,61 // mov $0x3d638e39,%r8d
17573 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17574 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17575 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17576 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
17577 .byte 196,65,44,88,192 // vaddps %ymm8,%ymm10,%ymm8
17578 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
17579 .byte 72,173 // lods %ds:(%rsi),%rax
17580 .byte 255,224 // jmpq *%rax
17581
17582HIDDEN _sk_bicubic_p1x_avx
17583.globl _sk_bicubic_p1x_avx
Mike Klein86714282017-04-13 17:37:38 -040017584FUNCTION(_sk_bicubic_p1x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017585_sk_bicubic_p1x_avx:
17586 .byte 72,173 // lods %ds:(%rsi),%rax
17587 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
17588 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
17589 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
17590 .byte 196,99,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm8
17591 .byte 197,188,88,0 // vaddps (%rax),%ymm8,%ymm0
17592 .byte 197,124,16,72,64 // vmovups 0x40(%rax),%ymm9
17593 .byte 65,184,85,85,149,191 // mov $0xbf955555,%r8d
17594 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17595 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17596 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17597 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
17598 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
17599 .byte 196,67,121,4,219,0 // vpermilps $0x0,%xmm11,%xmm11
17600 .byte 196,67,37,24,219,1 // vinsertf128 $0x1,%xmm11,%ymm11,%ymm11
17601 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
17602 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
17603 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
17604 .byte 196,65,60,88,194 // vaddps %ymm10,%ymm8,%ymm8
17605 .byte 65,184,57,142,99,61 // mov $0x3d638e39,%r8d
17606 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17607 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17608 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17609 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
17610 .byte 196,65,44,88,192 // vaddps %ymm8,%ymm10,%ymm8
17611 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
17612 .byte 72,173 // lods %ds:(%rsi),%rax
17613 .byte 255,224 // jmpq *%rax
17614
17615HIDDEN _sk_bicubic_p3x_avx
17616.globl _sk_bicubic_p3x_avx
Mike Klein86714282017-04-13 17:37:38 -040017617FUNCTION(_sk_bicubic_p3x_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017618_sk_bicubic_p3x_avx:
17619 .byte 72,173 // lods %ds:(%rsi),%rax
17620 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
17621 .byte 196,193,121,110,192 // vmovd %r8d,%xmm0
17622 .byte 196,227,121,4,192,0 // vpermilps $0x0,%xmm0,%xmm0
17623 .byte 196,227,125,24,192,1 // vinsertf128 $0x1,%xmm0,%ymm0,%ymm0
17624 .byte 197,252,88,0 // vaddps (%rax),%ymm0,%ymm0
17625 .byte 197,124,16,64,64 // vmovups 0x40(%rax),%ymm8
17626 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
17627 .byte 65,184,114,28,199,62 // mov $0x3ec71c72,%r8d
17628 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17629 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17630 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17631 .byte 65,184,171,170,170,190 // mov $0xbeaaaaab,%r8d
17632 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
17633 .byte 196,67,121,4,219,0 // vpermilps $0x0,%xmm11,%xmm11
17634 .byte 196,67,37,24,219,1 // vinsertf128 $0x1,%xmm11,%ymm11,%ymm11
17635 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
17636 .byte 196,65,60,88,195 // vaddps %ymm11,%ymm8,%ymm8
17637 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
17638 .byte 197,124,17,128,128,0,0,0 // vmovups %ymm8,0x80(%rax)
17639 .byte 72,173 // lods %ds:(%rsi),%rax
17640 .byte 255,224 // jmpq *%rax
17641
17642HIDDEN _sk_bicubic_n3y_avx
17643.globl _sk_bicubic_n3y_avx
Mike Klein86714282017-04-13 17:37:38 -040017644FUNCTION(_sk_bicubic_n3y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017645_sk_bicubic_n3y_avx:
17646 .byte 72,173 // lods %ds:(%rsi),%rax
17647 .byte 65,184,0,0,192,191 // mov $0xbfc00000,%r8d
17648 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
17649 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
17650 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
17651 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
17652 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
17653 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
17654 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
17655 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
17656 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
17657 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
17658 .byte 65,184,114,28,199,62 // mov $0x3ec71c72,%r8d
17659 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17660 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17661 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17662 .byte 65,184,171,170,170,190 // mov $0xbeaaaaab,%r8d
17663 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
17664 .byte 196,67,121,4,219,0 // vpermilps $0x0,%xmm11,%xmm11
17665 .byte 196,67,37,24,219,1 // vinsertf128 $0x1,%xmm11,%ymm11,%ymm11
17666 .byte 196,65,44,89,192 // vmulps %ymm8,%ymm10,%ymm8
17667 .byte 196,65,60,88,195 // vaddps %ymm11,%ymm8,%ymm8
17668 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
17669 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
17670 .byte 72,173 // lods %ds:(%rsi),%rax
17671 .byte 255,224 // jmpq *%rax
17672
17673HIDDEN _sk_bicubic_n1y_avx
17674.globl _sk_bicubic_n1y_avx
Mike Klein86714282017-04-13 17:37:38 -040017675FUNCTION(_sk_bicubic_n1y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017676_sk_bicubic_n1y_avx:
17677 .byte 72,173 // lods %ds:(%rsi),%rax
17678 .byte 65,184,0,0,0,191 // mov $0xbf000000,%r8d
17679 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
17680 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
17681 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
17682 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
17683 .byte 65,184,0,0,128,63 // mov $0x3f800000,%r8d
17684 .byte 196,65,121,110,192 // vmovd %r8d,%xmm8
17685 .byte 196,67,121,4,192,0 // vpermilps $0x0,%xmm8,%xmm8
17686 .byte 196,67,61,24,192,1 // vinsertf128 $0x1,%xmm8,%ymm8,%ymm8
17687 .byte 197,60,92,64,96 // vsubps 0x60(%rax),%ymm8,%ymm8
17688 .byte 65,184,85,85,149,191 // mov $0xbf955555,%r8d
17689 .byte 196,65,121,110,200 // vmovd %r8d,%xmm9
17690 .byte 196,67,121,4,201,0 // vpermilps $0x0,%xmm9,%xmm9
17691 .byte 196,67,53,24,201,1 // vinsertf128 $0x1,%xmm9,%ymm9,%ymm9
17692 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
17693 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17694 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17695 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17696 .byte 196,65,52,89,200 // vmulps %ymm8,%ymm9,%ymm9
17697 .byte 196,65,52,88,202 // vaddps %ymm10,%ymm9,%ymm9
17698 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
17699 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17700 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17701 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17702 .byte 196,65,60,89,201 // vmulps %ymm9,%ymm8,%ymm9
17703 .byte 196,65,44,88,201 // vaddps %ymm9,%ymm10,%ymm9
17704 .byte 65,184,57,142,99,61 // mov $0x3d638e39,%r8d
17705 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17706 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17707 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17708 .byte 196,65,60,89,193 // vmulps %ymm9,%ymm8,%ymm8
17709 .byte 196,65,44,88,192 // vaddps %ymm8,%ymm10,%ymm8
17710 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
17711 .byte 72,173 // lods %ds:(%rsi),%rax
17712 .byte 255,224 // jmpq *%rax
17713
17714HIDDEN _sk_bicubic_p1y_avx
17715.globl _sk_bicubic_p1y_avx
Mike Klein86714282017-04-13 17:37:38 -040017716FUNCTION(_sk_bicubic_p1y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017717_sk_bicubic_p1y_avx:
17718 .byte 72,173 // lods %ds:(%rsi),%rax
17719 .byte 65,184,0,0,0,63 // mov $0x3f000000,%r8d
17720 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
17721 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
17722 .byte 196,99,117,24,193,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm8
17723 .byte 197,188,88,72,32 // vaddps 0x20(%rax),%ymm8,%ymm1
17724 .byte 197,124,16,72,96 // vmovups 0x60(%rax),%ymm9
17725 .byte 65,184,85,85,149,191 // mov $0xbf955555,%r8d
17726 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17727 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17728 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17729 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
17730 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
17731 .byte 196,67,121,4,219,0 // vpermilps $0x0,%xmm11,%xmm11
17732 .byte 196,67,37,24,219,1 // vinsertf128 $0x1,%xmm11,%ymm11,%ymm11
17733 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
17734 .byte 196,65,44,88,211 // vaddps %ymm11,%ymm10,%ymm10
17735 .byte 196,65,52,89,210 // vmulps %ymm10,%ymm9,%ymm10
17736 .byte 196,65,60,88,194 // vaddps %ymm10,%ymm8,%ymm8
17737 .byte 65,184,57,142,99,61 // mov $0x3d638e39,%r8d
17738 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17739 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17740 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17741 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
17742 .byte 196,65,44,88,192 // vaddps %ymm8,%ymm10,%ymm8
17743 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
17744 .byte 72,173 // lods %ds:(%rsi),%rax
17745 .byte 255,224 // jmpq *%rax
17746
17747HIDDEN _sk_bicubic_p3y_avx
17748.globl _sk_bicubic_p3y_avx
Mike Klein86714282017-04-13 17:37:38 -040017749FUNCTION(_sk_bicubic_p3y_avx)
Mike Klein0a904492017-04-12 12:52:48 -040017750_sk_bicubic_p3y_avx:
17751 .byte 72,173 // lods %ds:(%rsi),%rax
17752 .byte 65,184,0,0,192,63 // mov $0x3fc00000,%r8d
17753 .byte 196,193,121,110,200 // vmovd %r8d,%xmm1
17754 .byte 196,227,121,4,201,0 // vpermilps $0x0,%xmm1,%xmm1
17755 .byte 196,227,117,24,201,1 // vinsertf128 $0x1,%xmm1,%ymm1,%ymm1
17756 .byte 197,244,88,72,32 // vaddps 0x20(%rax),%ymm1,%ymm1
17757 .byte 197,124,16,64,96 // vmovups 0x60(%rax),%ymm8
17758 .byte 196,65,60,89,200 // vmulps %ymm8,%ymm8,%ymm9
17759 .byte 65,184,114,28,199,62 // mov $0x3ec71c72,%r8d
17760 .byte 196,65,121,110,208 // vmovd %r8d,%xmm10
17761 .byte 196,67,121,4,210,0 // vpermilps $0x0,%xmm10,%xmm10
17762 .byte 196,67,45,24,210,1 // vinsertf128 $0x1,%xmm10,%ymm10,%ymm10
17763 .byte 65,184,171,170,170,190 // mov $0xbeaaaaab,%r8d
17764 .byte 196,65,121,110,216 // vmovd %r8d,%xmm11
17765 .byte 196,67,121,4,219,0 // vpermilps $0x0,%xmm11,%xmm11
17766 .byte 196,67,37,24,219,1 // vinsertf128 $0x1,%xmm11,%ymm11,%ymm11
17767 .byte 196,65,60,89,194 // vmulps %ymm10,%ymm8,%ymm8
17768 .byte 196,65,60,88,195 // vaddps %ymm11,%ymm8,%ymm8
17769 .byte 196,65,52,89,192 // vmulps %ymm8,%ymm9,%ymm8
17770 .byte 197,124,17,128,160,0,0,0 // vmovups %ymm8,0xa0(%rax)
17771 .byte 72,173 // lods %ds:(%rsi),%rax
17772 .byte 255,224 // jmpq *%rax
17773
Mike Klein7fee90c2017-04-07 16:55:09 -040017774HIDDEN _sk_callback_avx
17775.globl _sk_callback_avx
17776FUNCTION(_sk_callback_avx)
17777_sk_callback_avx:
17778 .byte 65,87 // push %r15
17779 .byte 65,86 // push %r14
17780 .byte 65,84 // push %r12
17781 .byte 83 // push %rbx
17782 .byte 72,129,236,24,1,0,0 // sub $0x118,%rsp
17783 .byte 197,252,17,188,36,224,0,0,0 // vmovups %ymm7,0xe0(%rsp)
17784 .byte 197,252,17,180,36,192,0,0,0 // vmovups %ymm6,0xc0(%rsp)
17785 .byte 197,252,17,172,36,160,0,0,0 // vmovups %ymm5,0xa0(%rsp)
17786 .byte 197,252,17,164,36,128,0,0,0 // vmovups %ymm4,0x80(%rsp)
17787 .byte 197,252,17,92,36,96 // vmovups %ymm3,0x60(%rsp)
17788 .byte 197,252,17,84,36,64 // vmovups %ymm2,0x40(%rsp)
17789 .byte 197,252,17,76,36,32 // vmovups %ymm1,0x20(%rsp)
17790 .byte 197,252,17,4,36 // vmovups %ymm0,(%rsp)
17791 .byte 72,137,203 // mov %rcx,%rbx
17792 .byte 73,137,214 // mov %rdx,%r14
17793 .byte 73,137,255 // mov %rdi,%r15
17794 .byte 72,173 // lods %ds:(%rsi),%rax
17795 .byte 73,137,244 // mov %rsi,%r12
17796 .byte 72,139,120,8 // mov 0x8(%rax),%rdi
17797 .byte 72,133,219 // test %rbx,%rbx
17798 .byte 190,8,0,0,0 // mov $0x8,%esi
17799 .byte 15,69,243 // cmovne %ebx,%esi
17800 .byte 197,248,119 // vzeroupper
17801 .byte 255,16 // callq *(%rax)
17802 .byte 76,137,230 // mov %r12,%rsi
17803 .byte 72,173 // lods %ds:(%rsi),%rax
17804 .byte 76,137,255 // mov %r15,%rdi
17805 .byte 76,137,242 // mov %r14,%rdx
17806 .byte 72,137,217 // mov %rbx,%rcx
17807 .byte 197,252,16,4,36 // vmovups (%rsp),%ymm0
17808 .byte 197,252,16,76,36,32 // vmovups 0x20(%rsp),%ymm1
17809 .byte 197,252,16,84,36,64 // vmovups 0x40(%rsp),%ymm2
17810 .byte 197,252,16,92,36,96 // vmovups 0x60(%rsp),%ymm3
17811 .byte 197,252,16,164,36,128,0,0,0 // vmovups 0x80(%rsp),%ymm4
17812 .byte 197,252,16,172,36,160,0,0,0 // vmovups 0xa0(%rsp),%ymm5
17813 .byte 197,252,16,180,36,192,0,0,0 // vmovups 0xc0(%rsp),%ymm6
17814 .byte 197,252,16,188,36,224,0,0,0 // vmovups 0xe0(%rsp),%ymm7
17815 .byte 72,129,196,24,1,0,0 // add $0x118,%rsp
17816 .byte 91 // pop %rbx
17817 .byte 65,92 // pop %r12
17818 .byte 65,94 // pop %r14
17819 .byte 65,95 // pop %r15
17820 .byte 255,224 // jmpq *%rax
17821
Mike Klein7c4af542017-03-29 18:21:14 -040017822HIDDEN _sk_start_pipeline_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017823.globl _sk_start_pipeline_sse41
Mike Klein86714282017-04-13 17:37:38 -040017824FUNCTION(_sk_start_pipeline_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017825_sk_start_pipeline_sse41:
17826 .byte 65,87 // push %r15
17827 .byte 65,86 // push %r14
17828 .byte 65,85 // push %r13
17829 .byte 65,84 // push %r12
17830 .byte 83 // push %rbx
17831 .byte 73,137,207 // mov %rcx,%r15
17832 .byte 73,137,214 // mov %rdx,%r14
17833 .byte 72,137,251 // mov %rdi,%rbx
17834 .byte 72,173 // lods %ds:(%rsi),%rax
17835 .byte 73,137,196 // mov %rax,%r12
17836 .byte 73,137,245 // mov %rsi,%r13
17837 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
17838 .byte 76,57,248 // cmp %r15,%rax
17839 .byte 118,5 // jbe 28 <_sk_start_pipeline_sse41+0x28>
17840 .byte 72,137,216 // mov %rbx,%rax
17841 .byte 235,52 // jmp 5c <_sk_start_pipeline_sse41+0x5c>
17842 .byte 15,87,192 // xorps %xmm0,%xmm0
17843 .byte 15,87,201 // xorps %xmm1,%xmm1
17844 .byte 15,87,210 // xorps %xmm2,%xmm2
17845 .byte 15,87,219 // xorps %xmm3,%xmm3
17846 .byte 15,87,228 // xorps %xmm4,%xmm4
17847 .byte 15,87,237 // xorps %xmm5,%xmm5
17848 .byte 15,87,246 // xorps %xmm6,%xmm6
17849 .byte 15,87,255 // xorps %xmm7,%xmm7
17850 .byte 72,137,223 // mov %rbx,%rdi
17851 .byte 76,137,238 // mov %r13,%rsi
17852 .byte 76,137,242 // mov %r14,%rdx
17853 .byte 65,255,212 // callq *%r12
17854 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
17855 .byte 72,131,195,8 // add $0x8,%rbx
17856 .byte 76,57,251 // cmp %r15,%rbx
17857 .byte 72,137,195 // mov %rax,%rbx
17858 .byte 118,204 // jbe 28 <_sk_start_pipeline_sse41+0x28>
17859 .byte 91 // pop %rbx
17860 .byte 65,92 // pop %r12
17861 .byte 65,93 // pop %r13
17862 .byte 65,94 // pop %r14
17863 .byte 65,95 // pop %r15
17864 .byte 195 // retq
17865
Mike Klein7c4af542017-03-29 18:21:14 -040017866HIDDEN _sk_just_return_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017867.globl _sk_just_return_sse41
Mike Klein86714282017-04-13 17:37:38 -040017868FUNCTION(_sk_just_return_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017869_sk_just_return_sse41:
17870 .byte 195 // retq
17871
Mike Klein7c4af542017-03-29 18:21:14 -040017872HIDDEN _sk_seed_shader_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017873.globl _sk_seed_shader_sse41
Mike Klein86714282017-04-13 17:37:38 -040017874FUNCTION(_sk_seed_shader_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017875_sk_seed_shader_sse41:
17876 .byte 72,173 // lods %ds:(%rsi),%rax
17877 .byte 102,15,110,199 // movd %edi,%xmm0
17878 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
17879 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
17880 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
17881 .byte 102,15,110,209 // movd %ecx,%xmm2
17882 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
17883 .byte 15,88,202 // addps %xmm2,%xmm1
17884 .byte 15,16,2 // movups (%rdx),%xmm0
17885 .byte 15,88,193 // addps %xmm1,%xmm0
17886 .byte 102,15,110,8 // movd (%rax),%xmm1
17887 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
17888 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
17889 .byte 15,88,202 // addps %xmm2,%xmm1
17890 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
17891 .byte 102,15,110,208 // movd %eax,%xmm2
17892 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
17893 .byte 72,173 // lods %ds:(%rsi),%rax
17894 .byte 15,87,219 // xorps %xmm3,%xmm3
17895 .byte 15,87,228 // xorps %xmm4,%xmm4
17896 .byte 15,87,237 // xorps %xmm5,%xmm5
17897 .byte 15,87,246 // xorps %xmm6,%xmm6
17898 .byte 15,87,255 // xorps %xmm7,%xmm7
17899 .byte 255,224 // jmpq *%rax
17900
Mike Klein7c4af542017-03-29 18:21:14 -040017901HIDDEN _sk_constant_color_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017902.globl _sk_constant_color_sse41
Mike Klein86714282017-04-13 17:37:38 -040017903FUNCTION(_sk_constant_color_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017904_sk_constant_color_sse41:
17905 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8a823fa2017-04-05 17:29:26 -040017906 .byte 243,15,16,0 // movss (%rax),%xmm0
17907 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040017908 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040017909 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
17910 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
17911 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
17912 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
17913 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040017914 .byte 72,173 // lods %ds:(%rsi),%rax
17915 .byte 255,224 // jmpq *%rax
17916
Mike Klein7c4af542017-03-29 18:21:14 -040017917HIDDEN _sk_clear_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040017918.globl _sk_clear_sse41
Mike Klein86714282017-04-13 17:37:38 -040017919FUNCTION(_sk_clear_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040017920_sk_clear_sse41:
17921 .byte 72,173 // lods %ds:(%rsi),%rax
17922 .byte 15,87,192 // xorps %xmm0,%xmm0
17923 .byte 15,87,201 // xorps %xmm1,%xmm1
17924 .byte 15,87,210 // xorps %xmm2,%xmm2
17925 .byte 15,87,219 // xorps %xmm3,%xmm3
17926 .byte 255,224 // jmpq *%rax
17927
Mike Kleinaaca1e42017-03-31 09:29:01 -040017928HIDDEN _sk_srcatop_sse41
17929.globl _sk_srcatop_sse41
Mike Klein86714282017-04-13 17:37:38 -040017930FUNCTION(_sk_srcatop_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017931_sk_srcatop_sse41:
17932 .byte 15,89,199 // mulps %xmm7,%xmm0
17933 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
17934 .byte 102,68,15,110,192 // movd %eax,%xmm8
17935 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
17936 .byte 68,15,92,195 // subps %xmm3,%xmm8
17937 .byte 69,15,40,200 // movaps %xmm8,%xmm9
17938 .byte 68,15,89,204 // mulps %xmm4,%xmm9
17939 .byte 65,15,88,193 // addps %xmm9,%xmm0
17940 .byte 15,89,207 // mulps %xmm7,%xmm1
17941 .byte 69,15,40,200 // movaps %xmm8,%xmm9
17942 .byte 68,15,89,205 // mulps %xmm5,%xmm9
17943 .byte 65,15,88,201 // addps %xmm9,%xmm1
17944 .byte 15,89,215 // mulps %xmm7,%xmm2
17945 .byte 69,15,40,200 // movaps %xmm8,%xmm9
17946 .byte 68,15,89,206 // mulps %xmm6,%xmm9
17947 .byte 65,15,88,209 // addps %xmm9,%xmm2
17948 .byte 15,89,223 // mulps %xmm7,%xmm3
17949 .byte 68,15,89,199 // mulps %xmm7,%xmm8
17950 .byte 65,15,88,216 // addps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040017951 .byte 72,173 // lods %ds:(%rsi),%rax
17952 .byte 255,224 // jmpq *%rax
17953
Mike Kleinaaca1e42017-03-31 09:29:01 -040017954HIDDEN _sk_dstatop_sse41
17955.globl _sk_dstatop_sse41
Mike Klein86714282017-04-13 17:37:38 -040017956FUNCTION(_sk_dstatop_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017957_sk_dstatop_sse41:
17958 .byte 68,15,40,195 // movaps %xmm3,%xmm8
17959 .byte 68,15,89,196 // mulps %xmm4,%xmm8
17960 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
17961 .byte 102,68,15,110,200 // movd %eax,%xmm9
17962 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
17963 .byte 68,15,92,207 // subps %xmm7,%xmm9
17964 .byte 65,15,89,193 // mulps %xmm9,%xmm0
17965 .byte 65,15,88,192 // addps %xmm8,%xmm0
17966 .byte 68,15,40,195 // movaps %xmm3,%xmm8
17967 .byte 68,15,89,197 // mulps %xmm5,%xmm8
17968 .byte 65,15,89,201 // mulps %xmm9,%xmm1
17969 .byte 65,15,88,200 // addps %xmm8,%xmm1
17970 .byte 68,15,40,195 // movaps %xmm3,%xmm8
17971 .byte 68,15,89,198 // mulps %xmm6,%xmm8
17972 .byte 65,15,89,209 // mulps %xmm9,%xmm2
17973 .byte 65,15,88,208 // addps %xmm8,%xmm2
17974 .byte 68,15,89,203 // mulps %xmm3,%xmm9
17975 .byte 15,89,223 // mulps %xmm7,%xmm3
17976 .byte 65,15,88,217 // addps %xmm9,%xmm3
17977 .byte 72,173 // lods %ds:(%rsi),%rax
17978 .byte 255,224 // jmpq *%rax
17979
17980HIDDEN _sk_srcin_sse41
17981.globl _sk_srcin_sse41
Mike Klein86714282017-04-13 17:37:38 -040017982FUNCTION(_sk_srcin_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017983_sk_srcin_sse41:
17984 .byte 15,89,199 // mulps %xmm7,%xmm0
17985 .byte 15,89,207 // mulps %xmm7,%xmm1
17986 .byte 15,89,215 // mulps %xmm7,%xmm2
17987 .byte 15,89,223 // mulps %xmm7,%xmm3
17988 .byte 72,173 // lods %ds:(%rsi),%rax
17989 .byte 255,224 // jmpq *%rax
17990
17991HIDDEN _sk_dstin_sse41
17992.globl _sk_dstin_sse41
Mike Klein86714282017-04-13 17:37:38 -040017993FUNCTION(_sk_dstin_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040017994_sk_dstin_sse41:
17995 .byte 15,40,195 // movaps %xmm3,%xmm0
17996 .byte 15,89,196 // mulps %xmm4,%xmm0
17997 .byte 15,40,203 // movaps %xmm3,%xmm1
17998 .byte 15,89,205 // mulps %xmm5,%xmm1
17999 .byte 15,40,211 // movaps %xmm3,%xmm2
18000 .byte 15,89,214 // mulps %xmm6,%xmm2
18001 .byte 15,89,223 // mulps %xmm7,%xmm3
18002 .byte 72,173 // lods %ds:(%rsi),%rax
18003 .byte 255,224 // jmpq *%rax
18004
18005HIDDEN _sk_srcout_sse41
18006.globl _sk_srcout_sse41
Mike Klein86714282017-04-13 17:37:38 -040018007FUNCTION(_sk_srcout_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040018008_sk_srcout_sse41:
18009 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18010 .byte 102,68,15,110,192 // movd %eax,%xmm8
18011 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
18012 .byte 68,15,92,199 // subps %xmm7,%xmm8
18013 .byte 65,15,89,192 // mulps %xmm8,%xmm0
18014 .byte 65,15,89,200 // mulps %xmm8,%xmm1
18015 .byte 65,15,89,208 // mulps %xmm8,%xmm2
18016 .byte 65,15,89,216 // mulps %xmm8,%xmm3
18017 .byte 72,173 // lods %ds:(%rsi),%rax
18018 .byte 255,224 // jmpq *%rax
18019
18020HIDDEN _sk_dstout_sse41
18021.globl _sk_dstout_sse41
Mike Klein86714282017-04-13 17:37:38 -040018022FUNCTION(_sk_dstout_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040018023_sk_dstout_sse41:
18024 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18025 .byte 102,68,15,110,192 // movd %eax,%xmm8
18026 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
18027 .byte 68,15,92,195 // subps %xmm3,%xmm8
18028 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18029 .byte 15,89,196 // mulps %xmm4,%xmm0
18030 .byte 65,15,40,200 // movaps %xmm8,%xmm1
18031 .byte 15,89,205 // mulps %xmm5,%xmm1
18032 .byte 65,15,40,208 // movaps %xmm8,%xmm2
18033 .byte 15,89,214 // mulps %xmm6,%xmm2
18034 .byte 68,15,89,199 // mulps %xmm7,%xmm8
18035 .byte 72,173 // lods %ds:(%rsi),%rax
18036 .byte 65,15,40,216 // movaps %xmm8,%xmm3
18037 .byte 255,224 // jmpq *%rax
18038
Mike Klein7c4af542017-03-29 18:21:14 -040018039HIDDEN _sk_srcover_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018040.globl _sk_srcover_sse41
Mike Klein86714282017-04-13 17:37:38 -040018041FUNCTION(_sk_srcover_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018042_sk_srcover_sse41:
18043 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18044 .byte 102,68,15,110,192 // movd %eax,%xmm8
18045 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
18046 .byte 68,15,92,195 // subps %xmm3,%xmm8
18047 .byte 69,15,40,200 // movaps %xmm8,%xmm9
18048 .byte 68,15,89,204 // mulps %xmm4,%xmm9
18049 .byte 65,15,88,193 // addps %xmm9,%xmm0
18050 .byte 69,15,40,200 // movaps %xmm8,%xmm9
18051 .byte 68,15,89,205 // mulps %xmm5,%xmm9
18052 .byte 65,15,88,201 // addps %xmm9,%xmm1
18053 .byte 69,15,40,200 // movaps %xmm8,%xmm9
18054 .byte 68,15,89,206 // mulps %xmm6,%xmm9
18055 .byte 65,15,88,209 // addps %xmm9,%xmm2
18056 .byte 68,15,89,199 // mulps %xmm7,%xmm8
18057 .byte 65,15,88,216 // addps %xmm8,%xmm3
18058 .byte 72,173 // lods %ds:(%rsi),%rax
18059 .byte 255,224 // jmpq *%rax
18060
Mike Klein7c4af542017-03-29 18:21:14 -040018061HIDDEN _sk_dstover_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018062.globl _sk_dstover_sse41
Mike Klein86714282017-04-13 17:37:38 -040018063FUNCTION(_sk_dstover_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018064_sk_dstover_sse41:
18065 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18066 .byte 102,68,15,110,192 // movd %eax,%xmm8
18067 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
18068 .byte 68,15,92,199 // subps %xmm7,%xmm8
18069 .byte 65,15,89,192 // mulps %xmm8,%xmm0
18070 .byte 15,88,196 // addps %xmm4,%xmm0
18071 .byte 65,15,89,200 // mulps %xmm8,%xmm1
18072 .byte 15,88,205 // addps %xmm5,%xmm1
18073 .byte 65,15,89,208 // mulps %xmm8,%xmm2
18074 .byte 15,88,214 // addps %xmm6,%xmm2
18075 .byte 65,15,89,216 // mulps %xmm8,%xmm3
18076 .byte 15,88,223 // addps %xmm7,%xmm3
18077 .byte 72,173 // lods %ds:(%rsi),%rax
18078 .byte 255,224 // jmpq *%rax
18079
Mike Kleinaaca1e42017-03-31 09:29:01 -040018080HIDDEN _sk_modulate_sse41
18081.globl _sk_modulate_sse41
Mike Klein86714282017-04-13 17:37:38 -040018082FUNCTION(_sk_modulate_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040018083_sk_modulate_sse41:
18084 .byte 15,89,196 // mulps %xmm4,%xmm0
18085 .byte 15,89,205 // mulps %xmm5,%xmm1
18086 .byte 15,89,214 // mulps %xmm6,%xmm2
18087 .byte 15,89,223 // mulps %xmm7,%xmm3
18088 .byte 72,173 // lods %ds:(%rsi),%rax
18089 .byte 255,224 // jmpq *%rax
18090
18091HIDDEN _sk_multiply_sse41
18092.globl _sk_multiply_sse41
Mike Klein86714282017-04-13 17:37:38 -040018093FUNCTION(_sk_multiply_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040018094_sk_multiply_sse41:
18095 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18096 .byte 102,68,15,110,192 // movd %eax,%xmm8
18097 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
18098 .byte 69,15,40,200 // movaps %xmm8,%xmm9
18099 .byte 68,15,92,207 // subps %xmm7,%xmm9
18100 .byte 69,15,40,209 // movaps %xmm9,%xmm10
18101 .byte 68,15,89,208 // mulps %xmm0,%xmm10
18102 .byte 68,15,92,195 // subps %xmm3,%xmm8
18103 .byte 69,15,40,216 // movaps %xmm8,%xmm11
18104 .byte 68,15,89,220 // mulps %xmm4,%xmm11
18105 .byte 69,15,88,218 // addps %xmm10,%xmm11
18106 .byte 15,89,196 // mulps %xmm4,%xmm0
18107 .byte 65,15,88,195 // addps %xmm11,%xmm0
18108 .byte 69,15,40,209 // movaps %xmm9,%xmm10
18109 .byte 68,15,89,209 // mulps %xmm1,%xmm10
18110 .byte 69,15,40,216 // movaps %xmm8,%xmm11
18111 .byte 68,15,89,221 // mulps %xmm5,%xmm11
18112 .byte 69,15,88,218 // addps %xmm10,%xmm11
18113 .byte 15,89,205 // mulps %xmm5,%xmm1
18114 .byte 65,15,88,203 // addps %xmm11,%xmm1
18115 .byte 69,15,40,209 // movaps %xmm9,%xmm10
18116 .byte 68,15,89,210 // mulps %xmm2,%xmm10
18117 .byte 69,15,40,216 // movaps %xmm8,%xmm11
18118 .byte 68,15,89,222 // mulps %xmm6,%xmm11
18119 .byte 69,15,88,218 // addps %xmm10,%xmm11
18120 .byte 15,89,214 // mulps %xmm6,%xmm2
18121 .byte 65,15,88,211 // addps %xmm11,%xmm2
18122 .byte 68,15,89,203 // mulps %xmm3,%xmm9
18123 .byte 68,15,89,199 // mulps %xmm7,%xmm8
18124 .byte 69,15,88,193 // addps %xmm9,%xmm8
18125 .byte 15,89,223 // mulps %xmm7,%xmm3
18126 .byte 65,15,88,216 // addps %xmm8,%xmm3
18127 .byte 72,173 // lods %ds:(%rsi),%rax
18128 .byte 255,224 // jmpq *%rax
18129
18130HIDDEN _sk_plus__sse41
18131.globl _sk_plus__sse41
Mike Klein86714282017-04-13 17:37:38 -040018132FUNCTION(_sk_plus__sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040018133_sk_plus__sse41:
18134 .byte 15,88,196 // addps %xmm4,%xmm0
18135 .byte 15,88,205 // addps %xmm5,%xmm1
18136 .byte 15,88,214 // addps %xmm6,%xmm2
18137 .byte 15,88,223 // addps %xmm7,%xmm3
18138 .byte 72,173 // lods %ds:(%rsi),%rax
18139 .byte 255,224 // jmpq *%rax
18140
18141HIDDEN _sk_screen_sse41
18142.globl _sk_screen_sse41
Mike Klein86714282017-04-13 17:37:38 -040018143FUNCTION(_sk_screen_sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040018144_sk_screen_sse41:
18145 .byte 68,15,40,192 // movaps %xmm0,%xmm8
18146 .byte 68,15,88,196 // addps %xmm4,%xmm8
18147 .byte 15,89,196 // mulps %xmm4,%xmm0
18148 .byte 68,15,92,192 // subps %xmm0,%xmm8
18149 .byte 68,15,40,201 // movaps %xmm1,%xmm9
18150 .byte 68,15,88,205 // addps %xmm5,%xmm9
18151 .byte 15,89,205 // mulps %xmm5,%xmm1
18152 .byte 68,15,92,201 // subps %xmm1,%xmm9
18153 .byte 68,15,40,210 // movaps %xmm2,%xmm10
18154 .byte 68,15,88,214 // addps %xmm6,%xmm10
18155 .byte 15,89,214 // mulps %xmm6,%xmm2
18156 .byte 68,15,92,210 // subps %xmm2,%xmm10
18157 .byte 68,15,40,219 // movaps %xmm3,%xmm11
18158 .byte 68,15,88,223 // addps %xmm7,%xmm11
18159 .byte 15,89,223 // mulps %xmm7,%xmm3
18160 .byte 68,15,92,219 // subps %xmm3,%xmm11
18161 .byte 72,173 // lods %ds:(%rsi),%rax
18162 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18163 .byte 65,15,40,201 // movaps %xmm9,%xmm1
18164 .byte 65,15,40,210 // movaps %xmm10,%xmm2
18165 .byte 65,15,40,219 // movaps %xmm11,%xmm3
18166 .byte 255,224 // jmpq *%rax
18167
18168HIDDEN _sk_xor__sse41
18169.globl _sk_xor__sse41
Mike Klein86714282017-04-13 17:37:38 -040018170FUNCTION(_sk_xor__sse41)
Mike Kleinaaca1e42017-03-31 09:29:01 -040018171_sk_xor__sse41:
18172 .byte 68,15,40,195 // movaps %xmm3,%xmm8
18173 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18174 .byte 102,15,110,216 // movd %eax,%xmm3
18175 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
18176 .byte 68,15,40,203 // movaps %xmm3,%xmm9
18177 .byte 68,15,92,207 // subps %xmm7,%xmm9
18178 .byte 65,15,89,193 // mulps %xmm9,%xmm0
18179 .byte 65,15,92,216 // subps %xmm8,%xmm3
18180 .byte 68,15,40,211 // movaps %xmm3,%xmm10
18181 .byte 68,15,89,212 // mulps %xmm4,%xmm10
18182 .byte 65,15,88,194 // addps %xmm10,%xmm0
18183 .byte 65,15,89,201 // mulps %xmm9,%xmm1
18184 .byte 68,15,40,211 // movaps %xmm3,%xmm10
18185 .byte 68,15,89,213 // mulps %xmm5,%xmm10
18186 .byte 65,15,88,202 // addps %xmm10,%xmm1
18187 .byte 65,15,89,209 // mulps %xmm9,%xmm2
18188 .byte 68,15,40,211 // movaps %xmm3,%xmm10
18189 .byte 68,15,89,214 // mulps %xmm6,%xmm10
18190 .byte 65,15,88,210 // addps %xmm10,%xmm2
18191 .byte 69,15,89,200 // mulps %xmm8,%xmm9
18192 .byte 15,89,223 // mulps %xmm7,%xmm3
18193 .byte 65,15,88,217 // addps %xmm9,%xmm3
18194 .byte 72,173 // lods %ds:(%rsi),%rax
18195 .byte 255,224 // jmpq *%rax
18196
Mike Klein66b09ab2017-03-31 10:29:40 -040018197HIDDEN _sk_darken_sse41
18198.globl _sk_darken_sse41
Mike Klein86714282017-04-13 17:37:38 -040018199FUNCTION(_sk_darken_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040018200_sk_darken_sse41:
18201 .byte 68,15,40,193 // movaps %xmm1,%xmm8
18202 .byte 68,15,40,200 // movaps %xmm0,%xmm9
18203 .byte 15,88,196 // addps %xmm4,%xmm0
18204 .byte 68,15,89,207 // mulps %xmm7,%xmm9
18205 .byte 15,40,203 // movaps %xmm3,%xmm1
18206 .byte 15,89,204 // mulps %xmm4,%xmm1
18207 .byte 68,15,95,201 // maxps %xmm1,%xmm9
18208 .byte 65,15,92,193 // subps %xmm9,%xmm0
18209 .byte 65,15,40,200 // movaps %xmm8,%xmm1
18210 .byte 15,88,205 // addps %xmm5,%xmm1
18211 .byte 68,15,89,199 // mulps %xmm7,%xmm8
18212 .byte 68,15,40,203 // movaps %xmm3,%xmm9
18213 .byte 68,15,89,205 // mulps %xmm5,%xmm9
18214 .byte 69,15,95,193 // maxps %xmm9,%xmm8
18215 .byte 65,15,92,200 // subps %xmm8,%xmm1
18216 .byte 68,15,40,194 // movaps %xmm2,%xmm8
18217 .byte 68,15,88,198 // addps %xmm6,%xmm8
18218 .byte 15,89,215 // mulps %xmm7,%xmm2
18219 .byte 68,15,40,203 // movaps %xmm3,%xmm9
18220 .byte 68,15,89,206 // mulps %xmm6,%xmm9
18221 .byte 65,15,95,209 // maxps %xmm9,%xmm2
18222 .byte 68,15,92,194 // subps %xmm2,%xmm8
18223 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18224 .byte 102,15,110,208 // movd %eax,%xmm2
18225 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
18226 .byte 15,92,211 // subps %xmm3,%xmm2
18227 .byte 15,89,215 // mulps %xmm7,%xmm2
18228 .byte 15,88,218 // addps %xmm2,%xmm3
18229 .byte 72,173 // lods %ds:(%rsi),%rax
18230 .byte 65,15,40,208 // movaps %xmm8,%xmm2
18231 .byte 255,224 // jmpq *%rax
18232
18233HIDDEN _sk_lighten_sse41
18234.globl _sk_lighten_sse41
Mike Klein86714282017-04-13 17:37:38 -040018235FUNCTION(_sk_lighten_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040018236_sk_lighten_sse41:
18237 .byte 68,15,40,193 // movaps %xmm1,%xmm8
18238 .byte 68,15,40,200 // movaps %xmm0,%xmm9
18239 .byte 15,88,196 // addps %xmm4,%xmm0
18240 .byte 68,15,89,207 // mulps %xmm7,%xmm9
18241 .byte 15,40,203 // movaps %xmm3,%xmm1
18242 .byte 15,89,204 // mulps %xmm4,%xmm1
18243 .byte 68,15,93,201 // minps %xmm1,%xmm9
18244 .byte 65,15,92,193 // subps %xmm9,%xmm0
18245 .byte 65,15,40,200 // movaps %xmm8,%xmm1
18246 .byte 15,88,205 // addps %xmm5,%xmm1
18247 .byte 68,15,89,199 // mulps %xmm7,%xmm8
18248 .byte 68,15,40,203 // movaps %xmm3,%xmm9
18249 .byte 68,15,89,205 // mulps %xmm5,%xmm9
18250 .byte 69,15,93,193 // minps %xmm9,%xmm8
18251 .byte 65,15,92,200 // subps %xmm8,%xmm1
18252 .byte 68,15,40,194 // movaps %xmm2,%xmm8
18253 .byte 68,15,88,198 // addps %xmm6,%xmm8
18254 .byte 15,89,215 // mulps %xmm7,%xmm2
18255 .byte 68,15,40,203 // movaps %xmm3,%xmm9
18256 .byte 68,15,89,206 // mulps %xmm6,%xmm9
18257 .byte 65,15,93,209 // minps %xmm9,%xmm2
18258 .byte 68,15,92,194 // subps %xmm2,%xmm8
18259 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18260 .byte 102,15,110,208 // movd %eax,%xmm2
18261 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
18262 .byte 15,92,211 // subps %xmm3,%xmm2
18263 .byte 15,89,215 // mulps %xmm7,%xmm2
18264 .byte 15,88,218 // addps %xmm2,%xmm3
18265 .byte 72,173 // lods %ds:(%rsi),%rax
18266 .byte 65,15,40,208 // movaps %xmm8,%xmm2
18267 .byte 255,224 // jmpq *%rax
18268
18269HIDDEN _sk_difference_sse41
18270.globl _sk_difference_sse41
Mike Klein86714282017-04-13 17:37:38 -040018271FUNCTION(_sk_difference_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040018272_sk_difference_sse41:
18273 .byte 68,15,40,193 // movaps %xmm1,%xmm8
18274 .byte 68,15,40,200 // movaps %xmm0,%xmm9
18275 .byte 15,88,196 // addps %xmm4,%xmm0
18276 .byte 68,15,89,207 // mulps %xmm7,%xmm9
18277 .byte 15,40,203 // movaps %xmm3,%xmm1
18278 .byte 15,89,204 // mulps %xmm4,%xmm1
18279 .byte 68,15,93,201 // minps %xmm1,%xmm9
18280 .byte 69,15,88,201 // addps %xmm9,%xmm9
18281 .byte 65,15,92,193 // subps %xmm9,%xmm0
18282 .byte 65,15,40,200 // movaps %xmm8,%xmm1
18283 .byte 15,88,205 // addps %xmm5,%xmm1
18284 .byte 68,15,89,199 // mulps %xmm7,%xmm8
18285 .byte 68,15,40,203 // movaps %xmm3,%xmm9
18286 .byte 68,15,89,205 // mulps %xmm5,%xmm9
18287 .byte 69,15,93,193 // minps %xmm9,%xmm8
18288 .byte 69,15,88,192 // addps %xmm8,%xmm8
18289 .byte 65,15,92,200 // subps %xmm8,%xmm1
18290 .byte 68,15,40,194 // movaps %xmm2,%xmm8
18291 .byte 68,15,88,198 // addps %xmm6,%xmm8
18292 .byte 15,89,215 // mulps %xmm7,%xmm2
18293 .byte 68,15,40,203 // movaps %xmm3,%xmm9
18294 .byte 68,15,89,206 // mulps %xmm6,%xmm9
18295 .byte 65,15,93,209 // minps %xmm9,%xmm2
18296 .byte 15,88,210 // addps %xmm2,%xmm2
18297 .byte 68,15,92,194 // subps %xmm2,%xmm8
18298 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18299 .byte 102,15,110,208 // movd %eax,%xmm2
18300 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
18301 .byte 15,92,211 // subps %xmm3,%xmm2
18302 .byte 15,89,215 // mulps %xmm7,%xmm2
18303 .byte 15,88,218 // addps %xmm2,%xmm3
18304 .byte 72,173 // lods %ds:(%rsi),%rax
18305 .byte 65,15,40,208 // movaps %xmm8,%xmm2
18306 .byte 255,224 // jmpq *%rax
18307
18308HIDDEN _sk_exclusion_sse41
18309.globl _sk_exclusion_sse41
Mike Klein86714282017-04-13 17:37:38 -040018310FUNCTION(_sk_exclusion_sse41)
Mike Klein66b09ab2017-03-31 10:29:40 -040018311_sk_exclusion_sse41:
18312 .byte 68,15,40,193 // movaps %xmm1,%xmm8
18313 .byte 15,40,200 // movaps %xmm0,%xmm1
18314 .byte 15,88,196 // addps %xmm4,%xmm0
18315 .byte 15,89,204 // mulps %xmm4,%xmm1
18316 .byte 15,88,201 // addps %xmm1,%xmm1
18317 .byte 15,92,193 // subps %xmm1,%xmm0
18318 .byte 65,15,40,200 // movaps %xmm8,%xmm1
18319 .byte 15,88,205 // addps %xmm5,%xmm1
18320 .byte 68,15,89,197 // mulps %xmm5,%xmm8
18321 .byte 69,15,88,192 // addps %xmm8,%xmm8
18322 .byte 65,15,92,200 // subps %xmm8,%xmm1
18323 .byte 68,15,40,194 // movaps %xmm2,%xmm8
18324 .byte 68,15,88,198 // addps %xmm6,%xmm8
18325 .byte 15,89,214 // mulps %xmm6,%xmm2
18326 .byte 15,88,210 // addps %xmm2,%xmm2
18327 .byte 68,15,92,194 // subps %xmm2,%xmm8
18328 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18329 .byte 102,15,110,208 // movd %eax,%xmm2
18330 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
18331 .byte 15,92,211 // subps %xmm3,%xmm2
18332 .byte 15,89,215 // mulps %xmm7,%xmm2
18333 .byte 15,88,218 // addps %xmm2,%xmm3
18334 .byte 72,173 // lods %ds:(%rsi),%rax
18335 .byte 65,15,40,208 // movaps %xmm8,%xmm2
18336 .byte 255,224 // jmpq *%rax
18337
Mike Klein61b84162017-03-31 11:48:14 -040018338HIDDEN _sk_colorburn_sse41
18339.globl _sk_colorburn_sse41
Mike Klein86714282017-04-13 17:37:38 -040018340FUNCTION(_sk_colorburn_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040018341_sk_colorburn_sse41:
18342 .byte 68,15,40,200 // movaps %xmm0,%xmm9
18343 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18344 .byte 102,68,15,110,208 // movd %eax,%xmm10
18345 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
18346 .byte 69,15,40,218 // movaps %xmm10,%xmm11
18347 .byte 68,15,92,223 // subps %xmm7,%xmm11
18348 .byte 69,15,40,227 // movaps %xmm11,%xmm12
18349 .byte 69,15,89,225 // mulps %xmm9,%xmm12
18350 .byte 69,15,87,192 // xorps %xmm8,%xmm8
18351 .byte 15,40,199 // movaps %xmm7,%xmm0
18352 .byte 15,92,196 // subps %xmm4,%xmm0
18353 .byte 15,89,195 // mulps %xmm3,%xmm0
18354 .byte 65,15,94,193 // divps %xmm9,%xmm0
18355 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18356 .byte 68,15,93,232 // minps %xmm0,%xmm13
18357 .byte 68,15,40,247 // movaps %xmm7,%xmm14
18358 .byte 69,15,92,245 // subps %xmm13,%xmm14
18359 .byte 65,15,40,193 // movaps %xmm9,%xmm0
18360 .byte 65,15,194,192,0 // cmpeqps %xmm8,%xmm0
18361 .byte 68,15,92,211 // subps %xmm3,%xmm10
18362 .byte 68,15,89,243 // mulps %xmm3,%xmm14
18363 .byte 69,15,88,244 // addps %xmm12,%xmm14
18364 .byte 102,69,15,56,20,241 // blendvps %xmm0,%xmm9,%xmm14
18365 .byte 69,15,40,202 // movaps %xmm10,%xmm9
18366 .byte 68,15,89,204 // mulps %xmm4,%xmm9
18367 .byte 68,15,88,228 // addps %xmm4,%xmm12
18368 .byte 15,40,196 // movaps %xmm4,%xmm0
18369 .byte 15,194,199,0 // cmpeqps %xmm7,%xmm0
18370 .byte 69,15,88,206 // addps %xmm14,%xmm9
18371 .byte 102,69,15,56,20,204 // blendvps %xmm0,%xmm12,%xmm9
18372 .byte 69,15,40,227 // movaps %xmm11,%xmm12
18373 .byte 68,15,89,225 // mulps %xmm1,%xmm12
18374 .byte 15,40,199 // movaps %xmm7,%xmm0
18375 .byte 15,92,197 // subps %xmm5,%xmm0
18376 .byte 15,89,195 // mulps %xmm3,%xmm0
18377 .byte 15,94,193 // divps %xmm1,%xmm0
18378 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18379 .byte 68,15,93,232 // minps %xmm0,%xmm13
18380 .byte 68,15,40,247 // movaps %xmm7,%xmm14
18381 .byte 69,15,92,245 // subps %xmm13,%xmm14
18382 .byte 15,40,193 // movaps %xmm1,%xmm0
18383 .byte 65,15,194,192,0 // cmpeqps %xmm8,%xmm0
18384 .byte 68,15,89,243 // mulps %xmm3,%xmm14
18385 .byte 69,15,88,244 // addps %xmm12,%xmm14
18386 .byte 102,68,15,56,20,241 // blendvps %xmm0,%xmm1,%xmm14
18387 .byte 65,15,40,202 // movaps %xmm10,%xmm1
18388 .byte 15,89,205 // mulps %xmm5,%xmm1
18389 .byte 68,15,88,229 // addps %xmm5,%xmm12
18390 .byte 65,15,88,206 // addps %xmm14,%xmm1
18391 .byte 15,40,197 // movaps %xmm5,%xmm0
18392 .byte 15,194,199,0 // cmpeqps %xmm7,%xmm0
18393 .byte 102,65,15,56,20,204 // blendvps %xmm0,%xmm12,%xmm1
18394 .byte 15,40,199 // movaps %xmm7,%xmm0
18395 .byte 15,92,198 // subps %xmm6,%xmm0
18396 .byte 15,89,195 // mulps %xmm3,%xmm0
18397 .byte 15,94,194 // divps %xmm2,%xmm0
18398 .byte 68,15,40,231 // movaps %xmm7,%xmm12
18399 .byte 68,15,93,224 // minps %xmm0,%xmm12
18400 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18401 .byte 69,15,92,236 // subps %xmm12,%xmm13
18402 .byte 68,15,89,218 // mulps %xmm2,%xmm11
18403 .byte 68,15,194,194,0 // cmpeqps %xmm2,%xmm8
18404 .byte 68,15,89,235 // mulps %xmm3,%xmm13
18405 .byte 69,15,88,235 // addps %xmm11,%xmm13
18406 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18407 .byte 102,68,15,56,20,234 // blendvps %xmm0,%xmm2,%xmm13
18408 .byte 68,15,88,222 // addps %xmm6,%xmm11
18409 .byte 65,15,40,210 // movaps %xmm10,%xmm2
18410 .byte 15,89,214 // mulps %xmm6,%xmm2
18411 .byte 65,15,88,213 // addps %xmm13,%xmm2
18412 .byte 15,40,198 // movaps %xmm6,%xmm0
18413 .byte 15,194,199,0 // cmpeqps %xmm7,%xmm0
18414 .byte 102,65,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm2
18415 .byte 68,15,89,215 // mulps %xmm7,%xmm10
18416 .byte 65,15,88,218 // addps %xmm10,%xmm3
18417 .byte 72,173 // lods %ds:(%rsi),%rax
18418 .byte 65,15,40,193 // movaps %xmm9,%xmm0
18419 .byte 255,224 // jmpq *%rax
18420
18421HIDDEN _sk_colordodge_sse41
18422.globl _sk_colordodge_sse41
Mike Klein86714282017-04-13 17:37:38 -040018423FUNCTION(_sk_colordodge_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040018424_sk_colordodge_sse41:
18425 .byte 68,15,40,192 // movaps %xmm0,%xmm8
18426 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18427 .byte 102,68,15,110,208 // movd %eax,%xmm10
18428 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
18429 .byte 69,15,40,218 // movaps %xmm10,%xmm11
18430 .byte 68,15,92,223 // subps %xmm7,%xmm11
18431 .byte 69,15,40,227 // movaps %xmm11,%xmm12
18432 .byte 69,15,89,224 // mulps %xmm8,%xmm12
18433 .byte 68,15,40,203 // movaps %xmm3,%xmm9
18434 .byte 68,15,89,204 // mulps %xmm4,%xmm9
18435 .byte 15,40,195 // movaps %xmm3,%xmm0
18436 .byte 65,15,92,192 // subps %xmm8,%xmm0
18437 .byte 68,15,94,200 // divps %xmm0,%xmm9
18438 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18439 .byte 68,15,40,247 // movaps %xmm7,%xmm14
18440 .byte 69,15,93,241 // minps %xmm9,%xmm14
18441 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18442 .byte 15,194,195,0 // cmpeqps %xmm3,%xmm0
18443 .byte 68,15,89,243 // mulps %xmm3,%xmm14
18444 .byte 69,15,88,244 // addps %xmm12,%xmm14
18445 .byte 102,69,15,56,20,240 // blendvps %xmm0,%xmm8,%xmm14
18446 .byte 69,15,87,201 // xorps %xmm9,%xmm9
18447 .byte 68,15,92,211 // subps %xmm3,%xmm10
18448 .byte 69,15,40,194 // movaps %xmm10,%xmm8
18449 .byte 68,15,89,196 // mulps %xmm4,%xmm8
18450 .byte 68,15,88,228 // addps %xmm4,%xmm12
18451 .byte 69,15,88,198 // addps %xmm14,%xmm8
18452 .byte 15,40,196 // movaps %xmm4,%xmm0
18453 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
18454 .byte 102,69,15,56,20,196 // blendvps %xmm0,%xmm12,%xmm8
18455 .byte 68,15,40,227 // movaps %xmm3,%xmm12
18456 .byte 68,15,89,229 // mulps %xmm5,%xmm12
18457 .byte 15,40,195 // movaps %xmm3,%xmm0
18458 .byte 15,92,193 // subps %xmm1,%xmm0
18459 .byte 68,15,94,224 // divps %xmm0,%xmm12
18460 .byte 69,15,40,243 // movaps %xmm11,%xmm14
18461 .byte 68,15,89,241 // mulps %xmm1,%xmm14
18462 .byte 69,15,93,236 // minps %xmm12,%xmm13
18463 .byte 15,40,193 // movaps %xmm1,%xmm0
18464 .byte 15,194,195,0 // cmpeqps %xmm3,%xmm0
18465 .byte 68,15,89,235 // mulps %xmm3,%xmm13
18466 .byte 69,15,88,238 // addps %xmm14,%xmm13
18467 .byte 102,68,15,56,20,233 // blendvps %xmm0,%xmm1,%xmm13
18468 .byte 65,15,40,202 // movaps %xmm10,%xmm1
18469 .byte 15,89,205 // mulps %xmm5,%xmm1
18470 .byte 68,15,88,245 // addps %xmm5,%xmm14
18471 .byte 65,15,88,205 // addps %xmm13,%xmm1
18472 .byte 15,40,197 // movaps %xmm5,%xmm0
18473 .byte 65,15,194,193,0 // cmpeqps %xmm9,%xmm0
18474 .byte 102,65,15,56,20,206 // blendvps %xmm0,%xmm14,%xmm1
18475 .byte 68,15,40,227 // movaps %xmm3,%xmm12
18476 .byte 68,15,89,230 // mulps %xmm6,%xmm12
18477 .byte 15,40,195 // movaps %xmm3,%xmm0
18478 .byte 15,92,194 // subps %xmm2,%xmm0
18479 .byte 68,15,94,224 // divps %xmm0,%xmm12
18480 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18481 .byte 68,15,89,218 // mulps %xmm2,%xmm11
18482 .byte 69,15,93,236 // minps %xmm12,%xmm13
18483 .byte 15,40,194 // movaps %xmm2,%xmm0
18484 .byte 15,194,195,0 // cmpeqps %xmm3,%xmm0
18485 .byte 68,15,89,235 // mulps %xmm3,%xmm13
18486 .byte 69,15,88,235 // addps %xmm11,%xmm13
18487 .byte 102,68,15,56,20,234 // blendvps %xmm0,%xmm2,%xmm13
18488 .byte 65,15,40,210 // movaps %xmm10,%xmm2
18489 .byte 15,89,214 // mulps %xmm6,%xmm2
18490 .byte 65,15,88,213 // addps %xmm13,%xmm2
18491 .byte 68,15,194,206,0 // cmpeqps %xmm6,%xmm9
18492 .byte 68,15,88,222 // addps %xmm6,%xmm11
18493 .byte 65,15,40,193 // movaps %xmm9,%xmm0
18494 .byte 102,65,15,56,20,211 // blendvps %xmm0,%xmm11,%xmm2
18495 .byte 68,15,89,215 // mulps %xmm7,%xmm10
18496 .byte 65,15,88,218 // addps %xmm10,%xmm3
18497 .byte 72,173 // lods %ds:(%rsi),%rax
18498 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18499 .byte 255,224 // jmpq *%rax
18500
18501HIDDEN _sk_hardlight_sse41
18502.globl _sk_hardlight_sse41
Mike Klein86714282017-04-13 17:37:38 -040018503FUNCTION(_sk_hardlight_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040018504_sk_hardlight_sse41:
Mike Klein15bf6782017-03-31 12:21:46 -040018505 .byte 15,41,116,36,232 // movaps %xmm6,-0x18(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040018506 .byte 68,15,40,229 // movaps %xmm5,%xmm12
18507 .byte 15,40,244 // movaps %xmm4,%xmm6
18508 .byte 15,40,227 // movaps %xmm3,%xmm4
18509 .byte 15,40,234 // movaps %xmm2,%xmm5
18510 .byte 68,15,40,200 // movaps %xmm0,%xmm9
18511 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18512 .byte 102,68,15,110,208 // movd %eax,%xmm10
18513 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
18514 .byte 65,15,40,210 // movaps %xmm10,%xmm2
18515 .byte 15,92,215 // subps %xmm7,%xmm2
18516 .byte 15,40,194 // movaps %xmm2,%xmm0
18517 .byte 65,15,89,193 // mulps %xmm9,%xmm0
18518 .byte 68,15,92,212 // subps %xmm4,%xmm10
18519 .byte 69,15,40,194 // movaps %xmm10,%xmm8
18520 .byte 68,15,89,198 // mulps %xmm6,%xmm8
18521 .byte 68,15,88,192 // addps %xmm0,%xmm8
18522 .byte 68,15,40,252 // movaps %xmm4,%xmm15
18523 .byte 69,15,92,249 // subps %xmm9,%xmm15
18524 .byte 15,89,223 // mulps %xmm7,%xmm3
18525 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18526 .byte 68,15,40,247 // movaps %xmm7,%xmm14
18527 .byte 15,40,199 // movaps %xmm7,%xmm0
18528 .byte 15,92,198 // subps %xmm6,%xmm0
18529 .byte 65,15,89,199 // mulps %xmm15,%xmm0
18530 .byte 15,88,192 // addps %xmm0,%xmm0
18531 .byte 68,15,40,251 // movaps %xmm3,%xmm15
18532 .byte 68,15,92,248 // subps %xmm0,%xmm15
18533 .byte 65,15,40,193 // movaps %xmm9,%xmm0
18534 .byte 15,88,192 // addps %xmm0,%xmm0
18535 .byte 15,194,196,2 // cmpleps %xmm4,%xmm0
18536 .byte 68,15,89,206 // mulps %xmm6,%xmm9
18537 .byte 69,15,88,201 // addps %xmm9,%xmm9
18538 .byte 102,69,15,56,20,249 // blendvps %xmm0,%xmm9,%xmm15
18539 .byte 68,15,40,218 // movaps %xmm2,%xmm11
18540 .byte 68,15,89,217 // mulps %xmm1,%xmm11
18541 .byte 15,40,196 // movaps %xmm4,%xmm0
18542 .byte 15,92,193 // subps %xmm1,%xmm0
18543 .byte 69,15,40,204 // movaps %xmm12,%xmm9
18544 .byte 69,15,92,233 // subps %xmm9,%xmm13
18545 .byte 68,15,89,232 // mulps %xmm0,%xmm13
18546 .byte 69,15,88,237 // addps %xmm13,%xmm13
18547 .byte 68,15,40,227 // movaps %xmm3,%xmm12
18548 .byte 69,15,92,229 // subps %xmm13,%xmm12
18549 .byte 15,40,193 // movaps %xmm1,%xmm0
18550 .byte 15,88,192 // addps %xmm0,%xmm0
18551 .byte 15,194,196,2 // cmpleps %xmm4,%xmm0
18552 .byte 65,15,89,201 // mulps %xmm9,%xmm1
18553 .byte 69,15,40,233 // movaps %xmm9,%xmm13
18554 .byte 15,88,201 // addps %xmm1,%xmm1
18555 .byte 102,68,15,56,20,225 // blendvps %xmm0,%xmm1,%xmm12
18556 .byte 65,15,40,202 // movaps %xmm10,%xmm1
18557 .byte 69,15,40,202 // movaps %xmm10,%xmm9
18558 .byte 68,15,89,215 // mulps %xmm7,%xmm10
18559 .byte 69,15,88,199 // addps %xmm15,%xmm8
18560 .byte 65,15,89,205 // mulps %xmm13,%xmm1
18561 .byte 65,15,88,203 // addps %xmm11,%xmm1
18562 .byte 65,15,88,204 // addps %xmm12,%xmm1
18563 .byte 15,89,213 // mulps %xmm5,%xmm2
Mike Klein15bf6782017-03-31 12:21:46 -040018564 .byte 68,15,40,92,36,232 // movaps -0x18(%rsp),%xmm11
Mike Klein61b84162017-03-31 11:48:14 -040018565 .byte 69,15,89,203 // mulps %xmm11,%xmm9
18566 .byte 68,15,88,202 // addps %xmm2,%xmm9
18567 .byte 15,40,197 // movaps %xmm5,%xmm0
18568 .byte 15,88,192 // addps %xmm0,%xmm0
18569 .byte 15,194,196,2 // cmpleps %xmm4,%xmm0
18570 .byte 15,40,212 // movaps %xmm4,%xmm2
18571 .byte 15,92,213 // subps %xmm5,%xmm2
18572 .byte 65,15,89,235 // mulps %xmm11,%xmm5
18573 .byte 15,88,237 // addps %xmm5,%xmm5
18574 .byte 69,15,92,243 // subps %xmm11,%xmm14
18575 .byte 68,15,89,242 // mulps %xmm2,%xmm14
18576 .byte 69,15,88,246 // addps %xmm14,%xmm14
18577 .byte 65,15,92,222 // subps %xmm14,%xmm3
18578 .byte 102,15,56,20,221 // blendvps %xmm0,%xmm5,%xmm3
18579 .byte 68,15,88,203 // addps %xmm3,%xmm9
18580 .byte 65,15,88,226 // addps %xmm10,%xmm4
18581 .byte 72,173 // lods %ds:(%rsi),%rax
18582 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18583 .byte 65,15,40,209 // movaps %xmm9,%xmm2
18584 .byte 15,40,220 // movaps %xmm4,%xmm3
18585 .byte 15,40,230 // movaps %xmm6,%xmm4
18586 .byte 65,15,40,237 // movaps %xmm13,%xmm5
18587 .byte 65,15,40,243 // movaps %xmm11,%xmm6
Mike Klein61b84162017-03-31 11:48:14 -040018588 .byte 255,224 // jmpq *%rax
18589
18590HIDDEN _sk_overlay_sse41
18591.globl _sk_overlay_sse41
Mike Klein86714282017-04-13 17:37:38 -040018592FUNCTION(_sk_overlay_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040018593_sk_overlay_sse41:
18594 .byte 68,15,40,201 // movaps %xmm1,%xmm9
18595 .byte 68,15,40,240 // movaps %xmm0,%xmm14
18596 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18597 .byte 102,68,15,110,208 // movd %eax,%xmm10
18598 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
18599 .byte 69,15,40,218 // movaps %xmm10,%xmm11
18600 .byte 68,15,92,223 // subps %xmm7,%xmm11
18601 .byte 65,15,40,195 // movaps %xmm11,%xmm0
18602 .byte 65,15,89,198 // mulps %xmm14,%xmm0
18603 .byte 68,15,92,211 // subps %xmm3,%xmm10
18604 .byte 69,15,40,194 // movaps %xmm10,%xmm8
18605 .byte 68,15,89,196 // mulps %xmm4,%xmm8
18606 .byte 68,15,88,192 // addps %xmm0,%xmm8
18607 .byte 68,15,40,235 // movaps %xmm3,%xmm13
18608 .byte 69,15,92,238 // subps %xmm14,%xmm13
18609 .byte 68,15,89,244 // mulps %xmm4,%xmm14
18610 .byte 15,40,207 // movaps %xmm7,%xmm1
18611 .byte 15,92,204 // subps %xmm4,%xmm1
18612 .byte 15,40,196 // movaps %xmm4,%xmm0
18613 .byte 15,88,192 // addps %xmm0,%xmm0
18614 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18615 .byte 69,15,88,246 // addps %xmm14,%xmm14
18616 .byte 68,15,40,227 // movaps %xmm3,%xmm12
18617 .byte 68,15,89,231 // mulps %xmm7,%xmm12
18618 .byte 65,15,89,205 // mulps %xmm13,%xmm1
18619 .byte 15,88,201 // addps %xmm1,%xmm1
18620 .byte 69,15,40,236 // movaps %xmm12,%xmm13
18621 .byte 68,15,92,233 // subps %xmm1,%xmm13
18622 .byte 102,69,15,56,20,238 // blendvps %xmm0,%xmm14,%xmm13
18623 .byte 69,15,88,197 // addps %xmm13,%xmm8
18624 .byte 65,15,40,195 // movaps %xmm11,%xmm0
18625 .byte 65,15,89,193 // mulps %xmm9,%xmm0
18626 .byte 65,15,40,202 // movaps %xmm10,%xmm1
18627 .byte 15,89,205 // mulps %xmm5,%xmm1
18628 .byte 15,88,200 // addps %xmm0,%xmm1
18629 .byte 68,15,40,235 // movaps %xmm3,%xmm13
18630 .byte 69,15,92,233 // subps %xmm9,%xmm13
18631 .byte 68,15,89,205 // mulps %xmm5,%xmm9
18632 .byte 68,15,40,247 // movaps %xmm7,%xmm14
18633 .byte 68,15,92,245 // subps %xmm5,%xmm14
18634 .byte 15,40,197 // movaps %xmm5,%xmm0
18635 .byte 15,88,192 // addps %xmm0,%xmm0
18636 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18637 .byte 69,15,88,201 // addps %xmm9,%xmm9
18638 .byte 69,15,89,245 // mulps %xmm13,%xmm14
18639 .byte 69,15,88,246 // addps %xmm14,%xmm14
18640 .byte 69,15,40,236 // movaps %xmm12,%xmm13
18641 .byte 69,15,92,238 // subps %xmm14,%xmm13
18642 .byte 102,69,15,56,20,233 // blendvps %xmm0,%xmm9,%xmm13
18643 .byte 65,15,88,205 // addps %xmm13,%xmm1
18644 .byte 68,15,89,218 // mulps %xmm2,%xmm11
18645 .byte 69,15,40,202 // movaps %xmm10,%xmm9
18646 .byte 68,15,89,206 // mulps %xmm6,%xmm9
18647 .byte 69,15,88,203 // addps %xmm11,%xmm9
18648 .byte 68,15,40,219 // movaps %xmm3,%xmm11
18649 .byte 68,15,92,218 // subps %xmm2,%xmm11
18650 .byte 15,89,214 // mulps %xmm6,%xmm2
18651 .byte 68,15,40,239 // movaps %xmm7,%xmm13
18652 .byte 68,15,92,238 // subps %xmm6,%xmm13
18653 .byte 15,40,198 // movaps %xmm6,%xmm0
18654 .byte 15,88,192 // addps %xmm0,%xmm0
18655 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18656 .byte 15,88,210 // addps %xmm2,%xmm2
18657 .byte 69,15,89,235 // mulps %xmm11,%xmm13
18658 .byte 69,15,88,237 // addps %xmm13,%xmm13
18659 .byte 69,15,92,229 // subps %xmm13,%xmm12
18660 .byte 102,68,15,56,20,226 // blendvps %xmm0,%xmm2,%xmm12
18661 .byte 69,15,88,204 // addps %xmm12,%xmm9
18662 .byte 68,15,89,215 // mulps %xmm7,%xmm10
18663 .byte 65,15,88,218 // addps %xmm10,%xmm3
18664 .byte 72,173 // lods %ds:(%rsi),%rax
18665 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18666 .byte 65,15,40,209 // movaps %xmm9,%xmm2
18667 .byte 255,224 // jmpq *%rax
18668
18669HIDDEN _sk_softlight_sse41
18670.globl _sk_softlight_sse41
Mike Klein86714282017-04-13 17:37:38 -040018671FUNCTION(_sk_softlight_sse41)
Mike Klein61b84162017-03-31 11:48:14 -040018672_sk_softlight_sse41:
Mike Klein15bf6782017-03-31 12:21:46 -040018673 .byte 15,41,116,36,216 // movaps %xmm6,-0x28(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040018674 .byte 15,40,244 // movaps %xmm4,%xmm6
Mike Klein15bf6782017-03-31 12:21:46 -040018675 .byte 15,41,84,36,232 // movaps %xmm2,-0x18(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040018676 .byte 68,15,40,225 // movaps %xmm1,%xmm12
18677 .byte 68,15,40,192 // movaps %xmm0,%xmm8
18678 .byte 15,87,228 // xorps %xmm4,%xmm4
18679 .byte 15,194,231,1 // cmpltps %xmm7,%xmm4
18680 .byte 15,40,198 // movaps %xmm6,%xmm0
18681 .byte 15,94,199 // divps %xmm7,%xmm0
18682 .byte 15,84,196 // andps %xmm4,%xmm0
18683 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18684 .byte 102,15,110,200 // movd %eax,%xmm1
18685 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
18686 .byte 68,15,40,209 // movaps %xmm1,%xmm10
18687 .byte 68,15,92,208 // subps %xmm0,%xmm10
18688 .byte 68,15,40,240 // movaps %xmm0,%xmm14
18689 .byte 68,15,40,248 // movaps %xmm0,%xmm15
18690 .byte 15,82,208 // rsqrtps %xmm0,%xmm2
18691 .byte 68,15,83,218 // rcpps %xmm2,%xmm11
18692 .byte 68,15,92,216 // subps %xmm0,%xmm11
18693 .byte 15,88,192 // addps %xmm0,%xmm0
18694 .byte 15,88,192 // addps %xmm0,%xmm0
18695 .byte 15,40,208 // movaps %xmm0,%xmm2
18696 .byte 15,89,210 // mulps %xmm2,%xmm2
18697 .byte 15,88,208 // addps %xmm0,%xmm2
18698 .byte 69,15,40,200 // movaps %xmm8,%xmm9
18699 .byte 69,15,88,201 // addps %xmm9,%xmm9
18700 .byte 68,15,92,241 // subps %xmm1,%xmm14
18701 .byte 68,15,89,242 // mulps %xmm2,%xmm14
18702 .byte 184,0,0,224,64 // mov $0x40e00000,%eax
18703 .byte 102,68,15,110,232 // movd %eax,%xmm13
18704 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
18705 .byte 69,15,89,253 // mulps %xmm13,%xmm15
18706 .byte 69,15,88,254 // addps %xmm14,%xmm15
18707 .byte 15,40,198 // movaps %xmm6,%xmm0
18708 .byte 15,88,192 // addps %xmm0,%xmm0
18709 .byte 15,88,192 // addps %xmm0,%xmm0
18710 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18711 .byte 102,69,15,56,20,223 // blendvps %xmm0,%xmm15,%xmm11
18712 .byte 65,15,40,193 // movaps %xmm9,%xmm0
18713 .byte 15,92,195 // subps %xmm3,%xmm0
18714 .byte 68,15,89,208 // mulps %xmm0,%xmm10
18715 .byte 68,15,88,211 // addps %xmm3,%xmm10
18716 .byte 68,15,89,214 // mulps %xmm6,%xmm10
18717 .byte 15,40,211 // movaps %xmm3,%xmm2
18718 .byte 15,89,214 // mulps %xmm6,%xmm2
18719 .byte 15,89,199 // mulps %xmm7,%xmm0
18720 .byte 68,15,89,216 // mulps %xmm0,%xmm11
18721 .byte 68,15,88,218 // addps %xmm2,%xmm11
18722 .byte 68,15,194,203,2 // cmpleps %xmm3,%xmm9
18723 .byte 65,15,40,193 // movaps %xmm9,%xmm0
18724 .byte 102,69,15,56,20,218 // blendvps %xmm0,%xmm10,%xmm11
18725 .byte 68,15,40,213 // movaps %xmm5,%xmm10
18726 .byte 68,15,94,215 // divps %xmm7,%xmm10
18727 .byte 68,15,84,212 // andps %xmm4,%xmm10
18728 .byte 68,15,40,201 // movaps %xmm1,%xmm9
18729 .byte 69,15,92,202 // subps %xmm10,%xmm9
18730 .byte 65,15,40,210 // movaps %xmm10,%xmm2
18731 .byte 15,88,210 // addps %xmm2,%xmm2
18732 .byte 15,88,210 // addps %xmm2,%xmm2
18733 .byte 15,40,194 // movaps %xmm2,%xmm0
18734 .byte 15,89,192 // mulps %xmm0,%xmm0
18735 .byte 15,88,194 // addps %xmm2,%xmm0
18736 .byte 65,15,40,210 // movaps %xmm10,%xmm2
18737 .byte 15,92,209 // subps %xmm1,%xmm2
18738 .byte 15,89,208 // mulps %xmm0,%xmm2
18739 .byte 65,15,82,194 // rsqrtps %xmm10,%xmm0
18740 .byte 68,15,83,240 // rcpps %xmm0,%xmm14
18741 .byte 69,15,92,242 // subps %xmm10,%xmm14
18742 .byte 69,15,89,213 // mulps %xmm13,%xmm10
18743 .byte 68,15,88,210 // addps %xmm2,%xmm10
18744 .byte 15,40,197 // movaps %xmm5,%xmm0
18745 .byte 15,88,192 // addps %xmm0,%xmm0
18746 .byte 15,88,192 // addps %xmm0,%xmm0
18747 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18748 .byte 102,69,15,56,20,242 // blendvps %xmm0,%xmm10,%xmm14
18749 .byte 65,15,40,196 // movaps %xmm12,%xmm0
18750 .byte 15,88,192 // addps %xmm0,%xmm0
18751 .byte 15,40,208 // movaps %xmm0,%xmm2
18752 .byte 15,92,211 // subps %xmm3,%xmm2
18753 .byte 68,15,89,202 // mulps %xmm2,%xmm9
18754 .byte 68,15,88,203 // addps %xmm3,%xmm9
Mike Klein15bf6782017-03-31 12:21:46 -040018755 .byte 15,41,108,36,200 // movaps %xmm5,-0x38(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040018756 .byte 68,15,89,205 // mulps %xmm5,%xmm9
18757 .byte 15,89,215 // mulps %xmm7,%xmm2
18758 .byte 68,15,89,242 // mulps %xmm2,%xmm14
18759 .byte 15,40,211 // movaps %xmm3,%xmm2
18760 .byte 15,89,213 // mulps %xmm5,%xmm2
18761 .byte 68,15,88,242 // addps %xmm2,%xmm14
18762 .byte 68,15,40,249 // movaps %xmm1,%xmm15
18763 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
18764 .byte 102,69,15,56,20,241 // blendvps %xmm0,%xmm9,%xmm14
18765 .byte 68,15,40,209 // movaps %xmm1,%xmm10
Mike Klein15bf6782017-03-31 12:21:46 -040018766 .byte 15,40,108,36,216 // movaps -0x28(%rsp),%xmm5
Mike Klein61b84162017-03-31 11:48:14 -040018767 .byte 15,40,197 // movaps %xmm5,%xmm0
18768 .byte 15,94,199 // divps %xmm7,%xmm0
18769 .byte 15,84,196 // andps %xmm4,%xmm0
18770 .byte 15,40,208 // movaps %xmm0,%xmm2
18771 .byte 15,92,209 // subps %xmm1,%xmm2
18772 .byte 15,92,200 // subps %xmm0,%xmm1
18773 .byte 68,15,89,232 // mulps %xmm0,%xmm13
18774 .byte 15,82,224 // rsqrtps %xmm0,%xmm4
18775 .byte 68,15,83,204 // rcpps %xmm4,%xmm9
18776 .byte 68,15,92,200 // subps %xmm0,%xmm9
18777 .byte 15,88,192 // addps %xmm0,%xmm0
18778 .byte 15,88,192 // addps %xmm0,%xmm0
18779 .byte 15,40,224 // movaps %xmm0,%xmm4
18780 .byte 15,89,228 // mulps %xmm4,%xmm4
18781 .byte 15,88,224 // addps %xmm0,%xmm4
18782 .byte 15,89,226 // mulps %xmm2,%xmm4
18783 .byte 68,15,88,236 // addps %xmm4,%xmm13
18784 .byte 15,40,197 // movaps %xmm5,%xmm0
18785 .byte 15,88,192 // addps %xmm0,%xmm0
18786 .byte 15,88,192 // addps %xmm0,%xmm0
18787 .byte 15,194,199,2 // cmpleps %xmm7,%xmm0
18788 .byte 102,69,15,56,20,205 // blendvps %xmm0,%xmm13,%xmm9
Mike Klein15bf6782017-03-31 12:21:46 -040018789 .byte 68,15,40,108,36,232 // movaps -0x18(%rsp),%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040018790 .byte 65,15,40,197 // movaps %xmm13,%xmm0
18791 .byte 15,88,192 // addps %xmm0,%xmm0
18792 .byte 15,40,208 // movaps %xmm0,%xmm2
18793 .byte 15,92,211 // subps %xmm3,%xmm2
18794 .byte 15,89,202 // mulps %xmm2,%xmm1
18795 .byte 15,89,215 // mulps %xmm7,%xmm2
18796 .byte 68,15,89,202 // mulps %xmm2,%xmm9
18797 .byte 15,40,211 // movaps %xmm3,%xmm2
18798 .byte 15,89,213 // mulps %xmm5,%xmm2
18799 .byte 68,15,88,202 // addps %xmm2,%xmm9
18800 .byte 15,88,203 // addps %xmm3,%xmm1
18801 .byte 15,89,205 // mulps %xmm5,%xmm1
18802 .byte 15,40,213 // movaps %xmm5,%xmm2
18803 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
18804 .byte 102,68,15,56,20,201 // blendvps %xmm0,%xmm1,%xmm9
18805 .byte 68,15,92,255 // subps %xmm7,%xmm15
18806 .byte 69,15,89,199 // mulps %xmm15,%xmm8
18807 .byte 69,15,89,231 // mulps %xmm15,%xmm12
18808 .byte 69,15,89,253 // mulps %xmm13,%xmm15
18809 .byte 68,15,92,211 // subps %xmm3,%xmm10
18810 .byte 65,15,40,194 // movaps %xmm10,%xmm0
18811 .byte 15,89,198 // mulps %xmm6,%xmm0
18812 .byte 68,15,88,192 // addps %xmm0,%xmm8
18813 .byte 69,15,88,195 // addps %xmm11,%xmm8
18814 .byte 65,15,40,194 // movaps %xmm10,%xmm0
Mike Klein15bf6782017-03-31 12:21:46 -040018815 .byte 15,40,108,36,200 // movaps -0x38(%rsp),%xmm5
Mike Klein61b84162017-03-31 11:48:14 -040018816 .byte 15,89,197 // mulps %xmm5,%xmm0
18817 .byte 68,15,88,224 // addps %xmm0,%xmm12
18818 .byte 69,15,88,230 // addps %xmm14,%xmm12
18819 .byte 65,15,40,194 // movaps %xmm10,%xmm0
18820 .byte 15,89,194 // mulps %xmm2,%xmm0
18821 .byte 65,15,88,199 // addps %xmm15,%xmm0
18822 .byte 68,15,88,200 // addps %xmm0,%xmm9
18823 .byte 68,15,89,215 // mulps %xmm7,%xmm10
18824 .byte 65,15,88,218 // addps %xmm10,%xmm3
18825 .byte 72,173 // lods %ds:(%rsi),%rax
18826 .byte 15,40,230 // movaps %xmm6,%xmm4
18827 .byte 15,40,242 // movaps %xmm2,%xmm6
18828 .byte 65,15,40,192 // movaps %xmm8,%xmm0
18829 .byte 65,15,40,204 // movaps %xmm12,%xmm1
18830 .byte 65,15,40,209 // movaps %xmm9,%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040018831 .byte 255,224 // jmpq *%rax
18832
Mike Klein7c4af542017-03-29 18:21:14 -040018833HIDDEN _sk_clamp_0_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018834.globl _sk_clamp_0_sse41
Mike Klein86714282017-04-13 17:37:38 -040018835FUNCTION(_sk_clamp_0_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018836_sk_clamp_0_sse41:
18837 .byte 69,15,87,192 // xorps %xmm8,%xmm8
18838 .byte 65,15,95,192 // maxps %xmm8,%xmm0
18839 .byte 65,15,95,200 // maxps %xmm8,%xmm1
18840 .byte 65,15,95,208 // maxps %xmm8,%xmm2
18841 .byte 65,15,95,216 // maxps %xmm8,%xmm3
18842 .byte 72,173 // lods %ds:(%rsi),%rax
18843 .byte 255,224 // jmpq *%rax
18844
Mike Klein7c4af542017-03-29 18:21:14 -040018845HIDDEN _sk_clamp_1_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018846.globl _sk_clamp_1_sse41
Mike Klein86714282017-04-13 17:37:38 -040018847FUNCTION(_sk_clamp_1_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018848_sk_clamp_1_sse41:
18849 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18850 .byte 102,68,15,110,192 // movd %eax,%xmm8
18851 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
18852 .byte 65,15,93,192 // minps %xmm8,%xmm0
18853 .byte 65,15,93,200 // minps %xmm8,%xmm1
18854 .byte 65,15,93,208 // minps %xmm8,%xmm2
18855 .byte 65,15,93,216 // minps %xmm8,%xmm3
18856 .byte 72,173 // lods %ds:(%rsi),%rax
18857 .byte 255,224 // jmpq *%rax
18858
Mike Klein7c4af542017-03-29 18:21:14 -040018859HIDDEN _sk_clamp_a_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018860.globl _sk_clamp_a_sse41
Mike Klein86714282017-04-13 17:37:38 -040018861FUNCTION(_sk_clamp_a_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018862_sk_clamp_a_sse41:
18863 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18864 .byte 102,68,15,110,192 // movd %eax,%xmm8
18865 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
18866 .byte 65,15,93,216 // minps %xmm8,%xmm3
18867 .byte 15,93,195 // minps %xmm3,%xmm0
18868 .byte 15,93,203 // minps %xmm3,%xmm1
18869 .byte 15,93,211 // minps %xmm3,%xmm2
18870 .byte 72,173 // lods %ds:(%rsi),%rax
18871 .byte 255,224 // jmpq *%rax
18872
Mike Klein7c4af542017-03-29 18:21:14 -040018873HIDDEN _sk_set_rgb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018874.globl _sk_set_rgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040018875FUNCTION(_sk_set_rgb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018876_sk_set_rgb_sse41:
18877 .byte 72,173 // lods %ds:(%rsi),%rax
18878 .byte 243,15,16,0 // movss (%rax),%xmm0
18879 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
18880 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
18881 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
18882 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
18883 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
18884 .byte 72,173 // lods %ds:(%rsi),%rax
18885 .byte 255,224 // jmpq *%rax
18886
Mike Klein7c4af542017-03-29 18:21:14 -040018887HIDDEN _sk_swap_rb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018888.globl _sk_swap_rb_sse41
Mike Klein86714282017-04-13 17:37:38 -040018889FUNCTION(_sk_swap_rb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018890_sk_swap_rb_sse41:
18891 .byte 68,15,40,192 // movaps %xmm0,%xmm8
18892 .byte 72,173 // lods %ds:(%rsi),%rax
18893 .byte 15,40,194 // movaps %xmm2,%xmm0
18894 .byte 65,15,40,208 // movaps %xmm8,%xmm2
18895 .byte 255,224 // jmpq *%rax
18896
Mike Klein7c4af542017-03-29 18:21:14 -040018897HIDDEN _sk_swap_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018898.globl _sk_swap_sse41
Mike Klein86714282017-04-13 17:37:38 -040018899FUNCTION(_sk_swap_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018900_sk_swap_sse41:
18901 .byte 68,15,40,195 // movaps %xmm3,%xmm8
18902 .byte 68,15,40,202 // movaps %xmm2,%xmm9
18903 .byte 68,15,40,209 // movaps %xmm1,%xmm10
18904 .byte 68,15,40,216 // movaps %xmm0,%xmm11
18905 .byte 72,173 // lods %ds:(%rsi),%rax
18906 .byte 15,40,196 // movaps %xmm4,%xmm0
18907 .byte 15,40,205 // movaps %xmm5,%xmm1
18908 .byte 15,40,214 // movaps %xmm6,%xmm2
18909 .byte 15,40,223 // movaps %xmm7,%xmm3
18910 .byte 65,15,40,227 // movaps %xmm11,%xmm4
18911 .byte 65,15,40,234 // movaps %xmm10,%xmm5
18912 .byte 65,15,40,241 // movaps %xmm9,%xmm6
18913 .byte 65,15,40,248 // movaps %xmm8,%xmm7
18914 .byte 255,224 // jmpq *%rax
18915
Mike Klein7c4af542017-03-29 18:21:14 -040018916HIDDEN _sk_move_src_dst_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018917.globl _sk_move_src_dst_sse41
Mike Klein86714282017-04-13 17:37:38 -040018918FUNCTION(_sk_move_src_dst_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018919_sk_move_src_dst_sse41:
18920 .byte 72,173 // lods %ds:(%rsi),%rax
18921 .byte 15,40,224 // movaps %xmm0,%xmm4
18922 .byte 15,40,233 // movaps %xmm1,%xmm5
18923 .byte 15,40,242 // movaps %xmm2,%xmm6
18924 .byte 15,40,251 // movaps %xmm3,%xmm7
18925 .byte 255,224 // jmpq *%rax
18926
Mike Klein7c4af542017-03-29 18:21:14 -040018927HIDDEN _sk_move_dst_src_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018928.globl _sk_move_dst_src_sse41
Mike Klein86714282017-04-13 17:37:38 -040018929FUNCTION(_sk_move_dst_src_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018930_sk_move_dst_src_sse41:
18931 .byte 72,173 // lods %ds:(%rsi),%rax
18932 .byte 15,40,196 // movaps %xmm4,%xmm0
18933 .byte 15,40,205 // movaps %xmm5,%xmm1
18934 .byte 15,40,214 // movaps %xmm6,%xmm2
18935 .byte 15,40,223 // movaps %xmm7,%xmm3
18936 .byte 255,224 // jmpq *%rax
18937
Mike Klein7c4af542017-03-29 18:21:14 -040018938HIDDEN _sk_premul_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018939.globl _sk_premul_sse41
Mike Klein86714282017-04-13 17:37:38 -040018940FUNCTION(_sk_premul_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018941_sk_premul_sse41:
18942 .byte 15,89,195 // mulps %xmm3,%xmm0
18943 .byte 15,89,203 // mulps %xmm3,%xmm1
18944 .byte 15,89,211 // mulps %xmm3,%xmm2
18945 .byte 72,173 // lods %ds:(%rsi),%rax
18946 .byte 255,224 // jmpq *%rax
18947
Mike Klein7c4af542017-03-29 18:21:14 -040018948HIDDEN _sk_unpremul_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018949.globl _sk_unpremul_sse41
Mike Klein86714282017-04-13 17:37:38 -040018950FUNCTION(_sk_unpremul_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018951_sk_unpremul_sse41:
18952 .byte 69,15,87,192 // xorps %xmm8,%xmm8
18953 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
18954 .byte 102,68,15,110,200 // movd %eax,%xmm9
18955 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
18956 .byte 68,15,94,203 // divps %xmm3,%xmm9
18957 .byte 68,15,194,195,4 // cmpneqps %xmm3,%xmm8
18958 .byte 69,15,84,193 // andps %xmm9,%xmm8
18959 .byte 65,15,89,192 // mulps %xmm8,%xmm0
18960 .byte 65,15,89,200 // mulps %xmm8,%xmm1
18961 .byte 65,15,89,208 // mulps %xmm8,%xmm2
18962 .byte 72,173 // lods %ds:(%rsi),%rax
18963 .byte 255,224 // jmpq *%rax
18964
Mike Klein7c4af542017-03-29 18:21:14 -040018965HIDDEN _sk_from_srgb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040018966.globl _sk_from_srgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040018967FUNCTION(_sk_from_srgb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040018968_sk_from_srgb_sse41:
18969 .byte 184,145,131,158,61 // mov $0x3d9e8391,%eax
18970 .byte 102,68,15,110,216 // movd %eax,%xmm11
18971 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
18972 .byte 69,15,40,211 // movaps %xmm11,%xmm10
18973 .byte 68,15,89,208 // mulps %xmm0,%xmm10
18974 .byte 68,15,40,240 // movaps %xmm0,%xmm14
18975 .byte 69,15,89,246 // mulps %xmm14,%xmm14
18976 .byte 184,154,153,153,62 // mov $0x3e99999a,%eax
18977 .byte 102,68,15,110,192 // movd %eax,%xmm8
18978 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
18979 .byte 184,92,143,50,63 // mov $0x3f328f5c,%eax
18980 .byte 102,68,15,110,224 // movd %eax,%xmm12
18981 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
18982 .byte 69,15,40,200 // movaps %xmm8,%xmm9
18983 .byte 68,15,89,200 // mulps %xmm0,%xmm9
18984 .byte 69,15,88,204 // addps %xmm12,%xmm9
18985 .byte 184,10,215,35,59 // mov $0x3b23d70a,%eax
18986 .byte 102,68,15,110,232 // movd %eax,%xmm13
18987 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
18988 .byte 69,15,89,206 // mulps %xmm14,%xmm9
18989 .byte 69,15,88,205 // addps %xmm13,%xmm9
18990 .byte 184,174,71,97,61 // mov $0x3d6147ae,%eax
18991 .byte 102,68,15,110,240 // movd %eax,%xmm14
18992 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
18993 .byte 65,15,194,198,1 // cmpltps %xmm14,%xmm0
18994 .byte 102,69,15,56,20,202 // blendvps %xmm0,%xmm10,%xmm9
18995 .byte 69,15,40,251 // movaps %xmm11,%xmm15
18996 .byte 68,15,89,249 // mulps %xmm1,%xmm15
18997 .byte 15,40,193 // movaps %xmm1,%xmm0
18998 .byte 15,89,192 // mulps %xmm0,%xmm0
18999 .byte 69,15,40,208 // movaps %xmm8,%xmm10
19000 .byte 68,15,89,209 // mulps %xmm1,%xmm10
19001 .byte 69,15,88,212 // addps %xmm12,%xmm10
19002 .byte 68,15,89,208 // mulps %xmm0,%xmm10
19003 .byte 69,15,88,213 // addps %xmm13,%xmm10
19004 .byte 65,15,194,206,1 // cmpltps %xmm14,%xmm1
19005 .byte 15,40,193 // movaps %xmm1,%xmm0
19006 .byte 102,69,15,56,20,215 // blendvps %xmm0,%xmm15,%xmm10
19007 .byte 68,15,89,218 // mulps %xmm2,%xmm11
19008 .byte 15,40,194 // movaps %xmm2,%xmm0
19009 .byte 15,89,192 // mulps %xmm0,%xmm0
19010 .byte 68,15,89,194 // mulps %xmm2,%xmm8
19011 .byte 69,15,88,196 // addps %xmm12,%xmm8
19012 .byte 68,15,89,192 // mulps %xmm0,%xmm8
19013 .byte 69,15,88,197 // addps %xmm13,%xmm8
19014 .byte 65,15,194,214,1 // cmpltps %xmm14,%xmm2
19015 .byte 15,40,194 // movaps %xmm2,%xmm0
19016 .byte 102,69,15,56,20,195 // blendvps %xmm0,%xmm11,%xmm8
19017 .byte 72,173 // lods %ds:(%rsi),%rax
19018 .byte 65,15,40,193 // movaps %xmm9,%xmm0
19019 .byte 65,15,40,202 // movaps %xmm10,%xmm1
19020 .byte 65,15,40,208 // movaps %xmm8,%xmm2
19021 .byte 255,224 // jmpq *%rax
19022
Mike Klein7c4af542017-03-29 18:21:14 -040019023HIDDEN _sk_to_srgb_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019024.globl _sk_to_srgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040019025FUNCTION(_sk_to_srgb_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019026_sk_to_srgb_sse41:
Mike Klein15bf6782017-03-31 12:21:46 -040019027 .byte 15,41,124,36,232 // movaps %xmm7,-0x18(%rsp)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019028 .byte 15,40,254 // movaps %xmm6,%xmm7
19029 .byte 15,40,245 // movaps %xmm5,%xmm6
19030 .byte 15,40,236 // movaps %xmm4,%xmm5
19031 .byte 15,40,227 // movaps %xmm3,%xmm4
19032 .byte 15,40,218 // movaps %xmm2,%xmm3
19033 .byte 15,40,209 // movaps %xmm1,%xmm2
19034 .byte 68,15,82,192 // rsqrtps %xmm0,%xmm8
19035 .byte 69,15,83,200 // rcpps %xmm8,%xmm9
19036 .byte 69,15,82,248 // rsqrtps %xmm8,%xmm15
19037 .byte 184,41,92,71,65 // mov $0x41475c29,%eax
19038 .byte 102,68,15,110,216 // movd %eax,%xmm11
19039 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
19040 .byte 69,15,40,211 // movaps %xmm11,%xmm10
19041 .byte 68,15,89,208 // mulps %xmm0,%xmm10
19042 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
19043 .byte 102,68,15,110,192 // movd %eax,%xmm8
19044 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
19045 .byte 184,194,135,210,62 // mov $0x3ed287c2,%eax
19046 .byte 102,68,15,110,224 // movd %eax,%xmm12
19047 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
19048 .byte 184,206,111,48,63 // mov $0x3f306fce,%eax
19049 .byte 102,68,15,110,232 // movd %eax,%xmm13
19050 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
19051 .byte 184,168,87,202,61 // mov $0x3dca57a8,%eax
19052 .byte 53,0,0,0,128 // xor $0x80000000,%eax
19053 .byte 102,68,15,110,240 // movd %eax,%xmm14
19054 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
19055 .byte 69,15,89,205 // mulps %xmm13,%xmm9
19056 .byte 69,15,88,206 // addps %xmm14,%xmm9
19057 .byte 69,15,89,252 // mulps %xmm12,%xmm15
19058 .byte 69,15,88,249 // addps %xmm9,%xmm15
19059 .byte 69,15,40,200 // movaps %xmm8,%xmm9
19060 .byte 69,15,93,207 // minps %xmm15,%xmm9
19061 .byte 184,4,231,140,59 // mov $0x3b8ce704,%eax
19062 .byte 102,68,15,110,248 // movd %eax,%xmm15
19063 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
19064 .byte 65,15,194,199,1 // cmpltps %xmm15,%xmm0
19065 .byte 102,69,15,56,20,202 // blendvps %xmm0,%xmm10,%xmm9
19066 .byte 68,15,82,210 // rsqrtps %xmm2,%xmm10
19067 .byte 65,15,83,194 // rcpps %xmm10,%xmm0
19068 .byte 69,15,82,210 // rsqrtps %xmm10,%xmm10
19069 .byte 65,15,89,197 // mulps %xmm13,%xmm0
19070 .byte 65,15,88,198 // addps %xmm14,%xmm0
19071 .byte 69,15,89,212 // mulps %xmm12,%xmm10
19072 .byte 68,15,88,208 // addps %xmm0,%xmm10
19073 .byte 65,15,40,200 // movaps %xmm8,%xmm1
19074 .byte 65,15,93,202 // minps %xmm10,%xmm1
19075 .byte 69,15,40,211 // movaps %xmm11,%xmm10
19076 .byte 68,15,89,210 // mulps %xmm2,%xmm10
19077 .byte 65,15,194,215,1 // cmpltps %xmm15,%xmm2
19078 .byte 15,40,194 // movaps %xmm2,%xmm0
19079 .byte 102,65,15,56,20,202 // blendvps %xmm0,%xmm10,%xmm1
19080 .byte 15,82,195 // rsqrtps %xmm3,%xmm0
19081 .byte 15,83,208 // rcpps %xmm0,%xmm2
19082 .byte 65,15,89,213 // mulps %xmm13,%xmm2
19083 .byte 65,15,88,214 // addps %xmm14,%xmm2
19084 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
19085 .byte 65,15,89,196 // mulps %xmm12,%xmm0
19086 .byte 15,88,194 // addps %xmm2,%xmm0
19087 .byte 68,15,93,192 // minps %xmm0,%xmm8
19088 .byte 68,15,89,219 // mulps %xmm3,%xmm11
19089 .byte 65,15,194,223,1 // cmpltps %xmm15,%xmm3
19090 .byte 15,40,195 // movaps %xmm3,%xmm0
19091 .byte 102,69,15,56,20,195 // blendvps %xmm0,%xmm11,%xmm8
19092 .byte 72,173 // lods %ds:(%rsi),%rax
19093 .byte 65,15,40,193 // movaps %xmm9,%xmm0
19094 .byte 65,15,40,208 // movaps %xmm8,%xmm2
19095 .byte 15,40,220 // movaps %xmm4,%xmm3
19096 .byte 15,40,229 // movaps %xmm5,%xmm4
19097 .byte 15,40,238 // movaps %xmm6,%xmm5
19098 .byte 15,40,247 // movaps %xmm7,%xmm6
Mike Klein15bf6782017-03-31 12:21:46 -040019099 .byte 15,40,124,36,232 // movaps -0x18(%rsp),%xmm7
Mike Kleind7e06ae2017-03-29 16:33:06 -040019100 .byte 255,224 // jmpq *%rax
19101
Mike Klein7125ac62017-04-05 15:27:22 -040019102HIDDEN _sk_from_2dot2_sse41
19103.globl _sk_from_2dot2_sse41
Mike Klein86714282017-04-13 17:37:38 -040019104FUNCTION(_sk_from_2dot2_sse41)
Mike Klein7125ac62017-04-05 15:27:22 -040019105_sk_from_2dot2_sse41:
19106 .byte 68,15,40,192 // movaps %xmm0,%xmm8
19107 .byte 65,15,82,192 // rsqrtps %xmm8,%xmm0
19108 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
19109 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
19110 .byte 68,15,82,200 // rsqrtps %xmm0,%xmm9
19111 .byte 65,15,82,193 // rsqrtps %xmm9,%xmm0
19112 .byte 68,15,82,208 // rsqrtps %xmm0,%xmm10
19113 .byte 69,15,89,192 // mulps %xmm8,%xmm8
19114 .byte 65,15,40,193 // movaps %xmm9,%xmm0
19115 .byte 15,89,192 // mulps %xmm0,%xmm0
19116 .byte 65,15,89,193 // mulps %xmm9,%xmm0
19117 .byte 65,15,89,192 // mulps %xmm8,%xmm0
19118 .byte 65,15,89,194 // mulps %xmm10,%xmm0
19119 .byte 69,15,87,210 // xorps %xmm10,%xmm10
19120 .byte 65,15,95,194 // maxps %xmm10,%xmm0
19121 .byte 68,15,82,193 // rsqrtps %xmm1,%xmm8
19122 .byte 69,15,82,192 // rsqrtps %xmm8,%xmm8
19123 .byte 69,15,82,192 // rsqrtps %xmm8,%xmm8
19124 .byte 69,15,82,200 // rsqrtps %xmm8,%xmm9
19125 .byte 69,15,82,193 // rsqrtps %xmm9,%xmm8
19126 .byte 69,15,82,216 // rsqrtps %xmm8,%xmm11
19127 .byte 15,89,201 // mulps %xmm1,%xmm1
19128 .byte 69,15,40,193 // movaps %xmm9,%xmm8
19129 .byte 69,15,89,192 // mulps %xmm8,%xmm8
19130 .byte 69,15,89,193 // mulps %xmm9,%xmm8
19131 .byte 68,15,89,193 // mulps %xmm1,%xmm8
19132 .byte 69,15,89,195 // mulps %xmm11,%xmm8
19133 .byte 69,15,95,194 // maxps %xmm10,%xmm8
19134 .byte 15,82,202 // rsqrtps %xmm2,%xmm1
19135 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
19136 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
19137 .byte 68,15,82,217 // rsqrtps %xmm1,%xmm11
19138 .byte 65,15,82,203 // rsqrtps %xmm11,%xmm1
19139 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
19140 .byte 15,89,210 // mulps %xmm2,%xmm2
19141 .byte 69,15,40,203 // movaps %xmm11,%xmm9
19142 .byte 69,15,89,201 // mulps %xmm9,%xmm9
19143 .byte 69,15,89,203 // mulps %xmm11,%xmm9
19144 .byte 68,15,89,202 // mulps %xmm2,%xmm9
19145 .byte 68,15,89,201 // mulps %xmm1,%xmm9
19146 .byte 69,15,95,202 // maxps %xmm10,%xmm9
19147 .byte 72,173 // lods %ds:(%rsi),%rax
19148 .byte 65,15,40,200 // movaps %xmm8,%xmm1
19149 .byte 65,15,40,209 // movaps %xmm9,%xmm2
19150 .byte 255,224 // jmpq *%rax
19151
19152HIDDEN _sk_to_2dot2_sse41
19153.globl _sk_to_2dot2_sse41
Mike Klein86714282017-04-13 17:37:38 -040019154FUNCTION(_sk_to_2dot2_sse41)
Mike Klein7125ac62017-04-05 15:27:22 -040019155_sk_to_2dot2_sse41:
19156 .byte 68,15,82,192 // rsqrtps %xmm0,%xmm8
19157 .byte 65,15,82,192 // rsqrtps %xmm8,%xmm0
19158 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
19159 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
19160 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
19161 .byte 68,15,82,200 // rsqrtps %xmm0,%xmm9
19162 .byte 69,15,83,192 // rcpps %xmm8,%xmm8
19163 .byte 68,15,89,192 // mulps %xmm0,%xmm8
19164 .byte 65,15,83,193 // rcpps %xmm9,%xmm0
19165 .byte 65,15,89,192 // mulps %xmm8,%xmm0
19166 .byte 69,15,87,192 // xorps %xmm8,%xmm8
19167 .byte 65,15,95,192 // maxps %xmm8,%xmm0
19168 .byte 68,15,82,201 // rsqrtps %xmm1,%xmm9
19169 .byte 65,15,82,201 // rsqrtps %xmm9,%xmm1
19170 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
19171 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
19172 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
19173 .byte 68,15,82,209 // rsqrtps %xmm1,%xmm10
19174 .byte 69,15,83,201 // rcpps %xmm9,%xmm9
19175 .byte 68,15,89,201 // mulps %xmm1,%xmm9
19176 .byte 65,15,83,202 // rcpps %xmm10,%xmm1
19177 .byte 65,15,89,201 // mulps %xmm9,%xmm1
19178 .byte 65,15,95,200 // maxps %xmm8,%xmm1
19179 .byte 68,15,82,202 // rsqrtps %xmm2,%xmm9
19180 .byte 65,15,82,209 // rsqrtps %xmm9,%xmm2
19181 .byte 15,82,210 // rsqrtps %xmm2,%xmm2
19182 .byte 15,82,210 // rsqrtps %xmm2,%xmm2
19183 .byte 15,82,210 // rsqrtps %xmm2,%xmm2
19184 .byte 68,15,82,210 // rsqrtps %xmm2,%xmm10
19185 .byte 69,15,83,201 // rcpps %xmm9,%xmm9
19186 .byte 68,15,89,202 // mulps %xmm2,%xmm9
19187 .byte 65,15,83,210 // rcpps %xmm10,%xmm2
19188 .byte 65,15,89,209 // mulps %xmm9,%xmm2
19189 .byte 65,15,95,208 // maxps %xmm8,%xmm2
19190 .byte 72,173 // lods %ds:(%rsi),%rax
19191 .byte 255,224 // jmpq *%rax
19192
Mike Kleindb1cbcb2017-04-12 08:35:41 -040019193HIDDEN _sk_rgb_to_hsl_sse41
19194.globl _sk_rgb_to_hsl_sse41
Mike Klein86714282017-04-13 17:37:38 -040019195FUNCTION(_sk_rgb_to_hsl_sse41)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040019196_sk_rgb_to_hsl_sse41:
19197 .byte 15,41,124,36,232 // movaps %xmm7,-0x18(%rsp)
19198 .byte 15,40,254 // movaps %xmm6,%xmm7
19199 .byte 15,40,245 // movaps %xmm5,%xmm6
19200 .byte 15,40,236 // movaps %xmm4,%xmm5
19201 .byte 15,40,227 // movaps %xmm3,%xmm4
19202 .byte 15,40,218 // movaps %xmm2,%xmm3
19203 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
19204 .byte 102,68,15,110,216 // movd %eax,%xmm11
19205 .byte 65,184,171,170,42,62 // mov $0x3e2aaaab,%r8d
19206 .byte 65,185,0,0,192,64 // mov $0x40c00000,%r9d
19207 .byte 184,0,0,0,64 // mov $0x40000000,%eax
19208 .byte 185,0,0,128,64 // mov $0x40800000,%ecx
19209 .byte 102,68,15,110,193 // movd %ecx,%xmm8
19210 .byte 68,15,40,224 // movaps %xmm0,%xmm12
19211 .byte 68,15,95,225 // maxps %xmm1,%xmm12
19212 .byte 68,15,95,227 // maxps %xmm3,%xmm12
19213 .byte 68,15,40,232 // movaps %xmm0,%xmm13
19214 .byte 68,15,93,233 // minps %xmm1,%xmm13
19215 .byte 68,15,93,235 // minps %xmm3,%xmm13
19216 .byte 69,15,40,204 // movaps %xmm12,%xmm9
19217 .byte 68,15,194,200,0 // cmpeqps %xmm0,%xmm9
19218 .byte 68,15,40,241 // movaps %xmm1,%xmm14
19219 .byte 68,15,92,243 // subps %xmm3,%xmm14
19220 .byte 68,15,40,249 // movaps %xmm1,%xmm15
19221 .byte 68,15,194,251,1 // cmpltps %xmm3,%xmm15
19222 .byte 69,15,40,212 // movaps %xmm12,%xmm10
19223 .byte 68,15,194,209,0 // cmpeqps %xmm1,%xmm10
19224 .byte 15,92,216 // subps %xmm0,%xmm3
19225 .byte 15,92,193 // subps %xmm1,%xmm0
19226 .byte 65,15,40,212 // movaps %xmm12,%xmm2
19227 .byte 65,15,92,213 // subps %xmm13,%xmm2
19228 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
19229 .byte 68,15,94,218 // divps %xmm2,%xmm11
19230 .byte 65,15,89,195 // mulps %xmm11,%xmm0
19231 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
19232 .byte 68,15,88,192 // addps %xmm0,%xmm8
19233 .byte 102,15,110,200 // movd %eax,%xmm1
19234 .byte 65,15,89,219 // mulps %xmm11,%xmm3
19235 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
19236 .byte 15,88,217 // addps %xmm1,%xmm3
19237 .byte 65,15,40,194 // movaps %xmm10,%xmm0
19238 .byte 102,68,15,56,20,195 // blendvps %xmm0,%xmm3,%xmm8
19239 .byte 69,15,89,243 // mulps %xmm11,%xmm14
19240 .byte 102,65,15,110,217 // movd %r9d,%xmm3
19241 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
19242 .byte 65,15,84,223 // andps %xmm15,%xmm3
19243 .byte 65,15,88,222 // addps %xmm14,%xmm3
19244 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
19245 .byte 102,68,15,110,208 // movd %eax,%xmm10
19246 .byte 65,15,40,193 // movaps %xmm9,%xmm0
19247 .byte 102,68,15,56,20,195 // blendvps %xmm0,%xmm3,%xmm8
19248 .byte 65,15,40,220 // movaps %xmm12,%xmm3
19249 .byte 65,15,92,204 // subps %xmm12,%xmm1
19250 .byte 69,15,88,229 // addps %xmm13,%xmm12
19251 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
19252 .byte 69,15,40,204 // movaps %xmm12,%xmm9
19253 .byte 69,15,89,202 // mulps %xmm10,%xmm9
19254 .byte 69,15,194,209,1 // cmpltps %xmm9,%xmm10
19255 .byte 65,15,92,205 // subps %xmm13,%xmm1
19256 .byte 65,15,40,194 // movaps %xmm10,%xmm0
19257 .byte 102,68,15,56,20,225 // blendvps %xmm0,%xmm1,%xmm12
19258 .byte 65,15,194,221,4 // cmpneqps %xmm13,%xmm3
19259 .byte 102,65,15,110,192 // movd %r8d,%xmm0
19260 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
19261 .byte 68,15,84,195 // andps %xmm3,%xmm8
19262 .byte 68,15,89,192 // mulps %xmm0,%xmm8
19263 .byte 65,15,94,212 // divps %xmm12,%xmm2
19264 .byte 15,84,211 // andps %xmm3,%xmm2
19265 .byte 72,173 // lods %ds:(%rsi),%rax
19266 .byte 65,15,40,192 // movaps %xmm8,%xmm0
19267 .byte 15,40,202 // movaps %xmm2,%xmm1
19268 .byte 65,15,40,209 // movaps %xmm9,%xmm2
19269 .byte 15,40,220 // movaps %xmm4,%xmm3
19270 .byte 15,40,229 // movaps %xmm5,%xmm4
19271 .byte 15,40,238 // movaps %xmm6,%xmm5
19272 .byte 15,40,247 // movaps %xmm7,%xmm6
19273 .byte 15,40,124,36,232 // movaps -0x18(%rsp),%xmm7
19274 .byte 255,224 // jmpq *%rax
19275
19276HIDDEN _sk_hsl_to_rgb_sse41
19277.globl _sk_hsl_to_rgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040019278FUNCTION(_sk_hsl_to_rgb_sse41)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040019279_sk_hsl_to_rgb_sse41:
19280 .byte 72,131,236,24 // sub $0x18,%rsp
19281 .byte 15,41,60,36 // movaps %xmm7,(%rsp)
19282 .byte 15,41,116,36,240 // movaps %xmm6,-0x10(%rsp)
19283 .byte 15,41,108,36,224 // movaps %xmm5,-0x20(%rsp)
19284 .byte 15,41,100,36,208 // movaps %xmm4,-0x30(%rsp)
19285 .byte 15,41,92,36,192 // movaps %xmm3,-0x40(%rsp)
19286 .byte 68,15,40,208 // movaps %xmm0,%xmm10
19287 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
19288 .byte 102,15,110,216 // movd %eax,%xmm3
19289 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
19290 .byte 15,41,92,36,128 // movaps %xmm3,-0x80(%rsp)
19291 .byte 15,40,194 // movaps %xmm2,%xmm0
19292 .byte 15,194,195,1 // cmpltps %xmm3,%xmm0
19293 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
19294 .byte 102,68,15,110,192 // movd %eax,%xmm8
19295 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
19296 .byte 65,15,40,224 // movaps %xmm8,%xmm4
19297 .byte 15,88,225 // addps %xmm1,%xmm4
19298 .byte 15,89,226 // mulps %xmm2,%xmm4
19299 .byte 15,40,217 // movaps %xmm1,%xmm3
19300 .byte 15,40,249 // movaps %xmm1,%xmm7
19301 .byte 15,88,250 // addps %xmm2,%xmm7
19302 .byte 15,89,218 // mulps %xmm2,%xmm3
19303 .byte 15,40,234 // movaps %xmm2,%xmm5
19304 .byte 15,92,251 // subps %xmm3,%xmm7
19305 .byte 102,15,56,20,252 // blendvps %xmm0,%xmm4,%xmm7
19306 .byte 184,0,0,0,64 // mov $0x40000000,%eax
19307 .byte 185,171,170,170,62 // mov $0x3eaaaaab,%ecx
19308 .byte 102,15,110,209 // movd %ecx,%xmm2
19309 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
19310 .byte 15,41,84,36,176 // movaps %xmm2,-0x50(%rsp)
19311 .byte 65,15,88,210 // addps %xmm10,%xmm2
19312 .byte 185,0,0,0,0 // mov $0x0,%ecx
19313 .byte 65,15,40,192 // movaps %xmm8,%xmm0
19314 .byte 15,194,194,1 // cmpltps %xmm2,%xmm0
19315 .byte 15,40,218 // movaps %xmm2,%xmm3
19316 .byte 65,15,92,216 // subps %xmm8,%xmm3
19317 .byte 68,15,40,226 // movaps %xmm2,%xmm12
19318 .byte 102,68,15,56,20,227 // blendvps %xmm0,%xmm3,%xmm12
19319 .byte 102,68,15,110,241 // movd %ecx,%xmm14
19320 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
19321 .byte 15,40,194 // movaps %xmm2,%xmm0
19322 .byte 65,15,194,198,1 // cmpltps %xmm14,%xmm0
19323 .byte 68,15,41,116,36,160 // movaps %xmm14,-0x60(%rsp)
19324 .byte 65,15,40,216 // movaps %xmm8,%xmm3
19325 .byte 15,88,218 // addps %xmm2,%xmm3
19326 .byte 102,68,15,56,20,227 // blendvps %xmm0,%xmm3,%xmm12
19327 .byte 102,68,15,110,200 // movd %eax,%xmm9
19328 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
19329 .byte 15,40,229 // movaps %xmm5,%xmm4
19330 .byte 15,41,100,36,144 // movaps %xmm4,-0x70(%rsp)
19331 .byte 68,15,89,204 // mulps %xmm4,%xmm9
19332 .byte 68,15,92,207 // subps %xmm7,%xmm9
19333 .byte 184,171,170,42,62 // mov $0x3e2aaaab,%eax
19334 .byte 15,40,199 // movaps %xmm7,%xmm0
19335 .byte 65,15,92,193 // subps %xmm9,%xmm0
19336 .byte 185,0,0,192,64 // mov $0x40c00000,%ecx
19337 .byte 102,15,110,241 // movd %ecx,%xmm6
19338 .byte 15,198,246,0 // shufps $0x0,%xmm6,%xmm6
19339 .byte 15,89,240 // mulps %xmm0,%xmm6
19340 .byte 185,171,170,42,63 // mov $0x3f2aaaab,%ecx
19341 .byte 102,15,110,217 // movd %ecx,%xmm3
19342 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
19343 .byte 15,40,235 // movaps %xmm3,%xmm5
19344 .byte 65,15,92,236 // subps %xmm12,%xmm5
19345 .byte 69,15,40,236 // movaps %xmm12,%xmm13
19346 .byte 69,15,40,252 // movaps %xmm12,%xmm15
19347 .byte 68,15,194,227,1 // cmpltps %xmm3,%xmm12
19348 .byte 15,89,238 // mulps %xmm6,%xmm5
19349 .byte 65,15,88,233 // addps %xmm9,%xmm5
19350 .byte 69,15,40,217 // movaps %xmm9,%xmm11
19351 .byte 65,15,40,196 // movaps %xmm12,%xmm0
19352 .byte 102,68,15,56,20,221 // blendvps %xmm0,%xmm5,%xmm11
19353 .byte 68,15,194,124,36,128,1 // cmpltps -0x80(%rsp),%xmm15
19354 .byte 65,15,40,199 // movaps %xmm15,%xmm0
19355 .byte 102,68,15,56,20,223 // blendvps %xmm0,%xmm7,%xmm11
19356 .byte 102,15,110,232 // movd %eax,%xmm5
19357 .byte 15,198,237,0 // shufps $0x0,%xmm5,%xmm5
19358 .byte 68,15,194,237,1 // cmpltps %xmm5,%xmm13
19359 .byte 15,89,214 // mulps %xmm6,%xmm2
19360 .byte 65,15,88,209 // addps %xmm9,%xmm2
19361 .byte 65,15,40,197 // movaps %xmm13,%xmm0
19362 .byte 102,68,15,56,20,218 // blendvps %xmm0,%xmm2,%xmm11
19363 .byte 69,15,87,228 // xorps %xmm12,%xmm12
19364 .byte 68,15,194,225,0 // cmpeqps %xmm1,%xmm12
19365 .byte 65,15,40,196 // movaps %xmm12,%xmm0
19366 .byte 102,68,15,56,20,220 // blendvps %xmm0,%xmm4,%xmm11
19367 .byte 65,15,40,192 // movaps %xmm8,%xmm0
19368 .byte 65,15,194,194,1 // cmpltps %xmm10,%xmm0
19369 .byte 65,15,40,202 // movaps %xmm10,%xmm1
19370 .byte 65,15,92,200 // subps %xmm8,%xmm1
19371 .byte 69,15,40,234 // movaps %xmm10,%xmm13
19372 .byte 102,68,15,56,20,233 // blendvps %xmm0,%xmm1,%xmm13
19373 .byte 65,15,40,194 // movaps %xmm10,%xmm0
19374 .byte 65,15,194,198,1 // cmpltps %xmm14,%xmm0
19375 .byte 65,15,40,200 // movaps %xmm8,%xmm1
19376 .byte 65,15,88,202 // addps %xmm10,%xmm1
19377 .byte 102,68,15,56,20,233 // blendvps %xmm0,%xmm1,%xmm13
19378 .byte 68,15,40,243 // movaps %xmm3,%xmm14
19379 .byte 69,15,92,245 // subps %xmm13,%xmm14
19380 .byte 65,15,40,229 // movaps %xmm13,%xmm4
19381 .byte 69,15,40,253 // movaps %xmm13,%xmm15
19382 .byte 68,15,194,235,1 // cmpltps %xmm3,%xmm13
19383 .byte 68,15,89,246 // mulps %xmm6,%xmm14
19384 .byte 69,15,88,241 // addps %xmm9,%xmm14
19385 .byte 65,15,40,201 // movaps %xmm9,%xmm1
19386 .byte 65,15,40,197 // movaps %xmm13,%xmm0
19387 .byte 102,65,15,56,20,206 // blendvps %xmm0,%xmm14,%xmm1
19388 .byte 68,15,40,116,36,128 // movaps -0x80(%rsp),%xmm14
19389 .byte 69,15,194,254,1 // cmpltps %xmm14,%xmm15
19390 .byte 65,15,40,199 // movaps %xmm15,%xmm0
19391 .byte 102,15,56,20,207 // blendvps %xmm0,%xmm7,%xmm1
19392 .byte 15,194,229,1 // cmpltps %xmm5,%xmm4
19393 .byte 15,40,214 // movaps %xmm6,%xmm2
19394 .byte 65,15,89,210 // mulps %xmm10,%xmm2
19395 .byte 65,15,88,209 // addps %xmm9,%xmm2
19396 .byte 15,40,196 // movaps %xmm4,%xmm0
19397 .byte 102,15,56,20,202 // blendvps %xmm0,%xmm2,%xmm1
19398 .byte 65,15,40,196 // movaps %xmm12,%xmm0
19399 .byte 68,15,40,124,36,144 // movaps -0x70(%rsp),%xmm15
19400 .byte 102,65,15,56,20,207 // blendvps %xmm0,%xmm15,%xmm1
19401 .byte 68,15,92,84,36,176 // subps -0x50(%rsp),%xmm10
19402 .byte 65,15,40,210 // movaps %xmm10,%xmm2
19403 .byte 65,15,92,208 // subps %xmm8,%xmm2
19404 .byte 69,15,40,232 // movaps %xmm8,%xmm13
19405 .byte 69,15,194,194,1 // cmpltps %xmm10,%xmm8
19406 .byte 65,15,40,226 // movaps %xmm10,%xmm4
19407 .byte 65,15,40,192 // movaps %xmm8,%xmm0
19408 .byte 102,15,56,20,226 // blendvps %xmm0,%xmm2,%xmm4
19409 .byte 65,15,40,194 // movaps %xmm10,%xmm0
19410 .byte 15,194,68,36,160,1 // cmpltps -0x60(%rsp),%xmm0
19411 .byte 69,15,88,234 // addps %xmm10,%xmm13
19412 .byte 102,65,15,56,20,229 // blendvps %xmm0,%xmm13,%xmm4
19413 .byte 68,15,89,214 // mulps %xmm6,%xmm10
19414 .byte 15,40,196 // movaps %xmm4,%xmm0
19415 .byte 15,194,195,1 // cmpltps %xmm3,%xmm0
19416 .byte 15,92,220 // subps %xmm4,%xmm3
19417 .byte 15,89,222 // mulps %xmm6,%xmm3
19418 .byte 69,15,88,209 // addps %xmm9,%xmm10
19419 .byte 65,15,88,217 // addps %xmm9,%xmm3
19420 .byte 102,68,15,56,20,203 // blendvps %xmm0,%xmm3,%xmm9
19421 .byte 15,40,196 // movaps %xmm4,%xmm0
19422 .byte 65,15,194,198,1 // cmpltps %xmm14,%xmm0
19423 .byte 102,68,15,56,20,207 // blendvps %xmm0,%xmm7,%xmm9
19424 .byte 15,40,196 // movaps %xmm4,%xmm0
19425 .byte 15,194,197,1 // cmpltps %xmm5,%xmm0
19426 .byte 102,69,15,56,20,202 // blendvps %xmm0,%xmm10,%xmm9
19427 .byte 65,15,40,196 // movaps %xmm12,%xmm0
19428 .byte 102,69,15,56,20,207 // blendvps %xmm0,%xmm15,%xmm9
19429 .byte 72,173 // lods %ds:(%rsi),%rax
19430 .byte 65,15,40,195 // movaps %xmm11,%xmm0
19431 .byte 65,15,40,209 // movaps %xmm9,%xmm2
19432 .byte 15,40,92,36,192 // movaps -0x40(%rsp),%xmm3
19433 .byte 15,40,100,36,208 // movaps -0x30(%rsp),%xmm4
19434 .byte 15,40,108,36,224 // movaps -0x20(%rsp),%xmm5
19435 .byte 15,40,116,36,240 // movaps -0x10(%rsp),%xmm6
19436 .byte 15,40,60,36 // movaps (%rsp),%xmm7
19437 .byte 72,131,196,24 // add $0x18,%rsp
19438 .byte 255,224 // jmpq *%rax
19439
Mike Klein7c4af542017-03-29 18:21:14 -040019440HIDDEN _sk_scale_1_float_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019441.globl _sk_scale_1_float_sse41
Mike Klein86714282017-04-13 17:37:38 -040019442FUNCTION(_sk_scale_1_float_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019443_sk_scale_1_float_sse41:
19444 .byte 72,173 // lods %ds:(%rsi),%rax
19445 .byte 243,68,15,16,0 // movss (%rax),%xmm8
19446 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
19447 .byte 65,15,89,192 // mulps %xmm8,%xmm0
19448 .byte 65,15,89,200 // mulps %xmm8,%xmm1
19449 .byte 65,15,89,208 // mulps %xmm8,%xmm2
19450 .byte 65,15,89,216 // mulps %xmm8,%xmm3
19451 .byte 72,173 // lods %ds:(%rsi),%rax
19452 .byte 255,224 // jmpq *%rax
19453
Mike Klein7c4af542017-03-29 18:21:14 -040019454HIDDEN _sk_scale_u8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019455.globl _sk_scale_u8_sse41
Mike Klein86714282017-04-13 17:37:38 -040019456FUNCTION(_sk_scale_u8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019457_sk_scale_u8_sse41:
19458 .byte 72,173 // lods %ds:(%rsi),%rax
19459 .byte 72,139,0 // mov (%rax),%rax
19460 .byte 102,68,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm8
19461 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19462 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
19463 .byte 102,68,15,110,200 // movd %eax,%xmm9
19464 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
19465 .byte 69,15,89,200 // mulps %xmm8,%xmm9
19466 .byte 65,15,89,193 // mulps %xmm9,%xmm0
19467 .byte 65,15,89,201 // mulps %xmm9,%xmm1
19468 .byte 65,15,89,209 // mulps %xmm9,%xmm2
19469 .byte 65,15,89,217 // mulps %xmm9,%xmm3
19470 .byte 72,173 // lods %ds:(%rsi),%rax
19471 .byte 255,224 // jmpq *%rax
19472
Mike Klein7c4af542017-03-29 18:21:14 -040019473HIDDEN _sk_lerp_1_float_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019474.globl _sk_lerp_1_float_sse41
Mike Klein86714282017-04-13 17:37:38 -040019475FUNCTION(_sk_lerp_1_float_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019476_sk_lerp_1_float_sse41:
19477 .byte 72,173 // lods %ds:(%rsi),%rax
19478 .byte 243,68,15,16,0 // movss (%rax),%xmm8
19479 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
19480 .byte 15,92,196 // subps %xmm4,%xmm0
19481 .byte 65,15,89,192 // mulps %xmm8,%xmm0
19482 .byte 15,88,196 // addps %xmm4,%xmm0
19483 .byte 15,92,205 // subps %xmm5,%xmm1
19484 .byte 65,15,89,200 // mulps %xmm8,%xmm1
19485 .byte 15,88,205 // addps %xmm5,%xmm1
19486 .byte 15,92,214 // subps %xmm6,%xmm2
19487 .byte 65,15,89,208 // mulps %xmm8,%xmm2
19488 .byte 15,88,214 // addps %xmm6,%xmm2
19489 .byte 15,92,223 // subps %xmm7,%xmm3
19490 .byte 65,15,89,216 // mulps %xmm8,%xmm3
19491 .byte 15,88,223 // addps %xmm7,%xmm3
19492 .byte 72,173 // lods %ds:(%rsi),%rax
19493 .byte 255,224 // jmpq *%rax
19494
Mike Klein7c4af542017-03-29 18:21:14 -040019495HIDDEN _sk_lerp_u8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019496.globl _sk_lerp_u8_sse41
Mike Klein86714282017-04-13 17:37:38 -040019497FUNCTION(_sk_lerp_u8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019498_sk_lerp_u8_sse41:
19499 .byte 72,173 // lods %ds:(%rsi),%rax
19500 .byte 72,139,0 // mov (%rax),%rax
19501 .byte 102,68,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm8
19502 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19503 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
19504 .byte 102,68,15,110,200 // movd %eax,%xmm9
19505 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
19506 .byte 69,15,89,200 // mulps %xmm8,%xmm9
19507 .byte 15,92,196 // subps %xmm4,%xmm0
19508 .byte 65,15,89,193 // mulps %xmm9,%xmm0
19509 .byte 15,88,196 // addps %xmm4,%xmm0
19510 .byte 15,92,205 // subps %xmm5,%xmm1
19511 .byte 65,15,89,201 // mulps %xmm9,%xmm1
19512 .byte 15,88,205 // addps %xmm5,%xmm1
19513 .byte 15,92,214 // subps %xmm6,%xmm2
19514 .byte 65,15,89,209 // mulps %xmm9,%xmm2
19515 .byte 15,88,214 // addps %xmm6,%xmm2
19516 .byte 15,92,223 // subps %xmm7,%xmm3
19517 .byte 65,15,89,217 // mulps %xmm9,%xmm3
19518 .byte 15,88,223 // addps %xmm7,%xmm3
19519 .byte 72,173 // lods %ds:(%rsi),%rax
19520 .byte 255,224 // jmpq *%rax
19521
Mike Klein7c4af542017-03-29 18:21:14 -040019522HIDDEN _sk_lerp_565_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019523.globl _sk_lerp_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040019524FUNCTION(_sk_lerp_565_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019525_sk_lerp_565_sse41:
19526 .byte 72,173 // lods %ds:(%rsi),%rax
19527 .byte 72,139,0 // mov (%rax),%rax
19528 .byte 102,68,15,56,51,4,120 // pmovzxwd (%rax,%rdi,2),%xmm8
19529 .byte 184,0,248,0,0 // mov $0xf800,%eax
19530 .byte 102,15,110,216 // movd %eax,%xmm3
19531 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
19532 .byte 102,65,15,219,216 // pand %xmm8,%xmm3
19533 .byte 68,15,91,203 // cvtdq2ps %xmm3,%xmm9
19534 .byte 184,8,33,132,55 // mov $0x37842108,%eax
19535 .byte 102,68,15,110,208 // movd %eax,%xmm10
19536 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
19537 .byte 69,15,89,209 // mulps %xmm9,%xmm10
19538 .byte 184,224,7,0,0 // mov $0x7e0,%eax
19539 .byte 102,15,110,216 // movd %eax,%xmm3
19540 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
19541 .byte 102,65,15,219,216 // pand %xmm8,%xmm3
19542 .byte 68,15,91,203 // cvtdq2ps %xmm3,%xmm9
19543 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
19544 .byte 102,68,15,110,216 // movd %eax,%xmm11
19545 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
19546 .byte 69,15,89,217 // mulps %xmm9,%xmm11
19547 .byte 184,31,0,0,0 // mov $0x1f,%eax
19548 .byte 102,15,110,216 // movd %eax,%xmm3
19549 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
19550 .byte 102,65,15,219,216 // pand %xmm8,%xmm3
19551 .byte 68,15,91,195 // cvtdq2ps %xmm3,%xmm8
19552 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
19553 .byte 102,15,110,216 // movd %eax,%xmm3
19554 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
19555 .byte 65,15,89,216 // mulps %xmm8,%xmm3
19556 .byte 15,92,196 // subps %xmm4,%xmm0
19557 .byte 65,15,89,194 // mulps %xmm10,%xmm0
19558 .byte 15,88,196 // addps %xmm4,%xmm0
19559 .byte 15,92,205 // subps %xmm5,%xmm1
19560 .byte 65,15,89,203 // mulps %xmm11,%xmm1
19561 .byte 15,88,205 // addps %xmm5,%xmm1
19562 .byte 15,92,214 // subps %xmm6,%xmm2
19563 .byte 15,89,211 // mulps %xmm3,%xmm2
19564 .byte 15,88,214 // addps %xmm6,%xmm2
19565 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
19566 .byte 102,15,110,216 // movd %eax,%xmm3
19567 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
19568 .byte 72,173 // lods %ds:(%rsi),%rax
19569 .byte 255,224 // jmpq *%rax
19570
Mike Klein7c4af542017-03-29 18:21:14 -040019571HIDDEN _sk_load_tables_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040019572.globl _sk_load_tables_sse41
Mike Klein86714282017-04-13 17:37:38 -040019573FUNCTION(_sk_load_tables_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040019574_sk_load_tables_sse41:
19575 .byte 72,173 // lods %ds:(%rsi),%rax
19576 .byte 72,139,8 // mov (%rax),%rcx
19577 .byte 76,139,64,8 // mov 0x8(%rax),%r8
19578 .byte 243,68,15,111,4,185 // movdqu (%rcx,%rdi,4),%xmm8
19579 .byte 185,255,0,0,0 // mov $0xff,%ecx
19580 .byte 102,15,110,193 // movd %ecx,%xmm0
19581 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
19582 .byte 102,65,15,111,200 // movdqa %xmm8,%xmm1
19583 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
19584 .byte 102,15,219,200 // pand %xmm0,%xmm1
19585 .byte 102,65,15,111,208 // movdqa %xmm8,%xmm2
19586 .byte 102,15,114,210,16 // psrld $0x10,%xmm2
19587 .byte 102,15,219,208 // pand %xmm0,%xmm2
19588 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
19589 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
19590 .byte 65,137,201 // mov %ecx,%r9d
19591 .byte 72,193,233,32 // shr $0x20,%rcx
19592 .byte 102,73,15,126,194 // movq %xmm0,%r10
19593 .byte 69,137,211 // mov %r10d,%r11d
19594 .byte 73,193,234,32 // shr $0x20,%r10
19595 .byte 243,67,15,16,4,152 // movss (%r8,%r11,4),%xmm0
19596 .byte 102,67,15,58,33,4,144,16 // insertps $0x10,(%r8,%r10,4),%xmm0
19597 .byte 102,67,15,58,33,4,136,32 // insertps $0x20,(%r8,%r9,4),%xmm0
19598 .byte 102,65,15,58,33,4,136,48 // insertps $0x30,(%r8,%rcx,4),%xmm0
19599 .byte 76,139,64,16 // mov 0x10(%rax),%r8
19600 .byte 102,73,15,58,22,202,1 // pextrq $0x1,%xmm1,%r10
19601 .byte 77,137,209 // mov %r10,%r9
19602 .byte 73,193,233,32 // shr $0x20,%r9
19603 .byte 102,72,15,126,201 // movq %xmm1,%rcx
19604 .byte 65,137,203 // mov %ecx,%r11d
19605 .byte 65,129,227,255,255,255,0 // and $0xffffff,%r11d
19606 .byte 72,193,233,30 // shr $0x1e,%rcx
19607 .byte 65,129,226,255,255,255,0 // and $0xffffff,%r10d
19608 .byte 243,67,15,16,12,152 // movss (%r8,%r11,4),%xmm1
19609 .byte 102,65,15,58,33,12,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm1
19610 .byte 243,67,15,16,28,144 // movss (%r8,%r10,4),%xmm3
19611 .byte 102,15,58,33,203,32 // insertps $0x20,%xmm3,%xmm1
19612 .byte 243,67,15,16,28,136 // movss (%r8,%r9,4),%xmm3
19613 .byte 102,15,58,33,203,48 // insertps $0x30,%xmm3,%xmm1
19614 .byte 76,139,72,24 // mov 0x18(%rax),%r9
19615 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
19616 .byte 68,15,183,193 // movzwl %cx,%r8d
19617 .byte 72,193,233,32 // shr $0x20,%rcx
19618 .byte 102,72,15,126,208 // movq %xmm2,%rax
19619 .byte 68,15,183,208 // movzwl %ax,%r10d
19620 .byte 72,193,232,30 // shr $0x1e,%rax
19621 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
19622 .byte 102,65,15,58,33,20,1,16 // insertps $0x10,(%r9,%rax,1),%xmm2
19623 .byte 243,67,15,16,28,129 // movss (%r9,%r8,4),%xmm3
19624 .byte 102,15,58,33,211,32 // insertps $0x20,%xmm3,%xmm2
19625 .byte 243,65,15,16,28,137 // movss (%r9,%rcx,4),%xmm3
19626 .byte 102,15,58,33,211,48 // insertps $0x30,%xmm3,%xmm2
19627 .byte 102,65,15,114,208,24 // psrld $0x18,%xmm8
19628 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19629 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
19630 .byte 102,15,110,216 // movd %eax,%xmm3
19631 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
19632 .byte 65,15,89,216 // mulps %xmm8,%xmm3
19633 .byte 72,173 // lods %ds:(%rsi),%rax
19634 .byte 255,224 // jmpq *%rax
19635
Mike Kleina3735cd2017-04-17 13:19:05 -040019636HIDDEN _sk_load_tables_u16_be_sse41
19637.globl _sk_load_tables_u16_be_sse41
19638FUNCTION(_sk_load_tables_u16_be_sse41)
19639_sk_load_tables_u16_be_sse41:
19640 .byte 72,173 // lods %ds:(%rsi),%rax
19641 .byte 72,139,8 // mov (%rax),%rcx
19642 .byte 76,139,64,8 // mov 0x8(%rax),%r8
19643 .byte 243,15,111,4,249 // movdqu (%rcx,%rdi,8),%xmm0
19644 .byte 243,15,111,76,249,16 // movdqu 0x10(%rcx,%rdi,8),%xmm1
19645 .byte 102,15,111,216 // movdqa %xmm0,%xmm3
19646 .byte 102,15,97,217 // punpcklwd %xmm1,%xmm3
19647 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
19648 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
19649 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
19650 .byte 102,15,105,216 // punpckhwd %xmm0,%xmm3
19651 .byte 102,15,56,51,193 // pmovzxwd %xmm1,%xmm0
19652 .byte 185,255,0,0,0 // mov $0xff,%ecx
19653 .byte 102,15,110,209 // movd %ecx,%xmm2
19654 .byte 102,68,15,112,194,0 // pshufd $0x0,%xmm2,%xmm8
19655 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
19656 .byte 102,73,15,58,22,193,1 // pextrq $0x1,%xmm0,%r9
19657 .byte 102,72,15,126,193 // movq %xmm0,%rcx
19658 .byte 65,137,202 // mov %ecx,%r10d
19659 .byte 72,193,233,30 // shr $0x1e,%rcx
19660 .byte 69,137,203 // mov %r9d,%r11d
19661 .byte 73,193,233,30 // shr $0x1e,%r9
19662 .byte 243,67,15,16,4,144 // movss (%r8,%r10,4),%xmm0
19663 .byte 102,65,15,58,33,4,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm0
19664 .byte 102,67,15,58,33,4,152,32 // insertps $0x20,(%r8,%r11,4),%xmm0
19665 .byte 102,67,15,58,33,4,8,48 // insertps $0x30,(%r8,%r9,1),%xmm0
19666 .byte 76,139,64,16 // mov 0x10(%rax),%r8
19667 .byte 102,15,115,217,8 // psrldq $0x8,%xmm1
19668 .byte 102,15,56,51,201 // pmovzxwd %xmm1,%xmm1
19669 .byte 102,65,15,219,200 // pand %xmm8,%xmm1
19670 .byte 102,73,15,58,22,201,1 // pextrq $0x1,%xmm1,%r9
19671 .byte 102,72,15,126,201 // movq %xmm1,%rcx
19672 .byte 65,137,202 // mov %ecx,%r10d
19673 .byte 72,193,233,30 // shr $0x1e,%rcx
19674 .byte 69,137,203 // mov %r9d,%r11d
19675 .byte 73,193,233,30 // shr $0x1e,%r9
19676 .byte 243,67,15,16,12,144 // movss (%r8,%r10,4),%xmm1
19677 .byte 102,65,15,58,33,12,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm1
19678 .byte 243,67,15,16,20,152 // movss (%r8,%r11,4),%xmm2
19679 .byte 102,15,58,33,202,32 // insertps $0x20,%xmm2,%xmm1
19680 .byte 243,67,15,16,20,8 // movss (%r8,%r9,1),%xmm2
19681 .byte 102,15,58,33,202,48 // insertps $0x30,%xmm2,%xmm1
19682 .byte 76,139,64,24 // mov 0x18(%rax),%r8
19683 .byte 102,15,56,51,211 // pmovzxwd %xmm3,%xmm2
19684 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
19685 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
19686 .byte 102,72,15,126,208 // movq %xmm2,%rax
19687 .byte 65,137,193 // mov %eax,%r9d
19688 .byte 72,193,232,30 // shr $0x1e,%rax
19689 .byte 65,137,202 // mov %ecx,%r10d
19690 .byte 72,193,233,30 // shr $0x1e,%rcx
19691 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
19692 .byte 102,65,15,58,33,20,0,16 // insertps $0x10,(%r8,%rax,1),%xmm2
19693 .byte 102,67,15,58,33,20,144,32 // insertps $0x20,(%r8,%r10,4),%xmm2
19694 .byte 102,65,15,58,33,20,8,48 // insertps $0x30,(%r8,%rcx,1),%xmm2
19695 .byte 184,128,0,128,55 // mov $0x37800080,%eax
19696 .byte 102,68,15,110,192 // movd %eax,%xmm8
19697 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
19698 .byte 102,15,112,219,78 // pshufd $0x4e,%xmm3,%xmm3
19699 .byte 102,68,15,111,203 // movdqa %xmm3,%xmm9
19700 .byte 102,65,15,113,241,8 // psllw $0x8,%xmm9
19701 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
19702 .byte 102,65,15,235,217 // por %xmm9,%xmm3
19703 .byte 102,15,56,51,219 // pmovzxwd %xmm3,%xmm3
19704 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
19705 .byte 65,15,89,216 // mulps %xmm8,%xmm3
19706 .byte 72,173 // lods %ds:(%rsi),%rax
19707 .byte 255,224 // jmpq *%rax
19708
19709HIDDEN _sk_load_tables_rgb_u16_be_sse41
19710.globl _sk_load_tables_rgb_u16_be_sse41
19711FUNCTION(_sk_load_tables_rgb_u16_be_sse41)
19712_sk_load_tables_rgb_u16_be_sse41:
19713 .byte 72,173 // lods %ds:(%rsi),%rax
19714 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
19715 .byte 72,139,8 // mov (%rax),%rcx
19716 .byte 76,139,64,8 // mov 0x8(%rax),%r8
19717 .byte 243,66,15,111,20,73 // movdqu (%rcx,%r9,2),%xmm2
19718 .byte 243,66,15,111,68,73,8 // movdqu 0x8(%rcx,%r9,2),%xmm0
19719 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
19720 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
19721 .byte 102,15,115,217,6 // psrldq $0x6,%xmm1
19722 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
19723 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
19724 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
19725 .byte 102,15,111,194 // movdqa %xmm2,%xmm0
19726 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
19727 .byte 102,68,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm8
19728 .byte 102,15,105,209 // punpckhwd %xmm1,%xmm2
19729 .byte 102,15,56,51,192 // pmovzxwd %xmm0,%xmm0
19730 .byte 185,255,0,0,0 // mov $0xff,%ecx
19731 .byte 102,15,110,201 // movd %ecx,%xmm1
19732 .byte 102,68,15,112,201,0 // pshufd $0x0,%xmm1,%xmm9
19733 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
19734 .byte 102,73,15,58,22,193,1 // pextrq $0x1,%xmm0,%r9
19735 .byte 102,72,15,126,193 // movq %xmm0,%rcx
19736 .byte 65,137,202 // mov %ecx,%r10d
19737 .byte 72,193,233,30 // shr $0x1e,%rcx
19738 .byte 69,137,203 // mov %r9d,%r11d
19739 .byte 73,193,233,30 // shr $0x1e,%r9
19740 .byte 243,67,15,16,4,144 // movss (%r8,%r10,4),%xmm0
19741 .byte 102,65,15,58,33,4,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm0
19742 .byte 102,67,15,58,33,4,152,32 // insertps $0x20,(%r8,%r11,4),%xmm0
19743 .byte 102,67,15,58,33,4,8,48 // insertps $0x30,(%r8,%r9,1),%xmm0
19744 .byte 76,139,64,16 // mov 0x10(%rax),%r8
19745 .byte 102,65,15,56,51,200 // pmovzxwd %xmm8,%xmm1
19746 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
19747 .byte 102,73,15,58,22,201,1 // pextrq $0x1,%xmm1,%r9
19748 .byte 102,72,15,126,201 // movq %xmm1,%rcx
19749 .byte 65,137,202 // mov %ecx,%r10d
19750 .byte 72,193,233,30 // shr $0x1e,%rcx
19751 .byte 69,137,203 // mov %r9d,%r11d
19752 .byte 73,193,233,30 // shr $0x1e,%r9
19753 .byte 243,67,15,16,12,144 // movss (%r8,%r10,4),%xmm1
19754 .byte 102,65,15,58,33,12,8,16 // insertps $0x10,(%r8,%rcx,1),%xmm1
19755 .byte 243,67,15,16,28,152 // movss (%r8,%r11,4),%xmm3
19756 .byte 102,15,58,33,203,32 // insertps $0x20,%xmm3,%xmm1
19757 .byte 243,67,15,16,28,8 // movss (%r8,%r9,1),%xmm3
19758 .byte 102,15,58,33,203,48 // insertps $0x30,%xmm3,%xmm1
19759 .byte 76,139,64,24 // mov 0x18(%rax),%r8
19760 .byte 102,15,56,51,210 // pmovzxwd %xmm2,%xmm2
19761 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
19762 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
19763 .byte 102,72,15,126,208 // movq %xmm2,%rax
19764 .byte 65,137,193 // mov %eax,%r9d
19765 .byte 72,193,232,30 // shr $0x1e,%rax
19766 .byte 65,137,202 // mov %ecx,%r10d
19767 .byte 72,193,233,30 // shr $0x1e,%rcx
19768 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
19769 .byte 102,65,15,58,33,20,0,16 // insertps $0x10,(%r8,%rax,1),%xmm2
19770 .byte 102,67,15,58,33,20,144,32 // insertps $0x20,(%r8,%r10,4),%xmm2
19771 .byte 102,65,15,58,33,20,8,48 // insertps $0x30,(%r8,%rcx,1),%xmm2
19772 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
19773 .byte 102,15,110,216 // movd %eax,%xmm3
19774 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
19775 .byte 72,173 // lods %ds:(%rsi),%rax
19776 .byte 255,224 // jmpq *%rax
19777
Mike Klein40de6da2017-04-07 13:09:29 -040019778HIDDEN _sk_byte_tables_sse41
19779.globl _sk_byte_tables_sse41
Mike Klein86714282017-04-13 17:37:38 -040019780FUNCTION(_sk_byte_tables_sse41)
Mike Klein40de6da2017-04-07 13:09:29 -040019781_sk_byte_tables_sse41:
19782 .byte 65,86 // push %r14
19783 .byte 83 // push %rbx
19784 .byte 72,173 // lods %ds:(%rsi),%rax
19785 .byte 185,0,0,127,67 // mov $0x437f0000,%ecx
19786 .byte 102,68,15,110,193 // movd %ecx,%xmm8
19787 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
19788 .byte 65,15,89,192 // mulps %xmm8,%xmm0
19789 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
19790 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
19791 .byte 65,137,200 // mov %ecx,%r8d
19792 .byte 72,193,233,32 // shr $0x20,%rcx
19793 .byte 102,73,15,126,193 // movq %xmm0,%r9
19794 .byte 69,137,202 // mov %r9d,%r10d
19795 .byte 77,137,203 // mov %r9,%r11
19796 .byte 73,193,235,32 // shr $0x20,%r11
19797 .byte 76,139,48 // mov (%rax),%r14
19798 .byte 76,139,72,8 // mov 0x8(%rax),%r9
19799 .byte 102,67,15,58,32,4,22,0 // pinsrb $0x0,(%r14,%r10,1),%xmm0
19800 .byte 102,67,15,58,32,4,30,1 // pinsrb $0x1,(%r14,%r11,1),%xmm0
19801 .byte 67,15,182,28,6 // movzbl (%r14,%r8,1),%ebx
19802 .byte 102,15,58,32,195,2 // pinsrb $0x2,%ebx,%xmm0
19803 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
19804 .byte 102,15,58,32,193,3 // pinsrb $0x3,%ecx,%xmm0
19805 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
19806 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
19807 .byte 185,129,128,128,59 // mov $0x3b808081,%ecx
19808 .byte 102,68,15,110,201 // movd %ecx,%xmm9
19809 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
19810 .byte 65,15,89,193 // mulps %xmm9,%xmm0
19811 .byte 65,15,89,200 // mulps %xmm8,%xmm1
19812 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
19813 .byte 102,72,15,58,22,201,1 // pextrq $0x1,%xmm1,%rcx
19814 .byte 65,137,200 // mov %ecx,%r8d
19815 .byte 72,193,233,32 // shr $0x20,%rcx
19816 .byte 102,72,15,126,203 // movq %xmm1,%rbx
19817 .byte 65,137,218 // mov %ebx,%r10d
19818 .byte 72,193,235,32 // shr $0x20,%rbx
19819 .byte 102,67,15,58,32,12,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm1
19820 .byte 102,65,15,58,32,12,25,1 // pinsrb $0x1,(%r9,%rbx,1),%xmm1
19821 .byte 67,15,182,28,1 // movzbl (%r9,%r8,1),%ebx
19822 .byte 102,15,58,32,203,2 // pinsrb $0x2,%ebx,%xmm1
19823 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
19824 .byte 102,15,58,32,201,3 // pinsrb $0x3,%ecx,%xmm1
19825 .byte 102,15,56,49,201 // pmovzxbd %xmm1,%xmm1
19826 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
19827 .byte 65,15,89,201 // mulps %xmm9,%xmm1
19828 .byte 76,139,72,16 // mov 0x10(%rax),%r9
19829 .byte 65,15,89,208 // mulps %xmm8,%xmm2
19830 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
19831 .byte 102,72,15,58,22,211,1 // pextrq $0x1,%xmm2,%rbx
19832 .byte 65,137,216 // mov %ebx,%r8d
19833 .byte 72,193,235,32 // shr $0x20,%rbx
19834 .byte 102,72,15,126,209 // movq %xmm2,%rcx
19835 .byte 65,137,202 // mov %ecx,%r10d
19836 .byte 72,193,233,32 // shr $0x20,%rcx
19837 .byte 102,67,15,58,32,20,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm2
19838 .byte 102,65,15,58,32,20,9,1 // pinsrb $0x1,(%r9,%rcx,1),%xmm2
19839 .byte 67,15,182,12,1 // movzbl (%r9,%r8,1),%ecx
19840 .byte 102,15,58,32,209,2 // pinsrb $0x2,%ecx,%xmm2
19841 .byte 65,15,182,12,25 // movzbl (%r9,%rbx,1),%ecx
19842 .byte 102,15,58,32,209,3 // pinsrb $0x3,%ecx,%xmm2
19843 .byte 102,15,56,49,210 // pmovzxbd %xmm2,%xmm2
19844 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
19845 .byte 65,15,89,209 // mulps %xmm9,%xmm2
19846 .byte 72,139,64,24 // mov 0x18(%rax),%rax
19847 .byte 68,15,89,195 // mulps %xmm3,%xmm8
19848 .byte 102,65,15,91,216 // cvtps2dq %xmm8,%xmm3
19849 .byte 102,72,15,58,22,217,1 // pextrq $0x1,%xmm3,%rcx
19850 .byte 65,137,200 // mov %ecx,%r8d
19851 .byte 72,193,233,32 // shr $0x20,%rcx
19852 .byte 102,72,15,126,219 // movq %xmm3,%rbx
19853 .byte 65,137,217 // mov %ebx,%r9d
19854 .byte 72,193,235,32 // shr $0x20,%rbx
19855 .byte 102,66,15,58,32,28,8,0 // pinsrb $0x0,(%rax,%r9,1),%xmm3
19856 .byte 102,15,58,32,28,24,1 // pinsrb $0x1,(%rax,%rbx,1),%xmm3
19857 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
19858 .byte 102,15,58,32,219,2 // pinsrb $0x2,%ebx,%xmm3
19859 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
19860 .byte 102,15,58,32,216,3 // pinsrb $0x3,%eax,%xmm3
19861 .byte 102,15,56,49,219 // pmovzxbd %xmm3,%xmm3
19862 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
19863 .byte 65,15,89,217 // mulps %xmm9,%xmm3
19864 .byte 72,173 // lods %ds:(%rsi),%rax
19865 .byte 91 // pop %rbx
19866 .byte 65,94 // pop %r14
19867 .byte 255,224 // jmpq *%rax
19868
19869HIDDEN _sk_byte_tables_rgb_sse41
19870.globl _sk_byte_tables_rgb_sse41
Mike Klein86714282017-04-13 17:37:38 -040019871FUNCTION(_sk_byte_tables_rgb_sse41)
Mike Klein40de6da2017-04-07 13:09:29 -040019872_sk_byte_tables_rgb_sse41:
19873 .byte 65,86 // push %r14
19874 .byte 83 // push %rbx
19875 .byte 72,173 // lods %ds:(%rsi),%rax
19876 .byte 139,72,24 // mov 0x18(%rax),%ecx
19877 .byte 255,201 // dec %ecx
19878 .byte 102,68,15,110,193 // movd %ecx,%xmm8
19879 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
19880 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19881 .byte 65,15,89,192 // mulps %xmm8,%xmm0
19882 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
19883 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
19884 .byte 65,137,200 // mov %ecx,%r8d
19885 .byte 72,193,233,32 // shr $0x20,%rcx
19886 .byte 102,73,15,126,193 // movq %xmm0,%r9
19887 .byte 69,137,202 // mov %r9d,%r10d
19888 .byte 77,137,203 // mov %r9,%r11
19889 .byte 73,193,235,32 // shr $0x20,%r11
19890 .byte 76,139,48 // mov (%rax),%r14
19891 .byte 76,139,72,8 // mov 0x8(%rax),%r9
19892 .byte 102,67,15,58,32,4,22,0 // pinsrb $0x0,(%r14,%r10,1),%xmm0
19893 .byte 102,67,15,58,32,4,30,1 // pinsrb $0x1,(%r14,%r11,1),%xmm0
19894 .byte 67,15,182,28,6 // movzbl (%r14,%r8,1),%ebx
19895 .byte 102,15,58,32,195,2 // pinsrb $0x2,%ebx,%xmm0
19896 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
19897 .byte 102,15,58,32,193,3 // pinsrb $0x3,%ecx,%xmm0
19898 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
19899 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
19900 .byte 185,129,128,128,59 // mov $0x3b808081,%ecx
19901 .byte 102,68,15,110,201 // movd %ecx,%xmm9
19902 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
19903 .byte 65,15,89,193 // mulps %xmm9,%xmm0
19904 .byte 65,15,89,200 // mulps %xmm8,%xmm1
19905 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
19906 .byte 102,72,15,58,22,201,1 // pextrq $0x1,%xmm1,%rcx
19907 .byte 65,137,200 // mov %ecx,%r8d
19908 .byte 72,193,233,32 // shr $0x20,%rcx
19909 .byte 102,72,15,126,203 // movq %xmm1,%rbx
19910 .byte 65,137,218 // mov %ebx,%r10d
19911 .byte 72,193,235,32 // shr $0x20,%rbx
19912 .byte 102,67,15,58,32,12,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm1
19913 .byte 102,65,15,58,32,12,25,1 // pinsrb $0x1,(%r9,%rbx,1),%xmm1
19914 .byte 67,15,182,28,1 // movzbl (%r9,%r8,1),%ebx
19915 .byte 102,15,58,32,203,2 // pinsrb $0x2,%ebx,%xmm1
19916 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
19917 .byte 102,15,58,32,201,3 // pinsrb $0x3,%ecx,%xmm1
19918 .byte 102,15,56,49,201 // pmovzxbd %xmm1,%xmm1
19919 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
19920 .byte 65,15,89,201 // mulps %xmm9,%xmm1
19921 .byte 72,139,64,16 // mov 0x10(%rax),%rax
19922 .byte 65,15,89,208 // mulps %xmm8,%xmm2
19923 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
19924 .byte 102,72,15,58,22,209,1 // pextrq $0x1,%xmm2,%rcx
19925 .byte 65,137,200 // mov %ecx,%r8d
19926 .byte 72,193,233,32 // shr $0x20,%rcx
19927 .byte 102,72,15,126,211 // movq %xmm2,%rbx
19928 .byte 65,137,217 // mov %ebx,%r9d
19929 .byte 72,193,235,32 // shr $0x20,%rbx
19930 .byte 102,66,15,58,32,20,8,0 // pinsrb $0x0,(%rax,%r9,1),%xmm2
19931 .byte 102,15,58,32,20,24,1 // pinsrb $0x1,(%rax,%rbx,1),%xmm2
19932 .byte 66,15,182,28,0 // movzbl (%rax,%r8,1),%ebx
19933 .byte 102,15,58,32,211,2 // pinsrb $0x2,%ebx,%xmm2
19934 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
19935 .byte 102,15,58,32,208,3 // pinsrb $0x3,%eax,%xmm2
19936 .byte 102,15,56,49,210 // pmovzxbd %xmm2,%xmm2
19937 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
19938 .byte 65,15,89,209 // mulps %xmm9,%xmm2
19939 .byte 72,173 // lods %ds:(%rsi),%rax
19940 .byte 91 // pop %rbx
19941 .byte 65,94 // pop %r14
19942 .byte 255,224 // jmpq *%rax
19943
Mike Kleinc7d9c0b2017-04-17 14:43:59 -040019944HIDDEN _sk_table_r_sse41
19945.globl _sk_table_r_sse41
19946FUNCTION(_sk_table_r_sse41)
19947_sk_table_r_sse41:
19948 .byte 72,173 // lods %ds:(%rsi),%rax
19949 .byte 76,139,8 // mov (%rax),%r9
19950 .byte 139,64,8 // mov 0x8(%rax),%eax
19951 .byte 255,200 // dec %eax
19952 .byte 102,68,15,110,192 // movd %eax,%xmm8
19953 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
19954 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19955 .byte 68,15,89,192 // mulps %xmm0,%xmm8
19956 .byte 102,65,15,91,192 // cvtps2dq %xmm8,%xmm0
19957 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
19958 .byte 65,137,192 // mov %eax,%r8d
19959 .byte 72,193,232,32 // shr $0x20,%rax
19960 .byte 102,72,15,126,193 // movq %xmm0,%rcx
19961 .byte 65,137,202 // mov %ecx,%r10d
19962 .byte 72,193,233,32 // shr $0x20,%rcx
19963 .byte 243,67,15,16,4,145 // movss (%r9,%r10,4),%xmm0
19964 .byte 102,65,15,58,33,4,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm0
19965 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
19966 .byte 102,65,15,58,33,192,32 // insertps $0x20,%xmm8,%xmm0
19967 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
19968 .byte 102,65,15,58,33,192,48 // insertps $0x30,%xmm8,%xmm0
19969 .byte 72,173 // lods %ds:(%rsi),%rax
19970 .byte 255,224 // jmpq *%rax
19971
19972HIDDEN _sk_table_g_sse41
19973.globl _sk_table_g_sse41
19974FUNCTION(_sk_table_g_sse41)
19975_sk_table_g_sse41:
19976 .byte 72,173 // lods %ds:(%rsi),%rax
19977 .byte 76,139,8 // mov (%rax),%r9
19978 .byte 139,64,8 // mov 0x8(%rax),%eax
19979 .byte 255,200 // dec %eax
19980 .byte 102,68,15,110,192 // movd %eax,%xmm8
19981 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
19982 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
19983 .byte 68,15,89,193 // mulps %xmm1,%xmm8
19984 .byte 102,65,15,91,200 // cvtps2dq %xmm8,%xmm1
19985 .byte 102,72,15,58,22,200,1 // pextrq $0x1,%xmm1,%rax
19986 .byte 65,137,192 // mov %eax,%r8d
19987 .byte 72,193,232,32 // shr $0x20,%rax
19988 .byte 102,72,15,126,201 // movq %xmm1,%rcx
19989 .byte 65,137,202 // mov %ecx,%r10d
19990 .byte 72,193,233,32 // shr $0x20,%rcx
19991 .byte 243,67,15,16,12,145 // movss (%r9,%r10,4),%xmm1
19992 .byte 102,65,15,58,33,12,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm1
19993 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
19994 .byte 102,65,15,58,33,200,32 // insertps $0x20,%xmm8,%xmm1
19995 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
19996 .byte 102,65,15,58,33,200,48 // insertps $0x30,%xmm8,%xmm1
19997 .byte 72,173 // lods %ds:(%rsi),%rax
19998 .byte 255,224 // jmpq *%rax
19999
20000HIDDEN _sk_table_b_sse41
20001.globl _sk_table_b_sse41
20002FUNCTION(_sk_table_b_sse41)
20003_sk_table_b_sse41:
20004 .byte 72,173 // lods %ds:(%rsi),%rax
20005 .byte 76,139,8 // mov (%rax),%r9
20006 .byte 139,64,8 // mov 0x8(%rax),%eax
20007 .byte 255,200 // dec %eax
20008 .byte 102,68,15,110,192 // movd %eax,%xmm8
20009 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
20010 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
20011 .byte 68,15,89,194 // mulps %xmm2,%xmm8
20012 .byte 102,65,15,91,208 // cvtps2dq %xmm8,%xmm2
20013 .byte 102,72,15,58,22,208,1 // pextrq $0x1,%xmm2,%rax
20014 .byte 65,137,192 // mov %eax,%r8d
20015 .byte 72,193,232,32 // shr $0x20,%rax
20016 .byte 102,72,15,126,209 // movq %xmm2,%rcx
20017 .byte 65,137,202 // mov %ecx,%r10d
20018 .byte 72,193,233,32 // shr $0x20,%rcx
20019 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
20020 .byte 102,65,15,58,33,20,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm2
20021 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
20022 .byte 102,65,15,58,33,208,32 // insertps $0x20,%xmm8,%xmm2
20023 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
20024 .byte 102,65,15,58,33,208,48 // insertps $0x30,%xmm8,%xmm2
20025 .byte 72,173 // lods %ds:(%rsi),%rax
20026 .byte 255,224 // jmpq *%rax
20027
20028HIDDEN _sk_table_a_sse41
20029.globl _sk_table_a_sse41
20030FUNCTION(_sk_table_a_sse41)
20031_sk_table_a_sse41:
20032 .byte 72,173 // lods %ds:(%rsi),%rax
20033 .byte 76,139,8 // mov (%rax),%r9
20034 .byte 139,64,8 // mov 0x8(%rax),%eax
20035 .byte 255,200 // dec %eax
20036 .byte 102,68,15,110,192 // movd %eax,%xmm8
20037 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
20038 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
20039 .byte 68,15,89,195 // mulps %xmm3,%xmm8
20040 .byte 102,65,15,91,216 // cvtps2dq %xmm8,%xmm3
20041 .byte 102,72,15,58,22,216,1 // pextrq $0x1,%xmm3,%rax
20042 .byte 65,137,192 // mov %eax,%r8d
20043 .byte 72,193,232,32 // shr $0x20,%rax
20044 .byte 102,72,15,126,217 // movq %xmm3,%rcx
20045 .byte 65,137,202 // mov %ecx,%r10d
20046 .byte 72,193,233,32 // shr $0x20,%rcx
20047 .byte 243,67,15,16,28,145 // movss (%r9,%r10,4),%xmm3
20048 .byte 102,65,15,58,33,28,137,16 // insertps $0x10,(%r9,%rcx,4),%xmm3
20049 .byte 243,71,15,16,4,129 // movss (%r9,%r8,4),%xmm8
20050 .byte 102,65,15,58,33,216,32 // insertps $0x20,%xmm8,%xmm3
20051 .byte 243,69,15,16,4,129 // movss (%r9,%rax,4),%xmm8
20052 .byte 102,65,15,58,33,216,48 // insertps $0x30,%xmm8,%xmm3
20053 .byte 72,173 // lods %ds:(%rsi),%rax
20054 .byte 255,224 // jmpq *%rax
20055
Mike Klein44375172017-04-17 19:32:05 -040020056HIDDEN _sk_parametric_r_sse41
20057.globl _sk_parametric_r_sse41
20058FUNCTION(_sk_parametric_r_sse41)
20059_sk_parametric_r_sse41:
20060 .byte 72,173 // lods %ds:(%rsi),%rax
20061 .byte 243,68,15,16,64,16 // movss 0x10(%rax),%xmm8
20062 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20063 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
20064 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20065 .byte 68,15,89,200 // mulps %xmm0,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040020066 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
20067 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20068 .byte 68,15,89,216 // mulps %xmm0,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040020069 .byte 65,15,194,192,2 // cmpleps %xmm8,%xmm0
20070 .byte 243,68,15,16,64,24 // movss 0x18(%rax),%xmm8
20071 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20072 .byte 69,15,88,200 // addps %xmm8,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040020073 .byte 243,68,15,16,16 // movss (%rax),%xmm10
20074 .byte 243,68,15,16,64,8 // movss 0x8(%rax),%xmm8
20075 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20076 .byte 69,15,88,216 // addps %xmm8,%xmm11
20077 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20078 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020079 .byte 185,0,0,0,52 // mov $0x34000000,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040020080 .byte 102,68,15,110,193 // movd %ecx,%xmm8
20081 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20082 .byte 69,15,89,196 // mulps %xmm12,%xmm8
Mike Klein44375172017-04-17 19:32:05 -040020083 .byte 185,255,255,127,0 // mov $0x7fffff,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040020084 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20085 .byte 102,69,15,112,228,0 // pshufd $0x0,%xmm12,%xmm12
20086 .byte 102,69,15,219,227 // pand %xmm11,%xmm12
20087 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
Mike Klein44375172017-04-17 19:32:05 -040020088 .byte 102,68,15,110,217 // movd %ecx,%xmm11
20089 .byte 102,69,15,112,219,0 // pshufd $0x0,%xmm11,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040020090 .byte 102,69,15,235,220 // por %xmm12,%xmm11
20091 .byte 185,119,115,248,66 // mov $0x42f87377,%ecx
20092 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20093 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20094 .byte 69,15,92,196 // subps %xmm12,%xmm8
Mike Klein44375172017-04-17 19:32:05 -040020095 .byte 185,117,191,191,63 // mov $0x3fbfbf75,%ecx
20096 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20097 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinda164342017-04-19 14:33:58 -040020098 .byte 69,15,89,227 // mulps %xmm11,%xmm12
20099 .byte 69,15,92,196 // subps %xmm12,%xmm8
Mike Klein44375172017-04-17 19:32:05 -040020100 .byte 185,163,233,220,63 // mov $0x3fdce9a3,%ecx
20101 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20102 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20103 .byte 185,249,68,180,62 // mov $0x3eb444f9,%ecx
20104 .byte 102,68,15,110,233 // movd %ecx,%xmm13
20105 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
Mike Kleinda164342017-04-19 14:33:58 -040020106 .byte 69,15,88,235 // addps %xmm11,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020107 .byte 69,15,94,229 // divps %xmm13,%xmm12
Mike Kleinda164342017-04-19 14:33:58 -040020108 .byte 69,15,92,196 // subps %xmm12,%xmm8
20109 .byte 69,15,89,194 // mulps %xmm10,%xmm8
Mike Klein44375172017-04-17 19:32:05 -040020110 .byte 102,69,15,58,8,216,1 // roundps $0x1,%xmm8,%xmm11
20111 .byte 185,0,0,0,75 // mov $0x4b000000,%ecx
20112 .byte 102,68,15,110,209 // movd %ecx,%xmm10
20113 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20114 .byte 185,81,140,242,66 // mov $0x42f28c51,%ecx
20115 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20116 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20117 .byte 69,15,88,224 // addps %xmm8,%xmm12
20118 .byte 69,15,92,195 // subps %xmm11,%xmm8
20119 .byte 185,141,188,190,63 // mov $0x3fbebc8d,%ecx
20120 .byte 102,68,15,110,217 // movd %ecx,%xmm11
20121 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20122 .byte 69,15,89,216 // mulps %xmm8,%xmm11
20123 .byte 69,15,92,227 // subps %xmm11,%xmm12
20124 .byte 185,254,210,221,65 // mov $0x41ddd2fe,%ecx
20125 .byte 102,68,15,110,217 // movd %ecx,%xmm11
20126 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20127 .byte 185,248,245,154,64 // mov $0x409af5f8,%ecx
20128 .byte 102,68,15,110,233 // movd %ecx,%xmm13
20129 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
20130 .byte 69,15,92,232 // subps %xmm8,%xmm13
20131 .byte 69,15,94,221 // divps %xmm13,%xmm11
20132 .byte 69,15,88,220 // addps %xmm12,%xmm11
20133 .byte 69,15,89,218 // mulps %xmm10,%xmm11
20134 .byte 102,69,15,91,211 // cvtps2dq %xmm11,%xmm10
20135 .byte 243,68,15,16,64,20 // movss 0x14(%rax),%xmm8
20136 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20137 .byte 69,15,88,194 // addps %xmm10,%xmm8
20138 .byte 102,69,15,56,20,193 // blendvps %xmm0,%xmm9,%xmm8
20139 .byte 15,87,192 // xorps %xmm0,%xmm0
20140 .byte 68,15,95,192 // maxps %xmm0,%xmm8
20141 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
20142 .byte 102,15,110,192 // movd %eax,%xmm0
20143 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20144 .byte 68,15,93,192 // minps %xmm0,%xmm8
20145 .byte 72,173 // lods %ds:(%rsi),%rax
20146 .byte 65,15,40,192 // movaps %xmm8,%xmm0
20147 .byte 255,224 // jmpq *%rax
20148
20149HIDDEN _sk_parametric_g_sse41
20150.globl _sk_parametric_g_sse41
20151FUNCTION(_sk_parametric_g_sse41)
20152_sk_parametric_g_sse41:
20153 .byte 68,15,40,192 // movaps %xmm0,%xmm8
20154 .byte 72,173 // lods %ds:(%rsi),%rax
20155 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
20156 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20157 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
20158 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20159 .byte 68,15,89,201 // mulps %xmm1,%xmm9
20160 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
20161 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20162 .byte 68,15,89,217 // mulps %xmm1,%xmm11
20163 .byte 15,40,193 // movaps %xmm1,%xmm0
20164 .byte 65,15,194,194,2 // cmpleps %xmm10,%xmm0
20165 .byte 243,15,16,72,24 // movss 0x18(%rax),%xmm1
20166 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20167 .byte 68,15,88,201 // addps %xmm1,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040020168 .byte 243,68,15,16,16 // movss (%rax),%xmm10
Mike Klein44375172017-04-17 19:32:05 -040020169 .byte 243,15,16,72,8 // movss 0x8(%rax),%xmm1
20170 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20171 .byte 68,15,88,217 // addps %xmm1,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040020172 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20173 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020174 .byte 185,0,0,0,52 // mov $0x34000000,%ecx
20175 .byte 102,68,15,110,233 // movd %ecx,%xmm13
20176 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
Mike Kleinda164342017-04-19 14:33:58 -040020177 .byte 69,15,89,236 // mulps %xmm12,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020178 .byte 185,255,255,127,0 // mov $0x7fffff,%ecx
20179 .byte 102,15,110,201 // movd %ecx,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -040020180 .byte 102,68,15,112,225,0 // pshufd $0x0,%xmm1,%xmm12
20181 .byte 102,69,15,219,227 // pand %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020182 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
20183 .byte 102,15,110,201 // movd %ecx,%xmm1
20184 .byte 102,68,15,112,217,0 // pshufd $0x0,%xmm1,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040020185 .byte 102,69,15,235,220 // por %xmm12,%xmm11
20186 .byte 185,119,115,248,66 // mov $0x42f87377,%ecx
20187 .byte 102,15,110,201 // movd %ecx,%xmm1
20188 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20189 .byte 68,15,92,233 // subps %xmm1,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020190 .byte 185,117,191,191,63 // mov $0x3fbfbf75,%ecx
20191 .byte 102,15,110,201 // movd %ecx,%xmm1
20192 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20193 .byte 65,15,89,203 // mulps %xmm11,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -040020194 .byte 68,15,92,233 // subps %xmm1,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020195 .byte 185,163,233,220,63 // mov $0x3fdce9a3,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040020196 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20197 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020198 .byte 185,249,68,180,62 // mov $0x3eb444f9,%ecx
20199 .byte 102,15,110,201 // movd %ecx,%xmm1
20200 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20201 .byte 65,15,88,203 // addps %xmm11,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -040020202 .byte 68,15,94,225 // divps %xmm1,%xmm12
20203 .byte 69,15,92,236 // subps %xmm12,%xmm13
20204 .byte 69,15,89,234 // mulps %xmm10,%xmm13
20205 .byte 102,69,15,58,8,221,1 // roundps $0x1,%xmm13,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040020206 .byte 185,0,0,0,75 // mov $0x4b000000,%ecx
20207 .byte 102,68,15,110,209 // movd %ecx,%xmm10
20208 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20209 .byte 185,81,140,242,66 // mov $0x42f28c51,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040020210 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20211 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20212 .byte 69,15,88,229 // addps %xmm13,%xmm12
20213 .byte 69,15,92,235 // subps %xmm11,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020214 .byte 185,141,188,190,63 // mov $0x3fbebc8d,%ecx
20215 .byte 102,15,110,201 // movd %ecx,%xmm1
20216 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -040020217 .byte 65,15,89,205 // mulps %xmm13,%xmm1
20218 .byte 68,15,92,225 // subps %xmm1,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020219 .byte 185,254,210,221,65 // mov $0x41ddd2fe,%ecx
20220 .byte 102,68,15,110,217 // movd %ecx,%xmm11
20221 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20222 .byte 185,248,245,154,64 // mov $0x409af5f8,%ecx
20223 .byte 102,15,110,201 // movd %ecx,%xmm1
20224 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -040020225 .byte 65,15,92,205 // subps %xmm13,%xmm1
Mike Klein44375172017-04-17 19:32:05 -040020226 .byte 68,15,94,217 // divps %xmm1,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040020227 .byte 69,15,88,220 // addps %xmm12,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040020228 .byte 69,15,89,218 // mulps %xmm10,%xmm11
20229 .byte 102,69,15,91,211 // cvtps2dq %xmm11,%xmm10
20230 .byte 243,15,16,72,20 // movss 0x14(%rax),%xmm1
20231 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20232 .byte 65,15,88,202 // addps %xmm10,%xmm1
20233 .byte 102,65,15,56,20,201 // blendvps %xmm0,%xmm9,%xmm1
20234 .byte 15,87,192 // xorps %xmm0,%xmm0
20235 .byte 15,95,200 // maxps %xmm0,%xmm1
20236 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
20237 .byte 102,15,110,192 // movd %eax,%xmm0
20238 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20239 .byte 15,93,200 // minps %xmm0,%xmm1
20240 .byte 72,173 // lods %ds:(%rsi),%rax
20241 .byte 65,15,40,192 // movaps %xmm8,%xmm0
20242 .byte 255,224 // jmpq *%rax
20243
20244HIDDEN _sk_parametric_b_sse41
20245.globl _sk_parametric_b_sse41
20246FUNCTION(_sk_parametric_b_sse41)
20247_sk_parametric_b_sse41:
20248 .byte 68,15,40,192 // movaps %xmm0,%xmm8
20249 .byte 72,173 // lods %ds:(%rsi),%rax
20250 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
20251 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20252 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
20253 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20254 .byte 68,15,89,202 // mulps %xmm2,%xmm9
20255 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
20256 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20257 .byte 68,15,89,218 // mulps %xmm2,%xmm11
20258 .byte 15,40,194 // movaps %xmm2,%xmm0
20259 .byte 65,15,194,194,2 // cmpleps %xmm10,%xmm0
20260 .byte 243,15,16,80,24 // movss 0x18(%rax),%xmm2
20261 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20262 .byte 68,15,88,202 // addps %xmm2,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040020263 .byte 243,68,15,16,16 // movss (%rax),%xmm10
Mike Klein44375172017-04-17 19:32:05 -040020264 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
20265 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20266 .byte 68,15,88,218 // addps %xmm2,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040020267 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20268 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020269 .byte 185,0,0,0,52 // mov $0x34000000,%ecx
20270 .byte 102,68,15,110,233 // movd %ecx,%xmm13
20271 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
Mike Kleinda164342017-04-19 14:33:58 -040020272 .byte 69,15,89,236 // mulps %xmm12,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020273 .byte 185,255,255,127,0 // mov $0x7fffff,%ecx
20274 .byte 102,15,110,209 // movd %ecx,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040020275 .byte 102,68,15,112,226,0 // pshufd $0x0,%xmm2,%xmm12
20276 .byte 102,69,15,219,227 // pand %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020277 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
20278 .byte 102,15,110,209 // movd %ecx,%xmm2
20279 .byte 102,68,15,112,218,0 // pshufd $0x0,%xmm2,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040020280 .byte 102,69,15,235,220 // por %xmm12,%xmm11
20281 .byte 185,119,115,248,66 // mov $0x42f87377,%ecx
20282 .byte 102,15,110,209 // movd %ecx,%xmm2
20283 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20284 .byte 68,15,92,234 // subps %xmm2,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020285 .byte 185,117,191,191,63 // mov $0x3fbfbf75,%ecx
20286 .byte 102,15,110,209 // movd %ecx,%xmm2
20287 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20288 .byte 65,15,89,211 // mulps %xmm11,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040020289 .byte 68,15,92,234 // subps %xmm2,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020290 .byte 185,163,233,220,63 // mov $0x3fdce9a3,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040020291 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20292 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020293 .byte 185,249,68,180,62 // mov $0x3eb444f9,%ecx
20294 .byte 102,15,110,209 // movd %ecx,%xmm2
20295 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20296 .byte 65,15,88,211 // addps %xmm11,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040020297 .byte 68,15,94,226 // divps %xmm2,%xmm12
20298 .byte 69,15,92,236 // subps %xmm12,%xmm13
20299 .byte 69,15,89,234 // mulps %xmm10,%xmm13
20300 .byte 102,69,15,58,8,221,1 // roundps $0x1,%xmm13,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040020301 .byte 185,0,0,0,75 // mov $0x4b000000,%ecx
20302 .byte 102,68,15,110,209 // movd %ecx,%xmm10
20303 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20304 .byte 185,81,140,242,66 // mov $0x42f28c51,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040020305 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20306 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20307 .byte 69,15,88,229 // addps %xmm13,%xmm12
20308 .byte 69,15,92,235 // subps %xmm11,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020309 .byte 185,141,188,190,63 // mov $0x3fbebc8d,%ecx
20310 .byte 102,15,110,209 // movd %ecx,%xmm2
20311 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040020312 .byte 65,15,89,213 // mulps %xmm13,%xmm2
20313 .byte 68,15,92,226 // subps %xmm2,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020314 .byte 185,254,210,221,65 // mov $0x41ddd2fe,%ecx
20315 .byte 102,68,15,110,217 // movd %ecx,%xmm11
20316 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20317 .byte 185,248,245,154,64 // mov $0x409af5f8,%ecx
20318 .byte 102,15,110,209 // movd %ecx,%xmm2
20319 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040020320 .byte 65,15,92,213 // subps %xmm13,%xmm2
Mike Klein44375172017-04-17 19:32:05 -040020321 .byte 68,15,94,218 // divps %xmm2,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040020322 .byte 69,15,88,220 // addps %xmm12,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040020323 .byte 69,15,89,218 // mulps %xmm10,%xmm11
20324 .byte 102,69,15,91,211 // cvtps2dq %xmm11,%xmm10
20325 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
20326 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20327 .byte 65,15,88,210 // addps %xmm10,%xmm2
20328 .byte 102,65,15,56,20,209 // blendvps %xmm0,%xmm9,%xmm2
20329 .byte 15,87,192 // xorps %xmm0,%xmm0
20330 .byte 15,95,208 // maxps %xmm0,%xmm2
20331 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
20332 .byte 102,15,110,192 // movd %eax,%xmm0
20333 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20334 .byte 15,93,208 // minps %xmm0,%xmm2
20335 .byte 72,173 // lods %ds:(%rsi),%rax
20336 .byte 65,15,40,192 // movaps %xmm8,%xmm0
20337 .byte 255,224 // jmpq *%rax
20338
20339HIDDEN _sk_parametric_a_sse41
20340.globl _sk_parametric_a_sse41
20341FUNCTION(_sk_parametric_a_sse41)
20342_sk_parametric_a_sse41:
20343 .byte 68,15,40,192 // movaps %xmm0,%xmm8
20344 .byte 72,173 // lods %ds:(%rsi),%rax
20345 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
20346 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20347 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
20348 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
20349 .byte 68,15,89,203 // mulps %xmm3,%xmm9
20350 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
20351 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20352 .byte 68,15,89,219 // mulps %xmm3,%xmm11
20353 .byte 15,40,195 // movaps %xmm3,%xmm0
20354 .byte 65,15,194,194,2 // cmpleps %xmm10,%xmm0
20355 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
20356 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20357 .byte 68,15,88,203 // addps %xmm3,%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040020358 .byte 243,68,15,16,16 // movss (%rax),%xmm10
Mike Klein44375172017-04-17 19:32:05 -040020359 .byte 243,15,16,88,8 // movss 0x8(%rax),%xmm3
20360 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20361 .byte 68,15,88,219 // addps %xmm3,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040020362 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20363 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020364 .byte 185,0,0,0,52 // mov $0x34000000,%ecx
20365 .byte 102,68,15,110,233 // movd %ecx,%xmm13
20366 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
Mike Kleinda164342017-04-19 14:33:58 -040020367 .byte 69,15,89,236 // mulps %xmm12,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020368 .byte 185,255,255,127,0 // mov $0x7fffff,%ecx
20369 .byte 102,15,110,217 // movd %ecx,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040020370 .byte 102,68,15,112,227,0 // pshufd $0x0,%xmm3,%xmm12
20371 .byte 102,69,15,219,227 // pand %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020372 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
20373 .byte 102,15,110,217 // movd %ecx,%xmm3
20374 .byte 102,68,15,112,219,0 // pshufd $0x0,%xmm3,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040020375 .byte 102,69,15,235,220 // por %xmm12,%xmm11
20376 .byte 185,119,115,248,66 // mov $0x42f87377,%ecx
20377 .byte 102,15,110,217 // movd %ecx,%xmm3
20378 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20379 .byte 68,15,92,235 // subps %xmm3,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020380 .byte 185,117,191,191,63 // mov $0x3fbfbf75,%ecx
20381 .byte 102,15,110,217 // movd %ecx,%xmm3
20382 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20383 .byte 65,15,89,219 // mulps %xmm11,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040020384 .byte 68,15,92,235 // subps %xmm3,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020385 .byte 185,163,233,220,63 // mov $0x3fdce9a3,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040020386 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20387 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020388 .byte 185,249,68,180,62 // mov $0x3eb444f9,%ecx
20389 .byte 102,15,110,217 // movd %ecx,%xmm3
20390 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20391 .byte 65,15,88,219 // addps %xmm11,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040020392 .byte 68,15,94,227 // divps %xmm3,%xmm12
20393 .byte 69,15,92,236 // subps %xmm12,%xmm13
20394 .byte 69,15,89,234 // mulps %xmm10,%xmm13
20395 .byte 102,69,15,58,8,221,1 // roundps $0x1,%xmm13,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040020396 .byte 185,0,0,0,75 // mov $0x4b000000,%ecx
20397 .byte 102,68,15,110,209 // movd %ecx,%xmm10
20398 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20399 .byte 185,81,140,242,66 // mov $0x42f28c51,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040020400 .byte 102,68,15,110,225 // movd %ecx,%xmm12
20401 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
20402 .byte 69,15,88,229 // addps %xmm13,%xmm12
20403 .byte 69,15,92,235 // subps %xmm11,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040020404 .byte 185,141,188,190,63 // mov $0x3fbebc8d,%ecx
20405 .byte 102,15,110,217 // movd %ecx,%xmm3
20406 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040020407 .byte 65,15,89,221 // mulps %xmm13,%xmm3
20408 .byte 68,15,92,227 // subps %xmm3,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040020409 .byte 185,254,210,221,65 // mov $0x41ddd2fe,%ecx
20410 .byte 102,68,15,110,217 // movd %ecx,%xmm11
20411 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
20412 .byte 185,248,245,154,64 // mov $0x409af5f8,%ecx
20413 .byte 102,15,110,217 // movd %ecx,%xmm3
20414 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040020415 .byte 65,15,92,221 // subps %xmm13,%xmm3
Mike Klein44375172017-04-17 19:32:05 -040020416 .byte 68,15,94,219 // divps %xmm3,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040020417 .byte 69,15,88,220 // addps %xmm12,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040020418 .byte 69,15,89,218 // mulps %xmm10,%xmm11
20419 .byte 102,69,15,91,211 // cvtps2dq %xmm11,%xmm10
20420 .byte 243,15,16,88,20 // movss 0x14(%rax),%xmm3
20421 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20422 .byte 65,15,88,218 // addps %xmm10,%xmm3
20423 .byte 102,65,15,56,20,217 // blendvps %xmm0,%xmm9,%xmm3
20424 .byte 15,87,192 // xorps %xmm0,%xmm0
20425 .byte 15,95,216 // maxps %xmm0,%xmm3
20426 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
20427 .byte 102,15,110,192 // movd %eax,%xmm0
20428 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20429 .byte 15,93,216 // minps %xmm0,%xmm3
20430 .byte 72,173 // lods %ds:(%rsi),%rax
20431 .byte 65,15,40,192 // movaps %xmm8,%xmm0
20432 .byte 255,224 // jmpq *%rax
20433
Mike Klein7c4af542017-03-29 18:21:14 -040020434HIDDEN _sk_load_a8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020435.globl _sk_load_a8_sse41
Mike Klein86714282017-04-13 17:37:38 -040020436FUNCTION(_sk_load_a8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020437_sk_load_a8_sse41:
20438 .byte 72,173 // lods %ds:(%rsi),%rax
20439 .byte 72,139,0 // mov (%rax),%rax
20440 .byte 102,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm0
20441 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
20442 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
20443 .byte 102,15,110,216 // movd %eax,%xmm3
20444 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20445 .byte 15,89,216 // mulps %xmm0,%xmm3
20446 .byte 72,173 // lods %ds:(%rsi),%rax
20447 .byte 15,87,192 // xorps %xmm0,%xmm0
20448 .byte 15,87,201 // xorps %xmm1,%xmm1
20449 .byte 15,87,210 // xorps %xmm2,%xmm2
20450 .byte 255,224 // jmpq *%rax
20451
Mike Klein21bd3e42017-04-06 16:32:29 -040020452HIDDEN _sk_gather_a8_sse41
20453.globl _sk_gather_a8_sse41
Mike Klein86714282017-04-13 17:37:38 -040020454FUNCTION(_sk_gather_a8_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040020455_sk_gather_a8_sse41:
20456 .byte 72,173 // lods %ds:(%rsi),%rax
20457 .byte 76,139,8 // mov (%rax),%r9
20458 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
20459 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
20460 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20461 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
20462 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
20463 .byte 102,15,254,194 // paddd %xmm2,%xmm0
20464 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
20465 .byte 65,137,192 // mov %eax,%r8d
20466 .byte 72,193,232,32 // shr $0x20,%rax
20467 .byte 102,72,15,126,193 // movq %xmm0,%rcx
20468 .byte 65,137,202 // mov %ecx,%r10d
20469 .byte 72,193,233,32 // shr $0x20,%rcx
20470 .byte 102,67,15,58,32,4,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm0
20471 .byte 102,65,15,58,32,4,9,1 // pinsrb $0x1,(%r9,%rcx,1),%xmm0
20472 .byte 67,15,182,12,1 // movzbl (%r9,%r8,1),%ecx
20473 .byte 102,15,58,32,193,2 // pinsrb $0x2,%ecx,%xmm0
20474 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
20475 .byte 102,15,58,32,192,3 // pinsrb $0x3,%eax,%xmm0
20476 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
20477 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
20478 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
20479 .byte 102,15,110,216 // movd %eax,%xmm3
20480 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20481 .byte 15,89,216 // mulps %xmm0,%xmm3
20482 .byte 72,173 // lods %ds:(%rsi),%rax
20483 .byte 15,87,192 // xorps %xmm0,%xmm0
20484 .byte 102,15,239,201 // pxor %xmm1,%xmm1
20485 .byte 102,15,239,210 // pxor %xmm2,%xmm2
20486 .byte 255,224 // jmpq *%rax
20487
Mike Klein7c4af542017-03-29 18:21:14 -040020488HIDDEN _sk_store_a8_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020489.globl _sk_store_a8_sse41
Mike Klein86714282017-04-13 17:37:38 -040020490FUNCTION(_sk_store_a8_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020491_sk_store_a8_sse41:
20492 .byte 72,173 // lods %ds:(%rsi),%rax
20493 .byte 72,139,0 // mov (%rax),%rax
20494 .byte 185,0,0,127,67 // mov $0x437f0000,%ecx
20495 .byte 102,68,15,110,193 // movd %ecx,%xmm8
20496 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20497 .byte 68,15,89,195 // mulps %xmm3,%xmm8
20498 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
20499 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
20500 .byte 102,69,15,103,192 // packuswb %xmm8,%xmm8
20501 .byte 102,68,15,126,4,56 // movd %xmm8,(%rax,%rdi,1)
20502 .byte 72,173 // lods %ds:(%rsi),%rax
20503 .byte 255,224 // jmpq *%rax
20504
Mike Kleinf809fef2017-03-31 13:52:45 -040020505HIDDEN _sk_load_g8_sse41
20506.globl _sk_load_g8_sse41
Mike Klein86714282017-04-13 17:37:38 -040020507FUNCTION(_sk_load_g8_sse41)
Mike Kleinf809fef2017-03-31 13:52:45 -040020508_sk_load_g8_sse41:
20509 .byte 72,173 // lods %ds:(%rsi),%rax
20510 .byte 72,139,0 // mov (%rax),%rax
20511 .byte 102,15,56,49,4,56 // pmovzxbd (%rax,%rdi,1),%xmm0
20512 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
20513 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
20514 .byte 102,15,110,192 // movd %eax,%xmm0
20515 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20516 .byte 15,89,193 // mulps %xmm1,%xmm0
20517 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
20518 .byte 102,15,110,216 // movd %eax,%xmm3
20519 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20520 .byte 72,173 // lods %ds:(%rsi),%rax
20521 .byte 15,40,200 // movaps %xmm0,%xmm1
20522 .byte 15,40,208 // movaps %xmm0,%xmm2
20523 .byte 255,224 // jmpq *%rax
20524
Mike Klein21bd3e42017-04-06 16:32:29 -040020525HIDDEN _sk_gather_g8_sse41
20526.globl _sk_gather_g8_sse41
Mike Klein86714282017-04-13 17:37:38 -040020527FUNCTION(_sk_gather_g8_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040020528_sk_gather_g8_sse41:
20529 .byte 72,173 // lods %ds:(%rsi),%rax
20530 .byte 76,139,8 // mov (%rax),%r9
20531 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
20532 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
20533 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20534 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
20535 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
20536 .byte 102,15,254,194 // paddd %xmm2,%xmm0
20537 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
20538 .byte 65,137,192 // mov %eax,%r8d
20539 .byte 72,193,232,32 // shr $0x20,%rax
20540 .byte 102,72,15,126,193 // movq %xmm0,%rcx
20541 .byte 65,137,202 // mov %ecx,%r10d
20542 .byte 72,193,233,32 // shr $0x20,%rcx
20543 .byte 102,67,15,58,32,4,17,0 // pinsrb $0x0,(%r9,%r10,1),%xmm0
20544 .byte 102,65,15,58,32,4,9,1 // pinsrb $0x1,(%r9,%rcx,1),%xmm0
20545 .byte 67,15,182,12,1 // movzbl (%r9,%r8,1),%ecx
20546 .byte 102,15,58,32,193,2 // pinsrb $0x2,%ecx,%xmm0
20547 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
20548 .byte 102,15,58,32,192,3 // pinsrb $0x3,%eax,%xmm0
20549 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
20550 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
20551 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
20552 .byte 102,15,110,192 // movd %eax,%xmm0
20553 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20554 .byte 15,89,193 // mulps %xmm1,%xmm0
20555 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
20556 .byte 102,15,110,216 // movd %eax,%xmm3
20557 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20558 .byte 72,173 // lods %ds:(%rsi),%rax
20559 .byte 15,40,200 // movaps %xmm0,%xmm1
20560 .byte 15,40,208 // movaps %xmm0,%xmm2
20561 .byte 255,224 // jmpq *%rax
20562
Mike Klein7d3d8722017-04-06 17:53:18 -040020563HIDDEN _sk_gather_i8_sse41
20564.globl _sk_gather_i8_sse41
Mike Klein86714282017-04-13 17:37:38 -040020565FUNCTION(_sk_gather_i8_sse41)
Mike Klein7d3d8722017-04-06 17:53:18 -040020566_sk_gather_i8_sse41:
20567 .byte 72,173 // lods %ds:(%rsi),%rax
20568 .byte 73,137,192 // mov %rax,%r8
20569 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -040020570 .byte 116,5 // je 26a1 <_sk_gather_i8_sse41+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040020571 .byte 76,137,192 // mov %r8,%rax
Mike Kleinda164342017-04-19 14:33:58 -040020572 .byte 235,2 // jmp 26a3 <_sk_gather_i8_sse41+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040020573 .byte 72,173 // lods %ds:(%rsi),%rax
20574 .byte 76,139,16 // mov (%rax),%r10
20575 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
20576 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
20577 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20578 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
20579 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
20580 .byte 102,15,254,194 // paddd %xmm2,%xmm0
20581 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
20582 .byte 65,137,193 // mov %eax,%r9d
20583 .byte 72,193,232,32 // shr $0x20,%rax
20584 .byte 102,72,15,126,193 // movq %xmm0,%rcx
20585 .byte 65,137,203 // mov %ecx,%r11d
20586 .byte 72,193,233,32 // shr $0x20,%rcx
20587 .byte 102,67,15,58,32,4,26,0 // pinsrb $0x0,(%r10,%r11,1),%xmm0
20588 .byte 102,65,15,58,32,4,10,1 // pinsrb $0x1,(%r10,%rcx,1),%xmm0
20589 .byte 102,67,15,58,32,4,10,2 // pinsrb $0x2,(%r10,%r9,1),%xmm0
20590 .byte 102,65,15,58,32,4,2,3 // pinsrb $0x3,(%r10,%rax,1),%xmm0
20591 .byte 102,15,56,49,192 // pmovzxbd %xmm0,%xmm0
20592 .byte 102,73,15,58,22,193,1 // pextrq $0x1,%xmm0,%r9
20593 .byte 102,72,15,126,193 // movq %xmm0,%rcx
20594 .byte 73,139,64,8 // mov 0x8(%r8),%rax
20595 .byte 65,137,200 // mov %ecx,%r8d
20596 .byte 72,193,233,30 // shr $0x1e,%rcx
20597 .byte 69,137,202 // mov %r9d,%r10d
20598 .byte 73,193,233,30 // shr $0x1e,%r9
20599 .byte 102,66,15,110,28,128 // movd (%rax,%r8,4),%xmm3
20600 .byte 102,15,58,34,28,8,1 // pinsrd $0x1,(%rax,%rcx,1),%xmm3
20601 .byte 102,66,15,58,34,28,144,2 // pinsrd $0x2,(%rax,%r10,4),%xmm3
20602 .byte 102,66,15,58,34,28,8,3 // pinsrd $0x3,(%rax,%r9,1),%xmm3
20603 .byte 184,255,0,0,0 // mov $0xff,%eax
20604 .byte 102,15,110,192 // movd %eax,%xmm0
20605 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
20606 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
20607 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
20608 .byte 102,15,219,200 // pand %xmm0,%xmm1
20609 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
20610 .byte 102,15,114,210,16 // psrld $0x10,%xmm2
20611 .byte 102,15,219,208 // pand %xmm0,%xmm2
20612 .byte 102,15,219,195 // pand %xmm3,%xmm0
20613 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
20614 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
20615 .byte 102,68,15,110,192 // movd %eax,%xmm8
20616 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20617 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20618 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
20619 .byte 65,15,89,200 // mulps %xmm8,%xmm1
20620 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
20621 .byte 65,15,89,208 // mulps %xmm8,%xmm2
20622 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
20623 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
20624 .byte 65,15,89,216 // mulps %xmm8,%xmm3
20625 .byte 72,173 // lods %ds:(%rsi),%rax
20626 .byte 255,224 // jmpq *%rax
20627
Mike Klein7c4af542017-03-29 18:21:14 -040020628HIDDEN _sk_load_565_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020629.globl _sk_load_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040020630FUNCTION(_sk_load_565_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020631_sk_load_565_sse41:
20632 .byte 72,173 // lods %ds:(%rsi),%rax
20633 .byte 72,139,0 // mov (%rax),%rax
20634 .byte 102,15,56,51,20,120 // pmovzxwd (%rax,%rdi,2),%xmm2
20635 .byte 184,0,248,0,0 // mov $0xf800,%eax
20636 .byte 102,15,110,192 // movd %eax,%xmm0
20637 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
20638 .byte 102,15,219,194 // pand %xmm2,%xmm0
20639 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
20640 .byte 184,8,33,132,55 // mov $0x37842108,%eax
20641 .byte 102,15,110,192 // movd %eax,%xmm0
20642 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20643 .byte 15,89,193 // mulps %xmm1,%xmm0
20644 .byte 184,224,7,0,0 // mov $0x7e0,%eax
20645 .byte 102,15,110,200 // movd %eax,%xmm1
20646 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
20647 .byte 102,15,219,202 // pand %xmm2,%xmm1
20648 .byte 15,91,217 // cvtdq2ps %xmm1,%xmm3
20649 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
20650 .byte 102,15,110,200 // movd %eax,%xmm1
20651 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20652 .byte 15,89,203 // mulps %xmm3,%xmm1
20653 .byte 184,31,0,0,0 // mov $0x1f,%eax
20654 .byte 102,15,110,216 // movd %eax,%xmm3
20655 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
20656 .byte 102,15,219,218 // pand %xmm2,%xmm3
20657 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
20658 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
20659 .byte 102,15,110,208 // movd %eax,%xmm2
20660 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20661 .byte 15,89,211 // mulps %xmm3,%xmm2
20662 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
20663 .byte 102,15,110,216 // movd %eax,%xmm3
20664 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20665 .byte 72,173 // lods %ds:(%rsi),%rax
20666 .byte 255,224 // jmpq *%rax
20667
Mike Klein21bd3e42017-04-06 16:32:29 -040020668HIDDEN _sk_gather_565_sse41
20669.globl _sk_gather_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040020670FUNCTION(_sk_gather_565_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040020671_sk_gather_565_sse41:
20672 .byte 72,173 // lods %ds:(%rsi),%rax
20673 .byte 76,139,8 // mov (%rax),%r9
20674 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
20675 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
20676 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20677 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
20678 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
20679 .byte 102,15,254,194 // paddd %xmm2,%xmm0
20680 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
20681 .byte 65,137,192 // mov %eax,%r8d
20682 .byte 72,193,232,32 // shr $0x20,%rax
20683 .byte 102,72,15,126,193 // movq %xmm0,%rcx
20684 .byte 65,137,202 // mov %ecx,%r10d
20685 .byte 72,193,233,32 // shr $0x20,%rcx
20686 .byte 102,67,15,196,4,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm0
20687 .byte 102,65,15,196,4,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm0
20688 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
20689 .byte 102,15,196,193,2 // pinsrw $0x2,%ecx,%xmm0
20690 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
20691 .byte 102,15,196,192,3 // pinsrw $0x3,%eax,%xmm0
20692 .byte 102,15,56,51,208 // pmovzxwd %xmm0,%xmm2
20693 .byte 184,0,248,0,0 // mov $0xf800,%eax
20694 .byte 102,15,110,192 // movd %eax,%xmm0
20695 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
20696 .byte 102,15,219,194 // pand %xmm2,%xmm0
20697 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
20698 .byte 184,8,33,132,55 // mov $0x37842108,%eax
20699 .byte 102,15,110,192 // movd %eax,%xmm0
20700 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20701 .byte 15,89,193 // mulps %xmm1,%xmm0
20702 .byte 184,224,7,0,0 // mov $0x7e0,%eax
20703 .byte 102,15,110,200 // movd %eax,%xmm1
20704 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
20705 .byte 102,15,219,202 // pand %xmm2,%xmm1
20706 .byte 15,91,217 // cvtdq2ps %xmm1,%xmm3
20707 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
20708 .byte 102,15,110,200 // movd %eax,%xmm1
20709 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20710 .byte 15,89,203 // mulps %xmm3,%xmm1
20711 .byte 184,31,0,0,0 // mov $0x1f,%eax
20712 .byte 102,15,110,216 // movd %eax,%xmm3
20713 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
20714 .byte 102,15,219,218 // pand %xmm2,%xmm3
20715 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
20716 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
20717 .byte 102,15,110,208 // movd %eax,%xmm2
20718 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20719 .byte 15,89,211 // mulps %xmm3,%xmm2
20720 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
20721 .byte 102,15,110,216 // movd %eax,%xmm3
20722 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20723 .byte 72,173 // lods %ds:(%rsi),%rax
20724 .byte 255,224 // jmpq *%rax
20725
Mike Klein7c4af542017-03-29 18:21:14 -040020726HIDDEN _sk_store_565_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020727.globl _sk_store_565_sse41
Mike Klein86714282017-04-13 17:37:38 -040020728FUNCTION(_sk_store_565_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020729_sk_store_565_sse41:
20730 .byte 72,173 // lods %ds:(%rsi),%rax
20731 .byte 72,139,0 // mov (%rax),%rax
20732 .byte 185,0,0,248,65 // mov $0x41f80000,%ecx
20733 .byte 102,68,15,110,193 // movd %ecx,%xmm8
20734 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20735 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20736 .byte 68,15,89,200 // mulps %xmm0,%xmm9
20737 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
20738 .byte 102,65,15,114,241,11 // pslld $0xb,%xmm9
20739 .byte 185,0,0,124,66 // mov $0x427c0000,%ecx
20740 .byte 102,68,15,110,209 // movd %ecx,%xmm10
20741 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
20742 .byte 68,15,89,209 // mulps %xmm1,%xmm10
20743 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
20744 .byte 102,65,15,114,242,5 // pslld $0x5,%xmm10
20745 .byte 102,69,15,235,209 // por %xmm9,%xmm10
20746 .byte 68,15,89,194 // mulps %xmm2,%xmm8
20747 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
20748 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
20749 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
20750 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
20751 .byte 72,173 // lods %ds:(%rsi),%rax
20752 .byte 255,224 // jmpq *%rax
20753
Mike Kleinf809fef2017-03-31 13:52:45 -040020754HIDDEN _sk_load_4444_sse41
20755.globl _sk_load_4444_sse41
Mike Klein86714282017-04-13 17:37:38 -040020756FUNCTION(_sk_load_4444_sse41)
Mike Kleinf809fef2017-03-31 13:52:45 -040020757_sk_load_4444_sse41:
20758 .byte 72,173 // lods %ds:(%rsi),%rax
20759 .byte 72,139,0 // mov (%rax),%rax
20760 .byte 102,68,15,56,51,12,120 // pmovzxwd (%rax,%rdi,2),%xmm9
20761 .byte 184,0,240,0,0 // mov $0xf000,%eax
20762 .byte 102,15,110,192 // movd %eax,%xmm0
20763 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
20764 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
20765 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
20766 .byte 184,137,136,136,55 // mov $0x37888889,%eax
20767 .byte 102,15,110,192 // movd %eax,%xmm0
20768 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20769 .byte 15,89,193 // mulps %xmm1,%xmm0
20770 .byte 184,0,15,0,0 // mov $0xf00,%eax
20771 .byte 102,15,110,200 // movd %eax,%xmm1
20772 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
20773 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
20774 .byte 15,91,209 // cvtdq2ps %xmm1,%xmm2
20775 .byte 184,137,136,136,57 // mov $0x39888889,%eax
20776 .byte 102,15,110,200 // movd %eax,%xmm1
20777 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20778 .byte 15,89,202 // mulps %xmm2,%xmm1
20779 .byte 184,240,0,0,0 // mov $0xf0,%eax
20780 .byte 102,15,110,208 // movd %eax,%xmm2
20781 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20782 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
20783 .byte 68,15,91,194 // cvtdq2ps %xmm2,%xmm8
20784 .byte 184,137,136,136,59 // mov $0x3b888889,%eax
20785 .byte 102,15,110,208 // movd %eax,%xmm2
20786 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20787 .byte 65,15,89,208 // mulps %xmm8,%xmm2
20788 .byte 184,15,0,0,0 // mov $0xf,%eax
20789 .byte 102,15,110,216 // movd %eax,%xmm3
20790 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
20791 .byte 102,65,15,219,217 // pand %xmm9,%xmm3
20792 .byte 68,15,91,195 // cvtdq2ps %xmm3,%xmm8
20793 .byte 184,137,136,136,61 // mov $0x3d888889,%eax
20794 .byte 102,15,110,216 // movd %eax,%xmm3
20795 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20796 .byte 65,15,89,216 // mulps %xmm8,%xmm3
20797 .byte 72,173 // lods %ds:(%rsi),%rax
20798 .byte 255,224 // jmpq *%rax
20799
Mike Klein21bd3e42017-04-06 16:32:29 -040020800HIDDEN _sk_gather_4444_sse41
20801.globl _sk_gather_4444_sse41
Mike Klein86714282017-04-13 17:37:38 -040020802FUNCTION(_sk_gather_4444_sse41)
Mike Klein21bd3e42017-04-06 16:32:29 -040020803_sk_gather_4444_sse41:
20804 .byte 72,173 // lods %ds:(%rsi),%rax
20805 .byte 76,139,8 // mov (%rax),%r9
20806 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
20807 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
20808 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20809 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
20810 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
20811 .byte 102,15,254,194 // paddd %xmm2,%xmm0
20812 .byte 102,72,15,58,22,192,1 // pextrq $0x1,%xmm0,%rax
20813 .byte 65,137,192 // mov %eax,%r8d
20814 .byte 72,193,232,32 // shr $0x20,%rax
20815 .byte 102,72,15,126,193 // movq %xmm0,%rcx
20816 .byte 65,137,202 // mov %ecx,%r10d
20817 .byte 72,193,233,32 // shr $0x20,%rcx
20818 .byte 102,67,15,196,4,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm0
20819 .byte 102,65,15,196,4,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm0
20820 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
20821 .byte 102,15,196,193,2 // pinsrw $0x2,%ecx,%xmm0
20822 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
20823 .byte 102,15,196,192,3 // pinsrw $0x3,%eax,%xmm0
20824 .byte 102,68,15,56,51,200 // pmovzxwd %xmm0,%xmm9
20825 .byte 184,0,240,0,0 // mov $0xf000,%eax
20826 .byte 102,15,110,192 // movd %eax,%xmm0
20827 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
20828 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
20829 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
20830 .byte 184,137,136,136,55 // mov $0x37888889,%eax
20831 .byte 102,15,110,192 // movd %eax,%xmm0
20832 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
20833 .byte 15,89,193 // mulps %xmm1,%xmm0
20834 .byte 184,0,15,0,0 // mov $0xf00,%eax
20835 .byte 102,15,110,200 // movd %eax,%xmm1
20836 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
20837 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
20838 .byte 15,91,209 // cvtdq2ps %xmm1,%xmm2
20839 .byte 184,137,136,136,57 // mov $0x39888889,%eax
20840 .byte 102,15,110,200 // movd %eax,%xmm1
20841 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
20842 .byte 15,89,202 // mulps %xmm2,%xmm1
20843 .byte 184,240,0,0,0 // mov $0xf0,%eax
20844 .byte 102,15,110,208 // movd %eax,%xmm2
20845 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20846 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
20847 .byte 68,15,91,194 // cvtdq2ps %xmm2,%xmm8
20848 .byte 184,137,136,136,59 // mov $0x3b888889,%eax
20849 .byte 102,15,110,208 // movd %eax,%xmm2
20850 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
20851 .byte 65,15,89,208 // mulps %xmm8,%xmm2
20852 .byte 184,15,0,0,0 // mov $0xf,%eax
20853 .byte 102,15,110,216 // movd %eax,%xmm3
20854 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
20855 .byte 102,65,15,219,217 // pand %xmm9,%xmm3
20856 .byte 68,15,91,195 // cvtdq2ps %xmm3,%xmm8
20857 .byte 184,137,136,136,61 // mov $0x3d888889,%eax
20858 .byte 102,15,110,216 // movd %eax,%xmm3
20859 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
20860 .byte 65,15,89,216 // mulps %xmm8,%xmm3
20861 .byte 72,173 // lods %ds:(%rsi),%rax
20862 .byte 255,224 // jmpq *%rax
20863
Mike Kleinf809fef2017-03-31 13:52:45 -040020864HIDDEN _sk_store_4444_sse41
20865.globl _sk_store_4444_sse41
Mike Klein86714282017-04-13 17:37:38 -040020866FUNCTION(_sk_store_4444_sse41)
Mike Kleinf809fef2017-03-31 13:52:45 -040020867_sk_store_4444_sse41:
20868 .byte 72,173 // lods %ds:(%rsi),%rax
20869 .byte 72,139,0 // mov (%rax),%rax
20870 .byte 185,0,0,112,65 // mov $0x41700000,%ecx
20871 .byte 102,68,15,110,193 // movd %ecx,%xmm8
20872 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20873 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20874 .byte 68,15,89,200 // mulps %xmm0,%xmm9
20875 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
20876 .byte 102,65,15,114,241,12 // pslld $0xc,%xmm9
20877 .byte 69,15,40,208 // movaps %xmm8,%xmm10
20878 .byte 68,15,89,209 // mulps %xmm1,%xmm10
20879 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
20880 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
20881 .byte 102,69,15,235,209 // por %xmm9,%xmm10
20882 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20883 .byte 68,15,89,202 // mulps %xmm2,%xmm9
20884 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
20885 .byte 102,65,15,114,241,4 // pslld $0x4,%xmm9
20886 .byte 68,15,89,195 // mulps %xmm3,%xmm8
20887 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
20888 .byte 102,69,15,86,193 // orpd %xmm9,%xmm8
20889 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
20890 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
20891 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
20892 .byte 72,173 // lods %ds:(%rsi),%rax
20893 .byte 255,224 // jmpq *%rax
20894
Mike Klein7c4af542017-03-29 18:21:14 -040020895HIDDEN _sk_load_8888_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020896.globl _sk_load_8888_sse41
Mike Klein86714282017-04-13 17:37:38 -040020897FUNCTION(_sk_load_8888_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020898_sk_load_8888_sse41:
20899 .byte 72,173 // lods %ds:(%rsi),%rax
20900 .byte 72,139,0 // mov (%rax),%rax
20901 .byte 243,15,111,28,184 // movdqu (%rax,%rdi,4),%xmm3
20902 .byte 184,255,0,0,0 // mov $0xff,%eax
20903 .byte 102,15,110,192 // movd %eax,%xmm0
20904 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
20905 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
20906 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
20907 .byte 102,15,219,200 // pand %xmm0,%xmm1
20908 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
20909 .byte 102,15,114,210,16 // psrld $0x10,%xmm2
20910 .byte 102,15,219,208 // pand %xmm0,%xmm2
20911 .byte 102,15,219,195 // pand %xmm3,%xmm0
20912 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
20913 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
20914 .byte 102,68,15,110,192 // movd %eax,%xmm8
20915 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20916 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20917 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
20918 .byte 65,15,89,200 // mulps %xmm8,%xmm1
20919 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
20920 .byte 65,15,89,208 // mulps %xmm8,%xmm2
20921 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
20922 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
20923 .byte 65,15,89,216 // mulps %xmm8,%xmm3
20924 .byte 72,173 // lods %ds:(%rsi),%rax
20925 .byte 255,224 // jmpq *%rax
20926
Mike Kleindec4ea82017-04-06 15:04:05 -040020927HIDDEN _sk_gather_8888_sse41
20928.globl _sk_gather_8888_sse41
Mike Klein86714282017-04-13 17:37:38 -040020929FUNCTION(_sk_gather_8888_sse41)
Mike Kleindec4ea82017-04-06 15:04:05 -040020930_sk_gather_8888_sse41:
20931 .byte 72,173 // lods %ds:(%rsi),%rax
20932 .byte 76,139,8 // mov (%rax),%r9
20933 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
20934 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
20935 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
20936 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
20937 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
20938 .byte 102,15,254,194 // paddd %xmm2,%xmm0
20939 .byte 102,72,15,126,192 // movq %xmm0,%rax
20940 .byte 65,137,192 // mov %eax,%r8d
20941 .byte 72,193,232,32 // shr $0x20,%rax
20942 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
20943 .byte 65,137,202 // mov %ecx,%r10d
20944 .byte 72,193,233,32 // shr $0x20,%rcx
20945 .byte 102,67,15,110,28,129 // movd (%r9,%r8,4),%xmm3
20946 .byte 102,65,15,58,34,28,129,1 // pinsrd $0x1,(%r9,%rax,4),%xmm3
20947 .byte 102,67,15,58,34,28,145,2 // pinsrd $0x2,(%r9,%r10,4),%xmm3
20948 .byte 102,65,15,58,34,28,137,3 // pinsrd $0x3,(%r9,%rcx,4),%xmm3
20949 .byte 184,255,0,0,0 // mov $0xff,%eax
20950 .byte 102,15,110,192 // movd %eax,%xmm0
20951 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
20952 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
20953 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
20954 .byte 102,15,219,200 // pand %xmm0,%xmm1
20955 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
20956 .byte 102,15,114,210,16 // psrld $0x10,%xmm2
20957 .byte 102,15,219,208 // pand %xmm0,%xmm2
20958 .byte 102,15,219,195 // pand %xmm3,%xmm0
20959 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
20960 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
20961 .byte 102,68,15,110,192 // movd %eax,%xmm8
20962 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20963 .byte 65,15,89,192 // mulps %xmm8,%xmm0
20964 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
20965 .byte 65,15,89,200 // mulps %xmm8,%xmm1
20966 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
20967 .byte 65,15,89,208 // mulps %xmm8,%xmm2
20968 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
20969 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
20970 .byte 65,15,89,216 // mulps %xmm8,%xmm3
20971 .byte 72,173 // lods %ds:(%rsi),%rax
20972 .byte 255,224 // jmpq *%rax
20973
Mike Klein7c4af542017-03-29 18:21:14 -040020974HIDDEN _sk_store_8888_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040020975.globl _sk_store_8888_sse41
Mike Klein86714282017-04-13 17:37:38 -040020976FUNCTION(_sk_store_8888_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040020977_sk_store_8888_sse41:
20978 .byte 72,173 // lods %ds:(%rsi),%rax
20979 .byte 72,139,0 // mov (%rax),%rax
20980 .byte 185,0,0,127,67 // mov $0x437f0000,%ecx
20981 .byte 102,68,15,110,193 // movd %ecx,%xmm8
20982 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
20983 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20984 .byte 68,15,89,200 // mulps %xmm0,%xmm9
20985 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
20986 .byte 69,15,40,208 // movaps %xmm8,%xmm10
20987 .byte 68,15,89,209 // mulps %xmm1,%xmm10
20988 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
20989 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
20990 .byte 102,69,15,235,209 // por %xmm9,%xmm10
20991 .byte 69,15,40,200 // movaps %xmm8,%xmm9
20992 .byte 68,15,89,202 // mulps %xmm2,%xmm9
20993 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
20994 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
20995 .byte 68,15,89,195 // mulps %xmm3,%xmm8
20996 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
20997 .byte 102,65,15,114,240,24 // pslld $0x18,%xmm8
20998 .byte 102,69,15,235,193 // por %xmm9,%xmm8
20999 .byte 102,69,15,235,194 // por %xmm10,%xmm8
21000 .byte 243,68,15,127,4,184 // movdqu %xmm8,(%rax,%rdi,4)
21001 .byte 72,173 // lods %ds:(%rsi),%rax
21002 .byte 255,224 // jmpq *%rax
21003
Mike Klein7c4af542017-03-29 18:21:14 -040021004HIDDEN _sk_load_f16_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021005.globl _sk_load_f16_sse41
Mike Klein86714282017-04-13 17:37:38 -040021006FUNCTION(_sk_load_f16_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021007_sk_load_f16_sse41:
21008 .byte 72,173 // lods %ds:(%rsi),%rax
21009 .byte 72,139,0 // mov (%rax),%rax
21010 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
21011 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040021012 .byte 102,68,15,111,200 // movdqa %xmm0,%xmm9
21013 .byte 102,68,15,97,201 // punpcklwd %xmm1,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040021014 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040021015 .byte 102,69,15,111,217 // movdqa %xmm9,%xmm11
21016 .byte 102,68,15,97,216 // punpcklwd %xmm0,%xmm11
Mike Kleind0ce1482017-04-19 17:19:30 -040021017 .byte 102,68,15,105,200 // punpckhwd %xmm0,%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040021018 .byte 102,69,15,56,51,227 // pmovzxwd %xmm11,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040021019 .byte 184,0,128,0,0 // mov $0x8000,%eax
21020 .byte 102,15,110,192 // movd %eax,%xmm0
21021 .byte 102,68,15,112,192,0 // pshufd $0x0,%xmm0,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040021022 .byte 102,65,15,111,212 // movdqa %xmm12,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040021023 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040021024 .byte 102,68,15,239,226 // pxor %xmm2,%xmm12
21025 .byte 184,0,4,0,0 // mov $0x400,%eax
Mike Kleind7e06ae2017-03-29 16:33:06 -040021026 .byte 102,15,110,192 // movd %eax,%xmm0
21027 .byte 102,15,112,216,0 // pshufd $0x0,%xmm0,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040021028 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040021029 .byte 102,15,111,195 // movdqa %xmm3,%xmm0
21030 .byte 102,65,15,102,196 // pcmpgtd %xmm12,%xmm0
21031 .byte 102,65,15,114,244,13 // pslld $0xd,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040021032 .byte 184,0,0,0,56 // mov $0x38000000,%eax
21033 .byte 102,15,110,200 // movd %eax,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040021034 .byte 102,68,15,112,209,0 // pshufd $0x0,%xmm1,%xmm10
21035 .byte 102,65,15,254,210 // paddd %xmm10,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040021036 .byte 102,65,15,254,212 // paddd %xmm12,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040021037 .byte 102,15,223,194 // pandn %xmm2,%xmm0
21038 .byte 102,65,15,115,219,8 // psrldq $0x8,%xmm11
21039 .byte 102,69,15,56,51,219 // pmovzxwd %xmm11,%xmm11
21040 .byte 102,65,15,111,211 // movdqa %xmm11,%xmm2
21041 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
21042 .byte 102,68,15,239,218 // pxor %xmm2,%xmm11
21043 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
21044 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
21045 .byte 102,65,15,102,203 // pcmpgtd %xmm11,%xmm1
21046 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
21047 .byte 102,65,15,254,210 // paddd %xmm10,%xmm2
21048 .byte 102,65,15,254,211 // paddd %xmm11,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040021049 .byte 102,15,223,202 // pandn %xmm2,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040021050 .byte 102,69,15,56,51,217 // pmovzxwd %xmm9,%xmm11
21051 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
21052 .byte 102,69,15,219,224 // pand %xmm8,%xmm12
21053 .byte 102,69,15,239,220 // pxor %xmm12,%xmm11
21054 .byte 102,65,15,114,244,16 // pslld $0x10,%xmm12
21055 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
21056 .byte 102,65,15,102,211 // pcmpgtd %xmm11,%xmm2
21057 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
21058 .byte 102,69,15,254,226 // paddd %xmm10,%xmm12
21059 .byte 102,69,15,254,227 // paddd %xmm11,%xmm12
21060 .byte 102,65,15,223,212 // pandn %xmm12,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040021061 .byte 102,65,15,115,217,8 // psrldq $0x8,%xmm9
21062 .byte 102,69,15,56,51,201 // pmovzxwd %xmm9,%xmm9
21063 .byte 102,69,15,219,193 // pand %xmm9,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040021064 .byte 102,69,15,239,200 // pxor %xmm8,%xmm9
21065 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040021066 .byte 102,65,15,102,217 // pcmpgtd %xmm9,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040021067 .byte 102,65,15,114,241,13 // pslld $0xd,%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040021068 .byte 102,69,15,254,194 // paddd %xmm10,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040021069 .byte 102,69,15,254,193 // paddd %xmm9,%xmm8
Mike Klein114e6b32017-04-03 22:21:15 -040021070 .byte 102,65,15,223,216 // pandn %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040021071 .byte 72,173 // lods %ds:(%rsi),%rax
21072 .byte 255,224 // jmpq *%rax
21073
Mike Klein5f055f02017-04-06 20:02:11 -040021074HIDDEN _sk_gather_f16_sse41
21075.globl _sk_gather_f16_sse41
Mike Klein86714282017-04-13 17:37:38 -040021076FUNCTION(_sk_gather_f16_sse41)
Mike Klein5f055f02017-04-06 20:02:11 -040021077_sk_gather_f16_sse41:
21078 .byte 72,173 // lods %ds:(%rsi),%rax
21079 .byte 76,139,8 // mov (%rax),%r9
21080 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
21081 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
21082 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
21083 .byte 102,15,56,64,209 // pmulld %xmm1,%xmm2
21084 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
21085 .byte 102,15,254,194 // paddd %xmm2,%xmm0
21086 .byte 102,72,15,126,192 // movq %xmm0,%rax
21087 .byte 65,137,192 // mov %eax,%r8d
21088 .byte 72,193,232,32 // shr $0x20,%rax
21089 .byte 102,72,15,58,22,193,1 // pextrq $0x1,%xmm0,%rcx
21090 .byte 65,137,202 // mov %ecx,%r10d
21091 .byte 72,193,233,32 // shr $0x20,%rcx
21092 .byte 243,65,15,126,4,201 // movq (%r9,%rcx,8),%xmm0
21093 .byte 243,67,15,126,12,209 // movq (%r9,%r10,8),%xmm1
21094 .byte 102,15,108,200 // punpcklqdq %xmm0,%xmm1
21095 .byte 243,65,15,126,4,193 // movq (%r9,%rax,8),%xmm0
21096 .byte 243,67,15,126,20,193 // movq (%r9,%r8,8),%xmm2
21097 .byte 102,15,108,208 // punpcklqdq %xmm0,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040021098 .byte 102,68,15,111,202 // movdqa %xmm2,%xmm9
21099 .byte 102,68,15,97,201 // punpcklwd %xmm1,%xmm9
Mike Klein5f055f02017-04-06 20:02:11 -040021100 .byte 102,15,105,209 // punpckhwd %xmm1,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040021101 .byte 102,69,15,111,217 // movdqa %xmm9,%xmm11
21102 .byte 102,68,15,97,218 // punpcklwd %xmm2,%xmm11
Mike Kleind0ce1482017-04-19 17:19:30 -040021103 .byte 102,68,15,105,202 // punpckhwd %xmm2,%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040021104 .byte 102,69,15,56,51,227 // pmovzxwd %xmm11,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040021105 .byte 184,0,128,0,0 // mov $0x8000,%eax
21106 .byte 102,15,110,192 // movd %eax,%xmm0
21107 .byte 102,68,15,112,192,0 // pshufd $0x0,%xmm0,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040021108 .byte 102,65,15,111,212 // movdqa %xmm12,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040021109 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040021110 .byte 102,68,15,239,226 // pxor %xmm2,%xmm12
21111 .byte 184,0,4,0,0 // mov $0x400,%eax
Mike Klein5f055f02017-04-06 20:02:11 -040021112 .byte 102,15,110,192 // movd %eax,%xmm0
21113 .byte 102,15,112,216,0 // pshufd $0x0,%xmm0,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040021114 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040021115 .byte 102,15,111,195 // movdqa %xmm3,%xmm0
21116 .byte 102,65,15,102,196 // pcmpgtd %xmm12,%xmm0
21117 .byte 102,65,15,114,244,13 // pslld $0xd,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040021118 .byte 184,0,0,0,56 // mov $0x38000000,%eax
21119 .byte 102,15,110,200 // movd %eax,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040021120 .byte 102,68,15,112,209,0 // pshufd $0x0,%xmm1,%xmm10
21121 .byte 102,65,15,254,210 // paddd %xmm10,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040021122 .byte 102,65,15,254,212 // paddd %xmm12,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040021123 .byte 102,15,223,194 // pandn %xmm2,%xmm0
21124 .byte 102,65,15,115,219,8 // psrldq $0x8,%xmm11
21125 .byte 102,69,15,56,51,219 // pmovzxwd %xmm11,%xmm11
21126 .byte 102,65,15,111,211 // movdqa %xmm11,%xmm2
21127 .byte 102,65,15,219,208 // pand %xmm8,%xmm2
21128 .byte 102,68,15,239,218 // pxor %xmm2,%xmm11
21129 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
21130 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
21131 .byte 102,65,15,102,203 // pcmpgtd %xmm11,%xmm1
21132 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
21133 .byte 102,65,15,254,210 // paddd %xmm10,%xmm2
21134 .byte 102,65,15,254,211 // paddd %xmm11,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040021135 .byte 102,15,223,202 // pandn %xmm2,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040021136 .byte 102,69,15,56,51,217 // pmovzxwd %xmm9,%xmm11
21137 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
21138 .byte 102,69,15,219,224 // pand %xmm8,%xmm12
21139 .byte 102,69,15,239,220 // pxor %xmm12,%xmm11
21140 .byte 102,65,15,114,244,16 // pslld $0x10,%xmm12
21141 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
21142 .byte 102,65,15,102,211 // pcmpgtd %xmm11,%xmm2
21143 .byte 102,65,15,114,243,13 // pslld $0xd,%xmm11
21144 .byte 102,69,15,254,226 // paddd %xmm10,%xmm12
21145 .byte 102,69,15,254,227 // paddd %xmm11,%xmm12
21146 .byte 102,65,15,223,212 // pandn %xmm12,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040021147 .byte 102,65,15,115,217,8 // psrldq $0x8,%xmm9
21148 .byte 102,69,15,56,51,201 // pmovzxwd %xmm9,%xmm9
21149 .byte 102,69,15,219,193 // pand %xmm9,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040021150 .byte 102,69,15,239,200 // pxor %xmm8,%xmm9
21151 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040021152 .byte 102,65,15,102,217 // pcmpgtd %xmm9,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040021153 .byte 102,65,15,114,241,13 // pslld $0xd,%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040021154 .byte 102,69,15,254,194 // paddd %xmm10,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040021155 .byte 102,69,15,254,193 // paddd %xmm9,%xmm8
Mike Klein5f055f02017-04-06 20:02:11 -040021156 .byte 102,65,15,223,216 // pandn %xmm8,%xmm3
Mike Klein5f055f02017-04-06 20:02:11 -040021157 .byte 72,173 // lods %ds:(%rsi),%rax
21158 .byte 255,224 // jmpq *%rax
21159
Mike Klein7c4af542017-03-29 18:21:14 -040021160HIDDEN _sk_store_f16_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021161.globl _sk_store_f16_sse41
Mike Klein86714282017-04-13 17:37:38 -040021162FUNCTION(_sk_store_f16_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021163_sk_store_f16_sse41:
21164 .byte 72,173 // lods %ds:(%rsi),%rax
21165 .byte 72,139,0 // mov (%rax),%rax
Mike Kleind0ce1482017-04-19 17:19:30 -040021166 .byte 185,0,0,0,128 // mov $0x80000000,%ecx
Mike Kleind7e06ae2017-03-29 16:33:06 -040021167 .byte 102,68,15,110,193 // movd %ecx,%xmm8
Mike Klein95f53be2017-04-04 10:24:56 -040021168 .byte 102,69,15,112,200,0 // pshufd $0x0,%xmm8,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040021169 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
21170 .byte 102,68,15,219,224 // pand %xmm0,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040021171 .byte 102,68,15,111,232 // movdqa %xmm0,%xmm13
21172 .byte 102,69,15,239,236 // pxor %xmm12,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040021173 .byte 185,0,0,128,56 // mov $0x38800000,%ecx
Mike Klein097d0932017-04-20 09:11:53 -040021174 .byte 102,68,15,110,193 // movd %ecx,%xmm8
21175 .byte 102,69,15,112,208,0 // pshufd $0x0,%xmm8,%xmm10
Mike Kleind0ce1482017-04-19 17:19:30 -040021176 .byte 102,65,15,114,212,16 // psrld $0x10,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040021177 .byte 102,69,15,111,194 // movdqa %xmm10,%xmm8
21178 .byte 102,69,15,102,197 // pcmpgtd %xmm13,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040021179 .byte 102,65,15,114,213,13 // psrld $0xd,%xmm13
21180 .byte 185,0,192,1,0 // mov $0x1c000,%ecx
21181 .byte 102,68,15,110,217 // movd %ecx,%xmm11
21182 .byte 102,69,15,112,219,0 // pshufd $0x0,%xmm11,%xmm11
21183 .byte 102,69,15,250,227 // psubd %xmm11,%xmm12
21184 .byte 102,69,15,254,229 // paddd %xmm13,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040021185 .byte 102,69,15,223,196 // pandn %xmm12,%xmm8
Mike Klein95f53be2017-04-04 10:24:56 -040021186 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040021187 .byte 102,69,15,111,233 // movdqa %xmm9,%xmm13
21188 .byte 102,68,15,219,233 // pand %xmm1,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040021189 .byte 102,68,15,111,241 // movdqa %xmm1,%xmm14
21190 .byte 102,69,15,239,245 // pxor %xmm13,%xmm14
Mike Kleind0ce1482017-04-19 17:19:30 -040021191 .byte 102,65,15,114,213,16 // psrld $0x10,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040021192 .byte 102,69,15,111,226 // movdqa %xmm10,%xmm12
21193 .byte 102,69,15,102,230 // pcmpgtd %xmm14,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040021194 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
21195 .byte 102,69,15,250,235 // psubd %xmm11,%xmm13
21196 .byte 102,69,15,254,238 // paddd %xmm14,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040021197 .byte 102,69,15,223,229 // pandn %xmm13,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040021198 .byte 102,69,15,56,43,228 // packusdw %xmm12,%xmm12
21199 .byte 102,69,15,111,241 // movdqa %xmm9,%xmm14
21200 .byte 102,68,15,219,242 // pand %xmm2,%xmm14
Mike Klein097d0932017-04-20 09:11:53 -040021201 .byte 102,68,15,111,250 // movdqa %xmm2,%xmm15
21202 .byte 102,69,15,239,254 // pxor %xmm14,%xmm15
Mike Kleind0ce1482017-04-19 17:19:30 -040021203 .byte 102,65,15,114,214,16 // psrld $0x10,%xmm14
Mike Klein097d0932017-04-20 09:11:53 -040021204 .byte 102,69,15,111,234 // movdqa %xmm10,%xmm13
21205 .byte 102,69,15,102,239 // pcmpgtd %xmm15,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040021206 .byte 102,65,15,114,215,13 // psrld $0xd,%xmm15
21207 .byte 102,69,15,250,243 // psubd %xmm11,%xmm14
21208 .byte 102,69,15,254,247 // paddd %xmm15,%xmm14
Mike Klein097d0932017-04-20 09:11:53 -040021209 .byte 102,69,15,223,238 // pandn %xmm14,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040021210 .byte 102,69,15,56,43,237 // packusdw %xmm13,%xmm13
21211 .byte 102,68,15,219,203 // pand %xmm3,%xmm9
21212 .byte 102,68,15,111,243 // movdqa %xmm3,%xmm14
21213 .byte 102,69,15,239,241 // pxor %xmm9,%xmm14
21214 .byte 102,65,15,114,209,16 // psrld $0x10,%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040021215 .byte 102,69,15,102,214 // pcmpgtd %xmm14,%xmm10
21216 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
Mike Kleind0ce1482017-04-19 17:19:30 -040021217 .byte 102,69,15,250,203 // psubd %xmm11,%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040021218 .byte 102,69,15,254,206 // paddd %xmm14,%xmm9
21219 .byte 102,69,15,223,209 // pandn %xmm9,%xmm10
21220 .byte 102,69,15,56,43,210 // packusdw %xmm10,%xmm10
Mike Kleind0ce1482017-04-19 17:19:30 -040021221 .byte 102,69,15,97,196 // punpcklwd %xmm12,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040021222 .byte 102,69,15,97,234 // punpcklwd %xmm10,%xmm13
Mike Klein95f53be2017-04-04 10:24:56 -040021223 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040021224 .byte 102,69,15,98,205 // punpckldq %xmm13,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040021225 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
Mike Kleind0ce1482017-04-19 17:19:30 -040021226 .byte 102,69,15,106,197 // punpckhdq %xmm13,%xmm8
Mike Klein95f53be2017-04-04 10:24:56 -040021227 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021228 .byte 72,173 // lods %ds:(%rsi),%rax
21229 .byte 255,224 // jmpq *%rax
21230
Mike Klein3146bb92017-04-05 14:45:02 -040021231HIDDEN _sk_load_u16_be_sse41
21232.globl _sk_load_u16_be_sse41
Mike Klein86714282017-04-13 17:37:38 -040021233FUNCTION(_sk_load_u16_be_sse41)
Mike Klein3146bb92017-04-05 14:45:02 -040021234_sk_load_u16_be_sse41:
21235 .byte 72,173 // lods %ds:(%rsi),%rax
21236 .byte 72,139,0 // mov (%rax),%rax
21237 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
21238 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
21239 .byte 102,15,111,208 // movdqa %xmm0,%xmm2
21240 .byte 102,15,97,209 // punpcklwd %xmm1,%xmm2
21241 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
21242 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
21243 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
21244 .byte 102,15,105,208 // punpckhwd %xmm0,%xmm2
21245 .byte 184,128,0,128,55 // mov $0x37800080,%eax
21246 .byte 102,68,15,110,192 // movd %eax,%xmm8
21247 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21248 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
21249 .byte 102,15,113,240,8 // psllw $0x8,%xmm0
21250 .byte 102,15,112,217,78 // pshufd $0x4e,%xmm1,%xmm3
21251 .byte 102,15,113,209,8 // psrlw $0x8,%xmm1
21252 .byte 102,15,235,200 // por %xmm0,%xmm1
21253 .byte 102,15,56,51,193 // pmovzxwd %xmm1,%xmm0
21254 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
21255 .byte 65,15,89,192 // mulps %xmm8,%xmm0
21256 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
21257 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
21258 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
21259 .byte 102,15,235,217 // por %xmm1,%xmm3
21260 .byte 102,15,56,51,203 // pmovzxwd %xmm3,%xmm1
21261 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
21262 .byte 65,15,89,200 // mulps %xmm8,%xmm1
21263 .byte 102,68,15,111,202 // movdqa %xmm2,%xmm9
21264 .byte 102,65,15,113,241,8 // psllw $0x8,%xmm9
21265 .byte 102,15,112,218,78 // pshufd $0x4e,%xmm2,%xmm3
21266 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
21267 .byte 102,65,15,235,209 // por %xmm9,%xmm2
21268 .byte 102,15,56,51,210 // pmovzxwd %xmm2,%xmm2
21269 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
21270 .byte 65,15,89,208 // mulps %xmm8,%xmm2
21271 .byte 102,68,15,111,203 // movdqa %xmm3,%xmm9
21272 .byte 102,65,15,113,241,8 // psllw $0x8,%xmm9
21273 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
21274 .byte 102,65,15,235,217 // por %xmm9,%xmm3
21275 .byte 102,15,56,51,219 // pmovzxwd %xmm3,%xmm3
21276 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
21277 .byte 65,15,89,216 // mulps %xmm8,%xmm3
21278 .byte 72,173 // lods %ds:(%rsi),%rax
21279 .byte 255,224 // jmpq *%rax
21280
Mike Kleinb3821732017-04-17 10:58:05 -040021281HIDDEN _sk_load_rgb_u16_be_sse41
21282.globl _sk_load_rgb_u16_be_sse41
21283FUNCTION(_sk_load_rgb_u16_be_sse41)
21284_sk_load_rgb_u16_be_sse41:
21285 .byte 72,173 // lods %ds:(%rsi),%rax
21286 .byte 72,139,0 // mov (%rax),%rax
21287 .byte 72,141,12,127 // lea (%rdi,%rdi,2),%rcx
21288 .byte 243,15,111,20,72 // movdqu (%rax,%rcx,2),%xmm2
21289 .byte 243,15,111,68,72,8 // movdqu 0x8(%rax,%rcx,2),%xmm0
21290 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
21291 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
21292 .byte 102,15,115,217,6 // psrldq $0x6,%xmm1
21293 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
21294 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
21295 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
21296 .byte 102,15,111,194 // movdqa %xmm2,%xmm0
21297 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
21298 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
21299 .byte 102,15,105,209 // punpckhwd %xmm1,%xmm2
21300 .byte 184,128,0,128,55 // mov $0x37800080,%eax
21301 .byte 102,68,15,110,192 // movd %eax,%xmm8
21302 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21303 .byte 102,15,111,200 // movdqa %xmm0,%xmm1
21304 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
21305 .byte 102,15,113,208,8 // psrlw $0x8,%xmm0
21306 .byte 102,15,235,193 // por %xmm1,%xmm0
21307 .byte 102,15,56,51,192 // pmovzxwd %xmm0,%xmm0
21308 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
21309 .byte 65,15,89,192 // mulps %xmm8,%xmm0
21310 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
21311 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
21312 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
21313 .byte 102,15,235,217 // por %xmm1,%xmm3
21314 .byte 102,15,56,51,203 // pmovzxwd %xmm3,%xmm1
21315 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
21316 .byte 65,15,89,200 // mulps %xmm8,%xmm1
21317 .byte 102,15,111,218 // movdqa %xmm2,%xmm3
21318 .byte 102,15,113,243,8 // psllw $0x8,%xmm3
21319 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
21320 .byte 102,15,235,211 // por %xmm3,%xmm2
21321 .byte 102,15,56,51,210 // pmovzxwd %xmm2,%xmm2
21322 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
21323 .byte 65,15,89,208 // mulps %xmm8,%xmm2
21324 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
21325 .byte 102,15,110,216 // movd %eax,%xmm3
21326 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
21327 .byte 72,173 // lods %ds:(%rsi),%rax
21328 .byte 255,224 // jmpq *%rax
21329
Mike Klein3146bb92017-04-05 14:45:02 -040021330HIDDEN _sk_store_u16_be_sse41
21331.globl _sk_store_u16_be_sse41
Mike Klein86714282017-04-13 17:37:38 -040021332FUNCTION(_sk_store_u16_be_sse41)
Mike Klein3146bb92017-04-05 14:45:02 -040021333_sk_store_u16_be_sse41:
21334 .byte 72,173 // lods %ds:(%rsi),%rax
21335 .byte 72,139,0 // mov (%rax),%rax
21336 .byte 185,0,255,127,71 // mov $0x477fff00,%ecx
21337 .byte 102,68,15,110,201 // movd %ecx,%xmm9
21338 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
21339 .byte 69,15,40,193 // movaps %xmm9,%xmm8
21340 .byte 68,15,89,192 // mulps %xmm0,%xmm8
21341 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
21342 .byte 102,69,15,56,43,192 // packusdw %xmm8,%xmm8
21343 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
21344 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
21345 .byte 102,65,15,113,208,8 // psrlw $0x8,%xmm8
21346 .byte 102,69,15,235,194 // por %xmm10,%xmm8
21347 .byte 69,15,40,209 // movaps %xmm9,%xmm10
21348 .byte 68,15,89,209 // mulps %xmm1,%xmm10
21349 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
21350 .byte 102,69,15,56,43,210 // packusdw %xmm10,%xmm10
21351 .byte 102,69,15,111,218 // movdqa %xmm10,%xmm11
21352 .byte 102,65,15,113,243,8 // psllw $0x8,%xmm11
21353 .byte 102,65,15,113,210,8 // psrlw $0x8,%xmm10
21354 .byte 102,69,15,235,211 // por %xmm11,%xmm10
21355 .byte 69,15,40,217 // movaps %xmm9,%xmm11
21356 .byte 68,15,89,218 // mulps %xmm2,%xmm11
21357 .byte 102,69,15,91,219 // cvtps2dq %xmm11,%xmm11
21358 .byte 102,69,15,56,43,219 // packusdw %xmm11,%xmm11
21359 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
21360 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
21361 .byte 102,65,15,113,211,8 // psrlw $0x8,%xmm11
21362 .byte 102,69,15,235,220 // por %xmm12,%xmm11
21363 .byte 68,15,89,203 // mulps %xmm3,%xmm9
21364 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
21365 .byte 102,69,15,56,43,201 // packusdw %xmm9,%xmm9
21366 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
21367 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
21368 .byte 102,65,15,113,209,8 // psrlw $0x8,%xmm9
21369 .byte 102,69,15,235,204 // por %xmm12,%xmm9
21370 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
21371 .byte 102,69,15,97,217 // punpcklwd %xmm9,%xmm11
21372 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
21373 .byte 102,69,15,98,203 // punpckldq %xmm11,%xmm9
21374 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
21375 .byte 102,69,15,106,195 // punpckhdq %xmm11,%xmm8
21376 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
21377 .byte 72,173 // lods %ds:(%rsi),%rax
21378 .byte 255,224 // jmpq *%rax
21379
Mike Klein14987eb2017-04-06 10:22:26 -040021380HIDDEN _sk_load_f32_sse41
21381.globl _sk_load_f32_sse41
Mike Klein86714282017-04-13 17:37:38 -040021382FUNCTION(_sk_load_f32_sse41)
Mike Klein14987eb2017-04-06 10:22:26 -040021383_sk_load_f32_sse41:
21384 .byte 72,173 // lods %ds:(%rsi),%rax
21385 .byte 72,139,0 // mov (%rax),%rax
21386 .byte 72,137,249 // mov %rdi,%rcx
21387 .byte 72,193,225,4 // shl $0x4,%rcx
21388 .byte 68,15,16,4,8 // movups (%rax,%rcx,1),%xmm8
21389 .byte 15,16,68,8,16 // movups 0x10(%rax,%rcx,1),%xmm0
21390 .byte 15,16,92,8,32 // movups 0x20(%rax,%rcx,1),%xmm3
21391 .byte 68,15,16,76,8,48 // movups 0x30(%rax,%rcx,1),%xmm9
21392 .byte 65,15,40,208 // movaps %xmm8,%xmm2
21393 .byte 15,20,208 // unpcklps %xmm0,%xmm2
21394 .byte 15,40,203 // movaps %xmm3,%xmm1
21395 .byte 65,15,20,201 // unpcklps %xmm9,%xmm1
21396 .byte 68,15,21,192 // unpckhps %xmm0,%xmm8
21397 .byte 65,15,21,217 // unpckhps %xmm9,%xmm3
21398 .byte 15,40,194 // movaps %xmm2,%xmm0
21399 .byte 102,15,20,193 // unpcklpd %xmm1,%xmm0
21400 .byte 15,18,202 // movhlps %xmm2,%xmm1
21401 .byte 65,15,40,208 // movaps %xmm8,%xmm2
21402 .byte 102,15,20,211 // unpcklpd %xmm3,%xmm2
21403 .byte 65,15,18,216 // movhlps %xmm8,%xmm3
21404 .byte 72,173 // lods %ds:(%rsi),%rax
21405 .byte 255,224 // jmpq *%rax
21406
Mike Klein7c4af542017-03-29 18:21:14 -040021407HIDDEN _sk_store_f32_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021408.globl _sk_store_f32_sse41
Mike Klein86714282017-04-13 17:37:38 -040021409FUNCTION(_sk_store_f32_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021410_sk_store_f32_sse41:
21411 .byte 72,173 // lods %ds:(%rsi),%rax
21412 .byte 72,139,0 // mov (%rax),%rax
21413 .byte 72,137,249 // mov %rdi,%rcx
21414 .byte 72,193,225,4 // shl $0x4,%rcx
21415 .byte 68,15,40,192 // movaps %xmm0,%xmm8
21416 .byte 68,15,40,200 // movaps %xmm0,%xmm9
21417 .byte 68,15,20,201 // unpcklps %xmm1,%xmm9
21418 .byte 68,15,40,210 // movaps %xmm2,%xmm10
21419 .byte 68,15,40,218 // movaps %xmm2,%xmm11
21420 .byte 68,15,20,219 // unpcklps %xmm3,%xmm11
21421 .byte 68,15,21,193 // unpckhps %xmm1,%xmm8
21422 .byte 68,15,21,211 // unpckhps %xmm3,%xmm10
21423 .byte 69,15,40,225 // movaps %xmm9,%xmm12
21424 .byte 102,69,15,20,227 // unpcklpd %xmm11,%xmm12
21425 .byte 69,15,18,217 // movhlps %xmm9,%xmm11
21426 .byte 69,15,40,200 // movaps %xmm8,%xmm9
21427 .byte 102,69,15,20,202 // unpcklpd %xmm10,%xmm9
21428 .byte 69,15,18,208 // movhlps %xmm8,%xmm10
21429 .byte 102,68,15,17,36,8 // movupd %xmm12,(%rax,%rcx,1)
21430 .byte 68,15,17,92,8,16 // movups %xmm11,0x10(%rax,%rcx,1)
21431 .byte 102,68,15,17,76,8,32 // movupd %xmm9,0x20(%rax,%rcx,1)
21432 .byte 68,15,17,84,8,48 // movups %xmm10,0x30(%rax,%rcx,1)
21433 .byte 72,173 // lods %ds:(%rsi),%rax
21434 .byte 255,224 // jmpq *%rax
21435
Mike Klein7c4af542017-03-29 18:21:14 -040021436HIDDEN _sk_clamp_x_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021437.globl _sk_clamp_x_sse41
Mike Klein86714282017-04-13 17:37:38 -040021438FUNCTION(_sk_clamp_x_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021439_sk_clamp_x_sse41:
21440 .byte 72,173 // lods %ds:(%rsi),%rax
21441 .byte 69,15,87,192 // xorps %xmm8,%xmm8
21442 .byte 68,15,95,192 // maxps %xmm0,%xmm8
21443 .byte 243,68,15,16,8 // movss (%rax),%xmm9
21444 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
21445 .byte 102,15,118,192 // pcmpeqd %xmm0,%xmm0
21446 .byte 102,65,15,254,193 // paddd %xmm9,%xmm0
21447 .byte 68,15,93,192 // minps %xmm0,%xmm8
21448 .byte 72,173 // lods %ds:(%rsi),%rax
21449 .byte 65,15,40,192 // movaps %xmm8,%xmm0
21450 .byte 255,224 // jmpq *%rax
21451
Mike Klein7c4af542017-03-29 18:21:14 -040021452HIDDEN _sk_clamp_y_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021453.globl _sk_clamp_y_sse41
Mike Klein86714282017-04-13 17:37:38 -040021454FUNCTION(_sk_clamp_y_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021455_sk_clamp_y_sse41:
21456 .byte 72,173 // lods %ds:(%rsi),%rax
21457 .byte 69,15,87,192 // xorps %xmm8,%xmm8
21458 .byte 68,15,95,193 // maxps %xmm1,%xmm8
21459 .byte 243,68,15,16,8 // movss (%rax),%xmm9
21460 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
21461 .byte 102,15,118,201 // pcmpeqd %xmm1,%xmm1
21462 .byte 102,65,15,254,201 // paddd %xmm9,%xmm1
21463 .byte 68,15,93,193 // minps %xmm1,%xmm8
21464 .byte 72,173 // lods %ds:(%rsi),%rax
21465 .byte 65,15,40,200 // movaps %xmm8,%xmm1
21466 .byte 255,224 // jmpq *%rax
21467
Mike Klein7c4af542017-03-29 18:21:14 -040021468HIDDEN _sk_repeat_x_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021469.globl _sk_repeat_x_sse41
Mike Klein86714282017-04-13 17:37:38 -040021470FUNCTION(_sk_repeat_x_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021471_sk_repeat_x_sse41:
21472 .byte 72,173 // lods %ds:(%rsi),%rax
21473 .byte 243,68,15,16,0 // movss (%rax),%xmm8
21474 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21475 .byte 68,15,40,200 // movaps %xmm0,%xmm9
21476 .byte 69,15,94,200 // divps %xmm8,%xmm9
21477 .byte 102,69,15,58,8,201,1 // roundps $0x1,%xmm9,%xmm9
21478 .byte 69,15,89,200 // mulps %xmm8,%xmm9
21479 .byte 65,15,92,193 // subps %xmm9,%xmm0
21480 .byte 102,69,15,118,201 // pcmpeqd %xmm9,%xmm9
21481 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
21482 .byte 65,15,93,193 // minps %xmm9,%xmm0
21483 .byte 72,173 // lods %ds:(%rsi),%rax
21484 .byte 255,224 // jmpq *%rax
21485
Mike Klein7c4af542017-03-29 18:21:14 -040021486HIDDEN _sk_repeat_y_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021487.globl _sk_repeat_y_sse41
Mike Klein86714282017-04-13 17:37:38 -040021488FUNCTION(_sk_repeat_y_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021489_sk_repeat_y_sse41:
21490 .byte 72,173 // lods %ds:(%rsi),%rax
21491 .byte 243,68,15,16,0 // movss (%rax),%xmm8
21492 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21493 .byte 68,15,40,201 // movaps %xmm1,%xmm9
21494 .byte 69,15,94,200 // divps %xmm8,%xmm9
21495 .byte 102,69,15,58,8,201,1 // roundps $0x1,%xmm9,%xmm9
21496 .byte 69,15,89,200 // mulps %xmm8,%xmm9
21497 .byte 65,15,92,201 // subps %xmm9,%xmm1
21498 .byte 102,69,15,118,201 // pcmpeqd %xmm9,%xmm9
21499 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
21500 .byte 65,15,93,201 // minps %xmm9,%xmm1
21501 .byte 72,173 // lods %ds:(%rsi),%rax
21502 .byte 255,224 // jmpq *%rax
21503
Mike Klein7c4af542017-03-29 18:21:14 -040021504HIDDEN _sk_mirror_x_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021505.globl _sk_mirror_x_sse41
Mike Klein86714282017-04-13 17:37:38 -040021506FUNCTION(_sk_mirror_x_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021507_sk_mirror_x_sse41:
21508 .byte 72,173 // lods %ds:(%rsi),%rax
21509 .byte 243,68,15,16,0 // movss (%rax),%xmm8
21510 .byte 69,15,40,200 // movaps %xmm8,%xmm9
21511 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
21512 .byte 65,15,92,193 // subps %xmm9,%xmm0
21513 .byte 243,69,15,88,192 // addss %xmm8,%xmm8
21514 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21515 .byte 68,15,40,208 // movaps %xmm0,%xmm10
21516 .byte 69,15,94,208 // divps %xmm8,%xmm10
21517 .byte 102,69,15,58,8,210,1 // roundps $0x1,%xmm10,%xmm10
21518 .byte 69,15,89,208 // mulps %xmm8,%xmm10
21519 .byte 65,15,92,194 // subps %xmm10,%xmm0
21520 .byte 65,15,92,193 // subps %xmm9,%xmm0
21521 .byte 69,15,87,192 // xorps %xmm8,%xmm8
21522 .byte 68,15,92,192 // subps %xmm0,%xmm8
21523 .byte 65,15,84,192 // andps %xmm8,%xmm0
21524 .byte 102,69,15,118,192 // pcmpeqd %xmm8,%xmm8
21525 .byte 102,69,15,254,193 // paddd %xmm9,%xmm8
21526 .byte 65,15,93,192 // minps %xmm8,%xmm0
21527 .byte 72,173 // lods %ds:(%rsi),%rax
21528 .byte 255,224 // jmpq *%rax
21529
Mike Klein7c4af542017-03-29 18:21:14 -040021530HIDDEN _sk_mirror_y_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021531.globl _sk_mirror_y_sse41
Mike Klein86714282017-04-13 17:37:38 -040021532FUNCTION(_sk_mirror_y_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021533_sk_mirror_y_sse41:
21534 .byte 72,173 // lods %ds:(%rsi),%rax
21535 .byte 243,68,15,16,0 // movss (%rax),%xmm8
21536 .byte 69,15,40,200 // movaps %xmm8,%xmm9
21537 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
21538 .byte 65,15,92,201 // subps %xmm9,%xmm1
21539 .byte 243,69,15,88,192 // addss %xmm8,%xmm8
21540 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21541 .byte 68,15,40,209 // movaps %xmm1,%xmm10
21542 .byte 69,15,94,208 // divps %xmm8,%xmm10
21543 .byte 102,69,15,58,8,210,1 // roundps $0x1,%xmm10,%xmm10
21544 .byte 69,15,89,208 // mulps %xmm8,%xmm10
21545 .byte 65,15,92,202 // subps %xmm10,%xmm1
21546 .byte 65,15,92,201 // subps %xmm9,%xmm1
21547 .byte 69,15,87,192 // xorps %xmm8,%xmm8
21548 .byte 68,15,92,193 // subps %xmm1,%xmm8
21549 .byte 65,15,84,200 // andps %xmm8,%xmm1
21550 .byte 102,69,15,118,192 // pcmpeqd %xmm8,%xmm8
21551 .byte 102,69,15,254,193 // paddd %xmm9,%xmm8
21552 .byte 65,15,93,200 // minps %xmm8,%xmm1
21553 .byte 72,173 // lods %ds:(%rsi),%rax
21554 .byte 255,224 // jmpq *%rax
21555
Mike Klein7c4af542017-03-29 18:21:14 -040021556HIDDEN _sk_luminance_to_alpha_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021557.globl _sk_luminance_to_alpha_sse41
Mike Klein86714282017-04-13 17:37:38 -040021558FUNCTION(_sk_luminance_to_alpha_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021559_sk_luminance_to_alpha_sse41:
21560 .byte 184,208,179,89,62 // mov $0x3e59b3d0,%eax
21561 .byte 102,15,110,216 // movd %eax,%xmm3
21562 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
21563 .byte 15,89,216 // mulps %xmm0,%xmm3
21564 .byte 184,89,23,55,63 // mov $0x3f371759,%eax
21565 .byte 102,15,110,192 // movd %eax,%xmm0
21566 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
21567 .byte 15,89,193 // mulps %xmm1,%xmm0
21568 .byte 15,88,195 // addps %xmm3,%xmm0
21569 .byte 184,152,221,147,61 // mov $0x3d93dd98,%eax
21570 .byte 102,15,110,216 // movd %eax,%xmm3
21571 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
21572 .byte 15,89,218 // mulps %xmm2,%xmm3
21573 .byte 15,88,216 // addps %xmm0,%xmm3
21574 .byte 72,173 // lods %ds:(%rsi),%rax
21575 .byte 15,87,192 // xorps %xmm0,%xmm0
21576 .byte 15,87,201 // xorps %xmm1,%xmm1
21577 .byte 15,87,210 // xorps %xmm2,%xmm2
21578 .byte 255,224 // jmpq *%rax
21579
Mike Klein7c4af542017-03-29 18:21:14 -040021580HIDDEN _sk_matrix_2x3_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021581.globl _sk_matrix_2x3_sse41
Mike Klein86714282017-04-13 17:37:38 -040021582FUNCTION(_sk_matrix_2x3_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021583_sk_matrix_2x3_sse41:
21584 .byte 68,15,40,201 // movaps %xmm1,%xmm9
21585 .byte 68,15,40,192 // movaps %xmm0,%xmm8
21586 .byte 72,173 // lods %ds:(%rsi),%rax
21587 .byte 243,15,16,0 // movss (%rax),%xmm0
21588 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
21589 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
21590 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
21591 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21592 .byte 243,68,15,16,88,16 // movss 0x10(%rax),%xmm11
21593 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21594 .byte 69,15,89,209 // mulps %xmm9,%xmm10
21595 .byte 69,15,88,211 // addps %xmm11,%xmm10
21596 .byte 65,15,89,192 // mulps %xmm8,%xmm0
21597 .byte 65,15,88,194 // addps %xmm10,%xmm0
21598 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
21599 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
21600 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21601 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
21602 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21603 .byte 69,15,89,209 // mulps %xmm9,%xmm10
21604 .byte 69,15,88,211 // addps %xmm11,%xmm10
21605 .byte 65,15,89,200 // mulps %xmm8,%xmm1
21606 .byte 65,15,88,202 // addps %xmm10,%xmm1
21607 .byte 72,173 // lods %ds:(%rsi),%rax
21608 .byte 255,224 // jmpq *%rax
21609
Mike Klein7c4af542017-03-29 18:21:14 -040021610HIDDEN _sk_matrix_3x4_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021611.globl _sk_matrix_3x4_sse41
Mike Klein86714282017-04-13 17:37:38 -040021612FUNCTION(_sk_matrix_3x4_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021613_sk_matrix_3x4_sse41:
21614 .byte 68,15,40,201 // movaps %xmm1,%xmm9
21615 .byte 68,15,40,192 // movaps %xmm0,%xmm8
21616 .byte 72,173 // lods %ds:(%rsi),%rax
21617 .byte 243,15,16,0 // movss (%rax),%xmm0
21618 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
21619 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
21620 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
21621 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21622 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
21623 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21624 .byte 243,68,15,16,96,36 // movss 0x24(%rax),%xmm12
21625 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21626 .byte 68,15,89,218 // mulps %xmm2,%xmm11
21627 .byte 69,15,88,220 // addps %xmm12,%xmm11
21628 .byte 69,15,89,209 // mulps %xmm9,%xmm10
21629 .byte 69,15,88,211 // addps %xmm11,%xmm10
21630 .byte 65,15,89,192 // mulps %xmm8,%xmm0
21631 .byte 65,15,88,194 // addps %xmm10,%xmm0
21632 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
21633 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
21634 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21635 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
21636 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21637 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
21638 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21639 .byte 68,15,89,218 // mulps %xmm2,%xmm11
21640 .byte 69,15,88,220 // addps %xmm12,%xmm11
21641 .byte 69,15,89,209 // mulps %xmm9,%xmm10
21642 .byte 69,15,88,211 // addps %xmm11,%xmm10
21643 .byte 65,15,89,200 // mulps %xmm8,%xmm1
21644 .byte 65,15,88,202 // addps %xmm10,%xmm1
21645 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
21646 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21647 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
21648 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21649 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
21650 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21651 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
21652 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
21653 .byte 68,15,89,226 // mulps %xmm2,%xmm12
21654 .byte 69,15,88,229 // addps %xmm13,%xmm12
21655 .byte 69,15,89,217 // mulps %xmm9,%xmm11
21656 .byte 69,15,88,220 // addps %xmm12,%xmm11
21657 .byte 69,15,89,208 // mulps %xmm8,%xmm10
21658 .byte 69,15,88,211 // addps %xmm11,%xmm10
21659 .byte 72,173 // lods %ds:(%rsi),%rax
21660 .byte 65,15,40,210 // movaps %xmm10,%xmm2
21661 .byte 255,224 // jmpq *%rax
21662
Mike Klein7c4af542017-03-29 18:21:14 -040021663HIDDEN _sk_matrix_4x5_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021664.globl _sk_matrix_4x5_sse41
Mike Klein86714282017-04-13 17:37:38 -040021665FUNCTION(_sk_matrix_4x5_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021666_sk_matrix_4x5_sse41:
21667 .byte 68,15,40,201 // movaps %xmm1,%xmm9
21668 .byte 68,15,40,192 // movaps %xmm0,%xmm8
21669 .byte 72,173 // lods %ds:(%rsi),%rax
21670 .byte 243,15,16,0 // movss (%rax),%xmm0
21671 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
21672 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
21673 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
21674 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21675 .byte 243,68,15,16,88,32 // movss 0x20(%rax),%xmm11
21676 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21677 .byte 243,68,15,16,96,48 // movss 0x30(%rax),%xmm12
21678 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21679 .byte 243,68,15,16,104,64 // movss 0x40(%rax),%xmm13
21680 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
21681 .byte 68,15,89,227 // mulps %xmm3,%xmm12
21682 .byte 69,15,88,229 // addps %xmm13,%xmm12
21683 .byte 68,15,89,218 // mulps %xmm2,%xmm11
21684 .byte 69,15,88,220 // addps %xmm12,%xmm11
21685 .byte 69,15,89,209 // mulps %xmm9,%xmm10
21686 .byte 69,15,88,211 // addps %xmm11,%xmm10
21687 .byte 65,15,89,192 // mulps %xmm8,%xmm0
21688 .byte 65,15,88,194 // addps %xmm10,%xmm0
21689 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
21690 .byte 243,68,15,16,80,20 // movss 0x14(%rax),%xmm10
21691 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21692 .byte 243,68,15,16,88,36 // movss 0x24(%rax),%xmm11
21693 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21694 .byte 243,68,15,16,96,52 // movss 0x34(%rax),%xmm12
21695 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21696 .byte 243,68,15,16,104,68 // movss 0x44(%rax),%xmm13
21697 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
21698 .byte 68,15,89,227 // mulps %xmm3,%xmm12
21699 .byte 69,15,88,229 // addps %xmm13,%xmm12
21700 .byte 68,15,89,218 // mulps %xmm2,%xmm11
21701 .byte 69,15,88,220 // addps %xmm12,%xmm11
21702 .byte 69,15,89,209 // mulps %xmm9,%xmm10
21703 .byte 69,15,88,211 // addps %xmm11,%xmm10
21704 .byte 65,15,89,200 // mulps %xmm8,%xmm1
21705 .byte 65,15,88,202 // addps %xmm10,%xmm1
21706 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
21707 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21708 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
21709 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21710 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
21711 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21712 .byte 243,68,15,16,104,56 // movss 0x38(%rax),%xmm13
21713 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
21714 .byte 243,68,15,16,112,72 // movss 0x48(%rax),%xmm14
21715 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
21716 .byte 68,15,89,235 // mulps %xmm3,%xmm13
21717 .byte 69,15,88,238 // addps %xmm14,%xmm13
21718 .byte 68,15,89,226 // mulps %xmm2,%xmm12
21719 .byte 69,15,88,229 // addps %xmm13,%xmm12
21720 .byte 69,15,89,217 // mulps %xmm9,%xmm11
21721 .byte 69,15,88,220 // addps %xmm12,%xmm11
21722 .byte 69,15,89,208 // mulps %xmm8,%xmm10
21723 .byte 69,15,88,211 // addps %xmm11,%xmm10
21724 .byte 243,68,15,16,88,12 // movss 0xc(%rax),%xmm11
21725 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21726 .byte 243,68,15,16,96,28 // movss 0x1c(%rax),%xmm12
21727 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21728 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
21729 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
21730 .byte 243,68,15,16,112,60 // movss 0x3c(%rax),%xmm14
21731 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
21732 .byte 243,68,15,16,120,76 // movss 0x4c(%rax),%xmm15
21733 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
21734 .byte 68,15,89,243 // mulps %xmm3,%xmm14
21735 .byte 69,15,88,247 // addps %xmm15,%xmm14
21736 .byte 68,15,89,234 // mulps %xmm2,%xmm13
21737 .byte 69,15,88,238 // addps %xmm14,%xmm13
21738 .byte 69,15,89,225 // mulps %xmm9,%xmm12
21739 .byte 69,15,88,229 // addps %xmm13,%xmm12
21740 .byte 69,15,89,216 // mulps %xmm8,%xmm11
21741 .byte 69,15,88,220 // addps %xmm12,%xmm11
21742 .byte 72,173 // lods %ds:(%rsi),%rax
21743 .byte 65,15,40,210 // movaps %xmm10,%xmm2
21744 .byte 65,15,40,219 // movaps %xmm11,%xmm3
21745 .byte 255,224 // jmpq *%rax
21746
Mike Klein7c4af542017-03-29 18:21:14 -040021747HIDDEN _sk_matrix_perspective_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021748.globl _sk_matrix_perspective_sse41
Mike Klein86714282017-04-13 17:37:38 -040021749FUNCTION(_sk_matrix_perspective_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021750_sk_matrix_perspective_sse41:
21751 .byte 68,15,40,192 // movaps %xmm0,%xmm8
21752 .byte 72,173 // lods %ds:(%rsi),%rax
21753 .byte 243,15,16,0 // movss (%rax),%xmm0
21754 .byte 243,68,15,16,72,4 // movss 0x4(%rax),%xmm9
21755 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
21756 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
21757 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
21758 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21759 .byte 68,15,89,201 // mulps %xmm1,%xmm9
21760 .byte 69,15,88,202 // addps %xmm10,%xmm9
21761 .byte 65,15,89,192 // mulps %xmm8,%xmm0
21762 .byte 65,15,88,193 // addps %xmm9,%xmm0
21763 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
21764 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
21765 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
21766 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21767 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
21768 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21769 .byte 68,15,89,209 // mulps %xmm1,%xmm10
21770 .byte 69,15,88,211 // addps %xmm11,%xmm10
21771 .byte 69,15,89,200 // mulps %xmm8,%xmm9
21772 .byte 69,15,88,202 // addps %xmm10,%xmm9
21773 .byte 243,68,15,16,80,24 // movss 0x18(%rax),%xmm10
21774 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21775 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
21776 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21777 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
21778 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21779 .byte 68,15,89,217 // mulps %xmm1,%xmm11
21780 .byte 69,15,88,220 // addps %xmm12,%xmm11
21781 .byte 69,15,89,208 // mulps %xmm8,%xmm10
21782 .byte 69,15,88,211 // addps %xmm11,%xmm10
21783 .byte 65,15,83,202 // rcpps %xmm10,%xmm1
21784 .byte 15,89,193 // mulps %xmm1,%xmm0
21785 .byte 68,15,89,201 // mulps %xmm1,%xmm9
21786 .byte 72,173 // lods %ds:(%rsi),%rax
21787 .byte 65,15,40,201 // movaps %xmm9,%xmm1
21788 .byte 255,224 // jmpq *%rax
21789
Herb Derby7b4202d2017-04-10 10:52:34 -040021790HIDDEN _sk_linear_gradient_sse41
21791.globl _sk_linear_gradient_sse41
Mike Klein86714282017-04-13 17:37:38 -040021792FUNCTION(_sk_linear_gradient_sse41)
Herb Derby7b4202d2017-04-10 10:52:34 -040021793_sk_linear_gradient_sse41:
21794 .byte 72,173 // lods %ds:(%rsi),%rax
21795 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
21796 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21797 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
21798 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21799 .byte 243,68,15,16,96,24 // movss 0x18(%rax),%xmm12
21800 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21801 .byte 243,68,15,16,104,28 // movss 0x1c(%rax),%xmm13
21802 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
21803 .byte 72,139,8 // mov (%rax),%rcx
21804 .byte 72,133,201 // test %rcx,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040021805 .byte 15,132,254,0,0,0 // je 3a8c <_sk_linear_gradient_sse41+0x138>
Herb Derby7b4202d2017-04-10 10:52:34 -040021806 .byte 15,41,100,36,168 // movaps %xmm4,-0x58(%rsp)
21807 .byte 15,41,108,36,184 // movaps %xmm5,-0x48(%rsp)
21808 .byte 15,41,116,36,200 // movaps %xmm6,-0x38(%rsp)
21809 .byte 15,41,124,36,216 // movaps %xmm7,-0x28(%rsp)
21810 .byte 72,139,64,8 // mov 0x8(%rax),%rax
21811 .byte 72,131,192,32 // add $0x20,%rax
21812 .byte 69,15,87,201 // xorps %xmm9,%xmm9
21813 .byte 15,87,219 // xorps %xmm3,%xmm3
21814 .byte 15,87,210 // xorps %xmm2,%xmm2
21815 .byte 15,87,201 // xorps %xmm1,%xmm1
21816 .byte 15,40,233 // movaps %xmm1,%xmm5
21817 .byte 15,40,242 // movaps %xmm2,%xmm6
21818 .byte 15,40,251 // movaps %xmm3,%xmm7
21819 .byte 69,15,40,194 // movaps %xmm10,%xmm8
21820 .byte 69,15,40,243 // movaps %xmm11,%xmm14
21821 .byte 69,15,40,252 // movaps %xmm12,%xmm15
21822 .byte 68,15,41,108,36,232 // movaps %xmm13,-0x18(%rsp)
21823 .byte 65,15,40,201 // movaps %xmm9,%xmm1
21824 .byte 243,15,16,80,224 // movss -0x20(%rax),%xmm2
21825 .byte 243,68,15,16,72,228 // movss -0x1c(%rax),%xmm9
21826 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
21827 .byte 15,40,224 // movaps %xmm0,%xmm4
21828 .byte 15,194,194,1 // cmpltps %xmm2,%xmm0
21829 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
21830 .byte 102,68,15,56,20,201 // blendvps %xmm0,%xmm1,%xmm9
21831 .byte 243,15,16,72,232 // movss -0x18(%rax),%xmm1
21832 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
21833 .byte 102,15,56,20,205 // blendvps %xmm0,%xmm5,%xmm1
21834 .byte 243,15,16,80,236 // movss -0x14(%rax),%xmm2
21835 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
21836 .byte 102,15,56,20,214 // blendvps %xmm0,%xmm6,%xmm2
21837 .byte 243,15,16,88,240 // movss -0x10(%rax),%xmm3
21838 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
21839 .byte 102,15,56,20,223 // blendvps %xmm0,%xmm7,%xmm3
21840 .byte 243,68,15,16,80,244 // movss -0xc(%rax),%xmm10
21841 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
21842 .byte 102,69,15,56,20,208 // blendvps %xmm0,%xmm8,%xmm10
21843 .byte 243,68,15,16,88,248 // movss -0x8(%rax),%xmm11
21844 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
21845 .byte 102,69,15,56,20,222 // blendvps %xmm0,%xmm14,%xmm11
21846 .byte 243,68,15,16,96,252 // movss -0x4(%rax),%xmm12
21847 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
21848 .byte 102,69,15,56,20,231 // blendvps %xmm0,%xmm15,%xmm12
21849 .byte 243,68,15,16,40 // movss (%rax),%xmm13
21850 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
21851 .byte 102,68,15,56,20,108,36,232 // blendvps %xmm0,-0x18(%rsp),%xmm13
21852 .byte 15,40,196 // movaps %xmm4,%xmm0
21853 .byte 72,131,192,36 // add $0x24,%rax
21854 .byte 72,255,201 // dec %rcx
Mike Klein097d0932017-04-20 09:11:53 -040021855 .byte 15,133,65,255,255,255 // jne 39b7 <_sk_linear_gradient_sse41+0x63>
Herb Derby7b4202d2017-04-10 10:52:34 -040021856 .byte 15,40,124,36,216 // movaps -0x28(%rsp),%xmm7
21857 .byte 15,40,116,36,200 // movaps -0x38(%rsp),%xmm6
21858 .byte 15,40,108,36,184 // movaps -0x48(%rsp),%xmm5
21859 .byte 15,40,100,36,168 // movaps -0x58(%rsp),%xmm4
Mike Klein097d0932017-04-20 09:11:53 -040021860 .byte 235,13 // jmp 3a99 <_sk_linear_gradient_sse41+0x145>
Herb Derby7b4202d2017-04-10 10:52:34 -040021861 .byte 15,87,201 // xorps %xmm1,%xmm1
21862 .byte 15,87,210 // xorps %xmm2,%xmm2
21863 .byte 15,87,219 // xorps %xmm3,%xmm3
21864 .byte 69,15,87,201 // xorps %xmm9,%xmm9
21865 .byte 68,15,89,200 // mulps %xmm0,%xmm9
21866 .byte 69,15,88,202 // addps %xmm10,%xmm9
21867 .byte 15,89,200 // mulps %xmm0,%xmm1
21868 .byte 65,15,88,203 // addps %xmm11,%xmm1
21869 .byte 15,89,208 // mulps %xmm0,%xmm2
21870 .byte 65,15,88,212 // addps %xmm12,%xmm2
21871 .byte 15,89,216 // mulps %xmm0,%xmm3
21872 .byte 65,15,88,221 // addps %xmm13,%xmm3
21873 .byte 72,173 // lods %ds:(%rsi),%rax
21874 .byte 65,15,40,193 // movaps %xmm9,%xmm0
21875 .byte 255,224 // jmpq *%rax
21876
Mike Klein7c4af542017-03-29 18:21:14 -040021877HIDDEN _sk_linear_gradient_2stops_sse41
Mike Kleind7e06ae2017-03-29 16:33:06 -040021878.globl _sk_linear_gradient_2stops_sse41
Mike Klein86714282017-04-13 17:37:38 -040021879FUNCTION(_sk_linear_gradient_2stops_sse41)
Mike Kleind7e06ae2017-03-29 16:33:06 -040021880_sk_linear_gradient_2stops_sse41:
Mike Klein8a823fa2017-04-05 17:29:26 -040021881 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040021882 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040021883 .byte 243,15,16,0 // movss (%rax),%xmm0
21884 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Klein8a823fa2017-04-05 17:29:26 -040021885 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040021886 .byte 243,15,16,80,16 // movss 0x10(%rax),%xmm2
21887 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040021888 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040021889 .byte 15,88,194 // addps %xmm2,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040021890 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040021891 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040021892 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
21893 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040021894 .byte 15,88,202 // addps %xmm2,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040021895 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040021896 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040021897 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040021898 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
21899 .byte 65,15,89,208 // mulps %xmm8,%xmm2
21900 .byte 15,88,211 // addps %xmm3,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040021901 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040021902 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Herb Derby7b4202d2017-04-10 10:52:34 -040021903 .byte 243,68,15,16,72,28 // movss 0x1c(%rax),%xmm9
Mike Klein8a823fa2017-04-05 17:29:26 -040021904 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
21905 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040021906 .byte 65,15,88,217 // addps %xmm9,%xmm3
21907 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040021908 .byte 255,224 // jmpq *%rax
21909
Mike Klein0a904492017-04-12 12:52:48 -040021910HIDDEN _sk_save_xy_sse41
21911.globl _sk_save_xy_sse41
Mike Klein86714282017-04-13 17:37:38 -040021912FUNCTION(_sk_save_xy_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021913_sk_save_xy_sse41:
21914 .byte 72,173 // lods %ds:(%rsi),%rax
21915 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
21916 .byte 102,68,15,110,193 // movd %ecx,%xmm8
21917 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21918 .byte 69,15,40,200 // movaps %xmm8,%xmm9
21919 .byte 68,15,88,200 // addps %xmm0,%xmm9
21920 .byte 102,69,15,58,8,209,1 // roundps $0x1,%xmm9,%xmm10
21921 .byte 69,15,92,202 // subps %xmm10,%xmm9
21922 .byte 68,15,88,193 // addps %xmm1,%xmm8
21923 .byte 102,69,15,58,8,208,1 // roundps $0x1,%xmm8,%xmm10
21924 .byte 69,15,92,194 // subps %xmm10,%xmm8
21925 .byte 15,17,0 // movups %xmm0,(%rax)
21926 .byte 15,17,72,32 // movups %xmm1,0x20(%rax)
21927 .byte 68,15,17,72,64 // movups %xmm9,0x40(%rax)
21928 .byte 68,15,17,64,96 // movups %xmm8,0x60(%rax)
21929 .byte 72,173 // lods %ds:(%rsi),%rax
21930 .byte 255,224 // jmpq *%rax
21931
21932HIDDEN _sk_accumulate_sse41
21933.globl _sk_accumulate_sse41
Mike Klein86714282017-04-13 17:37:38 -040021934FUNCTION(_sk_accumulate_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021935_sk_accumulate_sse41:
21936 .byte 72,173 // lods %ds:(%rsi),%rax
21937 .byte 68,15,16,128,128,0,0,0 // movups 0x80(%rax),%xmm8
21938 .byte 68,15,16,136,160,0,0,0 // movups 0xa0(%rax),%xmm9
21939 .byte 69,15,89,200 // mulps %xmm8,%xmm9
21940 .byte 69,15,40,193 // movaps %xmm9,%xmm8
21941 .byte 68,15,89,192 // mulps %xmm0,%xmm8
21942 .byte 65,15,88,224 // addps %xmm8,%xmm4
21943 .byte 69,15,40,193 // movaps %xmm9,%xmm8
21944 .byte 68,15,89,193 // mulps %xmm1,%xmm8
21945 .byte 65,15,88,232 // addps %xmm8,%xmm5
21946 .byte 69,15,40,193 // movaps %xmm9,%xmm8
21947 .byte 68,15,89,194 // mulps %xmm2,%xmm8
21948 .byte 65,15,88,240 // addps %xmm8,%xmm6
21949 .byte 68,15,89,203 // mulps %xmm3,%xmm9
21950 .byte 65,15,88,249 // addps %xmm9,%xmm7
21951 .byte 72,173 // lods %ds:(%rsi),%rax
21952 .byte 255,224 // jmpq *%rax
21953
21954HIDDEN _sk_bilinear_nx_sse41
21955.globl _sk_bilinear_nx_sse41
Mike Klein86714282017-04-13 17:37:38 -040021956FUNCTION(_sk_bilinear_nx_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021957_sk_bilinear_nx_sse41:
21958 .byte 72,173 // lods %ds:(%rsi),%rax
21959 .byte 185,0,0,0,191 // mov $0xbf000000,%ecx
21960 .byte 102,68,15,110,193 // movd %ecx,%xmm8
21961 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21962 .byte 15,16,0 // movups (%rax),%xmm0
21963 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
21964 .byte 65,15,88,192 // addps %xmm8,%xmm0
21965 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
21966 .byte 102,68,15,110,193 // movd %ecx,%xmm8
21967 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21968 .byte 69,15,92,193 // subps %xmm9,%xmm8
21969 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
21970 .byte 72,173 // lods %ds:(%rsi),%rax
21971 .byte 255,224 // jmpq *%rax
21972
21973HIDDEN _sk_bilinear_px_sse41
21974.globl _sk_bilinear_px_sse41
Mike Klein86714282017-04-13 17:37:38 -040021975FUNCTION(_sk_bilinear_px_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021976_sk_bilinear_px_sse41:
21977 .byte 72,173 // lods %ds:(%rsi),%rax
21978 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
21979 .byte 102,68,15,110,193 // movd %ecx,%xmm8
21980 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21981 .byte 15,16,0 // movups (%rax),%xmm0
21982 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
21983 .byte 65,15,88,192 // addps %xmm8,%xmm0
21984 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
21985 .byte 72,173 // lods %ds:(%rsi),%rax
21986 .byte 255,224 // jmpq *%rax
21987
21988HIDDEN _sk_bilinear_ny_sse41
21989.globl _sk_bilinear_ny_sse41
Mike Klein86714282017-04-13 17:37:38 -040021990FUNCTION(_sk_bilinear_ny_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040021991_sk_bilinear_ny_sse41:
21992 .byte 72,173 // lods %ds:(%rsi),%rax
21993 .byte 185,0,0,0,191 // mov $0xbf000000,%ecx
21994 .byte 102,68,15,110,193 // movd %ecx,%xmm8
21995 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
21996 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
21997 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
21998 .byte 65,15,88,200 // addps %xmm8,%xmm1
21999 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
22000 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22001 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22002 .byte 69,15,92,193 // subps %xmm9,%xmm8
22003 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
22004 .byte 72,173 // lods %ds:(%rsi),%rax
22005 .byte 255,224 // jmpq *%rax
22006
22007HIDDEN _sk_bilinear_py_sse41
22008.globl _sk_bilinear_py_sse41
Mike Klein86714282017-04-13 17:37:38 -040022009FUNCTION(_sk_bilinear_py_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040022010_sk_bilinear_py_sse41:
22011 .byte 72,173 // lods %ds:(%rsi),%rax
22012 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
22013 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22014 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22015 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
22016 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
22017 .byte 65,15,88,200 // addps %xmm8,%xmm1
22018 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
22019 .byte 72,173 // lods %ds:(%rsi),%rax
22020 .byte 255,224 // jmpq *%rax
22021
22022HIDDEN _sk_bicubic_n3x_sse41
22023.globl _sk_bicubic_n3x_sse41
Mike Klein86714282017-04-13 17:37:38 -040022024FUNCTION(_sk_bicubic_n3x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040022025_sk_bicubic_n3x_sse41:
22026 .byte 72,173 // lods %ds:(%rsi),%rax
22027 .byte 185,0,0,192,191 // mov $0xbfc00000,%ecx
22028 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22029 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22030 .byte 15,16,0 // movups (%rax),%xmm0
22031 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
22032 .byte 65,15,88,192 // addps %xmm8,%xmm0
22033 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
22034 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22035 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22036 .byte 69,15,92,193 // subps %xmm9,%xmm8
22037 .byte 185,114,28,199,62 // mov $0x3ec71c72,%ecx
22038 .byte 102,68,15,110,201 // movd %ecx,%xmm9
22039 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
22040 .byte 185,171,170,170,190 // mov $0xbeaaaaab,%ecx
22041 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22042 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22043 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22044 .byte 69,15,89,192 // mulps %xmm8,%xmm8
22045 .byte 69,15,88,202 // addps %xmm10,%xmm9
22046 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22047 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
22048 .byte 72,173 // lods %ds:(%rsi),%rax
22049 .byte 255,224 // jmpq *%rax
22050
22051HIDDEN _sk_bicubic_n1x_sse41
22052.globl _sk_bicubic_n1x_sse41
Mike Klein86714282017-04-13 17:37:38 -040022053FUNCTION(_sk_bicubic_n1x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040022054_sk_bicubic_n1x_sse41:
22055 .byte 72,173 // lods %ds:(%rsi),%rax
22056 .byte 185,0,0,0,191 // mov $0xbf000000,%ecx
22057 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22058 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22059 .byte 15,16,0 // movups (%rax),%xmm0
22060 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
22061 .byte 65,15,88,192 // addps %xmm8,%xmm0
22062 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
22063 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22064 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22065 .byte 69,15,92,193 // subps %xmm9,%xmm8
22066 .byte 185,85,85,149,191 // mov $0xbf955555,%ecx
22067 .byte 102,68,15,110,201 // movd %ecx,%xmm9
22068 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
22069 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
22070 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22071 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22072 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22073 .byte 69,15,88,202 // addps %xmm10,%xmm9
22074 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
22075 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22076 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22077 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22078 .byte 69,15,88,202 // addps %xmm10,%xmm9
22079 .byte 185,57,142,99,61 // mov $0x3d638e39,%ecx
22080 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22081 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22082 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22083 .byte 69,15,88,202 // addps %xmm10,%xmm9
22084 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
22085 .byte 72,173 // lods %ds:(%rsi),%rax
22086 .byte 255,224 // jmpq *%rax
22087
22088HIDDEN _sk_bicubic_p1x_sse41
22089.globl _sk_bicubic_p1x_sse41
Mike Klein86714282017-04-13 17:37:38 -040022090FUNCTION(_sk_bicubic_p1x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040022091_sk_bicubic_p1x_sse41:
22092 .byte 72,173 // lods %ds:(%rsi),%rax
22093 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
22094 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22095 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22096 .byte 15,16,0 // movups (%rax),%xmm0
22097 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
22098 .byte 65,15,88,192 // addps %xmm8,%xmm0
22099 .byte 185,85,85,149,191 // mov $0xbf955555,%ecx
22100 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22101 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22102 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
22103 .byte 102,68,15,110,217 // movd %ecx,%xmm11
22104 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
22105 .byte 69,15,89,209 // mulps %xmm9,%xmm10
22106 .byte 69,15,88,211 // addps %xmm11,%xmm10
22107 .byte 69,15,89,209 // mulps %xmm9,%xmm10
22108 .byte 69,15,88,208 // addps %xmm8,%xmm10
22109 .byte 185,57,142,99,61 // mov $0x3d638e39,%ecx
22110 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22111 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22112 .byte 69,15,89,209 // mulps %xmm9,%xmm10
22113 .byte 69,15,88,208 // addps %xmm8,%xmm10
22114 .byte 68,15,17,144,128,0,0,0 // movups %xmm10,0x80(%rax)
22115 .byte 72,173 // lods %ds:(%rsi),%rax
22116 .byte 255,224 // jmpq *%rax
22117
22118HIDDEN _sk_bicubic_p3x_sse41
22119.globl _sk_bicubic_p3x_sse41
Mike Klein86714282017-04-13 17:37:38 -040022120FUNCTION(_sk_bicubic_p3x_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040022121_sk_bicubic_p3x_sse41:
22122 .byte 72,173 // lods %ds:(%rsi),%rax
22123 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
22124 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22125 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22126 .byte 15,16,0 // movups (%rax),%xmm0
22127 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
22128 .byte 65,15,88,192 // addps %xmm8,%xmm0
22129 .byte 185,114,28,199,62 // mov $0x3ec71c72,%ecx
22130 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22131 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22132 .byte 69,15,89,193 // mulps %xmm9,%xmm8
22133 .byte 69,15,89,201 // mulps %xmm9,%xmm9
22134 .byte 185,171,170,170,190 // mov $0xbeaaaaab,%ecx
22135 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22136 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22137 .byte 69,15,88,194 // addps %xmm10,%xmm8
22138 .byte 69,15,89,193 // mulps %xmm9,%xmm8
22139 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
22140 .byte 72,173 // lods %ds:(%rsi),%rax
22141 .byte 255,224 // jmpq *%rax
22142
22143HIDDEN _sk_bicubic_n3y_sse41
22144.globl _sk_bicubic_n3y_sse41
Mike Klein86714282017-04-13 17:37:38 -040022145FUNCTION(_sk_bicubic_n3y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040022146_sk_bicubic_n3y_sse41:
22147 .byte 72,173 // lods %ds:(%rsi),%rax
22148 .byte 185,0,0,192,191 // mov $0xbfc00000,%ecx
22149 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22150 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22151 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
22152 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
22153 .byte 65,15,88,200 // addps %xmm8,%xmm1
22154 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
22155 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22156 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22157 .byte 69,15,92,193 // subps %xmm9,%xmm8
22158 .byte 185,114,28,199,62 // mov $0x3ec71c72,%ecx
22159 .byte 102,68,15,110,201 // movd %ecx,%xmm9
22160 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
22161 .byte 185,171,170,170,190 // mov $0xbeaaaaab,%ecx
22162 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22163 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22164 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22165 .byte 69,15,89,192 // mulps %xmm8,%xmm8
22166 .byte 69,15,88,202 // addps %xmm10,%xmm9
22167 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22168 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
22169 .byte 72,173 // lods %ds:(%rsi),%rax
22170 .byte 255,224 // jmpq *%rax
22171
22172HIDDEN _sk_bicubic_n1y_sse41
22173.globl _sk_bicubic_n1y_sse41
Mike Klein86714282017-04-13 17:37:38 -040022174FUNCTION(_sk_bicubic_n1y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040022175_sk_bicubic_n1y_sse41:
22176 .byte 72,173 // lods %ds:(%rsi),%rax
22177 .byte 185,0,0,0,191 // mov $0xbf000000,%ecx
22178 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22179 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22180 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
22181 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
22182 .byte 65,15,88,200 // addps %xmm8,%xmm1
22183 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
22184 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22185 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22186 .byte 69,15,92,193 // subps %xmm9,%xmm8
22187 .byte 185,85,85,149,191 // mov $0xbf955555,%ecx
22188 .byte 102,68,15,110,201 // movd %ecx,%xmm9
22189 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
22190 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
22191 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22192 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22193 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22194 .byte 69,15,88,202 // addps %xmm10,%xmm9
22195 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
22196 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22197 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22198 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22199 .byte 69,15,88,202 // addps %xmm10,%xmm9
22200 .byte 185,57,142,99,61 // mov $0x3d638e39,%ecx
22201 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22202 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22203 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22204 .byte 69,15,88,202 // addps %xmm10,%xmm9
22205 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
22206 .byte 72,173 // lods %ds:(%rsi),%rax
22207 .byte 255,224 // jmpq *%rax
22208
22209HIDDEN _sk_bicubic_p1y_sse41
22210.globl _sk_bicubic_p1y_sse41
Mike Klein86714282017-04-13 17:37:38 -040022211FUNCTION(_sk_bicubic_p1y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040022212_sk_bicubic_p1y_sse41:
22213 .byte 72,173 // lods %ds:(%rsi),%rax
22214 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
22215 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22216 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22217 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
22218 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
22219 .byte 65,15,88,200 // addps %xmm8,%xmm1
22220 .byte 185,85,85,149,191 // mov $0xbf955555,%ecx
22221 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22222 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22223 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
22224 .byte 102,68,15,110,217 // movd %ecx,%xmm11
22225 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
22226 .byte 69,15,89,209 // mulps %xmm9,%xmm10
22227 .byte 69,15,88,211 // addps %xmm11,%xmm10
22228 .byte 69,15,89,209 // mulps %xmm9,%xmm10
22229 .byte 69,15,88,208 // addps %xmm8,%xmm10
22230 .byte 185,57,142,99,61 // mov $0x3d638e39,%ecx
22231 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22232 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22233 .byte 69,15,89,209 // mulps %xmm9,%xmm10
22234 .byte 69,15,88,208 // addps %xmm8,%xmm10
22235 .byte 68,15,17,144,160,0,0,0 // movups %xmm10,0xa0(%rax)
22236 .byte 72,173 // lods %ds:(%rsi),%rax
22237 .byte 255,224 // jmpq *%rax
22238
22239HIDDEN _sk_bicubic_p3y_sse41
22240.globl _sk_bicubic_p3y_sse41
Mike Klein86714282017-04-13 17:37:38 -040022241FUNCTION(_sk_bicubic_p3y_sse41)
Mike Klein0a904492017-04-12 12:52:48 -040022242_sk_bicubic_p3y_sse41:
22243 .byte 72,173 // lods %ds:(%rsi),%rax
22244 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
22245 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22246 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22247 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
22248 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
22249 .byte 65,15,88,200 // addps %xmm8,%xmm1
22250 .byte 185,114,28,199,62 // mov $0x3ec71c72,%ecx
22251 .byte 102,68,15,110,193 // movd %ecx,%xmm8
22252 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22253 .byte 69,15,89,193 // mulps %xmm9,%xmm8
22254 .byte 69,15,89,201 // mulps %xmm9,%xmm9
22255 .byte 185,171,170,170,190 // mov $0xbeaaaaab,%ecx
22256 .byte 102,68,15,110,209 // movd %ecx,%xmm10
22257 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22258 .byte 69,15,88,194 // addps %xmm10,%xmm8
22259 .byte 69,15,89,193 // mulps %xmm9,%xmm8
22260 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
22261 .byte 72,173 // lods %ds:(%rsi),%rax
22262 .byte 255,224 // jmpq *%rax
22263
Mike Klein7fee90c2017-04-07 16:55:09 -040022264HIDDEN _sk_callback_sse41
22265.globl _sk_callback_sse41
22266FUNCTION(_sk_callback_sse41)
22267_sk_callback_sse41:
22268 .byte 65,87 // push %r15
22269 .byte 65,86 // push %r14
22270 .byte 83 // push %rbx
22271 .byte 72,129,236,128,0,0,0 // sub $0x80,%rsp
22272 .byte 15,41,124,36,112 // movaps %xmm7,0x70(%rsp)
22273 .byte 15,41,116,36,96 // movaps %xmm6,0x60(%rsp)
22274 .byte 15,41,108,36,80 // movaps %xmm5,0x50(%rsp)
22275 .byte 15,41,100,36,64 // movaps %xmm4,0x40(%rsp)
22276 .byte 15,41,92,36,48 // movaps %xmm3,0x30(%rsp)
22277 .byte 15,41,84,36,32 // movaps %xmm2,0x20(%rsp)
22278 .byte 15,41,76,36,16 // movaps %xmm1,0x10(%rsp)
22279 .byte 15,41,4,36 // movaps %xmm0,(%rsp)
22280 .byte 73,137,214 // mov %rdx,%r14
22281 .byte 73,137,255 // mov %rdi,%r15
22282 .byte 72,173 // lods %ds:(%rsi),%rax
22283 .byte 72,137,243 // mov %rsi,%rbx
22284 .byte 72,139,120,8 // mov 0x8(%rax),%rdi
22285 .byte 190,4,0,0,0 // mov $0x4,%esi
22286 .byte 255,16 // callq *(%rax)
22287 .byte 72,137,222 // mov %rbx,%rsi
22288 .byte 72,173 // lods %ds:(%rsi),%rax
22289 .byte 76,137,255 // mov %r15,%rdi
22290 .byte 76,137,242 // mov %r14,%rdx
22291 .byte 15,40,4,36 // movaps (%rsp),%xmm0
22292 .byte 15,40,76,36,16 // movaps 0x10(%rsp),%xmm1
22293 .byte 15,40,84,36,32 // movaps 0x20(%rsp),%xmm2
22294 .byte 15,40,92,36,48 // movaps 0x30(%rsp),%xmm3
22295 .byte 15,40,100,36,64 // movaps 0x40(%rsp),%xmm4
22296 .byte 15,40,108,36,80 // movaps 0x50(%rsp),%xmm5
22297 .byte 15,40,116,36,96 // movaps 0x60(%rsp),%xmm6
22298 .byte 15,40,124,36,112 // movaps 0x70(%rsp),%xmm7
22299 .byte 72,129,196,128,0,0,0 // add $0x80,%rsp
22300 .byte 91 // pop %rbx
22301 .byte 65,94 // pop %r14
22302 .byte 65,95 // pop %r15
22303 .byte 255,224 // jmpq *%rax
22304
Mike Klein7c4af542017-03-29 18:21:14 -040022305HIDDEN _sk_start_pipeline_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022306.globl _sk_start_pipeline_sse2
Mike Klein86714282017-04-13 17:37:38 -040022307FUNCTION(_sk_start_pipeline_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022308_sk_start_pipeline_sse2:
22309 .byte 65,87 // push %r15
22310 .byte 65,86 // push %r14
22311 .byte 65,85 // push %r13
22312 .byte 65,84 // push %r12
22313 .byte 83 // push %rbx
22314 .byte 73,137,207 // mov %rcx,%r15
22315 .byte 73,137,214 // mov %rdx,%r14
22316 .byte 72,137,251 // mov %rdi,%rbx
22317 .byte 72,173 // lods %ds:(%rsi),%rax
22318 .byte 73,137,196 // mov %rax,%r12
22319 .byte 73,137,245 // mov %rsi,%r13
22320 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
22321 .byte 76,57,248 // cmp %r15,%rax
22322 .byte 118,5 // jbe 28 <_sk_start_pipeline_sse2+0x28>
22323 .byte 72,137,216 // mov %rbx,%rax
22324 .byte 235,52 // jmp 5c <_sk_start_pipeline_sse2+0x5c>
22325 .byte 15,87,192 // xorps %xmm0,%xmm0
22326 .byte 15,87,201 // xorps %xmm1,%xmm1
22327 .byte 15,87,210 // xorps %xmm2,%xmm2
22328 .byte 15,87,219 // xorps %xmm3,%xmm3
22329 .byte 15,87,228 // xorps %xmm4,%xmm4
22330 .byte 15,87,237 // xorps %xmm5,%xmm5
22331 .byte 15,87,246 // xorps %xmm6,%xmm6
22332 .byte 15,87,255 // xorps %xmm7,%xmm7
22333 .byte 72,137,223 // mov %rbx,%rdi
22334 .byte 76,137,238 // mov %r13,%rsi
22335 .byte 76,137,242 // mov %r14,%rdx
22336 .byte 65,255,212 // callq *%r12
22337 .byte 72,141,67,4 // lea 0x4(%rbx),%rax
22338 .byte 72,131,195,8 // add $0x8,%rbx
22339 .byte 76,57,251 // cmp %r15,%rbx
22340 .byte 72,137,195 // mov %rax,%rbx
22341 .byte 118,204 // jbe 28 <_sk_start_pipeline_sse2+0x28>
22342 .byte 91 // pop %rbx
22343 .byte 65,92 // pop %r12
22344 .byte 65,93 // pop %r13
22345 .byte 65,94 // pop %r14
22346 .byte 65,95 // pop %r15
22347 .byte 195 // retq
22348
Mike Klein7c4af542017-03-29 18:21:14 -040022349HIDDEN _sk_just_return_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022350.globl _sk_just_return_sse2
Mike Klein86714282017-04-13 17:37:38 -040022351FUNCTION(_sk_just_return_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022352_sk_just_return_sse2:
22353 .byte 195 // retq
22354
Mike Klein7c4af542017-03-29 18:21:14 -040022355HIDDEN _sk_seed_shader_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022356.globl _sk_seed_shader_sse2
Mike Klein86714282017-04-13 17:37:38 -040022357FUNCTION(_sk_seed_shader_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022358_sk_seed_shader_sse2:
22359 .byte 72,173 // lods %ds:(%rsi),%rax
22360 .byte 102,15,110,199 // movd %edi,%xmm0
22361 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
22362 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
22363 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
22364 .byte 102,15,110,209 // movd %ecx,%xmm2
22365 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
22366 .byte 15,88,202 // addps %xmm2,%xmm1
22367 .byte 15,16,2 // movups (%rdx),%xmm0
22368 .byte 15,88,193 // addps %xmm1,%xmm0
22369 .byte 102,15,110,8 // movd (%rax),%xmm1
22370 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
22371 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
22372 .byte 15,88,202 // addps %xmm2,%xmm1
22373 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22374 .byte 102,15,110,208 // movd %eax,%xmm2
22375 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
22376 .byte 72,173 // lods %ds:(%rsi),%rax
22377 .byte 15,87,219 // xorps %xmm3,%xmm3
22378 .byte 15,87,228 // xorps %xmm4,%xmm4
22379 .byte 15,87,237 // xorps %xmm5,%xmm5
22380 .byte 15,87,246 // xorps %xmm6,%xmm6
22381 .byte 15,87,255 // xorps %xmm7,%xmm7
22382 .byte 255,224 // jmpq *%rax
22383
Mike Klein7c4af542017-03-29 18:21:14 -040022384HIDDEN _sk_constant_color_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022385.globl _sk_constant_color_sse2
Mike Klein86714282017-04-13 17:37:38 -040022386FUNCTION(_sk_constant_color_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022387_sk_constant_color_sse2:
22388 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein8a823fa2017-04-05 17:29:26 -040022389 .byte 243,15,16,0 // movss (%rax),%xmm0
22390 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040022391 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040022392 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
22393 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
22394 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
22395 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
22396 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040022397 .byte 72,173 // lods %ds:(%rsi),%rax
22398 .byte 255,224 // jmpq *%rax
22399
Mike Klein7c4af542017-03-29 18:21:14 -040022400HIDDEN _sk_clear_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022401.globl _sk_clear_sse2
Mike Klein86714282017-04-13 17:37:38 -040022402FUNCTION(_sk_clear_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022403_sk_clear_sse2:
22404 .byte 72,173 // lods %ds:(%rsi),%rax
22405 .byte 15,87,192 // xorps %xmm0,%xmm0
22406 .byte 15,87,201 // xorps %xmm1,%xmm1
22407 .byte 15,87,210 // xorps %xmm2,%xmm2
22408 .byte 15,87,219 // xorps %xmm3,%xmm3
22409 .byte 255,224 // jmpq *%rax
22410
Mike Kleinaaca1e42017-03-31 09:29:01 -040022411HIDDEN _sk_srcatop_sse2
22412.globl _sk_srcatop_sse2
Mike Klein86714282017-04-13 17:37:38 -040022413FUNCTION(_sk_srcatop_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022414_sk_srcatop_sse2:
22415 .byte 15,89,199 // mulps %xmm7,%xmm0
22416 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22417 .byte 102,68,15,110,192 // movd %eax,%xmm8
22418 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22419 .byte 68,15,92,195 // subps %xmm3,%xmm8
22420 .byte 69,15,40,200 // movaps %xmm8,%xmm9
22421 .byte 68,15,89,204 // mulps %xmm4,%xmm9
22422 .byte 65,15,88,193 // addps %xmm9,%xmm0
22423 .byte 15,89,207 // mulps %xmm7,%xmm1
22424 .byte 69,15,40,200 // movaps %xmm8,%xmm9
22425 .byte 68,15,89,205 // mulps %xmm5,%xmm9
22426 .byte 65,15,88,201 // addps %xmm9,%xmm1
22427 .byte 15,89,215 // mulps %xmm7,%xmm2
22428 .byte 69,15,40,200 // movaps %xmm8,%xmm9
22429 .byte 68,15,89,206 // mulps %xmm6,%xmm9
22430 .byte 65,15,88,209 // addps %xmm9,%xmm2
22431 .byte 15,89,223 // mulps %xmm7,%xmm3
22432 .byte 68,15,89,199 // mulps %xmm7,%xmm8
22433 .byte 65,15,88,216 // addps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040022434 .byte 72,173 // lods %ds:(%rsi),%rax
22435 .byte 255,224 // jmpq *%rax
22436
Mike Kleinaaca1e42017-03-31 09:29:01 -040022437HIDDEN _sk_dstatop_sse2
22438.globl _sk_dstatop_sse2
Mike Klein86714282017-04-13 17:37:38 -040022439FUNCTION(_sk_dstatop_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022440_sk_dstatop_sse2:
22441 .byte 68,15,40,195 // movaps %xmm3,%xmm8
22442 .byte 68,15,89,196 // mulps %xmm4,%xmm8
22443 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22444 .byte 102,68,15,110,200 // movd %eax,%xmm9
22445 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
22446 .byte 68,15,92,207 // subps %xmm7,%xmm9
22447 .byte 65,15,89,193 // mulps %xmm9,%xmm0
22448 .byte 65,15,88,192 // addps %xmm8,%xmm0
22449 .byte 68,15,40,195 // movaps %xmm3,%xmm8
22450 .byte 68,15,89,197 // mulps %xmm5,%xmm8
22451 .byte 65,15,89,201 // mulps %xmm9,%xmm1
22452 .byte 65,15,88,200 // addps %xmm8,%xmm1
22453 .byte 68,15,40,195 // movaps %xmm3,%xmm8
22454 .byte 68,15,89,198 // mulps %xmm6,%xmm8
22455 .byte 65,15,89,209 // mulps %xmm9,%xmm2
22456 .byte 65,15,88,208 // addps %xmm8,%xmm2
22457 .byte 68,15,89,203 // mulps %xmm3,%xmm9
22458 .byte 15,89,223 // mulps %xmm7,%xmm3
22459 .byte 65,15,88,217 // addps %xmm9,%xmm3
22460 .byte 72,173 // lods %ds:(%rsi),%rax
22461 .byte 255,224 // jmpq *%rax
22462
22463HIDDEN _sk_srcin_sse2
22464.globl _sk_srcin_sse2
Mike Klein86714282017-04-13 17:37:38 -040022465FUNCTION(_sk_srcin_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022466_sk_srcin_sse2:
22467 .byte 15,89,199 // mulps %xmm7,%xmm0
22468 .byte 15,89,207 // mulps %xmm7,%xmm1
22469 .byte 15,89,215 // mulps %xmm7,%xmm2
22470 .byte 15,89,223 // mulps %xmm7,%xmm3
22471 .byte 72,173 // lods %ds:(%rsi),%rax
22472 .byte 255,224 // jmpq *%rax
22473
22474HIDDEN _sk_dstin_sse2
22475.globl _sk_dstin_sse2
Mike Klein86714282017-04-13 17:37:38 -040022476FUNCTION(_sk_dstin_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022477_sk_dstin_sse2:
22478 .byte 15,40,195 // movaps %xmm3,%xmm0
22479 .byte 15,89,196 // mulps %xmm4,%xmm0
22480 .byte 15,40,203 // movaps %xmm3,%xmm1
22481 .byte 15,89,205 // mulps %xmm5,%xmm1
22482 .byte 15,40,211 // movaps %xmm3,%xmm2
22483 .byte 15,89,214 // mulps %xmm6,%xmm2
22484 .byte 15,89,223 // mulps %xmm7,%xmm3
22485 .byte 72,173 // lods %ds:(%rsi),%rax
22486 .byte 255,224 // jmpq *%rax
22487
22488HIDDEN _sk_srcout_sse2
22489.globl _sk_srcout_sse2
Mike Klein86714282017-04-13 17:37:38 -040022490FUNCTION(_sk_srcout_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022491_sk_srcout_sse2:
22492 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22493 .byte 102,68,15,110,192 // movd %eax,%xmm8
22494 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22495 .byte 68,15,92,199 // subps %xmm7,%xmm8
22496 .byte 65,15,89,192 // mulps %xmm8,%xmm0
22497 .byte 65,15,89,200 // mulps %xmm8,%xmm1
22498 .byte 65,15,89,208 // mulps %xmm8,%xmm2
22499 .byte 65,15,89,216 // mulps %xmm8,%xmm3
22500 .byte 72,173 // lods %ds:(%rsi),%rax
22501 .byte 255,224 // jmpq *%rax
22502
22503HIDDEN _sk_dstout_sse2
22504.globl _sk_dstout_sse2
Mike Klein86714282017-04-13 17:37:38 -040022505FUNCTION(_sk_dstout_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022506_sk_dstout_sse2:
22507 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22508 .byte 102,68,15,110,192 // movd %eax,%xmm8
22509 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22510 .byte 68,15,92,195 // subps %xmm3,%xmm8
22511 .byte 65,15,40,192 // movaps %xmm8,%xmm0
22512 .byte 15,89,196 // mulps %xmm4,%xmm0
22513 .byte 65,15,40,200 // movaps %xmm8,%xmm1
22514 .byte 15,89,205 // mulps %xmm5,%xmm1
22515 .byte 65,15,40,208 // movaps %xmm8,%xmm2
22516 .byte 15,89,214 // mulps %xmm6,%xmm2
22517 .byte 68,15,89,199 // mulps %xmm7,%xmm8
22518 .byte 72,173 // lods %ds:(%rsi),%rax
22519 .byte 65,15,40,216 // movaps %xmm8,%xmm3
22520 .byte 255,224 // jmpq *%rax
22521
Mike Klein7c4af542017-03-29 18:21:14 -040022522HIDDEN _sk_srcover_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022523.globl _sk_srcover_sse2
Mike Klein86714282017-04-13 17:37:38 -040022524FUNCTION(_sk_srcover_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022525_sk_srcover_sse2:
22526 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22527 .byte 102,68,15,110,192 // movd %eax,%xmm8
22528 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22529 .byte 68,15,92,195 // subps %xmm3,%xmm8
22530 .byte 69,15,40,200 // movaps %xmm8,%xmm9
22531 .byte 68,15,89,204 // mulps %xmm4,%xmm9
22532 .byte 65,15,88,193 // addps %xmm9,%xmm0
22533 .byte 69,15,40,200 // movaps %xmm8,%xmm9
22534 .byte 68,15,89,205 // mulps %xmm5,%xmm9
22535 .byte 65,15,88,201 // addps %xmm9,%xmm1
22536 .byte 69,15,40,200 // movaps %xmm8,%xmm9
22537 .byte 68,15,89,206 // mulps %xmm6,%xmm9
22538 .byte 65,15,88,209 // addps %xmm9,%xmm2
22539 .byte 68,15,89,199 // mulps %xmm7,%xmm8
22540 .byte 65,15,88,216 // addps %xmm8,%xmm3
22541 .byte 72,173 // lods %ds:(%rsi),%rax
22542 .byte 255,224 // jmpq *%rax
22543
Mike Klein7c4af542017-03-29 18:21:14 -040022544HIDDEN _sk_dstover_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040022545.globl _sk_dstover_sse2
Mike Klein86714282017-04-13 17:37:38 -040022546FUNCTION(_sk_dstover_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040022547_sk_dstover_sse2:
22548 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22549 .byte 102,68,15,110,192 // movd %eax,%xmm8
22550 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22551 .byte 68,15,92,199 // subps %xmm7,%xmm8
22552 .byte 65,15,89,192 // mulps %xmm8,%xmm0
22553 .byte 15,88,196 // addps %xmm4,%xmm0
22554 .byte 65,15,89,200 // mulps %xmm8,%xmm1
22555 .byte 15,88,205 // addps %xmm5,%xmm1
22556 .byte 65,15,89,208 // mulps %xmm8,%xmm2
22557 .byte 15,88,214 // addps %xmm6,%xmm2
22558 .byte 65,15,89,216 // mulps %xmm8,%xmm3
22559 .byte 15,88,223 // addps %xmm7,%xmm3
22560 .byte 72,173 // lods %ds:(%rsi),%rax
22561 .byte 255,224 // jmpq *%rax
22562
Mike Kleinaaca1e42017-03-31 09:29:01 -040022563HIDDEN _sk_modulate_sse2
22564.globl _sk_modulate_sse2
Mike Klein86714282017-04-13 17:37:38 -040022565FUNCTION(_sk_modulate_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022566_sk_modulate_sse2:
22567 .byte 15,89,196 // mulps %xmm4,%xmm0
22568 .byte 15,89,205 // mulps %xmm5,%xmm1
22569 .byte 15,89,214 // mulps %xmm6,%xmm2
22570 .byte 15,89,223 // mulps %xmm7,%xmm3
22571 .byte 72,173 // lods %ds:(%rsi),%rax
22572 .byte 255,224 // jmpq *%rax
22573
22574HIDDEN _sk_multiply_sse2
22575.globl _sk_multiply_sse2
Mike Klein86714282017-04-13 17:37:38 -040022576FUNCTION(_sk_multiply_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022577_sk_multiply_sse2:
22578 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22579 .byte 102,68,15,110,192 // movd %eax,%xmm8
22580 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
22581 .byte 69,15,40,200 // movaps %xmm8,%xmm9
22582 .byte 68,15,92,207 // subps %xmm7,%xmm9
22583 .byte 69,15,40,209 // movaps %xmm9,%xmm10
22584 .byte 68,15,89,208 // mulps %xmm0,%xmm10
22585 .byte 68,15,92,195 // subps %xmm3,%xmm8
22586 .byte 69,15,40,216 // movaps %xmm8,%xmm11
22587 .byte 68,15,89,220 // mulps %xmm4,%xmm11
22588 .byte 69,15,88,218 // addps %xmm10,%xmm11
22589 .byte 15,89,196 // mulps %xmm4,%xmm0
22590 .byte 65,15,88,195 // addps %xmm11,%xmm0
22591 .byte 69,15,40,209 // movaps %xmm9,%xmm10
22592 .byte 68,15,89,209 // mulps %xmm1,%xmm10
22593 .byte 69,15,40,216 // movaps %xmm8,%xmm11
22594 .byte 68,15,89,221 // mulps %xmm5,%xmm11
22595 .byte 69,15,88,218 // addps %xmm10,%xmm11
22596 .byte 15,89,205 // mulps %xmm5,%xmm1
22597 .byte 65,15,88,203 // addps %xmm11,%xmm1
22598 .byte 69,15,40,209 // movaps %xmm9,%xmm10
22599 .byte 68,15,89,210 // mulps %xmm2,%xmm10
22600 .byte 69,15,40,216 // movaps %xmm8,%xmm11
22601 .byte 68,15,89,222 // mulps %xmm6,%xmm11
22602 .byte 69,15,88,218 // addps %xmm10,%xmm11
22603 .byte 15,89,214 // mulps %xmm6,%xmm2
22604 .byte 65,15,88,211 // addps %xmm11,%xmm2
22605 .byte 68,15,89,203 // mulps %xmm3,%xmm9
22606 .byte 68,15,89,199 // mulps %xmm7,%xmm8
22607 .byte 69,15,88,193 // addps %xmm9,%xmm8
22608 .byte 15,89,223 // mulps %xmm7,%xmm3
22609 .byte 65,15,88,216 // addps %xmm8,%xmm3
22610 .byte 72,173 // lods %ds:(%rsi),%rax
22611 .byte 255,224 // jmpq *%rax
22612
22613HIDDEN _sk_plus__sse2
22614.globl _sk_plus__sse2
Mike Klein86714282017-04-13 17:37:38 -040022615FUNCTION(_sk_plus__sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022616_sk_plus__sse2:
22617 .byte 15,88,196 // addps %xmm4,%xmm0
22618 .byte 15,88,205 // addps %xmm5,%xmm1
22619 .byte 15,88,214 // addps %xmm6,%xmm2
22620 .byte 15,88,223 // addps %xmm7,%xmm3
22621 .byte 72,173 // lods %ds:(%rsi),%rax
22622 .byte 255,224 // jmpq *%rax
22623
22624HIDDEN _sk_screen_sse2
22625.globl _sk_screen_sse2
Mike Klein86714282017-04-13 17:37:38 -040022626FUNCTION(_sk_screen_sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022627_sk_screen_sse2:
22628 .byte 68,15,40,192 // movaps %xmm0,%xmm8
22629 .byte 68,15,88,196 // addps %xmm4,%xmm8
22630 .byte 15,89,196 // mulps %xmm4,%xmm0
22631 .byte 68,15,92,192 // subps %xmm0,%xmm8
22632 .byte 68,15,40,201 // movaps %xmm1,%xmm9
22633 .byte 68,15,88,205 // addps %xmm5,%xmm9
22634 .byte 15,89,205 // mulps %xmm5,%xmm1
22635 .byte 68,15,92,201 // subps %xmm1,%xmm9
22636 .byte 68,15,40,210 // movaps %xmm2,%xmm10
22637 .byte 68,15,88,214 // addps %xmm6,%xmm10
22638 .byte 15,89,214 // mulps %xmm6,%xmm2
22639 .byte 68,15,92,210 // subps %xmm2,%xmm10
22640 .byte 68,15,40,219 // movaps %xmm3,%xmm11
22641 .byte 68,15,88,223 // addps %xmm7,%xmm11
22642 .byte 15,89,223 // mulps %xmm7,%xmm3
22643 .byte 68,15,92,219 // subps %xmm3,%xmm11
22644 .byte 72,173 // lods %ds:(%rsi),%rax
22645 .byte 65,15,40,192 // movaps %xmm8,%xmm0
22646 .byte 65,15,40,201 // movaps %xmm9,%xmm1
22647 .byte 65,15,40,210 // movaps %xmm10,%xmm2
22648 .byte 65,15,40,219 // movaps %xmm11,%xmm3
22649 .byte 255,224 // jmpq *%rax
22650
22651HIDDEN _sk_xor__sse2
22652.globl _sk_xor__sse2
Mike Klein86714282017-04-13 17:37:38 -040022653FUNCTION(_sk_xor__sse2)
Mike Kleinaaca1e42017-03-31 09:29:01 -040022654_sk_xor__sse2:
22655 .byte 68,15,40,195 // movaps %xmm3,%xmm8
22656 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22657 .byte 102,15,110,216 // movd %eax,%xmm3
22658 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
22659 .byte 68,15,40,203 // movaps %xmm3,%xmm9
22660 .byte 68,15,92,207 // subps %xmm7,%xmm9
22661 .byte 65,15,89,193 // mulps %xmm9,%xmm0
22662 .byte 65,15,92,216 // subps %xmm8,%xmm3
22663 .byte 68,15,40,211 // movaps %xmm3,%xmm10
22664 .byte 68,15,89,212 // mulps %xmm4,%xmm10
22665 .byte 65,15,88,194 // addps %xmm10,%xmm0
22666 .byte 65,15,89,201 // mulps %xmm9,%xmm1
22667 .byte 68,15,40,211 // movaps %xmm3,%xmm10
22668 .byte 68,15,89,213 // mulps %xmm5,%xmm10
22669 .byte 65,15,88,202 // addps %xmm10,%xmm1
22670 .byte 65,15,89,209 // mulps %xmm9,%xmm2
22671 .byte 68,15,40,211 // movaps %xmm3,%xmm10
22672 .byte 68,15,89,214 // mulps %xmm6,%xmm10
22673 .byte 65,15,88,210 // addps %xmm10,%xmm2
22674 .byte 69,15,89,200 // mulps %xmm8,%xmm9
22675 .byte 15,89,223 // mulps %xmm7,%xmm3
22676 .byte 65,15,88,217 // addps %xmm9,%xmm3
22677 .byte 72,173 // lods %ds:(%rsi),%rax
22678 .byte 255,224 // jmpq *%rax
22679
Mike Klein66b09ab2017-03-31 10:29:40 -040022680HIDDEN _sk_darken_sse2
22681.globl _sk_darken_sse2
Mike Klein86714282017-04-13 17:37:38 -040022682FUNCTION(_sk_darken_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040022683_sk_darken_sse2:
22684 .byte 68,15,40,193 // movaps %xmm1,%xmm8
22685 .byte 68,15,40,200 // movaps %xmm0,%xmm9
22686 .byte 15,88,196 // addps %xmm4,%xmm0
22687 .byte 68,15,89,207 // mulps %xmm7,%xmm9
22688 .byte 15,40,203 // movaps %xmm3,%xmm1
22689 .byte 15,89,204 // mulps %xmm4,%xmm1
22690 .byte 68,15,95,201 // maxps %xmm1,%xmm9
22691 .byte 65,15,92,193 // subps %xmm9,%xmm0
22692 .byte 65,15,40,200 // movaps %xmm8,%xmm1
22693 .byte 15,88,205 // addps %xmm5,%xmm1
22694 .byte 68,15,89,199 // mulps %xmm7,%xmm8
22695 .byte 68,15,40,203 // movaps %xmm3,%xmm9
22696 .byte 68,15,89,205 // mulps %xmm5,%xmm9
22697 .byte 69,15,95,193 // maxps %xmm9,%xmm8
22698 .byte 65,15,92,200 // subps %xmm8,%xmm1
22699 .byte 68,15,40,194 // movaps %xmm2,%xmm8
22700 .byte 68,15,88,198 // addps %xmm6,%xmm8
22701 .byte 15,89,215 // mulps %xmm7,%xmm2
22702 .byte 68,15,40,203 // movaps %xmm3,%xmm9
22703 .byte 68,15,89,206 // mulps %xmm6,%xmm9
22704 .byte 65,15,95,209 // maxps %xmm9,%xmm2
22705 .byte 68,15,92,194 // subps %xmm2,%xmm8
22706 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22707 .byte 102,15,110,208 // movd %eax,%xmm2
22708 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
22709 .byte 15,92,211 // subps %xmm3,%xmm2
22710 .byte 15,89,215 // mulps %xmm7,%xmm2
22711 .byte 15,88,218 // addps %xmm2,%xmm3
22712 .byte 72,173 // lods %ds:(%rsi),%rax
22713 .byte 65,15,40,208 // movaps %xmm8,%xmm2
22714 .byte 255,224 // jmpq *%rax
22715
22716HIDDEN _sk_lighten_sse2
22717.globl _sk_lighten_sse2
Mike Klein86714282017-04-13 17:37:38 -040022718FUNCTION(_sk_lighten_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040022719_sk_lighten_sse2:
22720 .byte 68,15,40,193 // movaps %xmm1,%xmm8
22721 .byte 68,15,40,200 // movaps %xmm0,%xmm9
22722 .byte 15,88,196 // addps %xmm4,%xmm0
22723 .byte 68,15,89,207 // mulps %xmm7,%xmm9
22724 .byte 15,40,203 // movaps %xmm3,%xmm1
22725 .byte 15,89,204 // mulps %xmm4,%xmm1
22726 .byte 68,15,93,201 // minps %xmm1,%xmm9
22727 .byte 65,15,92,193 // subps %xmm9,%xmm0
22728 .byte 65,15,40,200 // movaps %xmm8,%xmm1
22729 .byte 15,88,205 // addps %xmm5,%xmm1
22730 .byte 68,15,89,199 // mulps %xmm7,%xmm8
22731 .byte 68,15,40,203 // movaps %xmm3,%xmm9
22732 .byte 68,15,89,205 // mulps %xmm5,%xmm9
22733 .byte 69,15,93,193 // minps %xmm9,%xmm8
22734 .byte 65,15,92,200 // subps %xmm8,%xmm1
22735 .byte 68,15,40,194 // movaps %xmm2,%xmm8
22736 .byte 68,15,88,198 // addps %xmm6,%xmm8
22737 .byte 15,89,215 // mulps %xmm7,%xmm2
22738 .byte 68,15,40,203 // movaps %xmm3,%xmm9
22739 .byte 68,15,89,206 // mulps %xmm6,%xmm9
22740 .byte 65,15,93,209 // minps %xmm9,%xmm2
22741 .byte 68,15,92,194 // subps %xmm2,%xmm8
22742 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22743 .byte 102,15,110,208 // movd %eax,%xmm2
22744 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
22745 .byte 15,92,211 // subps %xmm3,%xmm2
22746 .byte 15,89,215 // mulps %xmm7,%xmm2
22747 .byte 15,88,218 // addps %xmm2,%xmm3
22748 .byte 72,173 // lods %ds:(%rsi),%rax
22749 .byte 65,15,40,208 // movaps %xmm8,%xmm2
22750 .byte 255,224 // jmpq *%rax
22751
22752HIDDEN _sk_difference_sse2
22753.globl _sk_difference_sse2
Mike Klein86714282017-04-13 17:37:38 -040022754FUNCTION(_sk_difference_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040022755_sk_difference_sse2:
22756 .byte 68,15,40,193 // movaps %xmm1,%xmm8
22757 .byte 68,15,40,200 // movaps %xmm0,%xmm9
22758 .byte 15,88,196 // addps %xmm4,%xmm0
22759 .byte 68,15,89,207 // mulps %xmm7,%xmm9
22760 .byte 15,40,203 // movaps %xmm3,%xmm1
22761 .byte 15,89,204 // mulps %xmm4,%xmm1
22762 .byte 68,15,93,201 // minps %xmm1,%xmm9
22763 .byte 69,15,88,201 // addps %xmm9,%xmm9
22764 .byte 65,15,92,193 // subps %xmm9,%xmm0
22765 .byte 65,15,40,200 // movaps %xmm8,%xmm1
22766 .byte 15,88,205 // addps %xmm5,%xmm1
22767 .byte 68,15,89,199 // mulps %xmm7,%xmm8
22768 .byte 68,15,40,203 // movaps %xmm3,%xmm9
22769 .byte 68,15,89,205 // mulps %xmm5,%xmm9
22770 .byte 69,15,93,193 // minps %xmm9,%xmm8
22771 .byte 69,15,88,192 // addps %xmm8,%xmm8
22772 .byte 65,15,92,200 // subps %xmm8,%xmm1
22773 .byte 68,15,40,194 // movaps %xmm2,%xmm8
22774 .byte 68,15,88,198 // addps %xmm6,%xmm8
22775 .byte 15,89,215 // mulps %xmm7,%xmm2
22776 .byte 68,15,40,203 // movaps %xmm3,%xmm9
22777 .byte 68,15,89,206 // mulps %xmm6,%xmm9
22778 .byte 65,15,93,209 // minps %xmm9,%xmm2
22779 .byte 15,88,210 // addps %xmm2,%xmm2
22780 .byte 68,15,92,194 // subps %xmm2,%xmm8
22781 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22782 .byte 102,15,110,208 // movd %eax,%xmm2
22783 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
22784 .byte 15,92,211 // subps %xmm3,%xmm2
22785 .byte 15,89,215 // mulps %xmm7,%xmm2
22786 .byte 15,88,218 // addps %xmm2,%xmm3
22787 .byte 72,173 // lods %ds:(%rsi),%rax
22788 .byte 65,15,40,208 // movaps %xmm8,%xmm2
22789 .byte 255,224 // jmpq *%rax
22790
22791HIDDEN _sk_exclusion_sse2
22792.globl _sk_exclusion_sse2
Mike Klein86714282017-04-13 17:37:38 -040022793FUNCTION(_sk_exclusion_sse2)
Mike Klein66b09ab2017-03-31 10:29:40 -040022794_sk_exclusion_sse2:
22795 .byte 68,15,40,193 // movaps %xmm1,%xmm8
22796 .byte 15,40,200 // movaps %xmm0,%xmm1
22797 .byte 15,88,196 // addps %xmm4,%xmm0
22798 .byte 15,89,204 // mulps %xmm4,%xmm1
22799 .byte 15,88,201 // addps %xmm1,%xmm1
22800 .byte 15,92,193 // subps %xmm1,%xmm0
22801 .byte 65,15,40,200 // movaps %xmm8,%xmm1
22802 .byte 15,88,205 // addps %xmm5,%xmm1
22803 .byte 68,15,89,197 // mulps %xmm5,%xmm8
22804 .byte 69,15,88,192 // addps %xmm8,%xmm8
22805 .byte 65,15,92,200 // subps %xmm8,%xmm1
22806 .byte 68,15,40,194 // movaps %xmm2,%xmm8
22807 .byte 68,15,88,198 // addps %xmm6,%xmm8
22808 .byte 15,89,214 // mulps %xmm6,%xmm2
22809 .byte 15,88,210 // addps %xmm2,%xmm2
22810 .byte 68,15,92,194 // subps %xmm2,%xmm8
22811 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22812 .byte 102,15,110,208 // movd %eax,%xmm2
22813 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
22814 .byte 15,92,211 // subps %xmm3,%xmm2
22815 .byte 15,89,215 // mulps %xmm7,%xmm2
22816 .byte 15,88,218 // addps %xmm2,%xmm3
22817 .byte 72,173 // lods %ds:(%rsi),%rax
22818 .byte 65,15,40,208 // movaps %xmm8,%xmm2
22819 .byte 255,224 // jmpq *%rax
22820
Mike Klein61b84162017-03-31 11:48:14 -040022821HIDDEN _sk_colorburn_sse2
22822.globl _sk_colorburn_sse2
Mike Klein86714282017-04-13 17:37:38 -040022823FUNCTION(_sk_colorburn_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040022824_sk_colorburn_sse2:
22825 .byte 68,15,40,193 // movaps %xmm1,%xmm8
22826 .byte 68,15,40,224 // movaps %xmm0,%xmm12
22827 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22828 .byte 102,68,15,110,200 // movd %eax,%xmm9
22829 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
22830 .byte 69,15,40,217 // movaps %xmm9,%xmm11
22831 .byte 68,15,92,223 // subps %xmm7,%xmm11
22832 .byte 65,15,40,195 // movaps %xmm11,%xmm0
22833 .byte 65,15,89,196 // mulps %xmm12,%xmm0
22834 .byte 69,15,87,210 // xorps %xmm10,%xmm10
22835 .byte 15,40,207 // movaps %xmm7,%xmm1
22836 .byte 15,92,204 // subps %xmm4,%xmm1
22837 .byte 15,89,203 // mulps %xmm3,%xmm1
22838 .byte 65,15,94,204 // divps %xmm12,%xmm1
22839 .byte 68,15,40,239 // movaps %xmm7,%xmm13
22840 .byte 68,15,93,233 // minps %xmm1,%xmm13
22841 .byte 68,15,40,247 // movaps %xmm7,%xmm14
22842 .byte 69,15,92,245 // subps %xmm13,%xmm14
22843 .byte 65,15,40,204 // movaps %xmm12,%xmm1
22844 .byte 65,15,194,202,0 // cmpeqps %xmm10,%xmm1
22845 .byte 68,15,92,203 // subps %xmm3,%xmm9
22846 .byte 68,15,89,243 // mulps %xmm3,%xmm14
22847 .byte 68,15,88,240 // addps %xmm0,%xmm14
22848 .byte 68,15,84,225 // andps %xmm1,%xmm12
22849 .byte 65,15,85,206 // andnps %xmm14,%xmm1
22850 .byte 69,15,40,233 // movaps %xmm9,%xmm13
22851 .byte 68,15,89,236 // mulps %xmm4,%xmm13
22852 .byte 15,88,196 // addps %xmm4,%xmm0
22853 .byte 65,15,86,204 // orps %xmm12,%xmm1
22854 .byte 68,15,40,228 // movaps %xmm4,%xmm12
22855 .byte 68,15,194,231,0 // cmpeqps %xmm7,%xmm12
22856 .byte 65,15,88,205 // addps %xmm13,%xmm1
22857 .byte 65,15,84,196 // andps %xmm12,%xmm0
22858 .byte 68,15,85,225 // andnps %xmm1,%xmm12
22859 .byte 65,15,86,196 // orps %xmm12,%xmm0
22860 .byte 65,15,40,203 // movaps %xmm11,%xmm1
22861 .byte 65,15,89,200 // mulps %xmm8,%xmm1
22862 .byte 68,15,40,231 // movaps %xmm7,%xmm12
22863 .byte 68,15,92,229 // subps %xmm5,%xmm12
22864 .byte 68,15,89,227 // mulps %xmm3,%xmm12
22865 .byte 69,15,94,224 // divps %xmm8,%xmm12
22866 .byte 68,15,40,239 // movaps %xmm7,%xmm13
22867 .byte 69,15,93,236 // minps %xmm12,%xmm13
22868 .byte 68,15,40,231 // movaps %xmm7,%xmm12
22869 .byte 69,15,92,229 // subps %xmm13,%xmm12
22870 .byte 69,15,40,232 // movaps %xmm8,%xmm13
22871 .byte 69,15,194,234,0 // cmpeqps %xmm10,%xmm13
22872 .byte 68,15,89,227 // mulps %xmm3,%xmm12
22873 .byte 68,15,88,225 // addps %xmm1,%xmm12
22874 .byte 69,15,84,197 // andps %xmm13,%xmm8
22875 .byte 69,15,85,236 // andnps %xmm12,%xmm13
22876 .byte 69,15,86,232 // orps %xmm8,%xmm13
22877 .byte 69,15,40,193 // movaps %xmm9,%xmm8
22878 .byte 68,15,89,197 // mulps %xmm5,%xmm8
22879 .byte 15,88,205 // addps %xmm5,%xmm1
22880 .byte 69,15,88,232 // addps %xmm8,%xmm13
22881 .byte 68,15,40,197 // movaps %xmm5,%xmm8
22882 .byte 68,15,194,199,0 // cmpeqps %xmm7,%xmm8
22883 .byte 65,15,84,200 // andps %xmm8,%xmm1
22884 .byte 69,15,85,197 // andnps %xmm13,%xmm8
22885 .byte 65,15,86,200 // orps %xmm8,%xmm1
22886 .byte 68,15,40,199 // movaps %xmm7,%xmm8
22887 .byte 68,15,92,198 // subps %xmm6,%xmm8
22888 .byte 68,15,89,195 // mulps %xmm3,%xmm8
22889 .byte 68,15,94,194 // divps %xmm2,%xmm8
22890 .byte 68,15,40,231 // movaps %xmm7,%xmm12
22891 .byte 69,15,93,224 // minps %xmm8,%xmm12
22892 .byte 68,15,40,199 // movaps %xmm7,%xmm8
22893 .byte 69,15,92,196 // subps %xmm12,%xmm8
22894 .byte 68,15,89,218 // mulps %xmm2,%xmm11
22895 .byte 68,15,194,210,0 // cmpeqps %xmm2,%xmm10
22896 .byte 68,15,89,195 // mulps %xmm3,%xmm8
22897 .byte 69,15,88,195 // addps %xmm11,%xmm8
22898 .byte 65,15,84,210 // andps %xmm10,%xmm2
22899 .byte 69,15,85,208 // andnps %xmm8,%xmm10
22900 .byte 69,15,40,195 // movaps %xmm11,%xmm8
22901 .byte 68,15,88,198 // addps %xmm6,%xmm8
22902 .byte 68,15,86,210 // orps %xmm2,%xmm10
22903 .byte 65,15,40,209 // movaps %xmm9,%xmm2
22904 .byte 15,89,214 // mulps %xmm6,%xmm2
22905 .byte 68,15,88,210 // addps %xmm2,%xmm10
22906 .byte 15,40,214 // movaps %xmm6,%xmm2
22907 .byte 15,194,215,0 // cmpeqps %xmm7,%xmm2
22908 .byte 68,15,84,194 // andps %xmm2,%xmm8
22909 .byte 65,15,85,210 // andnps %xmm10,%xmm2
22910 .byte 68,15,86,194 // orps %xmm2,%xmm8
22911 .byte 68,15,89,207 // mulps %xmm7,%xmm9
22912 .byte 65,15,88,217 // addps %xmm9,%xmm3
22913 .byte 72,173 // lods %ds:(%rsi),%rax
22914 .byte 65,15,40,208 // movaps %xmm8,%xmm2
22915 .byte 255,224 // jmpq *%rax
22916
22917HIDDEN _sk_colordodge_sse2
22918.globl _sk_colordodge_sse2
Mike Klein86714282017-04-13 17:37:38 -040022919FUNCTION(_sk_colordodge_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040022920_sk_colordodge_sse2:
22921 .byte 68,15,40,200 // movaps %xmm0,%xmm9
22922 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
22923 .byte 102,68,15,110,208 // movd %eax,%xmm10
22924 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
22925 .byte 69,15,40,218 // movaps %xmm10,%xmm11
22926 .byte 68,15,92,223 // subps %xmm7,%xmm11
22927 .byte 65,15,40,195 // movaps %xmm11,%xmm0
22928 .byte 65,15,89,193 // mulps %xmm9,%xmm0
22929 .byte 68,15,40,195 // movaps %xmm3,%xmm8
22930 .byte 68,15,89,196 // mulps %xmm4,%xmm8
22931 .byte 68,15,40,227 // movaps %xmm3,%xmm12
22932 .byte 69,15,92,225 // subps %xmm9,%xmm12
22933 .byte 69,15,94,196 // divps %xmm12,%xmm8
22934 .byte 68,15,40,231 // movaps %xmm7,%xmm12
22935 .byte 68,15,40,239 // movaps %xmm7,%xmm13
22936 .byte 69,15,93,232 // minps %xmm8,%xmm13
22937 .byte 69,15,40,241 // movaps %xmm9,%xmm14
22938 .byte 68,15,194,243,0 // cmpeqps %xmm3,%xmm14
22939 .byte 68,15,89,235 // mulps %xmm3,%xmm13
22940 .byte 68,15,88,232 // addps %xmm0,%xmm13
22941 .byte 69,15,84,206 // andps %xmm14,%xmm9
22942 .byte 69,15,85,245 // andnps %xmm13,%xmm14
22943 .byte 69,15,87,192 // xorps %xmm8,%xmm8
22944 .byte 68,15,92,211 // subps %xmm3,%xmm10
22945 .byte 69,15,86,241 // orps %xmm9,%xmm14
22946 .byte 69,15,40,202 // movaps %xmm10,%xmm9
22947 .byte 68,15,89,204 // mulps %xmm4,%xmm9
22948 .byte 15,88,196 // addps %xmm4,%xmm0
22949 .byte 69,15,88,241 // addps %xmm9,%xmm14
22950 .byte 68,15,40,204 // movaps %xmm4,%xmm9
22951 .byte 69,15,194,200,0 // cmpeqps %xmm8,%xmm9
22952 .byte 65,15,84,193 // andps %xmm9,%xmm0
22953 .byte 69,15,85,206 // andnps %xmm14,%xmm9
22954 .byte 65,15,86,193 // orps %xmm9,%xmm0
22955 .byte 68,15,40,235 // movaps %xmm3,%xmm13
22956 .byte 68,15,89,237 // mulps %xmm5,%xmm13
22957 .byte 68,15,40,203 // movaps %xmm3,%xmm9
22958 .byte 68,15,92,201 // subps %xmm1,%xmm9
22959 .byte 69,15,94,233 // divps %xmm9,%xmm13
22960 .byte 69,15,40,203 // movaps %xmm11,%xmm9
22961 .byte 68,15,89,201 // mulps %xmm1,%xmm9
22962 .byte 69,15,93,229 // minps %xmm13,%xmm12
22963 .byte 68,15,40,233 // movaps %xmm1,%xmm13
22964 .byte 68,15,194,235,0 // cmpeqps %xmm3,%xmm13
22965 .byte 68,15,89,227 // mulps %xmm3,%xmm12
22966 .byte 69,15,88,225 // addps %xmm9,%xmm12
22967 .byte 65,15,84,205 // andps %xmm13,%xmm1
22968 .byte 69,15,85,236 // andnps %xmm12,%xmm13
22969 .byte 68,15,86,233 // orps %xmm1,%xmm13
22970 .byte 65,15,40,202 // movaps %xmm10,%xmm1
22971 .byte 15,89,205 // mulps %xmm5,%xmm1
22972 .byte 68,15,88,205 // addps %xmm5,%xmm9
22973 .byte 68,15,88,233 // addps %xmm1,%xmm13
22974 .byte 15,40,205 // movaps %xmm5,%xmm1
22975 .byte 65,15,194,200,0 // cmpeqps %xmm8,%xmm1
22976 .byte 68,15,84,201 // andps %xmm1,%xmm9
22977 .byte 65,15,85,205 // andnps %xmm13,%xmm1
22978 .byte 68,15,86,201 // orps %xmm1,%xmm9
22979 .byte 68,15,40,227 // movaps %xmm3,%xmm12
22980 .byte 68,15,89,230 // mulps %xmm6,%xmm12
22981 .byte 15,40,203 // movaps %xmm3,%xmm1
22982 .byte 15,92,202 // subps %xmm2,%xmm1
22983 .byte 68,15,94,225 // divps %xmm1,%xmm12
22984 .byte 68,15,40,239 // movaps %xmm7,%xmm13
22985 .byte 68,15,89,218 // mulps %xmm2,%xmm11
22986 .byte 69,15,93,236 // minps %xmm12,%xmm13
22987 .byte 15,40,202 // movaps %xmm2,%xmm1
22988 .byte 15,194,203,0 // cmpeqps %xmm3,%xmm1
22989 .byte 68,15,89,235 // mulps %xmm3,%xmm13
22990 .byte 69,15,88,235 // addps %xmm11,%xmm13
22991 .byte 15,84,209 // andps %xmm1,%xmm2
22992 .byte 65,15,85,205 // andnps %xmm13,%xmm1
22993 .byte 15,86,202 // orps %xmm2,%xmm1
22994 .byte 65,15,40,210 // movaps %xmm10,%xmm2
22995 .byte 15,89,214 // mulps %xmm6,%xmm2
22996 .byte 15,88,202 // addps %xmm2,%xmm1
22997 .byte 68,15,194,198,0 // cmpeqps %xmm6,%xmm8
22998 .byte 68,15,88,222 // addps %xmm6,%xmm11
22999 .byte 69,15,84,216 // andps %xmm8,%xmm11
23000 .byte 68,15,85,193 // andnps %xmm1,%xmm8
23001 .byte 69,15,86,195 // orps %xmm11,%xmm8
23002 .byte 68,15,89,215 // mulps %xmm7,%xmm10
23003 .byte 65,15,88,218 // addps %xmm10,%xmm3
23004 .byte 72,173 // lods %ds:(%rsi),%rax
23005 .byte 65,15,40,201 // movaps %xmm9,%xmm1
23006 .byte 65,15,40,208 // movaps %xmm8,%xmm2
23007 .byte 255,224 // jmpq *%rax
23008
23009HIDDEN _sk_hardlight_sse2
23010.globl _sk_hardlight_sse2
Mike Klein86714282017-04-13 17:37:38 -040023011FUNCTION(_sk_hardlight_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040023012_sk_hardlight_sse2:
Mike Klein15bf6782017-03-31 12:21:46 -040023013 .byte 15,41,116,36,232 // movaps %xmm6,-0x18(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040023014 .byte 15,40,245 // movaps %xmm5,%xmm6
23015 .byte 15,40,236 // movaps %xmm4,%xmm5
23016 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
23017 .byte 102,68,15,110,216 // movd %eax,%xmm11
23018 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
23019 .byte 69,15,40,211 // movaps %xmm11,%xmm10
23020 .byte 68,15,92,215 // subps %xmm7,%xmm10
23021 .byte 69,15,40,194 // movaps %xmm10,%xmm8
23022 .byte 68,15,89,192 // mulps %xmm0,%xmm8
23023 .byte 68,15,92,219 // subps %xmm3,%xmm11
23024 .byte 69,15,40,203 // movaps %xmm11,%xmm9
23025 .byte 68,15,89,205 // mulps %xmm5,%xmm9
23026 .byte 69,15,88,200 // addps %xmm8,%xmm9
23027 .byte 68,15,40,195 // movaps %xmm3,%xmm8
23028 .byte 68,15,92,192 // subps %xmm0,%xmm8
23029 .byte 15,40,227 // movaps %xmm3,%xmm4
23030 .byte 15,89,231 // mulps %xmm7,%xmm4
23031 .byte 68,15,40,239 // movaps %xmm7,%xmm13
23032 .byte 68,15,40,247 // movaps %xmm7,%xmm14
23033 .byte 68,15,40,255 // movaps %xmm7,%xmm15
23034 .byte 68,15,92,253 // subps %xmm5,%xmm15
23035 .byte 69,15,89,248 // mulps %xmm8,%xmm15
23036 .byte 69,15,88,255 // addps %xmm15,%xmm15
23037 .byte 68,15,40,228 // movaps %xmm4,%xmm12
23038 .byte 69,15,92,231 // subps %xmm15,%xmm12
23039 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23040 .byte 69,15,88,192 // addps %xmm8,%xmm8
23041 .byte 68,15,194,195,2 // cmpleps %xmm3,%xmm8
23042 .byte 15,89,197 // mulps %xmm5,%xmm0
23043 .byte 15,88,192 // addps %xmm0,%xmm0
23044 .byte 65,15,84,192 // andps %xmm8,%xmm0
23045 .byte 69,15,85,196 // andnps %xmm12,%xmm8
23046 .byte 68,15,86,192 // orps %xmm0,%xmm8
23047 .byte 69,15,40,251 // movaps %xmm11,%xmm15
23048 .byte 69,15,40,227 // movaps %xmm11,%xmm12
23049 .byte 68,15,89,223 // mulps %xmm7,%xmm11
23050 .byte 69,15,88,193 // addps %xmm9,%xmm8
23051 .byte 65,15,40,194 // movaps %xmm10,%xmm0
23052 .byte 15,89,193 // mulps %xmm1,%xmm0
23053 .byte 68,15,89,254 // mulps %xmm6,%xmm15
23054 .byte 68,15,88,248 // addps %xmm0,%xmm15
23055 .byte 15,40,195 // movaps %xmm3,%xmm0
23056 .byte 15,92,193 // subps %xmm1,%xmm0
23057 .byte 68,15,92,238 // subps %xmm6,%xmm13
23058 .byte 68,15,89,232 // mulps %xmm0,%xmm13
23059 .byte 69,15,88,237 // addps %xmm13,%xmm13
23060 .byte 15,40,196 // movaps %xmm4,%xmm0
23061 .byte 65,15,92,197 // subps %xmm13,%xmm0
23062 .byte 68,15,40,201 // movaps %xmm1,%xmm9
23063 .byte 69,15,88,201 // addps %xmm9,%xmm9
23064 .byte 68,15,194,203,2 // cmpleps %xmm3,%xmm9
23065 .byte 15,89,206 // mulps %xmm6,%xmm1
23066 .byte 15,88,201 // addps %xmm1,%xmm1
23067 .byte 65,15,84,201 // andps %xmm9,%xmm1
23068 .byte 68,15,85,200 // andnps %xmm0,%xmm9
23069 .byte 68,15,86,201 // orps %xmm1,%xmm9
23070 .byte 69,15,88,207 // addps %xmm15,%xmm9
23071 .byte 68,15,89,210 // mulps %xmm2,%xmm10
Mike Klein15bf6782017-03-31 12:21:46 -040023072 .byte 68,15,40,108,36,232 // movaps -0x18(%rsp),%xmm13
Mike Klein61b84162017-03-31 11:48:14 -040023073 .byte 69,15,89,229 // mulps %xmm13,%xmm12
23074 .byte 69,15,88,226 // addps %xmm10,%xmm12
23075 .byte 68,15,40,210 // movaps %xmm2,%xmm10
23076 .byte 69,15,88,210 // addps %xmm10,%xmm10
23077 .byte 68,15,194,211,2 // cmpleps %xmm3,%xmm10
23078 .byte 15,40,195 // movaps %xmm3,%xmm0
23079 .byte 15,92,194 // subps %xmm2,%xmm0
23080 .byte 65,15,89,213 // mulps %xmm13,%xmm2
23081 .byte 15,88,210 // addps %xmm2,%xmm2
23082 .byte 69,15,92,245 // subps %xmm13,%xmm14
23083 .byte 68,15,89,240 // mulps %xmm0,%xmm14
23084 .byte 69,15,88,246 // addps %xmm14,%xmm14
23085 .byte 65,15,92,230 // subps %xmm14,%xmm4
23086 .byte 65,15,84,210 // andps %xmm10,%xmm2
23087 .byte 68,15,85,212 // andnps %xmm4,%xmm10
23088 .byte 68,15,86,210 // orps %xmm2,%xmm10
23089 .byte 69,15,88,212 // addps %xmm12,%xmm10
23090 .byte 65,15,88,219 // addps %xmm11,%xmm3
23091 .byte 72,173 // lods %ds:(%rsi),%rax
23092 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23093 .byte 65,15,40,201 // movaps %xmm9,%xmm1
23094 .byte 65,15,40,210 // movaps %xmm10,%xmm2
23095 .byte 15,40,229 // movaps %xmm5,%xmm4
23096 .byte 15,40,238 // movaps %xmm6,%xmm5
23097 .byte 65,15,40,245 // movaps %xmm13,%xmm6
Mike Klein61b84162017-03-31 11:48:14 -040023098 .byte 255,224 // jmpq *%rax
23099
23100HIDDEN _sk_overlay_sse2
23101.globl _sk_overlay_sse2
Mike Klein86714282017-04-13 17:37:38 -040023102FUNCTION(_sk_overlay_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040023103_sk_overlay_sse2:
23104 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
23105 .byte 102,68,15,110,192 // movd %eax,%xmm8
23106 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23107 .byte 69,15,40,200 // movaps %xmm8,%xmm9
23108 .byte 68,15,92,207 // subps %xmm7,%xmm9
23109 .byte 69,15,40,209 // movaps %xmm9,%xmm10
23110 .byte 68,15,89,208 // mulps %xmm0,%xmm10
23111 .byte 68,15,92,195 // subps %xmm3,%xmm8
23112 .byte 69,15,40,216 // movaps %xmm8,%xmm11
23113 .byte 68,15,89,220 // mulps %xmm4,%xmm11
23114 .byte 69,15,88,218 // addps %xmm10,%xmm11
23115 .byte 68,15,40,227 // movaps %xmm3,%xmm12
23116 .byte 68,15,92,224 // subps %xmm0,%xmm12
23117 .byte 15,89,196 // mulps %xmm4,%xmm0
23118 .byte 68,15,40,239 // movaps %xmm7,%xmm13
23119 .byte 68,15,92,236 // subps %xmm4,%xmm13
23120 .byte 68,15,40,244 // movaps %xmm4,%xmm14
23121 .byte 69,15,88,246 // addps %xmm14,%xmm14
23122 .byte 68,15,194,247,2 // cmpleps %xmm7,%xmm14
23123 .byte 15,88,192 // addps %xmm0,%xmm0
23124 .byte 68,15,40,211 // movaps %xmm3,%xmm10
23125 .byte 68,15,89,215 // mulps %xmm7,%xmm10
23126 .byte 69,15,89,236 // mulps %xmm12,%xmm13
23127 .byte 69,15,88,237 // addps %xmm13,%xmm13
23128 .byte 69,15,40,226 // movaps %xmm10,%xmm12
23129 .byte 69,15,92,229 // subps %xmm13,%xmm12
23130 .byte 65,15,84,198 // andps %xmm14,%xmm0
23131 .byte 69,15,85,244 // andnps %xmm12,%xmm14
23132 .byte 65,15,86,198 // orps %xmm14,%xmm0
23133 .byte 65,15,88,195 // addps %xmm11,%xmm0
23134 .byte 69,15,40,217 // movaps %xmm9,%xmm11
23135 .byte 68,15,89,217 // mulps %xmm1,%xmm11
23136 .byte 69,15,40,224 // movaps %xmm8,%xmm12
23137 .byte 68,15,89,229 // mulps %xmm5,%xmm12
23138 .byte 69,15,88,227 // addps %xmm11,%xmm12
23139 .byte 68,15,40,219 // movaps %xmm3,%xmm11
23140 .byte 68,15,92,217 // subps %xmm1,%xmm11
23141 .byte 15,89,205 // mulps %xmm5,%xmm1
23142 .byte 68,15,40,239 // movaps %xmm7,%xmm13
23143 .byte 68,15,92,237 // subps %xmm5,%xmm13
23144 .byte 68,15,40,245 // movaps %xmm5,%xmm14
23145 .byte 69,15,88,246 // addps %xmm14,%xmm14
23146 .byte 68,15,194,247,2 // cmpleps %xmm7,%xmm14
23147 .byte 15,88,201 // addps %xmm1,%xmm1
23148 .byte 69,15,89,235 // mulps %xmm11,%xmm13
23149 .byte 69,15,88,237 // addps %xmm13,%xmm13
23150 .byte 69,15,40,218 // movaps %xmm10,%xmm11
23151 .byte 69,15,92,221 // subps %xmm13,%xmm11
23152 .byte 65,15,84,206 // andps %xmm14,%xmm1
23153 .byte 69,15,85,243 // andnps %xmm11,%xmm14
23154 .byte 65,15,86,206 // orps %xmm14,%xmm1
23155 .byte 65,15,88,204 // addps %xmm12,%xmm1
23156 .byte 68,15,89,202 // mulps %xmm2,%xmm9
23157 .byte 69,15,40,216 // movaps %xmm8,%xmm11
23158 .byte 68,15,89,222 // mulps %xmm6,%xmm11
23159 .byte 69,15,88,217 // addps %xmm9,%xmm11
23160 .byte 68,15,40,203 // movaps %xmm3,%xmm9
23161 .byte 68,15,92,202 // subps %xmm2,%xmm9
23162 .byte 15,89,214 // mulps %xmm6,%xmm2
23163 .byte 68,15,40,231 // movaps %xmm7,%xmm12
23164 .byte 68,15,92,230 // subps %xmm6,%xmm12
23165 .byte 68,15,40,238 // movaps %xmm6,%xmm13
23166 .byte 69,15,88,237 // addps %xmm13,%xmm13
23167 .byte 68,15,194,239,2 // cmpleps %xmm7,%xmm13
23168 .byte 15,88,210 // addps %xmm2,%xmm2
23169 .byte 69,15,89,225 // mulps %xmm9,%xmm12
23170 .byte 69,15,88,228 // addps %xmm12,%xmm12
23171 .byte 69,15,92,212 // subps %xmm12,%xmm10
23172 .byte 65,15,84,213 // andps %xmm13,%xmm2
23173 .byte 69,15,85,234 // andnps %xmm10,%xmm13
23174 .byte 65,15,86,213 // orps %xmm13,%xmm2
23175 .byte 65,15,88,211 // addps %xmm11,%xmm2
23176 .byte 68,15,89,199 // mulps %xmm7,%xmm8
23177 .byte 65,15,88,216 // addps %xmm8,%xmm3
23178 .byte 72,173 // lods %ds:(%rsi),%rax
23179 .byte 255,224 // jmpq *%rax
23180
23181HIDDEN _sk_softlight_sse2
23182.globl _sk_softlight_sse2
Mike Klein86714282017-04-13 17:37:38 -040023183FUNCTION(_sk_softlight_sse2)
Mike Klein61b84162017-03-31 11:48:14 -040023184_sk_softlight_sse2:
Mike Klein15bf6782017-03-31 12:21:46 -040023185 .byte 15,41,84,36,232 // movaps %xmm2,-0x18(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040023186 .byte 15,40,209 // movaps %xmm1,%xmm2
23187 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23188 .byte 69,15,87,228 // xorps %xmm12,%xmm12
23189 .byte 68,15,194,231,1 // cmpltps %xmm7,%xmm12
23190 .byte 68,15,40,212 // movaps %xmm4,%xmm10
23191 .byte 68,15,94,215 // divps %xmm7,%xmm10
23192 .byte 69,15,84,212 // andps %xmm12,%xmm10
23193 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
23194 .byte 102,68,15,110,200 // movd %eax,%xmm9
23195 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
23196 .byte 69,15,40,241 // movaps %xmm9,%xmm14
23197 .byte 69,15,92,242 // subps %xmm10,%xmm14
23198 .byte 69,15,40,218 // movaps %xmm10,%xmm11
23199 .byte 69,15,40,234 // movaps %xmm10,%xmm13
23200 .byte 65,15,82,194 // rsqrtps %xmm10,%xmm0
23201 .byte 68,15,83,248 // rcpps %xmm0,%xmm15
23202 .byte 69,15,92,250 // subps %xmm10,%xmm15
23203 .byte 69,15,88,210 // addps %xmm10,%xmm10
23204 .byte 69,15,88,210 // addps %xmm10,%xmm10
23205 .byte 65,15,40,194 // movaps %xmm10,%xmm0
23206 .byte 15,89,192 // mulps %xmm0,%xmm0
23207 .byte 65,15,88,194 // addps %xmm10,%xmm0
23208 .byte 69,15,92,217 // subps %xmm9,%xmm11
23209 .byte 68,15,89,216 // mulps %xmm0,%xmm11
23210 .byte 184,0,0,224,64 // mov $0x40e00000,%eax
23211 .byte 102,68,15,110,208 // movd %eax,%xmm10
23212 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
23213 .byte 69,15,89,234 // mulps %xmm10,%xmm13
23214 .byte 69,15,88,235 // addps %xmm11,%xmm13
23215 .byte 68,15,40,219 // movaps %xmm3,%xmm11
23216 .byte 15,40,204 // movaps %xmm4,%xmm1
23217 .byte 68,15,89,217 // mulps %xmm1,%xmm11
23218 .byte 15,88,228 // addps %xmm4,%xmm4
23219 .byte 15,88,228 // addps %xmm4,%xmm4
23220 .byte 15,194,231,2 // cmpleps %xmm7,%xmm4
23221 .byte 68,15,84,236 // andps %xmm4,%xmm13
23222 .byte 65,15,85,231 // andnps %xmm15,%xmm4
23223 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23224 .byte 15,88,192 // addps %xmm0,%xmm0
23225 .byte 65,15,86,229 // orps %xmm13,%xmm4
23226 .byte 68,15,40,232 // movaps %xmm0,%xmm13
23227 .byte 68,15,92,235 // subps %xmm3,%xmm13
23228 .byte 69,15,89,245 // mulps %xmm13,%xmm14
23229 .byte 68,15,89,239 // mulps %xmm7,%xmm13
23230 .byte 65,15,89,229 // mulps %xmm13,%xmm4
23231 .byte 65,15,88,227 // addps %xmm11,%xmm4
23232 .byte 69,15,40,217 // movaps %xmm9,%xmm11
23233 .byte 68,15,92,219 // subps %xmm3,%xmm11
23234 .byte 69,15,40,251 // movaps %xmm11,%xmm15
Mike Klein15bf6782017-03-31 12:21:46 -040023235 .byte 15,41,76,36,216 // movaps %xmm1,-0x28(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040023236 .byte 68,15,89,249 // mulps %xmm1,%xmm15
23237 .byte 69,15,40,233 // movaps %xmm9,%xmm13
23238 .byte 68,15,92,239 // subps %xmm7,%xmm13
23239 .byte 69,15,89,197 // mulps %xmm13,%xmm8
23240 .byte 69,15,88,199 // addps %xmm15,%xmm8
23241 .byte 68,15,88,243 // addps %xmm3,%xmm14
23242 .byte 68,15,89,241 // mulps %xmm1,%xmm14
23243 .byte 15,194,195,2 // cmpleps %xmm3,%xmm0
23244 .byte 68,15,84,240 // andps %xmm0,%xmm14
23245 .byte 15,85,196 // andnps %xmm4,%xmm0
23246 .byte 65,15,86,198 // orps %xmm14,%xmm0
23247 .byte 65,15,88,192 // addps %xmm8,%xmm0
Mike Klein15bf6782017-03-31 12:21:46 -040023248 .byte 15,41,108,36,200 // movaps %xmm5,-0x38(%rsp)
Mike Klein61b84162017-03-31 11:48:14 -040023249 .byte 68,15,40,197 // movaps %xmm5,%xmm8
23250 .byte 68,15,94,199 // divps %xmm7,%xmm8
23251 .byte 69,15,84,196 // andps %xmm12,%xmm8
23252 .byte 69,15,40,240 // movaps %xmm8,%xmm14
23253 .byte 69,15,88,246 // addps %xmm14,%xmm14
23254 .byte 69,15,88,246 // addps %xmm14,%xmm14
23255 .byte 65,15,40,230 // movaps %xmm14,%xmm4
23256 .byte 15,89,228 // mulps %xmm4,%xmm4
23257 .byte 65,15,88,230 // addps %xmm14,%xmm4
23258 .byte 69,15,40,248 // movaps %xmm8,%xmm15
23259 .byte 69,15,92,249 // subps %xmm9,%xmm15
23260 .byte 68,15,89,252 // mulps %xmm4,%xmm15
23261 .byte 69,15,40,241 // movaps %xmm9,%xmm14
23262 .byte 69,15,92,240 // subps %xmm8,%xmm14
23263 .byte 65,15,82,224 // rsqrtps %xmm8,%xmm4
23264 .byte 15,83,228 // rcpps %xmm4,%xmm4
23265 .byte 65,15,92,224 // subps %xmm8,%xmm4
23266 .byte 69,15,89,194 // mulps %xmm10,%xmm8
23267 .byte 69,15,88,199 // addps %xmm15,%xmm8
23268 .byte 68,15,40,253 // movaps %xmm5,%xmm15
23269 .byte 69,15,88,255 // addps %xmm15,%xmm15
23270 .byte 69,15,88,255 // addps %xmm15,%xmm15
23271 .byte 68,15,194,255,2 // cmpleps %xmm7,%xmm15
23272 .byte 69,15,84,199 // andps %xmm15,%xmm8
23273 .byte 68,15,85,252 // andnps %xmm4,%xmm15
23274 .byte 69,15,86,248 // orps %xmm8,%xmm15
23275 .byte 68,15,40,194 // movaps %xmm2,%xmm8
23276 .byte 69,15,88,192 // addps %xmm8,%xmm8
23277 .byte 65,15,40,224 // movaps %xmm8,%xmm4
23278 .byte 15,92,227 // subps %xmm3,%xmm4
23279 .byte 68,15,89,244 // mulps %xmm4,%xmm14
23280 .byte 15,89,231 // mulps %xmm7,%xmm4
23281 .byte 68,15,89,252 // mulps %xmm4,%xmm15
23282 .byte 15,40,227 // movaps %xmm3,%xmm4
23283 .byte 15,89,229 // mulps %xmm5,%xmm4
23284 .byte 68,15,88,252 // addps %xmm4,%xmm15
23285 .byte 65,15,40,227 // movaps %xmm11,%xmm4
23286 .byte 15,89,229 // mulps %xmm5,%xmm4
23287 .byte 65,15,89,213 // mulps %xmm13,%xmm2
23288 .byte 15,88,212 // addps %xmm4,%xmm2
23289 .byte 68,15,88,243 // addps %xmm3,%xmm14
23290 .byte 68,15,89,245 // mulps %xmm5,%xmm14
23291 .byte 68,15,194,195,2 // cmpleps %xmm3,%xmm8
23292 .byte 69,15,84,240 // andps %xmm8,%xmm14
23293 .byte 69,15,85,199 // andnps %xmm15,%xmm8
23294 .byte 69,15,86,198 // orps %xmm14,%xmm8
23295 .byte 68,15,88,194 // addps %xmm2,%xmm8
23296 .byte 68,15,40,246 // movaps %xmm6,%xmm14
23297 .byte 65,15,40,206 // movaps %xmm14,%xmm1
23298 .byte 15,94,207 // divps %xmm7,%xmm1
23299 .byte 65,15,84,204 // andps %xmm12,%xmm1
23300 .byte 15,40,225 // movaps %xmm1,%xmm4
23301 .byte 65,15,92,225 // subps %xmm9,%xmm4
23302 .byte 68,15,92,201 // subps %xmm1,%xmm9
23303 .byte 68,15,89,209 // mulps %xmm1,%xmm10
23304 .byte 15,82,241 // rsqrtps %xmm1,%xmm6
23305 .byte 15,83,246 // rcpps %xmm6,%xmm6
23306 .byte 15,92,241 // subps %xmm1,%xmm6
23307 .byte 15,88,201 // addps %xmm1,%xmm1
23308 .byte 15,88,201 // addps %xmm1,%xmm1
23309 .byte 15,40,233 // movaps %xmm1,%xmm5
23310 .byte 15,89,237 // mulps %xmm5,%xmm5
23311 .byte 15,88,233 // addps %xmm1,%xmm5
23312 .byte 15,89,236 // mulps %xmm4,%xmm5
23313 .byte 68,15,88,213 // addps %xmm5,%xmm10
23314 .byte 65,15,40,238 // movaps %xmm14,%xmm5
23315 .byte 15,40,205 // movaps %xmm5,%xmm1
23316 .byte 15,88,201 // addps %xmm1,%xmm1
23317 .byte 15,88,201 // addps %xmm1,%xmm1
23318 .byte 15,194,207,2 // cmpleps %xmm7,%xmm1
23319 .byte 68,15,84,209 // andps %xmm1,%xmm10
23320 .byte 15,85,206 // andnps %xmm6,%xmm1
Mike Klein15bf6782017-03-31 12:21:46 -040023321 .byte 15,40,84,36,232 // movaps -0x18(%rsp),%xmm2
Mike Klein61b84162017-03-31 11:48:14 -040023322 .byte 68,15,89,234 // mulps %xmm2,%xmm13
23323 .byte 15,88,210 // addps %xmm2,%xmm2
23324 .byte 65,15,86,202 // orps %xmm10,%xmm1
23325 .byte 15,40,226 // movaps %xmm2,%xmm4
23326 .byte 15,92,227 // subps %xmm3,%xmm4
23327 .byte 68,15,89,204 // mulps %xmm4,%xmm9
23328 .byte 15,89,231 // mulps %xmm7,%xmm4
23329 .byte 15,89,204 // mulps %xmm4,%xmm1
23330 .byte 15,40,227 // movaps %xmm3,%xmm4
23331 .byte 15,89,229 // mulps %xmm5,%xmm4
23332 .byte 15,88,204 // addps %xmm4,%xmm1
23333 .byte 65,15,40,227 // movaps %xmm11,%xmm4
23334 .byte 15,89,229 // mulps %xmm5,%xmm4
23335 .byte 65,15,88,229 // addps %xmm13,%xmm4
23336 .byte 68,15,88,203 // addps %xmm3,%xmm9
23337 .byte 68,15,89,205 // mulps %xmm5,%xmm9
23338 .byte 15,40,245 // movaps %xmm5,%xmm6
23339 .byte 15,194,211,2 // cmpleps %xmm3,%xmm2
23340 .byte 68,15,84,202 // andps %xmm2,%xmm9
23341 .byte 15,85,209 // andnps %xmm1,%xmm2
23342 .byte 65,15,86,209 // orps %xmm9,%xmm2
23343 .byte 15,88,212 // addps %xmm4,%xmm2
23344 .byte 68,15,89,223 // mulps %xmm7,%xmm11
23345 .byte 65,15,88,219 // addps %xmm11,%xmm3
23346 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Klein15bf6782017-03-31 12:21:46 -040023347 .byte 15,40,100,36,216 // movaps -0x28(%rsp),%xmm4
23348 .byte 15,40,108,36,200 // movaps -0x38(%rsp),%xmm5
Mike Klein61b84162017-03-31 11:48:14 -040023349 .byte 65,15,40,200 // movaps %xmm8,%xmm1
Mike Klein61b84162017-03-31 11:48:14 -040023350 .byte 255,224 // jmpq *%rax
23351
Mike Klein7c4af542017-03-29 18:21:14 -040023352HIDDEN _sk_clamp_0_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023353.globl _sk_clamp_0_sse2
Mike Klein86714282017-04-13 17:37:38 -040023354FUNCTION(_sk_clamp_0_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023355_sk_clamp_0_sse2:
23356 .byte 69,15,87,192 // xorps %xmm8,%xmm8
23357 .byte 65,15,95,192 // maxps %xmm8,%xmm0
23358 .byte 65,15,95,200 // maxps %xmm8,%xmm1
23359 .byte 65,15,95,208 // maxps %xmm8,%xmm2
23360 .byte 65,15,95,216 // maxps %xmm8,%xmm3
23361 .byte 72,173 // lods %ds:(%rsi),%rax
23362 .byte 255,224 // jmpq *%rax
23363
Mike Klein7c4af542017-03-29 18:21:14 -040023364HIDDEN _sk_clamp_1_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023365.globl _sk_clamp_1_sse2
Mike Klein86714282017-04-13 17:37:38 -040023366FUNCTION(_sk_clamp_1_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023367_sk_clamp_1_sse2:
23368 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
23369 .byte 102,68,15,110,192 // movd %eax,%xmm8
23370 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23371 .byte 65,15,93,192 // minps %xmm8,%xmm0
23372 .byte 65,15,93,200 // minps %xmm8,%xmm1
23373 .byte 65,15,93,208 // minps %xmm8,%xmm2
23374 .byte 65,15,93,216 // minps %xmm8,%xmm3
23375 .byte 72,173 // lods %ds:(%rsi),%rax
23376 .byte 255,224 // jmpq *%rax
23377
Mike Klein7c4af542017-03-29 18:21:14 -040023378HIDDEN _sk_clamp_a_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023379.globl _sk_clamp_a_sse2
Mike Klein86714282017-04-13 17:37:38 -040023380FUNCTION(_sk_clamp_a_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023381_sk_clamp_a_sse2:
23382 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
23383 .byte 102,68,15,110,192 // movd %eax,%xmm8
23384 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23385 .byte 65,15,93,216 // minps %xmm8,%xmm3
23386 .byte 15,93,195 // minps %xmm3,%xmm0
23387 .byte 15,93,203 // minps %xmm3,%xmm1
23388 .byte 15,93,211 // minps %xmm3,%xmm2
23389 .byte 72,173 // lods %ds:(%rsi),%rax
23390 .byte 255,224 // jmpq *%rax
23391
Mike Klein7c4af542017-03-29 18:21:14 -040023392HIDDEN _sk_set_rgb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023393.globl _sk_set_rgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040023394FUNCTION(_sk_set_rgb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023395_sk_set_rgb_sse2:
23396 .byte 72,173 // lods %ds:(%rsi),%rax
23397 .byte 243,15,16,0 // movss (%rax),%xmm0
23398 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
23399 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
23400 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
23401 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
23402 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
23403 .byte 72,173 // lods %ds:(%rsi),%rax
23404 .byte 255,224 // jmpq *%rax
23405
Mike Klein7c4af542017-03-29 18:21:14 -040023406HIDDEN _sk_swap_rb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023407.globl _sk_swap_rb_sse2
Mike Klein86714282017-04-13 17:37:38 -040023408FUNCTION(_sk_swap_rb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023409_sk_swap_rb_sse2:
23410 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23411 .byte 72,173 // lods %ds:(%rsi),%rax
23412 .byte 15,40,194 // movaps %xmm2,%xmm0
23413 .byte 65,15,40,208 // movaps %xmm8,%xmm2
23414 .byte 255,224 // jmpq *%rax
23415
Mike Klein7c4af542017-03-29 18:21:14 -040023416HIDDEN _sk_swap_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023417.globl _sk_swap_sse2
Mike Klein86714282017-04-13 17:37:38 -040023418FUNCTION(_sk_swap_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023419_sk_swap_sse2:
23420 .byte 68,15,40,195 // movaps %xmm3,%xmm8
23421 .byte 68,15,40,202 // movaps %xmm2,%xmm9
23422 .byte 68,15,40,209 // movaps %xmm1,%xmm10
23423 .byte 68,15,40,216 // movaps %xmm0,%xmm11
23424 .byte 72,173 // lods %ds:(%rsi),%rax
23425 .byte 15,40,196 // movaps %xmm4,%xmm0
23426 .byte 15,40,205 // movaps %xmm5,%xmm1
23427 .byte 15,40,214 // movaps %xmm6,%xmm2
23428 .byte 15,40,223 // movaps %xmm7,%xmm3
23429 .byte 65,15,40,227 // movaps %xmm11,%xmm4
23430 .byte 65,15,40,234 // movaps %xmm10,%xmm5
23431 .byte 65,15,40,241 // movaps %xmm9,%xmm6
23432 .byte 65,15,40,248 // movaps %xmm8,%xmm7
23433 .byte 255,224 // jmpq *%rax
23434
Mike Klein7c4af542017-03-29 18:21:14 -040023435HIDDEN _sk_move_src_dst_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023436.globl _sk_move_src_dst_sse2
Mike Klein86714282017-04-13 17:37:38 -040023437FUNCTION(_sk_move_src_dst_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023438_sk_move_src_dst_sse2:
23439 .byte 72,173 // lods %ds:(%rsi),%rax
23440 .byte 15,40,224 // movaps %xmm0,%xmm4
23441 .byte 15,40,233 // movaps %xmm1,%xmm5
23442 .byte 15,40,242 // movaps %xmm2,%xmm6
23443 .byte 15,40,251 // movaps %xmm3,%xmm7
23444 .byte 255,224 // jmpq *%rax
23445
Mike Klein7c4af542017-03-29 18:21:14 -040023446HIDDEN _sk_move_dst_src_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023447.globl _sk_move_dst_src_sse2
Mike Klein86714282017-04-13 17:37:38 -040023448FUNCTION(_sk_move_dst_src_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023449_sk_move_dst_src_sse2:
23450 .byte 72,173 // lods %ds:(%rsi),%rax
23451 .byte 15,40,196 // movaps %xmm4,%xmm0
23452 .byte 15,40,205 // movaps %xmm5,%xmm1
23453 .byte 15,40,214 // movaps %xmm6,%xmm2
23454 .byte 15,40,223 // movaps %xmm7,%xmm3
23455 .byte 255,224 // jmpq *%rax
23456
Mike Klein7c4af542017-03-29 18:21:14 -040023457HIDDEN _sk_premul_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023458.globl _sk_premul_sse2
Mike Klein86714282017-04-13 17:37:38 -040023459FUNCTION(_sk_premul_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023460_sk_premul_sse2:
23461 .byte 15,89,195 // mulps %xmm3,%xmm0
23462 .byte 15,89,203 // mulps %xmm3,%xmm1
23463 .byte 15,89,211 // mulps %xmm3,%xmm2
23464 .byte 72,173 // lods %ds:(%rsi),%rax
23465 .byte 255,224 // jmpq *%rax
23466
Mike Klein7c4af542017-03-29 18:21:14 -040023467HIDDEN _sk_unpremul_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023468.globl _sk_unpremul_sse2
Mike Klein86714282017-04-13 17:37:38 -040023469FUNCTION(_sk_unpremul_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023470_sk_unpremul_sse2:
23471 .byte 69,15,87,192 // xorps %xmm8,%xmm8
23472 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
23473 .byte 102,68,15,110,200 // movd %eax,%xmm9
23474 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
23475 .byte 68,15,94,203 // divps %xmm3,%xmm9
23476 .byte 68,15,194,195,4 // cmpneqps %xmm3,%xmm8
23477 .byte 69,15,84,193 // andps %xmm9,%xmm8
23478 .byte 65,15,89,192 // mulps %xmm8,%xmm0
23479 .byte 65,15,89,200 // mulps %xmm8,%xmm1
23480 .byte 65,15,89,208 // mulps %xmm8,%xmm2
23481 .byte 72,173 // lods %ds:(%rsi),%rax
23482 .byte 255,224 // jmpq *%rax
23483
Mike Klein7c4af542017-03-29 18:21:14 -040023484HIDDEN _sk_from_srgb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023485.globl _sk_from_srgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040023486FUNCTION(_sk_from_srgb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023487_sk_from_srgb_sse2:
23488 .byte 184,145,131,158,61 // mov $0x3d9e8391,%eax
23489 .byte 102,68,15,110,192 // movd %eax,%xmm8
23490 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23491 .byte 69,15,40,232 // movaps %xmm8,%xmm13
23492 .byte 68,15,89,232 // mulps %xmm0,%xmm13
23493 .byte 68,15,40,224 // movaps %xmm0,%xmm12
23494 .byte 69,15,89,228 // mulps %xmm12,%xmm12
23495 .byte 184,154,153,153,62 // mov $0x3e99999a,%eax
23496 .byte 102,68,15,110,200 // movd %eax,%xmm9
23497 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
23498 .byte 184,92,143,50,63 // mov $0x3f328f5c,%eax
23499 .byte 102,68,15,110,208 // movd %eax,%xmm10
23500 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
23501 .byte 69,15,40,241 // movaps %xmm9,%xmm14
23502 .byte 68,15,89,240 // mulps %xmm0,%xmm14
23503 .byte 69,15,88,242 // addps %xmm10,%xmm14
23504 .byte 184,10,215,35,59 // mov $0x3b23d70a,%eax
23505 .byte 102,68,15,110,216 // movd %eax,%xmm11
23506 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
23507 .byte 69,15,89,244 // mulps %xmm12,%xmm14
23508 .byte 69,15,88,243 // addps %xmm11,%xmm14
23509 .byte 184,174,71,97,61 // mov $0x3d6147ae,%eax
23510 .byte 102,68,15,110,224 // movd %eax,%xmm12
23511 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
23512 .byte 65,15,194,196,1 // cmpltps %xmm12,%xmm0
23513 .byte 68,15,84,232 // andps %xmm0,%xmm13
23514 .byte 65,15,85,198 // andnps %xmm14,%xmm0
23515 .byte 65,15,86,197 // orps %xmm13,%xmm0
23516 .byte 69,15,40,232 // movaps %xmm8,%xmm13
23517 .byte 68,15,89,233 // mulps %xmm1,%xmm13
23518 .byte 68,15,40,241 // movaps %xmm1,%xmm14
23519 .byte 69,15,89,246 // mulps %xmm14,%xmm14
23520 .byte 69,15,40,249 // movaps %xmm9,%xmm15
23521 .byte 68,15,89,249 // mulps %xmm1,%xmm15
23522 .byte 69,15,88,250 // addps %xmm10,%xmm15
23523 .byte 69,15,89,254 // mulps %xmm14,%xmm15
23524 .byte 69,15,88,251 // addps %xmm11,%xmm15
23525 .byte 65,15,194,204,1 // cmpltps %xmm12,%xmm1
23526 .byte 68,15,84,233 // andps %xmm1,%xmm13
23527 .byte 65,15,85,207 // andnps %xmm15,%xmm1
23528 .byte 65,15,86,205 // orps %xmm13,%xmm1
23529 .byte 68,15,89,194 // mulps %xmm2,%xmm8
23530 .byte 68,15,40,234 // movaps %xmm2,%xmm13
23531 .byte 69,15,89,237 // mulps %xmm13,%xmm13
23532 .byte 68,15,89,202 // mulps %xmm2,%xmm9
23533 .byte 69,15,88,202 // addps %xmm10,%xmm9
23534 .byte 69,15,89,205 // mulps %xmm13,%xmm9
23535 .byte 69,15,88,203 // addps %xmm11,%xmm9
23536 .byte 65,15,194,212,1 // cmpltps %xmm12,%xmm2
23537 .byte 68,15,84,194 // andps %xmm2,%xmm8
23538 .byte 65,15,85,209 // andnps %xmm9,%xmm2
23539 .byte 65,15,86,208 // orps %xmm8,%xmm2
23540 .byte 72,173 // lods %ds:(%rsi),%rax
23541 .byte 255,224 // jmpq *%rax
23542
Mike Klein7c4af542017-03-29 18:21:14 -040023543HIDDEN _sk_to_srgb_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023544.globl _sk_to_srgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040023545FUNCTION(_sk_to_srgb_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023546_sk_to_srgb_sse2:
23547 .byte 68,15,82,192 // rsqrtps %xmm0,%xmm8
23548 .byte 69,15,83,248 // rcpps %xmm8,%xmm15
23549 .byte 69,15,82,232 // rsqrtps %xmm8,%xmm13
23550 .byte 184,41,92,71,65 // mov $0x41475c29,%eax
23551 .byte 102,68,15,110,192 // movd %eax,%xmm8
23552 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23553 .byte 69,15,40,240 // movaps %xmm8,%xmm14
23554 .byte 68,15,89,240 // mulps %xmm0,%xmm14
23555 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
23556 .byte 102,68,15,110,200 // movd %eax,%xmm9
23557 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
23558 .byte 184,194,135,210,62 // mov $0x3ed287c2,%eax
23559 .byte 102,68,15,110,208 // movd %eax,%xmm10
23560 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
23561 .byte 184,206,111,48,63 // mov $0x3f306fce,%eax
23562 .byte 102,68,15,110,216 // movd %eax,%xmm11
23563 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
23564 .byte 184,168,87,202,61 // mov $0x3dca57a8,%eax
23565 .byte 53,0,0,0,128 // xor $0x80000000,%eax
23566 .byte 102,68,15,110,224 // movd %eax,%xmm12
23567 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
23568 .byte 69,15,89,251 // mulps %xmm11,%xmm15
23569 .byte 69,15,88,252 // addps %xmm12,%xmm15
23570 .byte 69,15,89,234 // mulps %xmm10,%xmm13
23571 .byte 69,15,88,239 // addps %xmm15,%xmm13
23572 .byte 69,15,40,249 // movaps %xmm9,%xmm15
23573 .byte 69,15,93,253 // minps %xmm13,%xmm15
23574 .byte 184,4,231,140,59 // mov $0x3b8ce704,%eax
23575 .byte 102,68,15,110,232 // movd %eax,%xmm13
23576 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
23577 .byte 65,15,194,197,1 // cmpltps %xmm13,%xmm0
23578 .byte 68,15,84,240 // andps %xmm0,%xmm14
23579 .byte 65,15,85,199 // andnps %xmm15,%xmm0
23580 .byte 65,15,86,198 // orps %xmm14,%xmm0
23581 .byte 68,15,82,241 // rsqrtps %xmm1,%xmm14
23582 .byte 69,15,83,254 // rcpps %xmm14,%xmm15
23583 .byte 69,15,82,246 // rsqrtps %xmm14,%xmm14
23584 .byte 69,15,89,251 // mulps %xmm11,%xmm15
23585 .byte 69,15,88,252 // addps %xmm12,%xmm15
23586 .byte 69,15,89,242 // mulps %xmm10,%xmm14
23587 .byte 69,15,88,247 // addps %xmm15,%xmm14
23588 .byte 69,15,40,249 // movaps %xmm9,%xmm15
23589 .byte 69,15,93,254 // minps %xmm14,%xmm15
23590 .byte 69,15,40,240 // movaps %xmm8,%xmm14
23591 .byte 68,15,89,241 // mulps %xmm1,%xmm14
23592 .byte 65,15,194,205,1 // cmpltps %xmm13,%xmm1
23593 .byte 68,15,84,241 // andps %xmm1,%xmm14
23594 .byte 65,15,85,207 // andnps %xmm15,%xmm1
23595 .byte 65,15,86,206 // orps %xmm14,%xmm1
23596 .byte 68,15,82,242 // rsqrtps %xmm2,%xmm14
23597 .byte 69,15,83,254 // rcpps %xmm14,%xmm15
23598 .byte 69,15,89,251 // mulps %xmm11,%xmm15
23599 .byte 69,15,88,252 // addps %xmm12,%xmm15
23600 .byte 69,15,82,222 // rsqrtps %xmm14,%xmm11
23601 .byte 69,15,89,218 // mulps %xmm10,%xmm11
23602 .byte 69,15,88,223 // addps %xmm15,%xmm11
23603 .byte 69,15,93,203 // minps %xmm11,%xmm9
23604 .byte 68,15,89,194 // mulps %xmm2,%xmm8
23605 .byte 65,15,194,213,1 // cmpltps %xmm13,%xmm2
23606 .byte 68,15,84,194 // andps %xmm2,%xmm8
23607 .byte 65,15,85,209 // andnps %xmm9,%xmm2
23608 .byte 65,15,86,208 // orps %xmm8,%xmm2
23609 .byte 72,173 // lods %ds:(%rsi),%rax
23610 .byte 255,224 // jmpq *%rax
23611
Mike Klein7125ac62017-04-05 15:27:22 -040023612HIDDEN _sk_from_2dot2_sse2
23613.globl _sk_from_2dot2_sse2
Mike Klein86714282017-04-13 17:37:38 -040023614FUNCTION(_sk_from_2dot2_sse2)
Mike Klein7125ac62017-04-05 15:27:22 -040023615_sk_from_2dot2_sse2:
23616 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23617 .byte 65,15,82,192 // rsqrtps %xmm8,%xmm0
23618 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
23619 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
23620 .byte 68,15,82,200 // rsqrtps %xmm0,%xmm9
23621 .byte 65,15,82,193 // rsqrtps %xmm9,%xmm0
23622 .byte 68,15,82,208 // rsqrtps %xmm0,%xmm10
23623 .byte 69,15,89,192 // mulps %xmm8,%xmm8
23624 .byte 65,15,40,193 // movaps %xmm9,%xmm0
23625 .byte 15,89,192 // mulps %xmm0,%xmm0
23626 .byte 65,15,89,193 // mulps %xmm9,%xmm0
23627 .byte 65,15,89,192 // mulps %xmm8,%xmm0
23628 .byte 65,15,89,194 // mulps %xmm10,%xmm0
23629 .byte 69,15,87,210 // xorps %xmm10,%xmm10
23630 .byte 65,15,95,194 // maxps %xmm10,%xmm0
23631 .byte 68,15,82,193 // rsqrtps %xmm1,%xmm8
23632 .byte 69,15,82,192 // rsqrtps %xmm8,%xmm8
23633 .byte 69,15,82,192 // rsqrtps %xmm8,%xmm8
23634 .byte 69,15,82,200 // rsqrtps %xmm8,%xmm9
23635 .byte 69,15,82,193 // rsqrtps %xmm9,%xmm8
23636 .byte 69,15,82,216 // rsqrtps %xmm8,%xmm11
23637 .byte 15,89,201 // mulps %xmm1,%xmm1
23638 .byte 69,15,40,193 // movaps %xmm9,%xmm8
23639 .byte 69,15,89,192 // mulps %xmm8,%xmm8
23640 .byte 69,15,89,193 // mulps %xmm9,%xmm8
23641 .byte 68,15,89,193 // mulps %xmm1,%xmm8
23642 .byte 69,15,89,195 // mulps %xmm11,%xmm8
23643 .byte 69,15,95,194 // maxps %xmm10,%xmm8
23644 .byte 15,82,202 // rsqrtps %xmm2,%xmm1
23645 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
23646 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
23647 .byte 68,15,82,217 // rsqrtps %xmm1,%xmm11
23648 .byte 65,15,82,203 // rsqrtps %xmm11,%xmm1
23649 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
23650 .byte 15,89,210 // mulps %xmm2,%xmm2
23651 .byte 69,15,40,203 // movaps %xmm11,%xmm9
23652 .byte 69,15,89,201 // mulps %xmm9,%xmm9
23653 .byte 69,15,89,203 // mulps %xmm11,%xmm9
23654 .byte 68,15,89,202 // mulps %xmm2,%xmm9
23655 .byte 68,15,89,201 // mulps %xmm1,%xmm9
23656 .byte 69,15,95,202 // maxps %xmm10,%xmm9
23657 .byte 72,173 // lods %ds:(%rsi),%rax
23658 .byte 65,15,40,200 // movaps %xmm8,%xmm1
23659 .byte 65,15,40,209 // movaps %xmm9,%xmm2
23660 .byte 255,224 // jmpq *%rax
23661
23662HIDDEN _sk_to_2dot2_sse2
23663.globl _sk_to_2dot2_sse2
Mike Klein86714282017-04-13 17:37:38 -040023664FUNCTION(_sk_to_2dot2_sse2)
Mike Klein7125ac62017-04-05 15:27:22 -040023665_sk_to_2dot2_sse2:
23666 .byte 68,15,82,192 // rsqrtps %xmm0,%xmm8
23667 .byte 65,15,82,192 // rsqrtps %xmm8,%xmm0
23668 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
23669 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
23670 .byte 15,82,192 // rsqrtps %xmm0,%xmm0
23671 .byte 68,15,82,200 // rsqrtps %xmm0,%xmm9
23672 .byte 69,15,83,192 // rcpps %xmm8,%xmm8
23673 .byte 68,15,89,192 // mulps %xmm0,%xmm8
23674 .byte 65,15,83,193 // rcpps %xmm9,%xmm0
23675 .byte 65,15,89,192 // mulps %xmm8,%xmm0
23676 .byte 69,15,87,192 // xorps %xmm8,%xmm8
23677 .byte 65,15,95,192 // maxps %xmm8,%xmm0
23678 .byte 68,15,82,201 // rsqrtps %xmm1,%xmm9
23679 .byte 65,15,82,201 // rsqrtps %xmm9,%xmm1
23680 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
23681 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
23682 .byte 15,82,201 // rsqrtps %xmm1,%xmm1
23683 .byte 68,15,82,209 // rsqrtps %xmm1,%xmm10
23684 .byte 69,15,83,201 // rcpps %xmm9,%xmm9
23685 .byte 68,15,89,201 // mulps %xmm1,%xmm9
23686 .byte 65,15,83,202 // rcpps %xmm10,%xmm1
23687 .byte 65,15,89,201 // mulps %xmm9,%xmm1
23688 .byte 65,15,95,200 // maxps %xmm8,%xmm1
23689 .byte 68,15,82,202 // rsqrtps %xmm2,%xmm9
23690 .byte 65,15,82,209 // rsqrtps %xmm9,%xmm2
23691 .byte 15,82,210 // rsqrtps %xmm2,%xmm2
23692 .byte 15,82,210 // rsqrtps %xmm2,%xmm2
23693 .byte 15,82,210 // rsqrtps %xmm2,%xmm2
23694 .byte 68,15,82,210 // rsqrtps %xmm2,%xmm10
23695 .byte 69,15,83,201 // rcpps %xmm9,%xmm9
23696 .byte 68,15,89,202 // mulps %xmm2,%xmm9
23697 .byte 65,15,83,210 // rcpps %xmm10,%xmm2
23698 .byte 65,15,89,209 // mulps %xmm9,%xmm2
23699 .byte 65,15,95,208 // maxps %xmm8,%xmm2
23700 .byte 72,173 // lods %ds:(%rsi),%rax
23701 .byte 255,224 // jmpq *%rax
23702
Mike Kleindb1cbcb2017-04-12 08:35:41 -040023703HIDDEN _sk_rgb_to_hsl_sse2
23704.globl _sk_rgb_to_hsl_sse2
Mike Klein86714282017-04-13 17:37:38 -040023705FUNCTION(_sk_rgb_to_hsl_sse2)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040023706_sk_rgb_to_hsl_sse2:
23707 .byte 68,15,40,201 // movaps %xmm1,%xmm9
23708 .byte 68,15,40,192 // movaps %xmm0,%xmm8
23709 .byte 69,15,40,208 // movaps %xmm8,%xmm10
23710 .byte 69,15,95,209 // maxps %xmm9,%xmm10
23711 .byte 68,15,95,210 // maxps %xmm2,%xmm10
23712 .byte 69,15,40,216 // movaps %xmm8,%xmm11
23713 .byte 69,15,93,217 // minps %xmm9,%xmm11
23714 .byte 68,15,93,218 // minps %xmm2,%xmm11
23715 .byte 65,15,40,202 // movaps %xmm10,%xmm1
23716 .byte 65,15,92,203 // subps %xmm11,%xmm1
23717 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
23718 .byte 102,68,15,110,224 // movd %eax,%xmm12
23719 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
23720 .byte 68,15,94,225 // divps %xmm1,%xmm12
23721 .byte 65,184,171,170,42,62 // mov $0x3e2aaaab,%r8d
23722 .byte 65,15,40,194 // movaps %xmm10,%xmm0
23723 .byte 65,15,194,192,0 // cmpeqps %xmm8,%xmm0
23724 .byte 69,15,40,241 // movaps %xmm9,%xmm14
23725 .byte 68,15,194,242,1 // cmpltps %xmm2,%xmm14
23726 .byte 185,0,0,192,64 // mov $0x40c00000,%ecx
23727 .byte 102,68,15,110,233 // movd %ecx,%xmm13
23728 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
23729 .byte 69,15,84,238 // andps %xmm14,%xmm13
23730 .byte 69,15,40,241 // movaps %xmm9,%xmm14
23731 .byte 68,15,92,242 // subps %xmm2,%xmm14
23732 .byte 69,15,89,244 // mulps %xmm12,%xmm14
23733 .byte 69,15,88,238 // addps %xmm14,%xmm13
23734 .byte 69,15,40,242 // movaps %xmm10,%xmm14
23735 .byte 69,15,194,241,0 // cmpeqps %xmm9,%xmm14
23736 .byte 65,15,92,208 // subps %xmm8,%xmm2
23737 .byte 69,15,92,193 // subps %xmm9,%xmm8
23738 .byte 65,15,89,212 // mulps %xmm12,%xmm2
23739 .byte 185,0,0,0,64 // mov $0x40000000,%ecx
23740 .byte 69,15,89,196 // mulps %xmm12,%xmm8
23741 .byte 184,0,0,128,64 // mov $0x40800000,%eax
23742 .byte 102,68,15,110,200 // movd %eax,%xmm9
23743 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
23744 .byte 69,15,88,200 // addps %xmm8,%xmm9
23745 .byte 102,68,15,110,193 // movd %ecx,%xmm8
23746 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23747 .byte 65,15,88,208 // addps %xmm8,%xmm2
23748 .byte 65,15,84,214 // andps %xmm14,%xmm2
23749 .byte 69,15,85,241 // andnps %xmm9,%xmm14
23750 .byte 68,15,86,242 // orps %xmm2,%xmm14
23751 .byte 68,15,84,232 // andps %xmm0,%xmm13
23752 .byte 65,15,85,198 // andnps %xmm14,%xmm0
23753 .byte 102,65,15,110,208 // movd %r8d,%xmm2
23754 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
23755 .byte 65,15,86,197 // orps %xmm13,%xmm0
23756 .byte 69,15,40,202 // movaps %xmm10,%xmm9
23757 .byte 69,15,194,203,4 // cmpneqps %xmm11,%xmm9
23758 .byte 65,15,84,193 // andps %xmm9,%xmm0
23759 .byte 15,89,194 // mulps %xmm2,%xmm0
23760 .byte 69,15,92,194 // subps %xmm10,%xmm8
23761 .byte 69,15,88,211 // addps %xmm11,%xmm10
23762 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
23763 .byte 102,68,15,110,224 // movd %eax,%xmm12
23764 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
23765 .byte 69,15,92,195 // subps %xmm11,%xmm8
23766 .byte 65,15,40,210 // movaps %xmm10,%xmm2
23767 .byte 65,15,89,212 // mulps %xmm12,%xmm2
23768 .byte 68,15,194,226,1 // cmpltps %xmm2,%xmm12
23769 .byte 69,15,84,196 // andps %xmm12,%xmm8
23770 .byte 69,15,85,226 // andnps %xmm10,%xmm12
23771 .byte 69,15,86,224 // orps %xmm8,%xmm12
23772 .byte 65,15,94,204 // divps %xmm12,%xmm1
23773 .byte 65,15,84,201 // andps %xmm9,%xmm1
23774 .byte 72,173 // lods %ds:(%rsi),%rax
23775 .byte 255,224 // jmpq *%rax
23776
23777HIDDEN _sk_hsl_to_rgb_sse2
23778.globl _sk_hsl_to_rgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040023779FUNCTION(_sk_hsl_to_rgb_sse2)
Mike Kleindb1cbcb2017-04-12 08:35:41 -040023780_sk_hsl_to_rgb_sse2:
23781 .byte 15,41,124,36,232 // movaps %xmm7,-0x18(%rsp)
23782 .byte 15,41,116,36,216 // movaps %xmm6,-0x28(%rsp)
23783 .byte 15,41,108,36,200 // movaps %xmm5,-0x38(%rsp)
23784 .byte 15,41,100,36,184 // movaps %xmm4,-0x48(%rsp)
23785 .byte 15,41,92,36,168 // movaps %xmm3,-0x58(%rsp)
23786 .byte 68,15,40,210 // movaps %xmm2,%xmm10
23787 .byte 15,40,209 // movaps %xmm1,%xmm2
23788 .byte 15,40,240 // movaps %xmm0,%xmm6
23789 .byte 184,0,0,0,63 // mov $0x3f000000,%eax
23790 .byte 102,68,15,110,240 // movd %eax,%xmm14
23791 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
23792 .byte 69,15,40,202 // movaps %xmm10,%xmm9
23793 .byte 69,15,194,206,1 // cmpltps %xmm14,%xmm9
23794 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
23795 .byte 102,68,15,110,224 // movd %eax,%xmm12
23796 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
23797 .byte 65,15,40,196 // movaps %xmm12,%xmm0
23798 .byte 15,88,194 // addps %xmm2,%xmm0
23799 .byte 65,15,89,194 // mulps %xmm10,%xmm0
23800 .byte 15,40,218 // movaps %xmm2,%xmm3
23801 .byte 69,15,87,219 // xorps %xmm11,%xmm11
23802 .byte 68,15,194,218,0 // cmpeqps %xmm2,%xmm11
23803 .byte 65,15,88,210 // addps %xmm10,%xmm2
23804 .byte 65,15,89,218 // mulps %xmm10,%xmm3
23805 .byte 15,92,211 // subps %xmm3,%xmm2
23806 .byte 65,15,84,193 // andps %xmm9,%xmm0
23807 .byte 68,15,85,202 // andnps %xmm2,%xmm9
23808 .byte 68,15,86,200 // orps %xmm0,%xmm9
23809 .byte 184,0,0,0,64 // mov $0x40000000,%eax
23810 .byte 185,171,170,170,62 // mov $0x3eaaaaab,%ecx
23811 .byte 102,68,15,110,193 // movd %ecx,%xmm8
23812 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23813 .byte 68,15,41,68,36,152 // movaps %xmm8,-0x68(%rsp)
23814 .byte 68,15,88,198 // addps %xmm6,%xmm8
23815 .byte 185,0,0,0,0 // mov $0x0,%ecx
23816 .byte 102,15,110,233 // movd %ecx,%xmm5
23817 .byte 15,198,237,0 // shufps $0x0,%xmm5,%xmm5
23818 .byte 65,15,40,196 // movaps %xmm12,%xmm0
23819 .byte 65,15,194,192,1 // cmpltps %xmm8,%xmm0
23820 .byte 65,15,40,216 // movaps %xmm8,%xmm3
23821 .byte 65,15,92,220 // subps %xmm12,%xmm3
23822 .byte 15,84,216 // andps %xmm0,%xmm3
23823 .byte 65,15,85,192 // andnps %xmm8,%xmm0
23824 .byte 15,86,195 // orps %xmm3,%xmm0
23825 .byte 65,15,40,216 // movaps %xmm8,%xmm3
23826 .byte 15,194,221,1 // cmpltps %xmm5,%xmm3
23827 .byte 65,15,40,212 // movaps %xmm12,%xmm2
23828 .byte 65,15,88,208 // addps %xmm8,%xmm2
23829 .byte 15,84,211 // andps %xmm3,%xmm2
23830 .byte 15,85,216 // andnps %xmm0,%xmm3
23831 .byte 15,86,218 // orps %xmm2,%xmm3
23832 .byte 102,68,15,110,232 // movd %eax,%xmm13
23833 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
23834 .byte 69,15,89,234 // mulps %xmm10,%xmm13
23835 .byte 69,15,92,233 // subps %xmm9,%xmm13
23836 .byte 184,171,170,42,62 // mov $0x3e2aaaab,%eax
23837 .byte 65,15,40,193 // movaps %xmm9,%xmm0
23838 .byte 65,15,92,197 // subps %xmm13,%xmm0
23839 .byte 185,0,0,192,64 // mov $0x40c00000,%ecx
23840 .byte 102,68,15,110,249 // movd %ecx,%xmm15
23841 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
23842 .byte 68,15,89,248 // mulps %xmm0,%xmm15
23843 .byte 185,171,170,42,63 // mov $0x3f2aaaab,%ecx
23844 .byte 102,15,110,225 // movd %ecx,%xmm4
23845 .byte 15,198,228,0 // shufps $0x0,%xmm4,%xmm4
23846 .byte 15,40,212 // movaps %xmm4,%xmm2
23847 .byte 15,92,211 // subps %xmm3,%xmm2
23848 .byte 15,40,203 // movaps %xmm3,%xmm1
23849 .byte 15,40,195 // movaps %xmm3,%xmm0
23850 .byte 15,194,220,1 // cmpltps %xmm4,%xmm3
23851 .byte 65,15,89,215 // mulps %xmm15,%xmm2
23852 .byte 65,15,88,213 // addps %xmm13,%xmm2
23853 .byte 15,84,211 // andps %xmm3,%xmm2
23854 .byte 65,15,85,221 // andnps %xmm13,%xmm3
23855 .byte 15,86,218 // orps %xmm2,%xmm3
23856 .byte 65,15,194,198,1 // cmpltps %xmm14,%xmm0
23857 .byte 65,15,40,209 // movaps %xmm9,%xmm2
23858 .byte 15,84,208 // andps %xmm0,%xmm2
23859 .byte 15,85,195 // andnps %xmm3,%xmm0
23860 .byte 15,86,194 // orps %xmm2,%xmm0
23861 .byte 102,15,110,248 // movd %eax,%xmm7
23862 .byte 15,198,255,0 // shufps $0x0,%xmm7,%xmm7
23863 .byte 15,194,207,1 // cmpltps %xmm7,%xmm1
23864 .byte 69,15,89,199 // mulps %xmm15,%xmm8
23865 .byte 69,15,88,197 // addps %xmm13,%xmm8
23866 .byte 68,15,84,193 // andps %xmm1,%xmm8
23867 .byte 15,85,200 // andnps %xmm0,%xmm1
23868 .byte 65,15,86,200 // orps %xmm8,%xmm1
23869 .byte 69,15,40,195 // movaps %xmm11,%xmm8
23870 .byte 68,15,85,193 // andnps %xmm1,%xmm8
23871 .byte 65,15,40,196 // movaps %xmm12,%xmm0
23872 .byte 15,194,198,1 // cmpltps %xmm6,%xmm0
23873 .byte 15,40,206 // movaps %xmm6,%xmm1
23874 .byte 65,15,92,204 // subps %xmm12,%xmm1
23875 .byte 15,84,200 // andps %xmm0,%xmm1
23876 .byte 15,85,198 // andnps %xmm6,%xmm0
23877 .byte 15,86,193 // orps %xmm1,%xmm0
23878 .byte 15,40,206 // movaps %xmm6,%xmm1
23879 .byte 15,194,205,1 // cmpltps %xmm5,%xmm1
23880 .byte 65,15,40,212 // movaps %xmm12,%xmm2
23881 .byte 15,88,214 // addps %xmm6,%xmm2
23882 .byte 15,84,209 // andps %xmm1,%xmm2
23883 .byte 15,85,200 // andnps %xmm0,%xmm1
23884 .byte 15,86,202 // orps %xmm2,%xmm1
23885 .byte 15,40,196 // movaps %xmm4,%xmm0
23886 .byte 15,92,193 // subps %xmm1,%xmm0
23887 .byte 15,40,217 // movaps %xmm1,%xmm3
23888 .byte 15,40,209 // movaps %xmm1,%xmm2
23889 .byte 15,194,204,1 // cmpltps %xmm4,%xmm1
23890 .byte 65,15,89,199 // mulps %xmm15,%xmm0
23891 .byte 65,15,88,197 // addps %xmm13,%xmm0
23892 .byte 15,84,193 // andps %xmm1,%xmm0
23893 .byte 65,15,85,205 // andnps %xmm13,%xmm1
23894 .byte 15,86,200 // orps %xmm0,%xmm1
23895 .byte 65,15,194,214,1 // cmpltps %xmm14,%xmm2
23896 .byte 65,15,40,193 // movaps %xmm9,%xmm0
23897 .byte 15,84,194 // andps %xmm2,%xmm0
23898 .byte 15,85,209 // andnps %xmm1,%xmm2
23899 .byte 15,86,208 // orps %xmm0,%xmm2
23900 .byte 15,194,223,1 // cmpltps %xmm7,%xmm3
23901 .byte 65,15,40,199 // movaps %xmm15,%xmm0
23902 .byte 15,89,198 // mulps %xmm6,%xmm0
23903 .byte 65,15,88,197 // addps %xmm13,%xmm0
23904 .byte 15,84,195 // andps %xmm3,%xmm0
23905 .byte 15,85,218 // andnps %xmm2,%xmm3
23906 .byte 15,86,216 // orps %xmm0,%xmm3
23907 .byte 65,15,40,203 // movaps %xmm11,%xmm1
23908 .byte 15,85,203 // andnps %xmm3,%xmm1
23909 .byte 15,92,116,36,152 // subps -0x68(%rsp),%xmm6
23910 .byte 15,40,198 // movaps %xmm6,%xmm0
23911 .byte 15,194,197,1 // cmpltps %xmm5,%xmm0
23912 .byte 15,40,214 // movaps %xmm6,%xmm2
23913 .byte 65,15,92,212 // subps %xmm12,%xmm2
23914 .byte 65,15,40,220 // movaps %xmm12,%xmm3
23915 .byte 68,15,194,230,1 // cmpltps %xmm6,%xmm12
23916 .byte 65,15,84,212 // andps %xmm12,%xmm2
23917 .byte 68,15,85,230 // andnps %xmm6,%xmm12
23918 .byte 68,15,86,226 // orps %xmm2,%xmm12
23919 .byte 15,88,222 // addps %xmm6,%xmm3
23920 .byte 15,84,216 // andps %xmm0,%xmm3
23921 .byte 65,15,85,196 // andnps %xmm12,%xmm0
23922 .byte 15,86,195 // orps %xmm3,%xmm0
23923 .byte 15,40,232 // movaps %xmm0,%xmm5
23924 .byte 15,194,239,1 // cmpltps %xmm7,%xmm5
23925 .byte 15,40,208 // movaps %xmm0,%xmm2
23926 .byte 15,194,212,1 // cmpltps %xmm4,%xmm2
23927 .byte 15,92,224 // subps %xmm0,%xmm4
23928 .byte 65,15,194,198,1 // cmpltps %xmm14,%xmm0
23929 .byte 65,15,89,247 // mulps %xmm15,%xmm6
23930 .byte 65,15,89,231 // mulps %xmm15,%xmm4
23931 .byte 65,15,88,245 // addps %xmm13,%xmm6
23932 .byte 65,15,88,229 // addps %xmm13,%xmm4
23933 .byte 15,84,226 // andps %xmm2,%xmm4
23934 .byte 65,15,85,213 // andnps %xmm13,%xmm2
23935 .byte 15,86,212 // orps %xmm4,%xmm2
23936 .byte 68,15,84,200 // andps %xmm0,%xmm9
23937 .byte 15,85,194 // andnps %xmm2,%xmm0
23938 .byte 65,15,86,193 // orps %xmm9,%xmm0
23939 .byte 15,84,245 // andps %xmm5,%xmm6
23940 .byte 15,85,232 // andnps %xmm0,%xmm5
23941 .byte 15,86,238 // orps %xmm6,%xmm5
23942 .byte 69,15,84,211 // andps %xmm11,%xmm10
23943 .byte 68,15,85,221 // andnps %xmm5,%xmm11
23944 .byte 69,15,86,194 // orps %xmm10,%xmm8
23945 .byte 65,15,86,202 // orps %xmm10,%xmm1
23946 .byte 69,15,86,211 // orps %xmm11,%xmm10
23947 .byte 72,173 // lods %ds:(%rsi),%rax
23948 .byte 65,15,40,192 // movaps %xmm8,%xmm0
23949 .byte 65,15,40,210 // movaps %xmm10,%xmm2
23950 .byte 15,40,92,36,168 // movaps -0x58(%rsp),%xmm3
23951 .byte 15,40,100,36,184 // movaps -0x48(%rsp),%xmm4
23952 .byte 15,40,108,36,200 // movaps -0x38(%rsp),%xmm5
23953 .byte 15,40,116,36,216 // movaps -0x28(%rsp),%xmm6
23954 .byte 15,40,124,36,232 // movaps -0x18(%rsp),%xmm7
23955 .byte 255,224 // jmpq *%rax
23956
Mike Klein7c4af542017-03-29 18:21:14 -040023957HIDDEN _sk_scale_1_float_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023958.globl _sk_scale_1_float_sse2
Mike Klein86714282017-04-13 17:37:38 -040023959FUNCTION(_sk_scale_1_float_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023960_sk_scale_1_float_sse2:
23961 .byte 72,173 // lods %ds:(%rsi),%rax
23962 .byte 243,68,15,16,0 // movss (%rax),%xmm8
23963 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
23964 .byte 65,15,89,192 // mulps %xmm8,%xmm0
23965 .byte 65,15,89,200 // mulps %xmm8,%xmm1
23966 .byte 65,15,89,208 // mulps %xmm8,%xmm2
23967 .byte 65,15,89,216 // mulps %xmm8,%xmm3
23968 .byte 72,173 // lods %ds:(%rsi),%rax
23969 .byte 255,224 // jmpq *%rax
23970
Mike Klein7c4af542017-03-29 18:21:14 -040023971HIDDEN _sk_scale_u8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023972.globl _sk_scale_u8_sse2
Mike Klein86714282017-04-13 17:37:38 -040023973FUNCTION(_sk_scale_u8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023974_sk_scale_u8_sse2:
23975 .byte 72,173 // lods %ds:(%rsi),%rax
23976 .byte 72,139,0 // mov (%rax),%rax
23977 .byte 102,68,15,110,4,56 // movd (%rax,%rdi,1),%xmm8
23978 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
23979 .byte 102,69,15,96,193 // punpcklbw %xmm9,%xmm8
23980 .byte 102,69,15,97,193 // punpcklwd %xmm9,%xmm8
23981 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
23982 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
23983 .byte 102,68,15,110,200 // movd %eax,%xmm9
23984 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
23985 .byte 69,15,89,200 // mulps %xmm8,%xmm9
23986 .byte 65,15,89,193 // mulps %xmm9,%xmm0
23987 .byte 65,15,89,201 // mulps %xmm9,%xmm1
23988 .byte 65,15,89,209 // mulps %xmm9,%xmm2
23989 .byte 65,15,89,217 // mulps %xmm9,%xmm3
23990 .byte 72,173 // lods %ds:(%rsi),%rax
23991 .byte 255,224 // jmpq *%rax
23992
Mike Klein7c4af542017-03-29 18:21:14 -040023993HIDDEN _sk_lerp_1_float_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040023994.globl _sk_lerp_1_float_sse2
Mike Klein86714282017-04-13 17:37:38 -040023995FUNCTION(_sk_lerp_1_float_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040023996_sk_lerp_1_float_sse2:
23997 .byte 72,173 // lods %ds:(%rsi),%rax
23998 .byte 243,68,15,16,0 // movss (%rax),%xmm8
23999 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24000 .byte 15,92,196 // subps %xmm4,%xmm0
24001 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24002 .byte 15,88,196 // addps %xmm4,%xmm0
24003 .byte 15,92,205 // subps %xmm5,%xmm1
24004 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24005 .byte 15,88,205 // addps %xmm5,%xmm1
24006 .byte 15,92,214 // subps %xmm6,%xmm2
24007 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24008 .byte 15,88,214 // addps %xmm6,%xmm2
24009 .byte 15,92,223 // subps %xmm7,%xmm3
24010 .byte 65,15,89,216 // mulps %xmm8,%xmm3
24011 .byte 15,88,223 // addps %xmm7,%xmm3
24012 .byte 72,173 // lods %ds:(%rsi),%rax
24013 .byte 255,224 // jmpq *%rax
24014
Mike Klein7c4af542017-03-29 18:21:14 -040024015HIDDEN _sk_lerp_u8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024016.globl _sk_lerp_u8_sse2
Mike Klein86714282017-04-13 17:37:38 -040024017FUNCTION(_sk_lerp_u8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024018_sk_lerp_u8_sse2:
24019 .byte 72,173 // lods %ds:(%rsi),%rax
24020 .byte 72,139,0 // mov (%rax),%rax
24021 .byte 102,68,15,110,4,56 // movd (%rax,%rdi,1),%xmm8
24022 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
24023 .byte 102,69,15,96,193 // punpcklbw %xmm9,%xmm8
24024 .byte 102,69,15,97,193 // punpcklwd %xmm9,%xmm8
24025 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
24026 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
24027 .byte 102,68,15,110,200 // movd %eax,%xmm9
24028 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24029 .byte 69,15,89,200 // mulps %xmm8,%xmm9
24030 .byte 15,92,196 // subps %xmm4,%xmm0
24031 .byte 65,15,89,193 // mulps %xmm9,%xmm0
24032 .byte 15,88,196 // addps %xmm4,%xmm0
24033 .byte 15,92,205 // subps %xmm5,%xmm1
24034 .byte 65,15,89,201 // mulps %xmm9,%xmm1
24035 .byte 15,88,205 // addps %xmm5,%xmm1
24036 .byte 15,92,214 // subps %xmm6,%xmm2
24037 .byte 65,15,89,209 // mulps %xmm9,%xmm2
24038 .byte 15,88,214 // addps %xmm6,%xmm2
24039 .byte 15,92,223 // subps %xmm7,%xmm3
24040 .byte 65,15,89,217 // mulps %xmm9,%xmm3
24041 .byte 15,88,223 // addps %xmm7,%xmm3
24042 .byte 72,173 // lods %ds:(%rsi),%rax
24043 .byte 255,224 // jmpq *%rax
24044
Mike Klein7c4af542017-03-29 18:21:14 -040024045HIDDEN _sk_lerp_565_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024046.globl _sk_lerp_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040024047FUNCTION(_sk_lerp_565_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024048_sk_lerp_565_sse2:
24049 .byte 72,173 // lods %ds:(%rsi),%rax
24050 .byte 72,139,0 // mov (%rax),%rax
24051 .byte 243,68,15,126,4,120 // movq (%rax,%rdi,2),%xmm8
24052 .byte 102,15,239,219 // pxor %xmm3,%xmm3
24053 .byte 102,68,15,97,195 // punpcklwd %xmm3,%xmm8
24054 .byte 184,0,248,0,0 // mov $0xf800,%eax
24055 .byte 102,15,110,216 // movd %eax,%xmm3
24056 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
24057 .byte 102,65,15,219,216 // pand %xmm8,%xmm3
24058 .byte 68,15,91,203 // cvtdq2ps %xmm3,%xmm9
24059 .byte 184,8,33,132,55 // mov $0x37842108,%eax
24060 .byte 102,68,15,110,208 // movd %eax,%xmm10
24061 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24062 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24063 .byte 184,224,7,0,0 // mov $0x7e0,%eax
24064 .byte 102,15,110,216 // movd %eax,%xmm3
24065 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
24066 .byte 102,65,15,219,216 // pand %xmm8,%xmm3
24067 .byte 68,15,91,203 // cvtdq2ps %xmm3,%xmm9
24068 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
24069 .byte 102,68,15,110,216 // movd %eax,%xmm11
24070 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24071 .byte 69,15,89,217 // mulps %xmm9,%xmm11
24072 .byte 184,31,0,0,0 // mov $0x1f,%eax
24073 .byte 102,15,110,216 // movd %eax,%xmm3
24074 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
24075 .byte 102,65,15,219,216 // pand %xmm8,%xmm3
24076 .byte 68,15,91,195 // cvtdq2ps %xmm3,%xmm8
24077 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
24078 .byte 102,15,110,216 // movd %eax,%xmm3
24079 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
24080 .byte 65,15,89,216 // mulps %xmm8,%xmm3
24081 .byte 15,92,196 // subps %xmm4,%xmm0
24082 .byte 65,15,89,194 // mulps %xmm10,%xmm0
24083 .byte 15,88,196 // addps %xmm4,%xmm0
24084 .byte 15,92,205 // subps %xmm5,%xmm1
24085 .byte 65,15,89,203 // mulps %xmm11,%xmm1
24086 .byte 15,88,205 // addps %xmm5,%xmm1
24087 .byte 15,92,214 // subps %xmm6,%xmm2
24088 .byte 15,89,211 // mulps %xmm3,%xmm2
24089 .byte 15,88,214 // addps %xmm6,%xmm2
24090 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
24091 .byte 102,15,110,216 // movd %eax,%xmm3
24092 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
24093 .byte 72,173 // lods %ds:(%rsi),%rax
24094 .byte 255,224 // jmpq *%rax
24095
Mike Klein7c4af542017-03-29 18:21:14 -040024096HIDDEN _sk_load_tables_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040024097.globl _sk_load_tables_sse2
Mike Klein86714282017-04-13 17:37:38 -040024098FUNCTION(_sk_load_tables_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040024099_sk_load_tables_sse2:
24100 .byte 72,173 // lods %ds:(%rsi),%rax
24101 .byte 72,139,8 // mov (%rax),%rcx
24102 .byte 76,139,64,8 // mov 0x8(%rax),%r8
24103 .byte 243,68,15,111,4,185 // movdqu (%rcx,%rdi,4),%xmm8
24104 .byte 185,255,0,0,0 // mov $0xff,%ecx
24105 .byte 102,15,110,193 // movd %ecx,%xmm0
24106 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
24107 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
24108 .byte 102,65,15,114,209,8 // psrld $0x8,%xmm9
24109 .byte 102,68,15,219,200 // pand %xmm0,%xmm9
24110 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
24111 .byte 102,65,15,114,210,16 // psrld $0x10,%xmm10
24112 .byte 102,68,15,219,208 // pand %xmm0,%xmm10
24113 .byte 102,65,15,219,192 // pand %xmm8,%xmm0
24114 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
24115 .byte 102,72,15,126,217 // movq %xmm3,%rcx
24116 .byte 65,137,201 // mov %ecx,%r9d
24117 .byte 72,193,233,32 // shr $0x20,%rcx
24118 .byte 102,73,15,126,194 // movq %xmm0,%r10
24119 .byte 69,137,211 // mov %r10d,%r11d
24120 .byte 73,193,234,32 // shr $0x20,%r10
24121 .byte 243,67,15,16,28,144 // movss (%r8,%r10,4),%xmm3
24122 .byte 243,65,15,16,4,136 // movss (%r8,%rcx,4),%xmm0
24123 .byte 15,20,216 // unpcklps %xmm0,%xmm3
24124 .byte 243,67,15,16,4,152 // movss (%r8,%r11,4),%xmm0
24125 .byte 243,67,15,16,12,136 // movss (%r8,%r9,4),%xmm1
24126 .byte 15,20,193 // unpcklps %xmm1,%xmm0
24127 .byte 15,20,195 // unpcklps %xmm3,%xmm0
24128 .byte 76,139,64,16 // mov 0x10(%rax),%r8
24129 .byte 102,65,15,112,201,78 // pshufd $0x4e,%xmm9,%xmm1
24130 .byte 102,73,15,126,202 // movq %xmm1,%r10
24131 .byte 77,137,209 // mov %r10,%r9
24132 .byte 73,193,233,32 // shr $0x20,%r9
24133 .byte 102,76,15,126,201 // movq %xmm9,%rcx
24134 .byte 65,137,203 // mov %ecx,%r11d
24135 .byte 65,129,227,255,255,255,0 // and $0xffffff,%r11d
24136 .byte 72,193,233,30 // shr $0x1e,%rcx
24137 .byte 65,129,226,255,255,255,0 // and $0xffffff,%r10d
24138 .byte 243,65,15,16,28,8 // movss (%r8,%rcx,1),%xmm3
24139 .byte 243,67,15,16,12,136 // movss (%r8,%r9,4),%xmm1
24140 .byte 15,20,217 // unpcklps %xmm1,%xmm3
24141 .byte 243,67,15,16,12,152 // movss (%r8,%r11,4),%xmm1
24142 .byte 243,67,15,16,20,144 // movss (%r8,%r10,4),%xmm2
24143 .byte 15,20,202 // unpcklps %xmm2,%xmm1
24144 .byte 15,20,203 // unpcklps %xmm3,%xmm1
24145 .byte 76,139,72,24 // mov 0x18(%rax),%r9
24146 .byte 102,65,15,112,210,78 // pshufd $0x4e,%xmm10,%xmm2
24147 .byte 102,72,15,126,209 // movq %xmm2,%rcx
24148 .byte 68,15,183,193 // movzwl %cx,%r8d
24149 .byte 72,193,233,32 // shr $0x20,%rcx
24150 .byte 102,76,15,126,208 // movq %xmm10,%rax
24151 .byte 68,15,183,208 // movzwl %ax,%r10d
24152 .byte 72,193,232,30 // shr $0x1e,%rax
24153 .byte 243,69,15,16,12,1 // movss (%r9,%rax,1),%xmm9
24154 .byte 243,65,15,16,20,137 // movss (%r9,%rcx,4),%xmm2
24155 .byte 68,15,20,202 // unpcklps %xmm2,%xmm9
24156 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
24157 .byte 243,67,15,16,28,129 // movss (%r9,%r8,4),%xmm3
24158 .byte 15,20,211 // unpcklps %xmm3,%xmm2
24159 .byte 65,15,20,209 // unpcklps %xmm9,%xmm2
24160 .byte 102,65,15,114,208,24 // psrld $0x18,%xmm8
24161 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
24162 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
24163 .byte 102,15,110,216 // movd %eax,%xmm3
24164 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
24165 .byte 65,15,89,216 // mulps %xmm8,%xmm3
24166 .byte 72,173 // lods %ds:(%rsi),%rax
24167 .byte 255,224 // jmpq *%rax
24168
Mike Kleina3735cd2017-04-17 13:19:05 -040024169HIDDEN _sk_load_tables_u16_be_sse2
24170.globl _sk_load_tables_u16_be_sse2
24171FUNCTION(_sk_load_tables_u16_be_sse2)
24172_sk_load_tables_u16_be_sse2:
24173 .byte 72,173 // lods %ds:(%rsi),%rax
24174 .byte 72,139,8 // mov (%rax),%rcx
24175 .byte 76,139,64,8 // mov 0x8(%rax),%r8
24176 .byte 243,15,111,4,249 // movdqu (%rcx,%rdi,8),%xmm0
24177 .byte 243,15,111,76,249,16 // movdqu 0x10(%rcx,%rdi,8),%xmm1
24178 .byte 102,68,15,111,208 // movdqa %xmm0,%xmm10
24179 .byte 102,68,15,97,209 // punpcklwd %xmm1,%xmm10
24180 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
24181 .byte 102,65,15,111,202 // movdqa %xmm10,%xmm1
24182 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
24183 .byte 102,68,15,105,208 // punpckhwd %xmm0,%xmm10
24184 .byte 102,69,15,239,192 // pxor %xmm8,%xmm8
24185 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
24186 .byte 102,65,15,97,192 // punpcklwd %xmm8,%xmm0
24187 .byte 185,255,0,0,0 // mov $0xff,%ecx
24188 .byte 102,15,110,217 // movd %ecx,%xmm3
24189 .byte 102,68,15,112,203,0 // pshufd $0x0,%xmm3,%xmm9
24190 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
24191 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
24192 .byte 102,72,15,126,217 // movq %xmm3,%rcx
24193 .byte 68,15,183,201 // movzwl %cx,%r9d
24194 .byte 72,193,233,32 // shr $0x20,%rcx
24195 .byte 102,73,15,126,194 // movq %xmm0,%r10
24196 .byte 69,15,183,218 // movzwl %r10w,%r11d
24197 .byte 73,193,234,30 // shr $0x1e,%r10
24198 .byte 243,67,15,16,28,16 // movss (%r8,%r10,1),%xmm3
24199 .byte 243,65,15,16,4,136 // movss (%r8,%rcx,4),%xmm0
24200 .byte 15,20,216 // unpcklps %xmm0,%xmm3
24201 .byte 243,67,15,16,4,152 // movss (%r8,%r11,4),%xmm0
24202 .byte 243,67,15,16,20,136 // movss (%r8,%r9,4),%xmm2
24203 .byte 15,20,194 // unpcklps %xmm2,%xmm0
24204 .byte 15,20,195 // unpcklps %xmm3,%xmm0
24205 .byte 76,139,80,16 // mov 0x10(%rax),%r10
24206 .byte 102,15,115,217,8 // psrldq $0x8,%xmm1
24207 .byte 102,65,15,97,200 // punpcklwd %xmm8,%xmm1
24208 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
24209 .byte 102,15,112,209,78 // pshufd $0x4e,%xmm1,%xmm2
24210 .byte 102,73,15,126,208 // movq %xmm2,%r8
24211 .byte 69,15,183,200 // movzwl %r8w,%r9d
24212 .byte 73,193,232,32 // shr $0x20,%r8
24213 .byte 102,72,15,126,201 // movq %xmm1,%rcx
24214 .byte 68,15,183,217 // movzwl %cx,%r11d
24215 .byte 72,193,233,30 // shr $0x1e,%rcx
24216 .byte 243,65,15,16,20,10 // movss (%r10,%rcx,1),%xmm2
24217 .byte 243,67,15,16,12,130 // movss (%r10,%r8,4),%xmm1
24218 .byte 15,20,209 // unpcklps %xmm1,%xmm2
24219 .byte 243,67,15,16,12,154 // movss (%r10,%r11,4),%xmm1
24220 .byte 243,67,15,16,28,138 // movss (%r10,%r9,4),%xmm3
24221 .byte 15,20,203 // unpcklps %xmm3,%xmm1
24222 .byte 15,20,202 // unpcklps %xmm2,%xmm1
24223 .byte 76,139,72,24 // mov 0x18(%rax),%r9
24224 .byte 102,69,15,112,218,78 // pshufd $0x4e,%xmm10,%xmm11
24225 .byte 102,69,15,97,208 // punpcklwd %xmm8,%xmm10
24226 .byte 102,69,15,219,209 // pand %xmm9,%xmm10
24227 .byte 102,65,15,112,210,78 // pshufd $0x4e,%xmm10,%xmm2
24228 .byte 102,72,15,126,209 // movq %xmm2,%rcx
24229 .byte 68,15,183,193 // movzwl %cx,%r8d
24230 .byte 72,193,233,32 // shr $0x20,%rcx
24231 .byte 102,76,15,126,208 // movq %xmm10,%rax
24232 .byte 68,15,183,208 // movzwl %ax,%r10d
24233 .byte 72,193,232,30 // shr $0x1e,%rax
24234 .byte 243,69,15,16,12,1 // movss (%r9,%rax,1),%xmm9
24235 .byte 243,65,15,16,20,137 // movss (%r9,%rcx,4),%xmm2
24236 .byte 68,15,20,202 // unpcklps %xmm2,%xmm9
24237 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
24238 .byte 243,67,15,16,28,129 // movss (%r9,%r8,4),%xmm3
24239 .byte 15,20,211 // unpcklps %xmm3,%xmm2
24240 .byte 65,15,20,209 // unpcklps %xmm9,%xmm2
24241 .byte 184,128,0,128,55 // mov $0x37800080,%eax
24242 .byte 102,68,15,110,200 // movd %eax,%xmm9
24243 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24244 .byte 102,65,15,111,219 // movdqa %xmm11,%xmm3
24245 .byte 102,15,113,243,8 // psllw $0x8,%xmm3
24246 .byte 102,65,15,113,211,8 // psrlw $0x8,%xmm11
24247 .byte 102,68,15,235,219 // por %xmm3,%xmm11
24248 .byte 102,69,15,97,216 // punpcklwd %xmm8,%xmm11
24249 .byte 65,15,91,219 // cvtdq2ps %xmm11,%xmm3
24250 .byte 65,15,89,217 // mulps %xmm9,%xmm3
24251 .byte 72,173 // lods %ds:(%rsi),%rax
24252 .byte 255,224 // jmpq *%rax
24253
24254HIDDEN _sk_load_tables_rgb_u16_be_sse2
24255.globl _sk_load_tables_rgb_u16_be_sse2
24256FUNCTION(_sk_load_tables_rgb_u16_be_sse2)
24257_sk_load_tables_rgb_u16_be_sse2:
24258 .byte 72,173 // lods %ds:(%rsi),%rax
24259 .byte 76,141,12,127 // lea (%rdi,%rdi,2),%r9
24260 .byte 72,139,8 // mov (%rax),%rcx
24261 .byte 76,139,64,8 // mov 0x8(%rax),%r8
24262 .byte 243,70,15,111,28,73 // movdqu (%rcx,%r9,2),%xmm11
24263 .byte 243,66,15,111,68,73,8 // movdqu 0x8(%rcx,%r9,2),%xmm0
24264 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
24265 .byte 102,65,15,111,219 // movdqa %xmm11,%xmm3
24266 .byte 102,15,115,219,6 // psrldq $0x6,%xmm3
24267 .byte 102,68,15,97,216 // punpcklwd %xmm0,%xmm11
24268 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
24269 .byte 102,15,97,216 // punpcklwd %xmm0,%xmm3
24270 .byte 102,65,15,111,195 // movdqa %xmm11,%xmm0
24271 .byte 102,15,97,195 // punpcklwd %xmm3,%xmm0
24272 .byte 102,68,15,112,208,78 // pshufd $0x4e,%xmm0,%xmm10
24273 .byte 102,68,15,105,219 // punpckhwd %xmm3,%xmm11
24274 .byte 102,69,15,239,192 // pxor %xmm8,%xmm8
24275 .byte 102,65,15,97,192 // punpcklwd %xmm8,%xmm0
24276 .byte 185,255,0,0,0 // mov $0xff,%ecx
24277 .byte 102,15,110,217 // movd %ecx,%xmm3
24278 .byte 102,68,15,112,203,0 // pshufd $0x0,%xmm3,%xmm9
24279 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
24280 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
24281 .byte 102,72,15,126,217 // movq %xmm3,%rcx
24282 .byte 68,15,183,201 // movzwl %cx,%r9d
24283 .byte 72,193,233,32 // shr $0x20,%rcx
24284 .byte 102,73,15,126,194 // movq %xmm0,%r10
24285 .byte 69,15,183,218 // movzwl %r10w,%r11d
24286 .byte 73,193,234,30 // shr $0x1e,%r10
24287 .byte 243,67,15,16,28,16 // movss (%r8,%r10,1),%xmm3
24288 .byte 243,65,15,16,4,136 // movss (%r8,%rcx,4),%xmm0
24289 .byte 15,20,216 // unpcklps %xmm0,%xmm3
24290 .byte 243,67,15,16,4,152 // movss (%r8,%r11,4),%xmm0
24291 .byte 243,67,15,16,12,136 // movss (%r8,%r9,4),%xmm1
24292 .byte 15,20,193 // unpcklps %xmm1,%xmm0
24293 .byte 15,20,195 // unpcklps %xmm3,%xmm0
24294 .byte 76,139,80,16 // mov 0x10(%rax),%r10
24295 .byte 102,69,15,97,208 // punpcklwd %xmm8,%xmm10
24296 .byte 102,69,15,219,209 // pand %xmm9,%xmm10
24297 .byte 102,65,15,112,202,78 // pshufd $0x4e,%xmm10,%xmm1
24298 .byte 102,73,15,126,200 // movq %xmm1,%r8
24299 .byte 69,15,183,200 // movzwl %r8w,%r9d
24300 .byte 73,193,232,32 // shr $0x20,%r8
24301 .byte 102,76,15,126,209 // movq %xmm10,%rcx
24302 .byte 68,15,183,217 // movzwl %cx,%r11d
24303 .byte 72,193,233,30 // shr $0x1e,%rcx
24304 .byte 243,65,15,16,28,10 // movss (%r10,%rcx,1),%xmm3
24305 .byte 243,67,15,16,12,130 // movss (%r10,%r8,4),%xmm1
24306 .byte 15,20,217 // unpcklps %xmm1,%xmm3
24307 .byte 243,67,15,16,12,154 // movss (%r10,%r11,4),%xmm1
24308 .byte 243,67,15,16,20,138 // movss (%r10,%r9,4),%xmm2
24309 .byte 15,20,202 // unpcklps %xmm2,%xmm1
24310 .byte 15,20,203 // unpcklps %xmm3,%xmm1
24311 .byte 76,139,72,24 // mov 0x18(%rax),%r9
24312 .byte 102,69,15,97,216 // punpcklwd %xmm8,%xmm11
24313 .byte 102,69,15,219,217 // pand %xmm9,%xmm11
24314 .byte 102,65,15,112,211,78 // pshufd $0x4e,%xmm11,%xmm2
24315 .byte 102,72,15,126,209 // movq %xmm2,%rcx
24316 .byte 68,15,183,193 // movzwl %cx,%r8d
24317 .byte 72,193,233,32 // shr $0x20,%rcx
24318 .byte 102,76,15,126,216 // movq %xmm11,%rax
24319 .byte 68,15,183,208 // movzwl %ax,%r10d
24320 .byte 72,193,232,30 // shr $0x1e,%rax
24321 .byte 243,69,15,16,4,1 // movss (%r9,%rax,1),%xmm8
24322 .byte 243,65,15,16,20,137 // movss (%r9,%rcx,4),%xmm2
24323 .byte 68,15,20,194 // unpcklps %xmm2,%xmm8
24324 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
24325 .byte 243,67,15,16,28,129 // movss (%r9,%r8,4),%xmm3
24326 .byte 15,20,211 // unpcklps %xmm3,%xmm2
24327 .byte 65,15,20,208 // unpcklps %xmm8,%xmm2
24328 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
24329 .byte 102,15,110,216 // movd %eax,%xmm3
24330 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
24331 .byte 72,173 // lods %ds:(%rsi),%rax
24332 .byte 255,224 // jmpq *%rax
24333
Mike Klein40de6da2017-04-07 13:09:29 -040024334HIDDEN _sk_byte_tables_sse2
24335.globl _sk_byte_tables_sse2
Mike Klein86714282017-04-13 17:37:38 -040024336FUNCTION(_sk_byte_tables_sse2)
Mike Klein40de6da2017-04-07 13:09:29 -040024337_sk_byte_tables_sse2:
24338 .byte 65,86 // push %r14
24339 .byte 83 // push %rbx
24340 .byte 72,173 // lods %ds:(%rsi),%rax
24341 .byte 185,0,0,127,67 // mov $0x437f0000,%ecx
24342 .byte 102,68,15,110,193 // movd %ecx,%xmm8
24343 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24344 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24345 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
24346 .byte 102,72,15,126,193 // movq %xmm0,%rcx
24347 .byte 65,137,200 // mov %ecx,%r8d
24348 .byte 72,193,233,32 // shr $0x20,%rcx
24349 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
24350 .byte 102,73,15,126,193 // movq %xmm0,%r9
24351 .byte 69,137,202 // mov %r9d,%r10d
24352 .byte 77,137,203 // mov %r9,%r11
24353 .byte 73,193,235,32 // shr $0x20,%r11
24354 .byte 76,139,48 // mov (%rax),%r14
24355 .byte 76,139,72,8 // mov 0x8(%rax),%r9
24356 .byte 71,15,182,20,22 // movzbl (%r14,%r10,1),%r10d
24357 .byte 67,15,182,28,30 // movzbl (%r14,%r11,1),%ebx
24358 .byte 193,227,8 // shl $0x8,%ebx
24359 .byte 68,9,211 // or %r10d,%ebx
24360 .byte 71,15,182,4,6 // movzbl (%r14,%r8,1),%r8d
24361 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
24362 .byte 193,225,8 // shl $0x8,%ecx
24363 .byte 68,9,193 // or %r8d,%ecx
24364 .byte 102,15,196,193,0 // pinsrw $0x0,%ecx,%xmm0
24365 .byte 102,15,196,195,1 // pinsrw $0x1,%ebx,%xmm0
24366 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
24367 .byte 102,65,15,96,193 // punpcklbw %xmm9,%xmm0
24368 .byte 102,65,15,97,193 // punpcklwd %xmm9,%xmm0
24369 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
24370 .byte 185,129,128,128,59 // mov $0x3b808081,%ecx
24371 .byte 102,68,15,110,209 // movd %ecx,%xmm10
24372 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24373 .byte 65,15,89,194 // mulps %xmm10,%xmm0
24374 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24375 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
24376 .byte 102,72,15,126,201 // movq %xmm1,%rcx
24377 .byte 65,137,200 // mov %ecx,%r8d
24378 .byte 72,193,233,32 // shr $0x20,%rcx
24379 .byte 102,15,112,201,78 // pshufd $0x4e,%xmm1,%xmm1
24380 .byte 102,72,15,126,203 // movq %xmm1,%rbx
24381 .byte 65,137,218 // mov %ebx,%r10d
24382 .byte 72,193,235,32 // shr $0x20,%rbx
24383 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
24384 .byte 65,15,182,28,25 // movzbl (%r9,%rbx,1),%ebx
24385 .byte 193,227,8 // shl $0x8,%ebx
24386 .byte 68,9,211 // or %r10d,%ebx
24387 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
24388 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
24389 .byte 193,225,8 // shl $0x8,%ecx
24390 .byte 68,9,193 // or %r8d,%ecx
24391 .byte 102,15,196,201,0 // pinsrw $0x0,%ecx,%xmm1
24392 .byte 102,15,196,203,1 // pinsrw $0x1,%ebx,%xmm1
24393 .byte 102,65,15,96,201 // punpcklbw %xmm9,%xmm1
24394 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
24395 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
24396 .byte 65,15,89,202 // mulps %xmm10,%xmm1
24397 .byte 76,139,72,16 // mov 0x10(%rax),%r9
24398 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24399 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
24400 .byte 102,72,15,126,211 // movq %xmm2,%rbx
24401 .byte 65,137,216 // mov %ebx,%r8d
24402 .byte 72,193,235,32 // shr $0x20,%rbx
24403 .byte 102,15,112,210,78 // pshufd $0x4e,%xmm2,%xmm2
24404 .byte 102,72,15,126,209 // movq %xmm2,%rcx
24405 .byte 65,137,202 // mov %ecx,%r10d
24406 .byte 72,193,233,32 // shr $0x20,%rcx
24407 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
24408 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
24409 .byte 193,225,8 // shl $0x8,%ecx
24410 .byte 68,9,209 // or %r10d,%ecx
24411 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
24412 .byte 65,15,182,28,25 // movzbl (%r9,%rbx,1),%ebx
24413 .byte 193,227,8 // shl $0x8,%ebx
24414 .byte 68,9,195 // or %r8d,%ebx
24415 .byte 102,15,196,211,0 // pinsrw $0x0,%ebx,%xmm2
24416 .byte 102,15,196,209,1 // pinsrw $0x1,%ecx,%xmm2
24417 .byte 102,65,15,96,209 // punpcklbw %xmm9,%xmm2
24418 .byte 102,65,15,97,209 // punpcklwd %xmm9,%xmm2
24419 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
24420 .byte 65,15,89,210 // mulps %xmm10,%xmm2
24421 .byte 72,139,64,24 // mov 0x18(%rax),%rax
24422 .byte 68,15,89,195 // mulps %xmm3,%xmm8
24423 .byte 102,65,15,91,216 // cvtps2dq %xmm8,%xmm3
24424 .byte 102,72,15,126,217 // movq %xmm3,%rcx
24425 .byte 65,137,200 // mov %ecx,%r8d
24426 .byte 72,193,233,32 // shr $0x20,%rcx
24427 .byte 102,15,112,219,78 // pshufd $0x4e,%xmm3,%xmm3
24428 .byte 102,72,15,126,219 // movq %xmm3,%rbx
24429 .byte 65,137,217 // mov %ebx,%r9d
24430 .byte 72,193,235,32 // shr $0x20,%rbx
24431 .byte 70,15,182,12,8 // movzbl (%rax,%r9,1),%r9d
24432 .byte 15,182,28,24 // movzbl (%rax,%rbx,1),%ebx
24433 .byte 193,227,8 // shl $0x8,%ebx
24434 .byte 68,9,203 // or %r9d,%ebx
24435 .byte 70,15,182,4,0 // movzbl (%rax,%r8,1),%r8d
24436 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
24437 .byte 193,224,8 // shl $0x8,%eax
24438 .byte 68,9,192 // or %r8d,%eax
24439 .byte 102,15,196,216,0 // pinsrw $0x0,%eax,%xmm3
24440 .byte 102,15,196,219,1 // pinsrw $0x1,%ebx,%xmm3
24441 .byte 102,65,15,96,217 // punpcklbw %xmm9,%xmm3
24442 .byte 102,65,15,97,217 // punpcklwd %xmm9,%xmm3
24443 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
24444 .byte 65,15,89,218 // mulps %xmm10,%xmm3
24445 .byte 72,173 // lods %ds:(%rsi),%rax
24446 .byte 91 // pop %rbx
24447 .byte 65,94 // pop %r14
24448 .byte 255,224 // jmpq *%rax
24449
24450HIDDEN _sk_byte_tables_rgb_sse2
24451.globl _sk_byte_tables_rgb_sse2
Mike Klein86714282017-04-13 17:37:38 -040024452FUNCTION(_sk_byte_tables_rgb_sse2)
Mike Klein40de6da2017-04-07 13:09:29 -040024453_sk_byte_tables_rgb_sse2:
24454 .byte 65,86 // push %r14
24455 .byte 83 // push %rbx
24456 .byte 72,173 // lods %ds:(%rsi),%rax
24457 .byte 139,72,24 // mov 0x18(%rax),%ecx
24458 .byte 255,201 // dec %ecx
24459 .byte 102,68,15,110,193 // movd %ecx,%xmm8
24460 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
24461 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
24462 .byte 65,15,89,192 // mulps %xmm8,%xmm0
24463 .byte 102,15,91,192 // cvtps2dq %xmm0,%xmm0
24464 .byte 102,72,15,126,193 // movq %xmm0,%rcx
24465 .byte 65,137,200 // mov %ecx,%r8d
24466 .byte 72,193,233,32 // shr $0x20,%rcx
24467 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
24468 .byte 102,73,15,126,193 // movq %xmm0,%r9
24469 .byte 69,137,202 // mov %r9d,%r10d
24470 .byte 77,137,203 // mov %r9,%r11
24471 .byte 73,193,235,32 // shr $0x20,%r11
24472 .byte 76,139,48 // mov (%rax),%r14
24473 .byte 76,139,72,8 // mov 0x8(%rax),%r9
24474 .byte 71,15,182,20,22 // movzbl (%r14,%r10,1),%r10d
24475 .byte 67,15,182,28,30 // movzbl (%r14,%r11,1),%ebx
24476 .byte 193,227,8 // shl $0x8,%ebx
24477 .byte 68,9,211 // or %r10d,%ebx
24478 .byte 71,15,182,4,6 // movzbl (%r14,%r8,1),%r8d
24479 .byte 65,15,182,12,14 // movzbl (%r14,%rcx,1),%ecx
24480 .byte 193,225,8 // shl $0x8,%ecx
24481 .byte 68,9,193 // or %r8d,%ecx
24482 .byte 102,15,196,193,0 // pinsrw $0x0,%ecx,%xmm0
24483 .byte 102,15,196,195,1 // pinsrw $0x1,%ebx,%xmm0
24484 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
24485 .byte 102,65,15,96,193 // punpcklbw %xmm9,%xmm0
24486 .byte 102,65,15,97,193 // punpcklwd %xmm9,%xmm0
24487 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
24488 .byte 185,129,128,128,59 // mov $0x3b808081,%ecx
24489 .byte 102,68,15,110,209 // movd %ecx,%xmm10
24490 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24491 .byte 65,15,89,194 // mulps %xmm10,%xmm0
24492 .byte 65,15,89,200 // mulps %xmm8,%xmm1
24493 .byte 102,15,91,201 // cvtps2dq %xmm1,%xmm1
24494 .byte 102,72,15,126,201 // movq %xmm1,%rcx
24495 .byte 65,137,200 // mov %ecx,%r8d
24496 .byte 72,193,233,32 // shr $0x20,%rcx
24497 .byte 102,15,112,201,78 // pshufd $0x4e,%xmm1,%xmm1
24498 .byte 102,72,15,126,203 // movq %xmm1,%rbx
24499 .byte 65,137,218 // mov %ebx,%r10d
24500 .byte 72,193,235,32 // shr $0x20,%rbx
24501 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
24502 .byte 65,15,182,28,25 // movzbl (%r9,%rbx,1),%ebx
24503 .byte 193,227,8 // shl $0x8,%ebx
24504 .byte 68,9,211 // or %r10d,%ebx
24505 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
24506 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
24507 .byte 193,225,8 // shl $0x8,%ecx
24508 .byte 68,9,193 // or %r8d,%ecx
24509 .byte 102,15,196,201,0 // pinsrw $0x0,%ecx,%xmm1
24510 .byte 102,15,196,203,1 // pinsrw $0x1,%ebx,%xmm1
24511 .byte 102,65,15,96,201 // punpcklbw %xmm9,%xmm1
24512 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
24513 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
24514 .byte 65,15,89,202 // mulps %xmm10,%xmm1
24515 .byte 72,139,64,16 // mov 0x10(%rax),%rax
24516 .byte 65,15,89,208 // mulps %xmm8,%xmm2
24517 .byte 102,15,91,210 // cvtps2dq %xmm2,%xmm2
24518 .byte 102,72,15,126,209 // movq %xmm2,%rcx
24519 .byte 65,137,200 // mov %ecx,%r8d
24520 .byte 72,193,233,32 // shr $0x20,%rcx
24521 .byte 102,15,112,210,78 // pshufd $0x4e,%xmm2,%xmm2
24522 .byte 102,72,15,126,211 // movq %xmm2,%rbx
24523 .byte 65,137,217 // mov %ebx,%r9d
24524 .byte 72,193,235,32 // shr $0x20,%rbx
24525 .byte 70,15,182,12,8 // movzbl (%rax,%r9,1),%r9d
24526 .byte 15,182,28,24 // movzbl (%rax,%rbx,1),%ebx
24527 .byte 193,227,8 // shl $0x8,%ebx
24528 .byte 68,9,203 // or %r9d,%ebx
24529 .byte 70,15,182,4,0 // movzbl (%rax,%r8,1),%r8d
24530 .byte 15,182,4,8 // movzbl (%rax,%rcx,1),%eax
24531 .byte 193,224,8 // shl $0x8,%eax
24532 .byte 68,9,192 // or %r8d,%eax
24533 .byte 102,15,196,208,0 // pinsrw $0x0,%eax,%xmm2
24534 .byte 102,15,196,211,1 // pinsrw $0x1,%ebx,%xmm2
24535 .byte 102,65,15,96,209 // punpcklbw %xmm9,%xmm2
24536 .byte 102,65,15,97,209 // punpcklwd %xmm9,%xmm2
24537 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
24538 .byte 65,15,89,210 // mulps %xmm10,%xmm2
24539 .byte 72,173 // lods %ds:(%rsi),%rax
24540 .byte 91 // pop %rbx
24541 .byte 65,94 // pop %r14
24542 .byte 255,224 // jmpq *%rax
24543
Mike Kleinc7d9c0b2017-04-17 14:43:59 -040024544HIDDEN _sk_table_r_sse2
24545.globl _sk_table_r_sse2
24546FUNCTION(_sk_table_r_sse2)
24547_sk_table_r_sse2:
24548 .byte 72,173 // lods %ds:(%rsi),%rax
24549 .byte 76,139,8 // mov (%rax),%r9
24550 .byte 139,64,8 // mov 0x8(%rax),%eax
24551 .byte 255,200 // dec %eax
24552 .byte 102,68,15,110,192 // movd %eax,%xmm8
24553 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
24554 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
24555 .byte 68,15,89,192 // mulps %xmm0,%xmm8
24556 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
24557 .byte 102,65,15,112,192,78 // pshufd $0x4e,%xmm8,%xmm0
24558 .byte 102,72,15,126,192 // movq %xmm0,%rax
24559 .byte 65,137,192 // mov %eax,%r8d
24560 .byte 72,193,232,32 // shr $0x20,%rax
24561 .byte 102,76,15,126,193 // movq %xmm8,%rcx
24562 .byte 65,137,202 // mov %ecx,%r10d
24563 .byte 72,193,233,32 // shr $0x20,%rcx
24564 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
24565 .byte 243,65,15,16,4,129 // movss (%r9,%rax,4),%xmm0
24566 .byte 68,15,20,192 // unpcklps %xmm0,%xmm8
24567 .byte 243,67,15,16,4,145 // movss (%r9,%r10,4),%xmm0
24568 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
24569 .byte 65,15,20,193 // unpcklps %xmm9,%xmm0
24570 .byte 65,15,20,192 // unpcklps %xmm8,%xmm0
24571 .byte 72,173 // lods %ds:(%rsi),%rax
24572 .byte 255,224 // jmpq *%rax
24573
24574HIDDEN _sk_table_g_sse2
24575.globl _sk_table_g_sse2
24576FUNCTION(_sk_table_g_sse2)
24577_sk_table_g_sse2:
24578 .byte 72,173 // lods %ds:(%rsi),%rax
24579 .byte 76,139,8 // mov (%rax),%r9
24580 .byte 139,64,8 // mov 0x8(%rax),%eax
24581 .byte 255,200 // dec %eax
24582 .byte 102,68,15,110,192 // movd %eax,%xmm8
24583 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
24584 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
24585 .byte 68,15,89,193 // mulps %xmm1,%xmm8
24586 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
24587 .byte 102,65,15,112,200,78 // pshufd $0x4e,%xmm8,%xmm1
24588 .byte 102,72,15,126,200 // movq %xmm1,%rax
24589 .byte 65,137,192 // mov %eax,%r8d
24590 .byte 72,193,232,32 // shr $0x20,%rax
24591 .byte 102,76,15,126,193 // movq %xmm8,%rcx
24592 .byte 65,137,202 // mov %ecx,%r10d
24593 .byte 72,193,233,32 // shr $0x20,%rcx
24594 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
24595 .byte 243,65,15,16,12,129 // movss (%r9,%rax,4),%xmm1
24596 .byte 68,15,20,193 // unpcklps %xmm1,%xmm8
24597 .byte 243,67,15,16,12,145 // movss (%r9,%r10,4),%xmm1
24598 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
24599 .byte 65,15,20,201 // unpcklps %xmm9,%xmm1
24600 .byte 65,15,20,200 // unpcklps %xmm8,%xmm1
24601 .byte 72,173 // lods %ds:(%rsi),%rax
24602 .byte 255,224 // jmpq *%rax
24603
24604HIDDEN _sk_table_b_sse2
24605.globl _sk_table_b_sse2
24606FUNCTION(_sk_table_b_sse2)
24607_sk_table_b_sse2:
24608 .byte 72,173 // lods %ds:(%rsi),%rax
24609 .byte 76,139,8 // mov (%rax),%r9
24610 .byte 139,64,8 // mov 0x8(%rax),%eax
24611 .byte 255,200 // dec %eax
24612 .byte 102,68,15,110,192 // movd %eax,%xmm8
24613 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
24614 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
24615 .byte 68,15,89,194 // mulps %xmm2,%xmm8
24616 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
24617 .byte 102,65,15,112,208,78 // pshufd $0x4e,%xmm8,%xmm2
24618 .byte 102,72,15,126,208 // movq %xmm2,%rax
24619 .byte 65,137,192 // mov %eax,%r8d
24620 .byte 72,193,232,32 // shr $0x20,%rax
24621 .byte 102,76,15,126,193 // movq %xmm8,%rcx
24622 .byte 65,137,202 // mov %ecx,%r10d
24623 .byte 72,193,233,32 // shr $0x20,%rcx
24624 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
24625 .byte 243,65,15,16,20,129 // movss (%r9,%rax,4),%xmm2
24626 .byte 68,15,20,194 // unpcklps %xmm2,%xmm8
24627 .byte 243,67,15,16,20,145 // movss (%r9,%r10,4),%xmm2
24628 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
24629 .byte 65,15,20,209 // unpcklps %xmm9,%xmm2
24630 .byte 65,15,20,208 // unpcklps %xmm8,%xmm2
24631 .byte 72,173 // lods %ds:(%rsi),%rax
24632 .byte 255,224 // jmpq *%rax
24633
24634HIDDEN _sk_table_a_sse2
24635.globl _sk_table_a_sse2
24636FUNCTION(_sk_table_a_sse2)
24637_sk_table_a_sse2:
24638 .byte 72,173 // lods %ds:(%rsi),%rax
24639 .byte 76,139,8 // mov (%rax),%r9
24640 .byte 139,64,8 // mov 0x8(%rax),%eax
24641 .byte 255,200 // dec %eax
24642 .byte 102,68,15,110,192 // movd %eax,%xmm8
24643 .byte 102,69,15,112,192,0 // pshufd $0x0,%xmm8,%xmm8
24644 .byte 69,15,91,192 // cvtdq2ps %xmm8,%xmm8
24645 .byte 68,15,89,195 // mulps %xmm3,%xmm8
24646 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
24647 .byte 102,65,15,112,216,78 // pshufd $0x4e,%xmm8,%xmm3
24648 .byte 102,72,15,126,216 // movq %xmm3,%rax
24649 .byte 65,137,192 // mov %eax,%r8d
24650 .byte 72,193,232,32 // shr $0x20,%rax
24651 .byte 102,76,15,126,193 // movq %xmm8,%rcx
24652 .byte 65,137,202 // mov %ecx,%r10d
24653 .byte 72,193,233,32 // shr $0x20,%rcx
24654 .byte 243,69,15,16,4,137 // movss (%r9,%rcx,4),%xmm8
24655 .byte 243,65,15,16,28,129 // movss (%r9,%rax,4),%xmm3
24656 .byte 68,15,20,195 // unpcklps %xmm3,%xmm8
24657 .byte 243,67,15,16,28,145 // movss (%r9,%r10,4),%xmm3
24658 .byte 243,71,15,16,12,129 // movss (%r9,%r8,4),%xmm9
24659 .byte 65,15,20,217 // unpcklps %xmm9,%xmm3
24660 .byte 65,15,20,216 // unpcklps %xmm8,%xmm3
24661 .byte 72,173 // lods %ds:(%rsi),%rax
24662 .byte 255,224 // jmpq *%rax
24663
Mike Klein44375172017-04-17 19:32:05 -040024664HIDDEN _sk_parametric_r_sse2
24665.globl _sk_parametric_r_sse2
24666FUNCTION(_sk_parametric_r_sse2)
24667_sk_parametric_r_sse2:
24668 .byte 72,173 // lods %ds:(%rsi),%rax
24669 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
24670 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24671 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
24672 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24673 .byte 68,15,89,192 // mulps %xmm0,%xmm8
Mike Kleinda164342017-04-19 14:33:58 -040024674 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
24675 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24676 .byte 68,15,89,216 // mulps %xmm0,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040024677 .byte 65,15,194,193,2 // cmpleps %xmm9,%xmm0
24678 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
24679 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24680 .byte 69,15,88,193 // addps %xmm9,%xmm8
24681 .byte 243,68,15,16,8 // movss (%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040024682 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
24683 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24684 .byte 69,15,88,218 // addps %xmm10,%xmm11
24685 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040024686 .byte 185,0,0,0,52 // mov $0x34000000,%ecx
Mike Klein44375172017-04-17 19:32:05 -040024687 .byte 102,68,15,110,209 // movd %ecx,%xmm10
24688 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
Mike Kleinda164342017-04-19 14:33:58 -040024689 .byte 69,15,89,212 // mulps %xmm12,%xmm10
24690 .byte 185,255,255,127,0 // mov $0x7fffff,%ecx
24691 .byte 102,68,15,110,225 // movd %ecx,%xmm12
24692 .byte 102,69,15,112,236,0 // pshufd $0x0,%xmm12,%xmm13
24693 .byte 102,69,15,219,235 // pand %xmm11,%xmm13
24694 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
24695 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24696 .byte 102,69,15,112,227,0 // pshufd $0x0,%xmm11,%xmm12
24697 .byte 102,69,15,235,229 // por %xmm13,%xmm12
24698 .byte 185,119,115,248,66 // mov $0x42f87377,%ecx
24699 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24700 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24701 .byte 69,15,92,211 // subps %xmm11,%xmm10
24702 .byte 185,117,191,191,63 // mov $0x3fbfbf75,%ecx
24703 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24704 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24705 .byte 69,15,89,220 // mulps %xmm12,%xmm11
24706 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024707 .byte 185,163,233,220,63 // mov $0x3fdce9a3,%ecx
24708 .byte 102,68,15,110,233 // movd %ecx,%xmm13
24709 .byte 185,249,68,180,62 // mov $0x3eb444f9,%ecx
24710 .byte 102,68,15,110,241 // movd %ecx,%xmm14
24711 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040024712 .byte 102,68,15,110,217 // movd %ecx,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040024713 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
24714 .byte 185,81,140,242,66 // mov $0x42f28c51,%ecx
24715 .byte 102,68,15,110,249 // movd %ecx,%xmm15
Mike Kleinda164342017-04-19 14:33:58 -040024716 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Klein44375172017-04-17 19:32:05 -040024717 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
24718 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
Mike Kleinda164342017-04-19 14:33:58 -040024719 .byte 69,15,88,244 // addps %xmm12,%xmm14
Mike Klein44375172017-04-17 19:32:05 -040024720 .byte 69,15,94,238 // divps %xmm14,%xmm13
Mike Kleinda164342017-04-19 14:33:58 -040024721 .byte 69,15,92,213 // subps %xmm13,%xmm10
24722 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24723 .byte 243,69,15,91,202 // cvttps2dq %xmm10,%xmm9
24724 .byte 69,15,91,225 // cvtdq2ps %xmm9,%xmm12
24725 .byte 69,15,40,234 // movaps %xmm10,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040024726 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
Mike Kleinda164342017-04-19 14:33:58 -040024727 .byte 69,15,88,250 // addps %xmm10,%xmm15
24728 .byte 69,15,194,212,1 // cmpltps %xmm12,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024729 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040024730 .byte 69,15,84,211 // andps %xmm11,%xmm10
24731 .byte 69,15,87,201 // xorps %xmm9,%xmm9
24732 .byte 69,15,92,226 // subps %xmm10,%xmm12
24733 .byte 69,15,92,236 // subps %xmm12,%xmm13
24734 .byte 102,69,15,110,208 // movd %r8d,%xmm10
24735 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024736 .byte 185,141,188,190,63 // mov $0x3fbebc8d,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040024737 .byte 102,68,15,110,225 // movd %ecx,%xmm12
24738 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24739 .byte 69,15,89,229 // mulps %xmm13,%xmm12
24740 .byte 69,15,92,252 // subps %xmm12,%xmm15
Mike Klein44375172017-04-17 19:32:05 -040024741 .byte 185,254,210,221,65 // mov $0x41ddd2fe,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040024742 .byte 102,68,15,110,225 // movd %ecx,%xmm12
24743 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040024744 .byte 185,248,245,154,64 // mov $0x409af5f8,%ecx
24745 .byte 102,68,15,110,241 // movd %ecx,%xmm14
24746 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
Mike Kleinda164342017-04-19 14:33:58 -040024747 .byte 69,15,92,245 // subps %xmm13,%xmm14
24748 .byte 69,15,94,230 // divps %xmm14,%xmm12
24749 .byte 69,15,88,231 // addps %xmm15,%xmm12
24750 .byte 69,15,89,226 // mulps %xmm10,%xmm12
24751 .byte 102,69,15,91,212 // cvtps2dq %xmm12,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024752 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
24753 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinda164342017-04-19 14:33:58 -040024754 .byte 69,15,88,226 // addps %xmm10,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040024755 .byte 68,15,84,192 // andps %xmm0,%xmm8
24756 .byte 65,15,85,196 // andnps %xmm12,%xmm0
24757 .byte 65,15,86,192 // orps %xmm8,%xmm0
24758 .byte 65,15,95,193 // maxps %xmm9,%xmm0
Mike Kleinda164342017-04-19 14:33:58 -040024759 .byte 65,15,93,195 // minps %xmm11,%xmm0
Mike Klein44375172017-04-17 19:32:05 -040024760 .byte 72,173 // lods %ds:(%rsi),%rax
24761 .byte 255,224 // jmpq *%rax
24762
24763HIDDEN _sk_parametric_g_sse2
24764.globl _sk_parametric_g_sse2
24765FUNCTION(_sk_parametric_g_sse2)
24766_sk_parametric_g_sse2:
24767 .byte 72,173 // lods %ds:(%rsi),%rax
24768 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
24769 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24770 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
24771 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24772 .byte 68,15,89,193 // mulps %xmm1,%xmm8
Mike Kleinda164342017-04-19 14:33:58 -040024773 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
24774 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24775 .byte 68,15,89,217 // mulps %xmm1,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040024776 .byte 65,15,194,201,2 // cmpleps %xmm9,%xmm1
24777 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
24778 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24779 .byte 69,15,88,193 // addps %xmm9,%xmm8
24780 .byte 243,68,15,16,8 // movss (%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040024781 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
24782 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24783 .byte 69,15,88,218 // addps %xmm10,%xmm11
24784 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040024785 .byte 185,0,0,0,52 // mov $0x34000000,%ecx
Mike Klein44375172017-04-17 19:32:05 -040024786 .byte 102,68,15,110,209 // movd %ecx,%xmm10
24787 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
Mike Kleinda164342017-04-19 14:33:58 -040024788 .byte 69,15,89,212 // mulps %xmm12,%xmm10
24789 .byte 185,255,255,127,0 // mov $0x7fffff,%ecx
24790 .byte 102,68,15,110,225 // movd %ecx,%xmm12
24791 .byte 102,69,15,112,236,0 // pshufd $0x0,%xmm12,%xmm13
24792 .byte 102,69,15,219,235 // pand %xmm11,%xmm13
24793 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
24794 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24795 .byte 102,69,15,112,227,0 // pshufd $0x0,%xmm11,%xmm12
24796 .byte 102,69,15,235,229 // por %xmm13,%xmm12
24797 .byte 185,119,115,248,66 // mov $0x42f87377,%ecx
24798 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24799 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24800 .byte 69,15,92,211 // subps %xmm11,%xmm10
24801 .byte 185,117,191,191,63 // mov $0x3fbfbf75,%ecx
24802 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24803 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24804 .byte 69,15,89,220 // mulps %xmm12,%xmm11
24805 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024806 .byte 185,163,233,220,63 // mov $0x3fdce9a3,%ecx
24807 .byte 102,68,15,110,233 // movd %ecx,%xmm13
24808 .byte 185,249,68,180,62 // mov $0x3eb444f9,%ecx
24809 .byte 102,68,15,110,241 // movd %ecx,%xmm14
24810 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040024811 .byte 102,68,15,110,217 // movd %ecx,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040024812 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
24813 .byte 185,81,140,242,66 // mov $0x42f28c51,%ecx
24814 .byte 102,68,15,110,249 // movd %ecx,%xmm15
Mike Kleinda164342017-04-19 14:33:58 -040024815 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Klein44375172017-04-17 19:32:05 -040024816 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
24817 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
Mike Kleinda164342017-04-19 14:33:58 -040024818 .byte 69,15,88,244 // addps %xmm12,%xmm14
Mike Klein44375172017-04-17 19:32:05 -040024819 .byte 69,15,94,238 // divps %xmm14,%xmm13
Mike Kleinda164342017-04-19 14:33:58 -040024820 .byte 69,15,92,213 // subps %xmm13,%xmm10
24821 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24822 .byte 243,69,15,91,202 // cvttps2dq %xmm10,%xmm9
24823 .byte 69,15,91,225 // cvtdq2ps %xmm9,%xmm12
24824 .byte 69,15,40,234 // movaps %xmm10,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040024825 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
Mike Kleinda164342017-04-19 14:33:58 -040024826 .byte 69,15,88,250 // addps %xmm10,%xmm15
24827 .byte 69,15,194,212,1 // cmpltps %xmm12,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024828 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040024829 .byte 69,15,84,211 // andps %xmm11,%xmm10
24830 .byte 69,15,87,201 // xorps %xmm9,%xmm9
24831 .byte 69,15,92,226 // subps %xmm10,%xmm12
24832 .byte 69,15,92,236 // subps %xmm12,%xmm13
24833 .byte 102,69,15,110,208 // movd %r8d,%xmm10
24834 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024835 .byte 185,141,188,190,63 // mov $0x3fbebc8d,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040024836 .byte 102,68,15,110,225 // movd %ecx,%xmm12
24837 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24838 .byte 69,15,89,229 // mulps %xmm13,%xmm12
24839 .byte 69,15,92,252 // subps %xmm12,%xmm15
Mike Klein44375172017-04-17 19:32:05 -040024840 .byte 185,254,210,221,65 // mov $0x41ddd2fe,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040024841 .byte 102,68,15,110,225 // movd %ecx,%xmm12
24842 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040024843 .byte 185,248,245,154,64 // mov $0x409af5f8,%ecx
24844 .byte 102,68,15,110,241 // movd %ecx,%xmm14
24845 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
Mike Kleinda164342017-04-19 14:33:58 -040024846 .byte 69,15,92,245 // subps %xmm13,%xmm14
24847 .byte 69,15,94,230 // divps %xmm14,%xmm12
24848 .byte 69,15,88,231 // addps %xmm15,%xmm12
24849 .byte 69,15,89,226 // mulps %xmm10,%xmm12
24850 .byte 102,69,15,91,212 // cvtps2dq %xmm12,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024851 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
24852 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinda164342017-04-19 14:33:58 -040024853 .byte 69,15,88,226 // addps %xmm10,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040024854 .byte 68,15,84,193 // andps %xmm1,%xmm8
24855 .byte 65,15,85,204 // andnps %xmm12,%xmm1
24856 .byte 65,15,86,200 // orps %xmm8,%xmm1
24857 .byte 65,15,95,201 // maxps %xmm9,%xmm1
Mike Kleinda164342017-04-19 14:33:58 -040024858 .byte 65,15,93,203 // minps %xmm11,%xmm1
Mike Klein44375172017-04-17 19:32:05 -040024859 .byte 72,173 // lods %ds:(%rsi),%rax
24860 .byte 255,224 // jmpq *%rax
24861
24862HIDDEN _sk_parametric_b_sse2
24863.globl _sk_parametric_b_sse2
24864FUNCTION(_sk_parametric_b_sse2)
24865_sk_parametric_b_sse2:
24866 .byte 72,173 // lods %ds:(%rsi),%rax
24867 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
24868 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24869 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
24870 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24871 .byte 68,15,89,194 // mulps %xmm2,%xmm8
Mike Kleinda164342017-04-19 14:33:58 -040024872 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
24873 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24874 .byte 68,15,89,218 // mulps %xmm2,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040024875 .byte 65,15,194,209,2 // cmpleps %xmm9,%xmm2
24876 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
24877 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24878 .byte 69,15,88,193 // addps %xmm9,%xmm8
24879 .byte 243,68,15,16,8 // movss (%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040024880 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
24881 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24882 .byte 69,15,88,218 // addps %xmm10,%xmm11
24883 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040024884 .byte 185,0,0,0,52 // mov $0x34000000,%ecx
Mike Klein44375172017-04-17 19:32:05 -040024885 .byte 102,68,15,110,209 // movd %ecx,%xmm10
24886 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
Mike Kleinda164342017-04-19 14:33:58 -040024887 .byte 69,15,89,212 // mulps %xmm12,%xmm10
24888 .byte 185,255,255,127,0 // mov $0x7fffff,%ecx
24889 .byte 102,68,15,110,225 // movd %ecx,%xmm12
24890 .byte 102,69,15,112,236,0 // pshufd $0x0,%xmm12,%xmm13
24891 .byte 102,69,15,219,235 // pand %xmm11,%xmm13
24892 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
24893 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24894 .byte 102,69,15,112,227,0 // pshufd $0x0,%xmm11,%xmm12
24895 .byte 102,69,15,235,229 // por %xmm13,%xmm12
24896 .byte 185,119,115,248,66 // mov $0x42f87377,%ecx
24897 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24898 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24899 .byte 69,15,92,211 // subps %xmm11,%xmm10
24900 .byte 185,117,191,191,63 // mov $0x3fbfbf75,%ecx
24901 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24902 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24903 .byte 69,15,89,220 // mulps %xmm12,%xmm11
24904 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024905 .byte 185,163,233,220,63 // mov $0x3fdce9a3,%ecx
24906 .byte 102,68,15,110,233 // movd %ecx,%xmm13
24907 .byte 185,249,68,180,62 // mov $0x3eb444f9,%ecx
24908 .byte 102,68,15,110,241 // movd %ecx,%xmm14
24909 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040024910 .byte 102,68,15,110,217 // movd %ecx,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040024911 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
24912 .byte 185,81,140,242,66 // mov $0x42f28c51,%ecx
24913 .byte 102,68,15,110,249 // movd %ecx,%xmm15
Mike Kleinda164342017-04-19 14:33:58 -040024914 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Klein44375172017-04-17 19:32:05 -040024915 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
24916 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
Mike Kleinda164342017-04-19 14:33:58 -040024917 .byte 69,15,88,244 // addps %xmm12,%xmm14
Mike Klein44375172017-04-17 19:32:05 -040024918 .byte 69,15,94,238 // divps %xmm14,%xmm13
Mike Kleinda164342017-04-19 14:33:58 -040024919 .byte 69,15,92,213 // subps %xmm13,%xmm10
24920 .byte 69,15,89,209 // mulps %xmm9,%xmm10
24921 .byte 243,69,15,91,202 // cvttps2dq %xmm10,%xmm9
24922 .byte 69,15,91,225 // cvtdq2ps %xmm9,%xmm12
24923 .byte 69,15,40,234 // movaps %xmm10,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040024924 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
Mike Kleinda164342017-04-19 14:33:58 -040024925 .byte 69,15,88,250 // addps %xmm10,%xmm15
24926 .byte 69,15,194,212,1 // cmpltps %xmm12,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024927 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040024928 .byte 69,15,84,211 // andps %xmm11,%xmm10
24929 .byte 69,15,87,201 // xorps %xmm9,%xmm9
24930 .byte 69,15,92,226 // subps %xmm10,%xmm12
24931 .byte 69,15,92,236 // subps %xmm12,%xmm13
24932 .byte 102,69,15,110,208 // movd %r8d,%xmm10
24933 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024934 .byte 185,141,188,190,63 // mov $0x3fbebc8d,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040024935 .byte 102,68,15,110,225 // movd %ecx,%xmm12
24936 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
24937 .byte 69,15,89,229 // mulps %xmm13,%xmm12
24938 .byte 69,15,92,252 // subps %xmm12,%xmm15
Mike Klein44375172017-04-17 19:32:05 -040024939 .byte 185,254,210,221,65 // mov $0x41ddd2fe,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040024940 .byte 102,68,15,110,225 // movd %ecx,%xmm12
24941 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040024942 .byte 185,248,245,154,64 // mov $0x409af5f8,%ecx
24943 .byte 102,68,15,110,241 // movd %ecx,%xmm14
24944 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
Mike Kleinda164342017-04-19 14:33:58 -040024945 .byte 69,15,92,245 // subps %xmm13,%xmm14
24946 .byte 69,15,94,230 // divps %xmm14,%xmm12
24947 .byte 69,15,88,231 // addps %xmm15,%xmm12
24948 .byte 69,15,89,226 // mulps %xmm10,%xmm12
24949 .byte 102,69,15,91,212 // cvtps2dq %xmm12,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040024950 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
24951 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinda164342017-04-19 14:33:58 -040024952 .byte 69,15,88,226 // addps %xmm10,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040024953 .byte 68,15,84,194 // andps %xmm2,%xmm8
24954 .byte 65,15,85,212 // andnps %xmm12,%xmm2
24955 .byte 65,15,86,208 // orps %xmm8,%xmm2
24956 .byte 65,15,95,209 // maxps %xmm9,%xmm2
Mike Kleinda164342017-04-19 14:33:58 -040024957 .byte 65,15,93,211 // minps %xmm11,%xmm2
Mike Klein44375172017-04-17 19:32:05 -040024958 .byte 72,173 // lods %ds:(%rsi),%rax
24959 .byte 255,224 // jmpq *%rax
24960
24961HIDDEN _sk_parametric_a_sse2
24962.globl _sk_parametric_a_sse2
24963FUNCTION(_sk_parametric_a_sse2)
24964_sk_parametric_a_sse2:
24965 .byte 72,173 // lods %ds:(%rsi),%rax
24966 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
24967 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24968 .byte 243,68,15,16,64,12 // movss 0xc(%rax),%xmm8
24969 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
24970 .byte 68,15,89,195 // mulps %xmm3,%xmm8
Mike Kleinda164342017-04-19 14:33:58 -040024971 .byte 243,68,15,16,88,4 // movss 0x4(%rax),%xmm11
24972 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24973 .byte 68,15,89,219 // mulps %xmm3,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040024974 .byte 65,15,194,217,2 // cmpleps %xmm9,%xmm3
24975 .byte 243,68,15,16,72,24 // movss 0x18(%rax),%xmm9
24976 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
24977 .byte 69,15,88,193 // addps %xmm9,%xmm8
24978 .byte 243,68,15,16,8 // movss (%rax),%xmm9
Mike Kleinda164342017-04-19 14:33:58 -040024979 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
24980 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
24981 .byte 69,15,88,218 // addps %xmm10,%xmm11
24982 .byte 69,15,91,227 // cvtdq2ps %xmm11,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040024983 .byte 185,0,0,0,52 // mov $0x34000000,%ecx
Mike Klein44375172017-04-17 19:32:05 -040024984 .byte 102,68,15,110,209 // movd %ecx,%xmm10
24985 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
Mike Kleinda164342017-04-19 14:33:58 -040024986 .byte 69,15,89,212 // mulps %xmm12,%xmm10
24987 .byte 185,255,255,127,0 // mov $0x7fffff,%ecx
24988 .byte 102,68,15,110,225 // movd %ecx,%xmm12
24989 .byte 102,69,15,112,236,0 // pshufd $0x0,%xmm12,%xmm13
24990 .byte 102,69,15,219,235 // pand %xmm11,%xmm13
24991 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
24992 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24993 .byte 102,69,15,112,227,0 // pshufd $0x0,%xmm11,%xmm12
24994 .byte 102,69,15,235,229 // por %xmm13,%xmm12
24995 .byte 185,119,115,248,66 // mov $0x42f87377,%ecx
24996 .byte 102,68,15,110,217 // movd %ecx,%xmm11
24997 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
24998 .byte 69,15,92,211 // subps %xmm11,%xmm10
24999 .byte 185,117,191,191,63 // mov $0x3fbfbf75,%ecx
25000 .byte 102,68,15,110,217 // movd %ecx,%xmm11
25001 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
25002 .byte 69,15,89,220 // mulps %xmm12,%xmm11
25003 .byte 69,15,92,211 // subps %xmm11,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025004 .byte 185,163,233,220,63 // mov $0x3fdce9a3,%ecx
25005 .byte 102,68,15,110,233 // movd %ecx,%xmm13
25006 .byte 185,249,68,180,62 // mov $0x3eb444f9,%ecx
25007 .byte 102,68,15,110,241 // movd %ecx,%xmm14
25008 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040025009 .byte 102,68,15,110,217 // movd %ecx,%xmm11
Mike Klein44375172017-04-17 19:32:05 -040025010 .byte 65,184,0,0,0,75 // mov $0x4b000000,%r8d
25011 .byte 185,81,140,242,66 // mov $0x42f28c51,%ecx
25012 .byte 102,68,15,110,249 // movd %ecx,%xmm15
Mike Kleinda164342017-04-19 14:33:58 -040025013 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
Mike Klein44375172017-04-17 19:32:05 -040025014 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
25015 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
Mike Kleinda164342017-04-19 14:33:58 -040025016 .byte 69,15,88,244 // addps %xmm12,%xmm14
Mike Klein44375172017-04-17 19:32:05 -040025017 .byte 69,15,94,238 // divps %xmm14,%xmm13
Mike Kleinda164342017-04-19 14:33:58 -040025018 .byte 69,15,92,213 // subps %xmm13,%xmm10
25019 .byte 69,15,89,209 // mulps %xmm9,%xmm10
25020 .byte 243,69,15,91,202 // cvttps2dq %xmm10,%xmm9
25021 .byte 69,15,91,225 // cvtdq2ps %xmm9,%xmm12
25022 .byte 69,15,40,234 // movaps %xmm10,%xmm13
Mike Klein44375172017-04-17 19:32:05 -040025023 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
Mike Kleinda164342017-04-19 14:33:58 -040025024 .byte 69,15,88,250 // addps %xmm10,%xmm15
25025 .byte 69,15,194,212,1 // cmpltps %xmm12,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025026 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
Mike Kleinda164342017-04-19 14:33:58 -040025027 .byte 69,15,84,211 // andps %xmm11,%xmm10
25028 .byte 69,15,87,201 // xorps %xmm9,%xmm9
25029 .byte 69,15,92,226 // subps %xmm10,%xmm12
25030 .byte 69,15,92,236 // subps %xmm12,%xmm13
25031 .byte 102,69,15,110,208 // movd %r8d,%xmm10
25032 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025033 .byte 185,141,188,190,63 // mov $0x3fbebc8d,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040025034 .byte 102,68,15,110,225 // movd %ecx,%xmm12
25035 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
25036 .byte 69,15,89,229 // mulps %xmm13,%xmm12
25037 .byte 69,15,92,252 // subps %xmm12,%xmm15
Mike Klein44375172017-04-17 19:32:05 -040025038 .byte 185,254,210,221,65 // mov $0x41ddd2fe,%ecx
Mike Kleinda164342017-04-19 14:33:58 -040025039 .byte 102,68,15,110,225 // movd %ecx,%xmm12
25040 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040025041 .byte 185,248,245,154,64 // mov $0x409af5f8,%ecx
25042 .byte 102,68,15,110,241 // movd %ecx,%xmm14
25043 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
Mike Kleinda164342017-04-19 14:33:58 -040025044 .byte 69,15,92,245 // subps %xmm13,%xmm14
25045 .byte 69,15,94,230 // divps %xmm14,%xmm12
25046 .byte 69,15,88,231 // addps %xmm15,%xmm12
25047 .byte 69,15,89,226 // mulps %xmm10,%xmm12
25048 .byte 102,69,15,91,212 // cvtps2dq %xmm12,%xmm10
Mike Klein44375172017-04-17 19:32:05 -040025049 .byte 243,68,15,16,96,20 // movss 0x14(%rax),%xmm12
25050 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
Mike Kleinda164342017-04-19 14:33:58 -040025051 .byte 69,15,88,226 // addps %xmm10,%xmm12
Mike Klein44375172017-04-17 19:32:05 -040025052 .byte 68,15,84,195 // andps %xmm3,%xmm8
25053 .byte 65,15,85,220 // andnps %xmm12,%xmm3
25054 .byte 65,15,86,216 // orps %xmm8,%xmm3
25055 .byte 65,15,95,217 // maxps %xmm9,%xmm3
Mike Kleinda164342017-04-19 14:33:58 -040025056 .byte 65,15,93,219 // minps %xmm11,%xmm3
Mike Klein44375172017-04-17 19:32:05 -040025057 .byte 72,173 // lods %ds:(%rsi),%rax
25058 .byte 255,224 // jmpq *%rax
25059
Mike Klein7c4af542017-03-29 18:21:14 -040025060HIDDEN _sk_load_a8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025061.globl _sk_load_a8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025062FUNCTION(_sk_load_a8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025063_sk_load_a8_sse2:
25064 .byte 72,173 // lods %ds:(%rsi),%rax
25065 .byte 72,139,0 // mov (%rax),%rax
25066 .byte 102,15,110,4,56 // movd (%rax,%rdi,1),%xmm0
25067 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25068 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
25069 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
25070 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
25071 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
25072 .byte 102,15,110,216 // movd %eax,%xmm3
25073 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
25074 .byte 15,89,216 // mulps %xmm0,%xmm3
25075 .byte 72,173 // lods %ds:(%rsi),%rax
25076 .byte 15,87,192 // xorps %xmm0,%xmm0
25077 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25078 .byte 15,87,210 // xorps %xmm2,%xmm2
25079 .byte 255,224 // jmpq *%rax
25080
Mike Klein21bd3e42017-04-06 16:32:29 -040025081HIDDEN _sk_gather_a8_sse2
25082.globl _sk_gather_a8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025083FUNCTION(_sk_gather_a8_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040025084_sk_gather_a8_sse2:
25085 .byte 72,173 // lods %ds:(%rsi),%rax
25086 .byte 76,139,8 // mov (%rax),%r9
25087 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25088 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25089 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25090 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25091 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25092 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25093 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25094 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25095 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25096 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25097 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25098 .byte 102,72,15,126,192 // movq %xmm0,%rax
25099 .byte 65,137,192 // mov %eax,%r8d
25100 .byte 72,193,232,32 // shr $0x20,%rax
25101 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
25102 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25103 .byte 65,137,202 // mov %ecx,%r10d
25104 .byte 72,193,233,32 // shr $0x20,%rcx
25105 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
25106 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
25107 .byte 193,225,8 // shl $0x8,%ecx
25108 .byte 68,9,209 // or %r10d,%ecx
25109 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
25110 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
25111 .byte 193,224,8 // shl $0x8,%eax
25112 .byte 68,9,192 // or %r8d,%eax
25113 .byte 102,15,196,192,0 // pinsrw $0x0,%eax,%xmm0
25114 .byte 102,15,196,193,1 // pinsrw $0x1,%ecx,%xmm0
25115 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25116 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
25117 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
25118 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
25119 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
25120 .byte 102,15,110,216 // movd %eax,%xmm3
25121 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
25122 .byte 15,89,216 // mulps %xmm0,%xmm3
25123 .byte 72,173 // lods %ds:(%rsi),%rax
25124 .byte 15,87,192 // xorps %xmm0,%xmm0
25125 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25126 .byte 102,15,239,210 // pxor %xmm2,%xmm2
25127 .byte 255,224 // jmpq *%rax
25128
Mike Klein7c4af542017-03-29 18:21:14 -040025129HIDDEN _sk_store_a8_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025130.globl _sk_store_a8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025131FUNCTION(_sk_store_a8_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025132_sk_store_a8_sse2:
25133 .byte 72,173 // lods %ds:(%rsi),%rax
25134 .byte 72,139,0 // mov (%rax),%rax
25135 .byte 185,0,0,127,67 // mov $0x437f0000,%ecx
25136 .byte 102,68,15,110,193 // movd %ecx,%xmm8
25137 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25138 .byte 68,15,89,195 // mulps %xmm3,%xmm8
25139 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25140 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
25141 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
25142 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
25143 .byte 102,69,15,103,192 // packuswb %xmm8,%xmm8
25144 .byte 102,68,15,126,4,56 // movd %xmm8,(%rax,%rdi,1)
25145 .byte 72,173 // lods %ds:(%rsi),%rax
25146 .byte 255,224 // jmpq *%rax
25147
Mike Kleinf809fef2017-03-31 13:52:45 -040025148HIDDEN _sk_load_g8_sse2
25149.globl _sk_load_g8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025150FUNCTION(_sk_load_g8_sse2)
Mike Kleinf809fef2017-03-31 13:52:45 -040025151_sk_load_g8_sse2:
25152 .byte 72,173 // lods %ds:(%rsi),%rax
25153 .byte 72,139,0 // mov (%rax),%rax
25154 .byte 102,15,110,4,56 // movd (%rax,%rdi,1),%xmm0
25155 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25156 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
25157 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
25158 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
25159 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
25160 .byte 102,15,110,192 // movd %eax,%xmm0
25161 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
25162 .byte 15,89,193 // mulps %xmm1,%xmm0
25163 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
25164 .byte 102,15,110,216 // movd %eax,%xmm3
25165 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
25166 .byte 72,173 // lods %ds:(%rsi),%rax
25167 .byte 15,40,200 // movaps %xmm0,%xmm1
25168 .byte 15,40,208 // movaps %xmm0,%xmm2
25169 .byte 255,224 // jmpq *%rax
25170
Mike Klein21bd3e42017-04-06 16:32:29 -040025171HIDDEN _sk_gather_g8_sse2
25172.globl _sk_gather_g8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025173FUNCTION(_sk_gather_g8_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040025174_sk_gather_g8_sse2:
25175 .byte 72,173 // lods %ds:(%rsi),%rax
25176 .byte 76,139,8 // mov (%rax),%r9
25177 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25178 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25179 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25180 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25181 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25182 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25183 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25184 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25185 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25186 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25187 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25188 .byte 102,72,15,126,192 // movq %xmm0,%rax
25189 .byte 65,137,192 // mov %eax,%r8d
25190 .byte 72,193,232,32 // shr $0x20,%rax
25191 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
25192 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25193 .byte 65,137,202 // mov %ecx,%r10d
25194 .byte 72,193,233,32 // shr $0x20,%rcx
25195 .byte 71,15,182,20,17 // movzbl (%r9,%r10,1),%r10d
25196 .byte 65,15,182,12,9 // movzbl (%r9,%rcx,1),%ecx
25197 .byte 193,225,8 // shl $0x8,%ecx
25198 .byte 68,9,209 // or %r10d,%ecx
25199 .byte 71,15,182,4,1 // movzbl (%r9,%r8,1),%r8d
25200 .byte 65,15,182,4,1 // movzbl (%r9,%rax,1),%eax
25201 .byte 193,224,8 // shl $0x8,%eax
25202 .byte 68,9,192 // or %r8d,%eax
25203 .byte 102,15,196,192,0 // pinsrw $0x0,%eax,%xmm0
25204 .byte 102,15,196,193,1 // pinsrw $0x1,%ecx,%xmm0
25205 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25206 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
25207 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
25208 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
25209 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
25210 .byte 102,15,110,192 // movd %eax,%xmm0
25211 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
25212 .byte 15,89,193 // mulps %xmm1,%xmm0
25213 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
25214 .byte 102,15,110,216 // movd %eax,%xmm3
25215 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
25216 .byte 72,173 // lods %ds:(%rsi),%rax
25217 .byte 15,40,200 // movaps %xmm0,%xmm1
25218 .byte 15,40,208 // movaps %xmm0,%xmm2
25219 .byte 255,224 // jmpq *%rax
25220
Mike Klein7d3d8722017-04-06 17:53:18 -040025221HIDDEN _sk_gather_i8_sse2
25222.globl _sk_gather_i8_sse2
Mike Klein86714282017-04-13 17:37:38 -040025223FUNCTION(_sk_gather_i8_sse2)
Mike Klein7d3d8722017-04-06 17:53:18 -040025224_sk_gather_i8_sse2:
25225 .byte 72,173 // lods %ds:(%rsi),%rax
25226 .byte 73,137,192 // mov %rax,%r8
25227 .byte 77,133,192 // test %r8,%r8
Mike Kleinda164342017-04-19 14:33:58 -040025228 .byte 116,5 // je 28b8 <_sk_gather_i8_sse2+0xf>
Mike Klein7d3d8722017-04-06 17:53:18 -040025229 .byte 76,137,192 // mov %r8,%rax
Mike Kleinda164342017-04-19 14:33:58 -040025230 .byte 235,2 // jmp 28ba <_sk_gather_i8_sse2+0x11>
Mike Klein7d3d8722017-04-06 17:53:18 -040025231 .byte 72,173 // lods %ds:(%rsi),%rax
25232 .byte 76,139,16 // mov (%rax),%r10
25233 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25234 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25235 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25236 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25237 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25238 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25239 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25240 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25241 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25242 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25243 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25244 .byte 102,72,15,126,192 // movq %xmm0,%rax
25245 .byte 65,137,193 // mov %eax,%r9d
25246 .byte 72,193,232,32 // shr $0x20,%rax
25247 .byte 102,15,112,192,78 // pshufd $0x4e,%xmm0,%xmm0
25248 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25249 .byte 65,137,203 // mov %ecx,%r11d
25250 .byte 72,193,233,32 // shr $0x20,%rcx
25251 .byte 71,15,182,28,26 // movzbl (%r10,%r11,1),%r11d
25252 .byte 65,15,182,12,10 // movzbl (%r10,%rcx,1),%ecx
25253 .byte 193,225,8 // shl $0x8,%ecx
25254 .byte 68,9,217 // or %r11d,%ecx
25255 .byte 71,15,182,12,10 // movzbl (%r10,%r9,1),%r9d
25256 .byte 65,15,182,4,2 // movzbl (%r10,%rax,1),%eax
25257 .byte 193,224,8 // shl $0x8,%eax
25258 .byte 68,9,200 // or %r9d,%eax
25259 .byte 102,15,196,192,0 // pinsrw $0x0,%eax,%xmm0
25260 .byte 102,15,196,193,1 // pinsrw $0x1,%ecx,%xmm0
25261 .byte 102,15,239,201 // pxor %xmm1,%xmm1
25262 .byte 102,15,96,193 // punpcklbw %xmm1,%xmm0
25263 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
25264 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
25265 .byte 102,72,15,126,200 // movq %xmm1,%rax
25266 .byte 68,15,182,200 // movzbl %al,%r9d
25267 .byte 72,193,232,32 // shr $0x20,%rax
25268 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25269 .byte 77,139,64,8 // mov 0x8(%r8),%r8
25270 .byte 68,15,182,209 // movzbl %cl,%r10d
25271 .byte 72,193,233,30 // shr $0x1e,%rcx
25272 .byte 102,65,15,110,4,8 // movd (%r8,%rcx,1),%xmm0
25273 .byte 102,65,15,110,12,128 // movd (%r8,%rax,4),%xmm1
25274 .byte 102,15,98,193 // punpckldq %xmm1,%xmm0
25275 .byte 102,67,15,110,28,144 // movd (%r8,%r10,4),%xmm3
25276 .byte 102,67,15,110,12,136 // movd (%r8,%r9,4),%xmm1
25277 .byte 102,15,98,217 // punpckldq %xmm1,%xmm3
25278 .byte 102,15,98,216 // punpckldq %xmm0,%xmm3
25279 .byte 184,255,0,0,0 // mov $0xff,%eax
25280 .byte 102,15,110,192 // movd %eax,%xmm0
25281 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
25282 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
25283 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
25284 .byte 102,15,219,200 // pand %xmm0,%xmm1
25285 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
25286 .byte 102,15,114,210,16 // psrld $0x10,%xmm2
25287 .byte 102,15,219,208 // pand %xmm0,%xmm2
25288 .byte 102,15,219,195 // pand %xmm3,%xmm0
25289 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
25290 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
25291 .byte 102,68,15,110,192 // movd %eax,%xmm8
25292 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25293 .byte 65,15,89,192 // mulps %xmm8,%xmm0
25294 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
25295 .byte 65,15,89,200 // mulps %xmm8,%xmm1
25296 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
25297 .byte 65,15,89,208 // mulps %xmm8,%xmm2
25298 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
25299 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
25300 .byte 65,15,89,216 // mulps %xmm8,%xmm3
25301 .byte 72,173 // lods %ds:(%rsi),%rax
25302 .byte 255,224 // jmpq *%rax
25303
Mike Klein7c4af542017-03-29 18:21:14 -040025304HIDDEN _sk_load_565_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025305.globl _sk_load_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040025306FUNCTION(_sk_load_565_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025307_sk_load_565_sse2:
25308 .byte 72,173 // lods %ds:(%rsi),%rax
25309 .byte 72,139,0 // mov (%rax),%rax
25310 .byte 243,15,126,20,120 // movq (%rax,%rdi,2),%xmm2
25311 .byte 102,15,239,192 // pxor %xmm0,%xmm0
25312 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
25313 .byte 184,0,248,0,0 // mov $0xf800,%eax
25314 .byte 102,15,110,192 // movd %eax,%xmm0
25315 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
25316 .byte 102,15,219,194 // pand %xmm2,%xmm0
25317 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
25318 .byte 184,8,33,132,55 // mov $0x37842108,%eax
25319 .byte 102,15,110,192 // movd %eax,%xmm0
25320 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
25321 .byte 15,89,193 // mulps %xmm1,%xmm0
25322 .byte 184,224,7,0,0 // mov $0x7e0,%eax
25323 .byte 102,15,110,200 // movd %eax,%xmm1
25324 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
25325 .byte 102,15,219,202 // pand %xmm2,%xmm1
25326 .byte 15,91,217 // cvtdq2ps %xmm1,%xmm3
25327 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
25328 .byte 102,15,110,200 // movd %eax,%xmm1
25329 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
25330 .byte 15,89,203 // mulps %xmm3,%xmm1
25331 .byte 184,31,0,0,0 // mov $0x1f,%eax
25332 .byte 102,15,110,216 // movd %eax,%xmm3
25333 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
25334 .byte 102,15,219,218 // pand %xmm2,%xmm3
25335 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
25336 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
25337 .byte 102,15,110,208 // movd %eax,%xmm2
25338 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
25339 .byte 15,89,211 // mulps %xmm3,%xmm2
25340 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
25341 .byte 102,15,110,216 // movd %eax,%xmm3
25342 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
25343 .byte 72,173 // lods %ds:(%rsi),%rax
25344 .byte 255,224 // jmpq *%rax
25345
Mike Klein21bd3e42017-04-06 16:32:29 -040025346HIDDEN _sk_gather_565_sse2
25347.globl _sk_gather_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040025348FUNCTION(_sk_gather_565_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040025349_sk_gather_565_sse2:
25350 .byte 72,173 // lods %ds:(%rsi),%rax
25351 .byte 76,139,8 // mov (%rax),%r9
25352 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25353 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25354 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25355 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25356 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25357 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25358 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25359 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25360 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25361 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25362 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25363 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
25364 .byte 102,72,15,126,200 // movq %xmm1,%rax
25365 .byte 65,137,192 // mov %eax,%r8d
25366 .byte 72,193,232,32 // shr $0x20,%rax
25367 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25368 .byte 65,137,202 // mov %ecx,%r10d
25369 .byte 72,193,233,32 // shr $0x20,%rcx
25370 .byte 102,67,15,196,20,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm2
25371 .byte 102,65,15,196,20,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm2
25372 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
25373 .byte 102,15,196,209,2 // pinsrw $0x2,%ecx,%xmm2
25374 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
25375 .byte 102,15,196,208,3 // pinsrw $0x3,%eax,%xmm2
25376 .byte 102,15,239,192 // pxor %xmm0,%xmm0
25377 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
25378 .byte 184,0,248,0,0 // mov $0xf800,%eax
25379 .byte 102,15,110,192 // movd %eax,%xmm0
25380 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
25381 .byte 102,15,219,194 // pand %xmm2,%xmm0
25382 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
25383 .byte 184,8,33,132,55 // mov $0x37842108,%eax
25384 .byte 102,15,110,192 // movd %eax,%xmm0
25385 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
25386 .byte 15,89,193 // mulps %xmm1,%xmm0
25387 .byte 184,224,7,0,0 // mov $0x7e0,%eax
25388 .byte 102,15,110,200 // movd %eax,%xmm1
25389 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
25390 .byte 102,15,219,202 // pand %xmm2,%xmm1
25391 .byte 15,91,217 // cvtdq2ps %xmm1,%xmm3
25392 .byte 184,33,8,2,58 // mov $0x3a020821,%eax
25393 .byte 102,15,110,200 // movd %eax,%xmm1
25394 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
25395 .byte 15,89,203 // mulps %xmm3,%xmm1
25396 .byte 184,31,0,0,0 // mov $0x1f,%eax
25397 .byte 102,15,110,216 // movd %eax,%xmm3
25398 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
25399 .byte 102,15,219,218 // pand %xmm2,%xmm3
25400 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
25401 .byte 184,8,33,4,61 // mov $0x3d042108,%eax
25402 .byte 102,15,110,208 // movd %eax,%xmm2
25403 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
25404 .byte 15,89,211 // mulps %xmm3,%xmm2
25405 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
25406 .byte 102,15,110,216 // movd %eax,%xmm3
25407 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
25408 .byte 72,173 // lods %ds:(%rsi),%rax
25409 .byte 255,224 // jmpq *%rax
25410
Mike Klein7c4af542017-03-29 18:21:14 -040025411HIDDEN _sk_store_565_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025412.globl _sk_store_565_sse2
Mike Klein86714282017-04-13 17:37:38 -040025413FUNCTION(_sk_store_565_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025414_sk_store_565_sse2:
25415 .byte 72,173 // lods %ds:(%rsi),%rax
25416 .byte 72,139,0 // mov (%rax),%rax
25417 .byte 185,0,0,248,65 // mov $0x41f80000,%ecx
25418 .byte 102,68,15,110,193 // movd %ecx,%xmm8
25419 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25420 .byte 69,15,40,200 // movaps %xmm8,%xmm9
25421 .byte 68,15,89,200 // mulps %xmm0,%xmm9
25422 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
25423 .byte 102,65,15,114,241,11 // pslld $0xb,%xmm9
25424 .byte 185,0,0,124,66 // mov $0x427c0000,%ecx
25425 .byte 102,68,15,110,209 // movd %ecx,%xmm10
25426 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
25427 .byte 68,15,89,209 // mulps %xmm1,%xmm10
25428 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
25429 .byte 102,65,15,114,242,5 // pslld $0x5,%xmm10
25430 .byte 102,69,15,235,209 // por %xmm9,%xmm10
25431 .byte 68,15,89,194 // mulps %xmm2,%xmm8
25432 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25433 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
25434 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
25435 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
25436 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
25437 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
25438 .byte 72,173 // lods %ds:(%rsi),%rax
25439 .byte 255,224 // jmpq *%rax
25440
Mike Kleinf809fef2017-03-31 13:52:45 -040025441HIDDEN _sk_load_4444_sse2
25442.globl _sk_load_4444_sse2
Mike Klein86714282017-04-13 17:37:38 -040025443FUNCTION(_sk_load_4444_sse2)
Mike Kleinf809fef2017-03-31 13:52:45 -040025444_sk_load_4444_sse2:
25445 .byte 72,173 // lods %ds:(%rsi),%rax
25446 .byte 72,139,0 // mov (%rax),%rax
25447 .byte 243,68,15,126,12,120 // movq (%rax,%rdi,2),%xmm9
25448 .byte 102,15,239,192 // pxor %xmm0,%xmm0
25449 .byte 102,68,15,97,200 // punpcklwd %xmm0,%xmm9
25450 .byte 184,0,240,0,0 // mov $0xf000,%eax
25451 .byte 102,15,110,192 // movd %eax,%xmm0
25452 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
25453 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
25454 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
25455 .byte 184,137,136,136,55 // mov $0x37888889,%eax
25456 .byte 102,15,110,192 // movd %eax,%xmm0
25457 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
25458 .byte 15,89,193 // mulps %xmm1,%xmm0
25459 .byte 184,0,15,0,0 // mov $0xf00,%eax
25460 .byte 102,15,110,200 // movd %eax,%xmm1
25461 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
25462 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
25463 .byte 15,91,209 // cvtdq2ps %xmm1,%xmm2
25464 .byte 184,137,136,136,57 // mov $0x39888889,%eax
25465 .byte 102,15,110,200 // movd %eax,%xmm1
25466 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
25467 .byte 15,89,202 // mulps %xmm2,%xmm1
25468 .byte 184,240,0,0,0 // mov $0xf0,%eax
25469 .byte 102,15,110,208 // movd %eax,%xmm2
25470 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25471 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
25472 .byte 68,15,91,194 // cvtdq2ps %xmm2,%xmm8
25473 .byte 184,137,136,136,59 // mov $0x3b888889,%eax
25474 .byte 102,15,110,208 // movd %eax,%xmm2
25475 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
25476 .byte 65,15,89,208 // mulps %xmm8,%xmm2
25477 .byte 184,15,0,0,0 // mov $0xf,%eax
25478 .byte 102,15,110,216 // movd %eax,%xmm3
25479 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
25480 .byte 102,65,15,219,217 // pand %xmm9,%xmm3
25481 .byte 68,15,91,195 // cvtdq2ps %xmm3,%xmm8
25482 .byte 184,137,136,136,61 // mov $0x3d888889,%eax
25483 .byte 102,15,110,216 // movd %eax,%xmm3
25484 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
25485 .byte 65,15,89,216 // mulps %xmm8,%xmm3
25486 .byte 72,173 // lods %ds:(%rsi),%rax
25487 .byte 255,224 // jmpq *%rax
25488
Mike Klein21bd3e42017-04-06 16:32:29 -040025489HIDDEN _sk_gather_4444_sse2
25490.globl _sk_gather_4444_sse2
Mike Klein86714282017-04-13 17:37:38 -040025491FUNCTION(_sk_gather_4444_sse2)
Mike Klein21bd3e42017-04-06 16:32:29 -040025492_sk_gather_4444_sse2:
25493 .byte 72,173 // lods %ds:(%rsi),%rax
25494 .byte 76,139,8 // mov (%rax),%r9
25495 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25496 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25497 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25498 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25499 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25500 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25501 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25502 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25503 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25504 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25505 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25506 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
25507 .byte 102,72,15,126,200 // movq %xmm1,%rax
25508 .byte 65,137,192 // mov %eax,%r8d
25509 .byte 72,193,232,32 // shr $0x20,%rax
25510 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25511 .byte 65,137,202 // mov %ecx,%r10d
25512 .byte 72,193,233,32 // shr $0x20,%rcx
25513 .byte 102,71,15,196,12,81,0 // pinsrw $0x0,(%r9,%r10,2),%xmm9
25514 .byte 102,69,15,196,12,73,1 // pinsrw $0x1,(%r9,%rcx,2),%xmm9
25515 .byte 67,15,183,12,65 // movzwl (%r9,%r8,2),%ecx
25516 .byte 102,68,15,196,201,2 // pinsrw $0x2,%ecx,%xmm9
25517 .byte 65,15,183,4,65 // movzwl (%r9,%rax,2),%eax
25518 .byte 102,68,15,196,200,3 // pinsrw $0x3,%eax,%xmm9
25519 .byte 102,15,239,192 // pxor %xmm0,%xmm0
25520 .byte 102,68,15,97,200 // punpcklwd %xmm0,%xmm9
25521 .byte 184,0,240,0,0 // mov $0xf000,%eax
25522 .byte 102,15,110,192 // movd %eax,%xmm0
25523 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
25524 .byte 102,65,15,219,193 // pand %xmm9,%xmm0
25525 .byte 15,91,200 // cvtdq2ps %xmm0,%xmm1
25526 .byte 184,137,136,136,55 // mov $0x37888889,%eax
25527 .byte 102,15,110,192 // movd %eax,%xmm0
25528 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
25529 .byte 15,89,193 // mulps %xmm1,%xmm0
25530 .byte 184,0,15,0,0 // mov $0xf00,%eax
25531 .byte 102,15,110,200 // movd %eax,%xmm1
25532 .byte 102,15,112,201,0 // pshufd $0x0,%xmm1,%xmm1
25533 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
25534 .byte 15,91,209 // cvtdq2ps %xmm1,%xmm2
25535 .byte 184,137,136,136,57 // mov $0x39888889,%eax
25536 .byte 102,15,110,200 // movd %eax,%xmm1
25537 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
25538 .byte 15,89,202 // mulps %xmm2,%xmm1
25539 .byte 184,240,0,0,0 // mov $0xf0,%eax
25540 .byte 102,15,110,208 // movd %eax,%xmm2
25541 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25542 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
25543 .byte 68,15,91,194 // cvtdq2ps %xmm2,%xmm8
25544 .byte 184,137,136,136,59 // mov $0x3b888889,%eax
25545 .byte 102,15,110,208 // movd %eax,%xmm2
25546 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
25547 .byte 65,15,89,208 // mulps %xmm8,%xmm2
25548 .byte 184,15,0,0,0 // mov $0xf,%eax
25549 .byte 102,15,110,216 // movd %eax,%xmm3
25550 .byte 102,15,112,219,0 // pshufd $0x0,%xmm3,%xmm3
25551 .byte 102,65,15,219,217 // pand %xmm9,%xmm3
25552 .byte 68,15,91,195 // cvtdq2ps %xmm3,%xmm8
25553 .byte 184,137,136,136,61 // mov $0x3d888889,%eax
25554 .byte 102,15,110,216 // movd %eax,%xmm3
25555 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
25556 .byte 65,15,89,216 // mulps %xmm8,%xmm3
25557 .byte 72,173 // lods %ds:(%rsi),%rax
25558 .byte 255,224 // jmpq *%rax
25559
Mike Kleinf809fef2017-03-31 13:52:45 -040025560HIDDEN _sk_store_4444_sse2
25561.globl _sk_store_4444_sse2
Mike Klein86714282017-04-13 17:37:38 -040025562FUNCTION(_sk_store_4444_sse2)
Mike Kleinf809fef2017-03-31 13:52:45 -040025563_sk_store_4444_sse2:
25564 .byte 72,173 // lods %ds:(%rsi),%rax
25565 .byte 72,139,0 // mov (%rax),%rax
25566 .byte 185,0,0,112,65 // mov $0x41700000,%ecx
25567 .byte 102,68,15,110,193 // movd %ecx,%xmm8
25568 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25569 .byte 69,15,40,200 // movaps %xmm8,%xmm9
25570 .byte 68,15,89,200 // mulps %xmm0,%xmm9
25571 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
25572 .byte 102,65,15,114,241,12 // pslld $0xc,%xmm9
25573 .byte 69,15,40,208 // movaps %xmm8,%xmm10
25574 .byte 68,15,89,209 // mulps %xmm1,%xmm10
25575 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
25576 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
25577 .byte 102,69,15,235,209 // por %xmm9,%xmm10
25578 .byte 69,15,40,200 // movaps %xmm8,%xmm9
25579 .byte 68,15,89,202 // mulps %xmm2,%xmm9
25580 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
25581 .byte 102,65,15,114,241,4 // pslld $0x4,%xmm9
25582 .byte 68,15,89,195 // mulps %xmm3,%xmm8
25583 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25584 .byte 102,69,15,86,193 // orpd %xmm9,%xmm8
25585 .byte 102,69,15,86,194 // orpd %xmm10,%xmm8
25586 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
25587 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
25588 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
25589 .byte 102,68,15,214,4,120 // movq %xmm8,(%rax,%rdi,2)
25590 .byte 72,173 // lods %ds:(%rsi),%rax
25591 .byte 255,224 // jmpq *%rax
25592
Mike Klein7c4af542017-03-29 18:21:14 -040025593HIDDEN _sk_load_8888_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025594.globl _sk_load_8888_sse2
Mike Klein86714282017-04-13 17:37:38 -040025595FUNCTION(_sk_load_8888_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025596_sk_load_8888_sse2:
25597 .byte 72,173 // lods %ds:(%rsi),%rax
25598 .byte 72,139,0 // mov (%rax),%rax
25599 .byte 243,15,111,28,184 // movdqu (%rax,%rdi,4),%xmm3
25600 .byte 184,255,0,0,0 // mov $0xff,%eax
25601 .byte 102,15,110,192 // movd %eax,%xmm0
25602 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
25603 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
25604 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
25605 .byte 102,15,219,200 // pand %xmm0,%xmm1
25606 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
25607 .byte 102,15,114,210,16 // psrld $0x10,%xmm2
25608 .byte 102,15,219,208 // pand %xmm0,%xmm2
25609 .byte 102,15,219,195 // pand %xmm3,%xmm0
25610 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
25611 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
25612 .byte 102,68,15,110,192 // movd %eax,%xmm8
25613 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25614 .byte 65,15,89,192 // mulps %xmm8,%xmm0
25615 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
25616 .byte 65,15,89,200 // mulps %xmm8,%xmm1
25617 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
25618 .byte 65,15,89,208 // mulps %xmm8,%xmm2
25619 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
25620 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
25621 .byte 65,15,89,216 // mulps %xmm8,%xmm3
25622 .byte 72,173 // lods %ds:(%rsi),%rax
25623 .byte 255,224 // jmpq *%rax
25624
Mike Kleindec4ea82017-04-06 15:04:05 -040025625HIDDEN _sk_gather_8888_sse2
25626.globl _sk_gather_8888_sse2
Mike Klein86714282017-04-13 17:37:38 -040025627FUNCTION(_sk_gather_8888_sse2)
Mike Kleindec4ea82017-04-06 15:04:05 -040025628_sk_gather_8888_sse2:
25629 .byte 72,173 // lods %ds:(%rsi),%rax
25630 .byte 76,139,8 // mov (%rax),%r9
25631 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25632 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25633 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25634 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25635 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25636 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25637 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25638 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25639 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25640 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25641 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25642 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
25643 .byte 102,72,15,126,200 // movq %xmm1,%rax
25644 .byte 65,137,192 // mov %eax,%r8d
25645 .byte 72,193,232,32 // shr $0x20,%rax
25646 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25647 .byte 65,137,202 // mov %ecx,%r10d
25648 .byte 72,193,233,32 // shr $0x20,%rcx
25649 .byte 102,65,15,110,4,137 // movd (%r9,%rcx,4),%xmm0
25650 .byte 102,65,15,110,12,129 // movd (%r9,%rax,4),%xmm1
25651 .byte 102,15,98,193 // punpckldq %xmm1,%xmm0
25652 .byte 102,67,15,110,28,145 // movd (%r9,%r10,4),%xmm3
25653 .byte 102,67,15,110,12,129 // movd (%r9,%r8,4),%xmm1
25654 .byte 102,15,98,217 // punpckldq %xmm1,%xmm3
25655 .byte 102,15,98,216 // punpckldq %xmm0,%xmm3
25656 .byte 184,255,0,0,0 // mov $0xff,%eax
25657 .byte 102,15,110,192 // movd %eax,%xmm0
25658 .byte 102,15,112,192,0 // pshufd $0x0,%xmm0,%xmm0
25659 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
25660 .byte 102,15,114,209,8 // psrld $0x8,%xmm1
25661 .byte 102,15,219,200 // pand %xmm0,%xmm1
25662 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
25663 .byte 102,15,114,210,16 // psrld $0x10,%xmm2
25664 .byte 102,15,219,208 // pand %xmm0,%xmm2
25665 .byte 102,15,219,195 // pand %xmm3,%xmm0
25666 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
25667 .byte 184,129,128,128,59 // mov $0x3b808081,%eax
25668 .byte 102,68,15,110,192 // movd %eax,%xmm8
25669 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25670 .byte 65,15,89,192 // mulps %xmm8,%xmm0
25671 .byte 15,91,201 // cvtdq2ps %xmm1,%xmm1
25672 .byte 65,15,89,200 // mulps %xmm8,%xmm1
25673 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
25674 .byte 65,15,89,208 // mulps %xmm8,%xmm2
25675 .byte 102,15,114,211,24 // psrld $0x18,%xmm3
25676 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
25677 .byte 65,15,89,216 // mulps %xmm8,%xmm3
25678 .byte 72,173 // lods %ds:(%rsi),%rax
25679 .byte 255,224 // jmpq *%rax
25680
Mike Klein7c4af542017-03-29 18:21:14 -040025681HIDDEN _sk_store_8888_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025682.globl _sk_store_8888_sse2
Mike Klein86714282017-04-13 17:37:38 -040025683FUNCTION(_sk_store_8888_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025684_sk_store_8888_sse2:
25685 .byte 72,173 // lods %ds:(%rsi),%rax
25686 .byte 72,139,0 // mov (%rax),%rax
25687 .byte 185,0,0,127,67 // mov $0x437f0000,%ecx
25688 .byte 102,68,15,110,193 // movd %ecx,%xmm8
25689 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25690 .byte 69,15,40,200 // movaps %xmm8,%xmm9
25691 .byte 68,15,89,200 // mulps %xmm0,%xmm9
25692 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
25693 .byte 69,15,40,208 // movaps %xmm8,%xmm10
25694 .byte 68,15,89,209 // mulps %xmm1,%xmm10
25695 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
25696 .byte 102,65,15,114,242,8 // pslld $0x8,%xmm10
25697 .byte 102,69,15,235,209 // por %xmm9,%xmm10
25698 .byte 69,15,40,200 // movaps %xmm8,%xmm9
25699 .byte 68,15,89,202 // mulps %xmm2,%xmm9
25700 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
25701 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
25702 .byte 68,15,89,195 // mulps %xmm3,%xmm8
25703 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
25704 .byte 102,65,15,114,240,24 // pslld $0x18,%xmm8
25705 .byte 102,69,15,235,193 // por %xmm9,%xmm8
25706 .byte 102,69,15,235,194 // por %xmm10,%xmm8
25707 .byte 243,68,15,127,4,184 // movdqu %xmm8,(%rax,%rdi,4)
25708 .byte 72,173 // lods %ds:(%rsi),%rax
25709 .byte 255,224 // jmpq *%rax
25710
Mike Klein7c4af542017-03-29 18:21:14 -040025711HIDDEN _sk_load_f16_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025712.globl _sk_load_f16_sse2
Mike Klein86714282017-04-13 17:37:38 -040025713FUNCTION(_sk_load_f16_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025714_sk_load_f16_sse2:
25715 .byte 72,173 // lods %ds:(%rsi),%rax
25716 .byte 72,139,0 // mov (%rax),%rax
25717 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
25718 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
Mike Klein114e6b32017-04-03 22:21:15 -040025719 .byte 102,68,15,111,192 // movdqa %xmm0,%xmm8
25720 .byte 102,68,15,97,193 // punpcklwd %xmm1,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040025721 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
Mike Kleind0ce1482017-04-19 17:19:30 -040025722 .byte 102,69,15,111,224 // movdqa %xmm8,%xmm12
25723 .byte 102,68,15,97,224 // punpcklwd %xmm0,%xmm12
Mike Klein114e6b32017-04-03 22:21:15 -040025724 .byte 102,68,15,105,192 // punpckhwd %xmm0,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040025725 .byte 102,69,15,239,210 // pxor %xmm10,%xmm10
Mike Kleind0ce1482017-04-19 17:19:30 -040025726 .byte 102,69,15,111,236 // movdqa %xmm12,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040025727 .byte 102,69,15,97,234 // punpcklwd %xmm10,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040025728 .byte 184,0,128,0,0 // mov $0x8000,%eax
25729 .byte 102,15,110,192 // movd %eax,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040025730 .byte 102,68,15,112,200,0 // pshufd $0x0,%xmm0,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040025731 .byte 102,65,15,111,205 // movdqa %xmm13,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040025732 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
25733 .byte 102,68,15,239,233 // pxor %xmm1,%xmm13
25734 .byte 184,0,4,0,0 // mov $0x400,%eax
Mike Kleind7e06ae2017-03-29 16:33:06 -040025735 .byte 102,15,110,192 // movd %eax,%xmm0
25736 .byte 102,15,112,216,0 // pshufd $0x0,%xmm0,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040025737 .byte 102,15,114,241,16 // pslld $0x10,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040025738 .byte 102,15,111,195 // movdqa %xmm3,%xmm0
25739 .byte 102,65,15,102,197 // pcmpgtd %xmm13,%xmm0
Mike Kleind0ce1482017-04-19 17:19:30 -040025740 .byte 102,65,15,114,245,13 // pslld $0xd,%xmm13
25741 .byte 184,0,0,0,56 // mov $0x38000000,%eax
Mike Kleind7e06ae2017-03-29 16:33:06 -040025742 .byte 102,15,110,208 // movd %eax,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040025743 .byte 102,68,15,112,218,0 // pshufd $0x0,%xmm2,%xmm11
25744 .byte 102,65,15,254,203 // paddd %xmm11,%xmm1
25745 .byte 102,65,15,254,205 // paddd %xmm13,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040025746 .byte 102,15,223,193 // pandn %xmm1,%xmm0
25747 .byte 102,65,15,115,220,8 // psrldq $0x8,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040025748 .byte 102,69,15,97,226 // punpcklwd %xmm10,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040025749 .byte 102,65,15,111,212 // movdqa %xmm12,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040025750 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040025751 .byte 102,68,15,239,226 // pxor %xmm2,%xmm12
25752 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040025753 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
25754 .byte 102,65,15,102,204 // pcmpgtd %xmm12,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040025755 .byte 102,65,15,114,244,13 // pslld $0xd,%xmm12
25756 .byte 102,65,15,254,211 // paddd %xmm11,%xmm2
25757 .byte 102,65,15,254,212 // paddd %xmm12,%xmm2
Mike Klein114e6b32017-04-03 22:21:15 -040025758 .byte 102,15,223,202 // pandn %xmm2,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040025759 .byte 102,69,15,111,224 // movdqa %xmm8,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040025760 .byte 102,69,15,97,226 // punpcklwd %xmm10,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040025761 .byte 102,69,15,111,236 // movdqa %xmm12,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040025762 .byte 102,69,15,219,233 // pand %xmm9,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040025763 .byte 102,69,15,239,229 // pxor %xmm13,%xmm12
25764 .byte 102,65,15,114,245,16 // pslld $0x10,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040025765 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
25766 .byte 102,65,15,102,212 // pcmpgtd %xmm12,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040025767 .byte 102,65,15,114,244,13 // pslld $0xd,%xmm12
25768 .byte 102,69,15,254,235 // paddd %xmm11,%xmm13
25769 .byte 102,69,15,254,236 // paddd %xmm12,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040025770 .byte 102,65,15,223,213 // pandn %xmm13,%xmm2
25771 .byte 102,65,15,115,216,8 // psrldq $0x8,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040025772 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
25773 .byte 102,69,15,219,200 // pand %xmm8,%xmm9
25774 .byte 102,69,15,239,193 // pxor %xmm9,%xmm8
25775 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
25776 .byte 102,65,15,102,216 // pcmpgtd %xmm8,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040025777 .byte 102,65,15,114,240,13 // pslld $0xd,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040025778 .byte 102,69,15,254,203 // paddd %xmm11,%xmm9
25779 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
25780 .byte 102,65,15,223,217 // pandn %xmm9,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040025781 .byte 72,173 // lods %ds:(%rsi),%rax
25782 .byte 255,224 // jmpq *%rax
25783
Mike Klein5f055f02017-04-06 20:02:11 -040025784HIDDEN _sk_gather_f16_sse2
25785.globl _sk_gather_f16_sse2
Mike Klein86714282017-04-13 17:37:38 -040025786FUNCTION(_sk_gather_f16_sse2)
Mike Klein5f055f02017-04-06 20:02:11 -040025787_sk_gather_f16_sse2:
25788 .byte 72,173 // lods %ds:(%rsi),%rax
25789 .byte 76,139,8 // mov (%rax),%r9
25790 .byte 243,15,91,201 // cvttps2dq %xmm1,%xmm1
25791 .byte 102,15,110,80,16 // movd 0x10(%rax),%xmm2
25792 .byte 102,15,112,210,0 // pshufd $0x0,%xmm2,%xmm2
25793 .byte 102,15,112,217,245 // pshufd $0xf5,%xmm1,%xmm3
25794 .byte 102,15,244,218 // pmuludq %xmm2,%xmm3
25795 .byte 102,15,112,219,232 // pshufd $0xe8,%xmm3,%xmm3
25796 .byte 102,15,244,209 // pmuludq %xmm1,%xmm2
25797 .byte 102,15,112,202,232 // pshufd $0xe8,%xmm2,%xmm1
25798 .byte 102,15,98,203 // punpckldq %xmm3,%xmm1
25799 .byte 243,15,91,192 // cvttps2dq %xmm0,%xmm0
25800 .byte 102,15,254,193 // paddd %xmm1,%xmm0
25801 .byte 102,15,112,200,78 // pshufd $0x4e,%xmm0,%xmm1
25802 .byte 102,72,15,126,200 // movq %xmm1,%rax
25803 .byte 65,137,192 // mov %eax,%r8d
25804 .byte 72,193,232,32 // shr $0x20,%rax
25805 .byte 102,72,15,126,193 // movq %xmm0,%rcx
25806 .byte 65,137,202 // mov %ecx,%r10d
25807 .byte 72,193,233,32 // shr $0x20,%rcx
25808 .byte 243,65,15,126,4,201 // movq (%r9,%rcx,8),%xmm0
25809 .byte 243,67,15,126,12,209 // movq (%r9,%r10,8),%xmm1
25810 .byte 102,15,108,200 // punpcklqdq %xmm0,%xmm1
25811 .byte 243,65,15,126,4,193 // movq (%r9,%rax,8),%xmm0
25812 .byte 243,67,15,126,20,193 // movq (%r9,%r8,8),%xmm2
25813 .byte 102,15,108,208 // punpcklqdq %xmm0,%xmm2
25814 .byte 102,68,15,111,193 // movdqa %xmm1,%xmm8
25815 .byte 102,68,15,97,194 // punpcklwd %xmm2,%xmm8
25816 .byte 102,15,105,202 // punpckhwd %xmm2,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040025817 .byte 102,69,15,111,224 // movdqa %xmm8,%xmm12
25818 .byte 102,68,15,97,225 // punpcklwd %xmm1,%xmm12
Mike Klein5f055f02017-04-06 20:02:11 -040025819 .byte 102,68,15,105,193 // punpckhwd %xmm1,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040025820 .byte 102,69,15,239,210 // pxor %xmm10,%xmm10
Mike Kleind0ce1482017-04-19 17:19:30 -040025821 .byte 102,69,15,111,236 // movdqa %xmm12,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040025822 .byte 102,69,15,97,234 // punpcklwd %xmm10,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040025823 .byte 184,0,128,0,0 // mov $0x8000,%eax
25824 .byte 102,15,110,192 // movd %eax,%xmm0
Mike Klein097d0932017-04-20 09:11:53 -040025825 .byte 102,68,15,112,200,0 // pshufd $0x0,%xmm0,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040025826 .byte 102,65,15,111,205 // movdqa %xmm13,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040025827 .byte 102,65,15,219,201 // pand %xmm9,%xmm1
25828 .byte 102,68,15,239,233 // pxor %xmm1,%xmm13
25829 .byte 184,0,4,0,0 // mov $0x400,%eax
Mike Klein5f055f02017-04-06 20:02:11 -040025830 .byte 102,15,110,192 // movd %eax,%xmm0
25831 .byte 102,15,112,216,0 // pshufd $0x0,%xmm0,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040025832 .byte 102,15,114,241,16 // pslld $0x10,%xmm1
Mike Klein097d0932017-04-20 09:11:53 -040025833 .byte 102,15,111,195 // movdqa %xmm3,%xmm0
25834 .byte 102,65,15,102,197 // pcmpgtd %xmm13,%xmm0
Mike Kleind0ce1482017-04-19 17:19:30 -040025835 .byte 102,65,15,114,245,13 // pslld $0xd,%xmm13
25836 .byte 184,0,0,0,56 // mov $0x38000000,%eax
25837 .byte 102,15,110,208 // movd %eax,%xmm2
25838 .byte 102,68,15,112,218,0 // pshufd $0x0,%xmm2,%xmm11
25839 .byte 102,65,15,254,203 // paddd %xmm11,%xmm1
25840 .byte 102,65,15,254,205 // paddd %xmm13,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040025841 .byte 102,15,223,193 // pandn %xmm1,%xmm0
25842 .byte 102,65,15,115,220,8 // psrldq $0x8,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040025843 .byte 102,69,15,97,226 // punpcklwd %xmm10,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040025844 .byte 102,65,15,111,212 // movdqa %xmm12,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040025845 .byte 102,65,15,219,209 // pand %xmm9,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040025846 .byte 102,68,15,239,226 // pxor %xmm2,%xmm12
25847 .byte 102,15,114,242,16 // pslld $0x10,%xmm2
Mike Klein097d0932017-04-20 09:11:53 -040025848 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
25849 .byte 102,65,15,102,204 // pcmpgtd %xmm12,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040025850 .byte 102,65,15,114,244,13 // pslld $0xd,%xmm12
25851 .byte 102,65,15,254,211 // paddd %xmm11,%xmm2
25852 .byte 102,65,15,254,212 // paddd %xmm12,%xmm2
Mike Klein5f055f02017-04-06 20:02:11 -040025853 .byte 102,15,223,202 // pandn %xmm2,%xmm1
Mike Kleind0ce1482017-04-19 17:19:30 -040025854 .byte 102,69,15,111,224 // movdqa %xmm8,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040025855 .byte 102,69,15,97,226 // punpcklwd %xmm10,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040025856 .byte 102,69,15,111,236 // movdqa %xmm12,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040025857 .byte 102,69,15,219,233 // pand %xmm9,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040025858 .byte 102,69,15,239,229 // pxor %xmm13,%xmm12
25859 .byte 102,65,15,114,245,16 // pslld $0x10,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040025860 .byte 102,15,111,211 // movdqa %xmm3,%xmm2
25861 .byte 102,65,15,102,212 // pcmpgtd %xmm12,%xmm2
Mike Kleind0ce1482017-04-19 17:19:30 -040025862 .byte 102,65,15,114,244,13 // pslld $0xd,%xmm12
25863 .byte 102,69,15,254,235 // paddd %xmm11,%xmm13
25864 .byte 102,69,15,254,236 // paddd %xmm12,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040025865 .byte 102,65,15,223,213 // pandn %xmm13,%xmm2
25866 .byte 102,65,15,115,216,8 // psrldq $0x8,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040025867 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
25868 .byte 102,69,15,219,200 // pand %xmm8,%xmm9
25869 .byte 102,69,15,239,193 // pxor %xmm9,%xmm8
25870 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
25871 .byte 102,65,15,102,216 // pcmpgtd %xmm8,%xmm3
Mike Kleind0ce1482017-04-19 17:19:30 -040025872 .byte 102,65,15,114,240,13 // pslld $0xd,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040025873 .byte 102,69,15,254,203 // paddd %xmm11,%xmm9
25874 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
25875 .byte 102,65,15,223,217 // pandn %xmm9,%xmm3
Mike Klein5f055f02017-04-06 20:02:11 -040025876 .byte 72,173 // lods %ds:(%rsi),%rax
25877 .byte 255,224 // jmpq *%rax
25878
Mike Klein7c4af542017-03-29 18:21:14 -040025879HIDDEN _sk_store_f16_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040025880.globl _sk_store_f16_sse2
Mike Klein86714282017-04-13 17:37:38 -040025881FUNCTION(_sk_store_f16_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025882_sk_store_f16_sse2:
25883 .byte 72,173 // lods %ds:(%rsi),%rax
25884 .byte 72,139,0 // mov (%rax),%rax
Mike Kleind0ce1482017-04-19 17:19:30 -040025885 .byte 185,0,0,0,128 // mov $0x80000000,%ecx
Mike Kleind7e06ae2017-03-29 16:33:06 -040025886 .byte 102,68,15,110,193 // movd %ecx,%xmm8
Mike Klein95f53be2017-04-04 10:24:56 -040025887 .byte 102,69,15,112,200,0 // pshufd $0x0,%xmm8,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040025888 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
25889 .byte 102,68,15,219,224 // pand %xmm0,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040025890 .byte 102,68,15,111,232 // movdqa %xmm0,%xmm13
25891 .byte 102,69,15,239,236 // pxor %xmm12,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040025892 .byte 185,0,0,128,56 // mov $0x38800000,%ecx
Mike Klein097d0932017-04-20 09:11:53 -040025893 .byte 102,68,15,110,193 // movd %ecx,%xmm8
25894 .byte 102,69,15,112,208,0 // pshufd $0x0,%xmm8,%xmm10
Mike Kleind0ce1482017-04-19 17:19:30 -040025895 .byte 102,65,15,114,212,16 // psrld $0x10,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040025896 .byte 102,69,15,111,194 // movdqa %xmm10,%xmm8
25897 .byte 102,69,15,102,197 // pcmpgtd %xmm13,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040025898 .byte 102,65,15,114,213,13 // psrld $0xd,%xmm13
25899 .byte 185,0,192,1,0 // mov $0x1c000,%ecx
25900 .byte 102,68,15,110,217 // movd %ecx,%xmm11
25901 .byte 102,69,15,112,219,0 // pshufd $0x0,%xmm11,%xmm11
25902 .byte 102,69,15,250,227 // psubd %xmm11,%xmm12
25903 .byte 102,69,15,254,229 // paddd %xmm13,%xmm12
25904 .byte 102,65,15,114,244,16 // pslld $0x10,%xmm12
25905 .byte 102,65,15,114,228,16 // psrad $0x10,%xmm12
Mike Klein097d0932017-04-20 09:11:53 -040025906 .byte 102,69,15,223,196 // pandn %xmm12,%xmm8
Mike Klein95f53be2017-04-04 10:24:56 -040025907 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
Mike Kleind0ce1482017-04-19 17:19:30 -040025908 .byte 102,69,15,111,233 // movdqa %xmm9,%xmm13
25909 .byte 102,68,15,219,233 // pand %xmm1,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040025910 .byte 102,68,15,111,241 // movdqa %xmm1,%xmm14
25911 .byte 102,69,15,239,245 // pxor %xmm13,%xmm14
Mike Kleind0ce1482017-04-19 17:19:30 -040025912 .byte 102,65,15,114,213,16 // psrld $0x10,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040025913 .byte 102,69,15,111,226 // movdqa %xmm10,%xmm12
25914 .byte 102,69,15,102,230 // pcmpgtd %xmm14,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040025915 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
25916 .byte 102,69,15,250,235 // psubd %xmm11,%xmm13
25917 .byte 102,69,15,254,238 // paddd %xmm14,%xmm13
25918 .byte 102,65,15,114,245,16 // pslld $0x10,%xmm13
25919 .byte 102,65,15,114,229,16 // psrad $0x10,%xmm13
Mike Klein097d0932017-04-20 09:11:53 -040025920 .byte 102,69,15,223,229 // pandn %xmm13,%xmm12
Mike Kleind0ce1482017-04-19 17:19:30 -040025921 .byte 102,69,15,107,228 // packssdw %xmm12,%xmm12
25922 .byte 102,69,15,111,241 // movdqa %xmm9,%xmm14
25923 .byte 102,68,15,219,242 // pand %xmm2,%xmm14
Mike Klein097d0932017-04-20 09:11:53 -040025924 .byte 102,68,15,111,250 // movdqa %xmm2,%xmm15
25925 .byte 102,69,15,239,254 // pxor %xmm14,%xmm15
Mike Kleind0ce1482017-04-19 17:19:30 -040025926 .byte 102,65,15,114,214,16 // psrld $0x10,%xmm14
Mike Klein097d0932017-04-20 09:11:53 -040025927 .byte 102,69,15,111,234 // movdqa %xmm10,%xmm13
25928 .byte 102,69,15,102,239 // pcmpgtd %xmm15,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040025929 .byte 102,65,15,114,215,13 // psrld $0xd,%xmm15
25930 .byte 102,69,15,250,243 // psubd %xmm11,%xmm14
25931 .byte 102,69,15,254,247 // paddd %xmm15,%xmm14
25932 .byte 102,65,15,114,246,16 // pslld $0x10,%xmm14
25933 .byte 102,65,15,114,230,16 // psrad $0x10,%xmm14
Mike Klein097d0932017-04-20 09:11:53 -040025934 .byte 102,69,15,223,238 // pandn %xmm14,%xmm13
Mike Kleind0ce1482017-04-19 17:19:30 -040025935 .byte 102,69,15,107,237 // packssdw %xmm13,%xmm13
25936 .byte 102,68,15,219,203 // pand %xmm3,%xmm9
25937 .byte 102,68,15,111,243 // movdqa %xmm3,%xmm14
25938 .byte 102,69,15,239,241 // pxor %xmm9,%xmm14
25939 .byte 102,65,15,114,209,16 // psrld $0x10,%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040025940 .byte 102,69,15,102,214 // pcmpgtd %xmm14,%xmm10
25941 .byte 102,65,15,114,214,13 // psrld $0xd,%xmm14
Mike Kleind0ce1482017-04-19 17:19:30 -040025942 .byte 102,69,15,250,203 // psubd %xmm11,%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040025943 .byte 102,69,15,254,206 // paddd %xmm14,%xmm9
Mike Klein95f53be2017-04-04 10:24:56 -040025944 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
25945 .byte 102,65,15,114,225,16 // psrad $0x10,%xmm9
Mike Klein097d0932017-04-20 09:11:53 -040025946 .byte 102,69,15,223,209 // pandn %xmm9,%xmm10
25947 .byte 102,69,15,107,210 // packssdw %xmm10,%xmm10
Mike Kleind0ce1482017-04-19 17:19:30 -040025948 .byte 102,69,15,97,196 // punpcklwd %xmm12,%xmm8
Mike Klein097d0932017-04-20 09:11:53 -040025949 .byte 102,69,15,97,234 // punpcklwd %xmm10,%xmm13
Mike Klein95f53be2017-04-04 10:24:56 -040025950 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
Mike Kleind0ce1482017-04-19 17:19:30 -040025951 .byte 102,69,15,98,205 // punpckldq %xmm13,%xmm9
Mike Kleind7e06ae2017-03-29 16:33:06 -040025952 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
Mike Kleind0ce1482017-04-19 17:19:30 -040025953 .byte 102,69,15,106,197 // punpckhdq %xmm13,%xmm8
Mike Klein95f53be2017-04-04 10:24:56 -040025954 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
Mike Kleind7e06ae2017-03-29 16:33:06 -040025955 .byte 72,173 // lods %ds:(%rsi),%rax
25956 .byte 255,224 // jmpq *%rax
25957
Mike Klein3146bb92017-04-05 14:45:02 -040025958HIDDEN _sk_load_u16_be_sse2
25959.globl _sk_load_u16_be_sse2
Mike Klein86714282017-04-13 17:37:38 -040025960FUNCTION(_sk_load_u16_be_sse2)
Mike Klein3146bb92017-04-05 14:45:02 -040025961_sk_load_u16_be_sse2:
25962 .byte 72,173 // lods %ds:(%rsi),%rax
25963 .byte 72,139,0 // mov (%rax),%rax
25964 .byte 243,15,111,4,248 // movdqu (%rax,%rdi,8),%xmm0
25965 .byte 243,15,111,76,248,16 // movdqu 0x10(%rax,%rdi,8),%xmm1
25966 .byte 102,15,111,208 // movdqa %xmm0,%xmm2
25967 .byte 102,15,97,209 // punpcklwd %xmm1,%xmm2
25968 .byte 102,15,105,193 // punpckhwd %xmm1,%xmm0
25969 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
25970 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
25971 .byte 102,15,105,208 // punpckhwd %xmm0,%xmm2
25972 .byte 184,128,0,128,55 // mov $0x37800080,%eax
25973 .byte 102,68,15,110,192 // movd %eax,%xmm8
25974 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
25975 .byte 102,15,111,193 // movdqa %xmm1,%xmm0
25976 .byte 102,15,113,240,8 // psllw $0x8,%xmm0
25977 .byte 102,15,112,217,78 // pshufd $0x4e,%xmm1,%xmm3
25978 .byte 102,15,113,209,8 // psrlw $0x8,%xmm1
25979 .byte 102,15,235,200 // por %xmm0,%xmm1
25980 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
25981 .byte 102,65,15,97,201 // punpcklwd %xmm9,%xmm1
25982 .byte 15,91,193 // cvtdq2ps %xmm1,%xmm0
25983 .byte 65,15,89,192 // mulps %xmm8,%xmm0
25984 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
25985 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
25986 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
25987 .byte 102,15,235,217 // por %xmm1,%xmm3
25988 .byte 102,65,15,97,217 // punpcklwd %xmm9,%xmm3
25989 .byte 15,91,203 // cvtdq2ps %xmm3,%xmm1
25990 .byte 65,15,89,200 // mulps %xmm8,%xmm1
25991 .byte 102,68,15,111,210 // movdqa %xmm2,%xmm10
25992 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
25993 .byte 102,15,112,218,78 // pshufd $0x4e,%xmm2,%xmm3
25994 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
25995 .byte 102,65,15,235,210 // por %xmm10,%xmm2
25996 .byte 102,65,15,97,209 // punpcklwd %xmm9,%xmm2
25997 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
25998 .byte 65,15,89,208 // mulps %xmm8,%xmm2
25999 .byte 102,68,15,111,211 // movdqa %xmm3,%xmm10
26000 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
26001 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
26002 .byte 102,65,15,235,218 // por %xmm10,%xmm3
26003 .byte 102,65,15,97,217 // punpcklwd %xmm9,%xmm3
26004 .byte 15,91,219 // cvtdq2ps %xmm3,%xmm3
26005 .byte 65,15,89,216 // mulps %xmm8,%xmm3
26006 .byte 72,173 // lods %ds:(%rsi),%rax
26007 .byte 255,224 // jmpq *%rax
26008
Mike Kleinb3821732017-04-17 10:58:05 -040026009HIDDEN _sk_load_rgb_u16_be_sse2
26010.globl _sk_load_rgb_u16_be_sse2
26011FUNCTION(_sk_load_rgb_u16_be_sse2)
26012_sk_load_rgb_u16_be_sse2:
26013 .byte 72,173 // lods %ds:(%rsi),%rax
26014 .byte 72,139,0 // mov (%rax),%rax
26015 .byte 72,141,12,127 // lea (%rdi,%rdi,2),%rcx
26016 .byte 243,15,111,20,72 // movdqu (%rax,%rcx,2),%xmm2
26017 .byte 243,15,111,68,72,8 // movdqu 0x8(%rax,%rcx,2),%xmm0
26018 .byte 102,15,115,216,4 // psrldq $0x4,%xmm0
26019 .byte 102,15,111,202 // movdqa %xmm2,%xmm1
26020 .byte 102,15,115,217,6 // psrldq $0x6,%xmm1
26021 .byte 102,15,97,208 // punpcklwd %xmm0,%xmm2
26022 .byte 102,15,115,216,6 // psrldq $0x6,%xmm0
26023 .byte 102,15,97,200 // punpcklwd %xmm0,%xmm1
26024 .byte 102,15,111,194 // movdqa %xmm2,%xmm0
26025 .byte 102,15,97,193 // punpcklwd %xmm1,%xmm0
26026 .byte 102,15,112,216,78 // pshufd $0x4e,%xmm0,%xmm3
26027 .byte 102,15,105,209 // punpckhwd %xmm1,%xmm2
26028 .byte 184,128,0,128,55 // mov $0x37800080,%eax
26029 .byte 102,68,15,110,192 // movd %eax,%xmm8
26030 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26031 .byte 102,15,111,200 // movdqa %xmm0,%xmm1
26032 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
26033 .byte 102,15,113,208,8 // psrlw $0x8,%xmm0
26034 .byte 102,15,235,193 // por %xmm1,%xmm0
26035 .byte 102,69,15,239,201 // pxor %xmm9,%xmm9
26036 .byte 102,65,15,97,193 // punpcklwd %xmm9,%xmm0
26037 .byte 15,91,192 // cvtdq2ps %xmm0,%xmm0
26038 .byte 65,15,89,192 // mulps %xmm8,%xmm0
26039 .byte 102,15,111,203 // movdqa %xmm3,%xmm1
26040 .byte 102,15,113,241,8 // psllw $0x8,%xmm1
26041 .byte 102,15,113,211,8 // psrlw $0x8,%xmm3
26042 .byte 102,15,235,217 // por %xmm1,%xmm3
26043 .byte 102,65,15,97,217 // punpcklwd %xmm9,%xmm3
26044 .byte 15,91,203 // cvtdq2ps %xmm3,%xmm1
26045 .byte 65,15,89,200 // mulps %xmm8,%xmm1
26046 .byte 102,15,111,218 // movdqa %xmm2,%xmm3
26047 .byte 102,15,113,243,8 // psllw $0x8,%xmm3
26048 .byte 102,15,113,210,8 // psrlw $0x8,%xmm2
26049 .byte 102,15,235,211 // por %xmm3,%xmm2
26050 .byte 102,65,15,97,209 // punpcklwd %xmm9,%xmm2
26051 .byte 15,91,210 // cvtdq2ps %xmm2,%xmm2
26052 .byte 65,15,89,208 // mulps %xmm8,%xmm2
26053 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
26054 .byte 102,15,110,216 // movd %eax,%xmm3
26055 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
26056 .byte 72,173 // lods %ds:(%rsi),%rax
26057 .byte 255,224 // jmpq *%rax
26058
Mike Klein3146bb92017-04-05 14:45:02 -040026059HIDDEN _sk_store_u16_be_sse2
26060.globl _sk_store_u16_be_sse2
Mike Klein86714282017-04-13 17:37:38 -040026061FUNCTION(_sk_store_u16_be_sse2)
Mike Klein3146bb92017-04-05 14:45:02 -040026062_sk_store_u16_be_sse2:
26063 .byte 72,173 // lods %ds:(%rsi),%rax
26064 .byte 72,139,0 // mov (%rax),%rax
26065 .byte 185,0,255,127,71 // mov $0x477fff00,%ecx
26066 .byte 102,68,15,110,201 // movd %ecx,%xmm9
26067 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26068 .byte 69,15,40,193 // movaps %xmm9,%xmm8
26069 .byte 68,15,89,192 // mulps %xmm0,%xmm8
26070 .byte 102,69,15,91,192 // cvtps2dq %xmm8,%xmm8
26071 .byte 102,65,15,114,240,16 // pslld $0x10,%xmm8
26072 .byte 102,65,15,114,224,16 // psrad $0x10,%xmm8
26073 .byte 102,69,15,107,192 // packssdw %xmm8,%xmm8
26074 .byte 102,69,15,111,208 // movdqa %xmm8,%xmm10
26075 .byte 102,65,15,113,242,8 // psllw $0x8,%xmm10
26076 .byte 102,65,15,113,208,8 // psrlw $0x8,%xmm8
26077 .byte 102,69,15,235,194 // por %xmm10,%xmm8
26078 .byte 69,15,40,209 // movaps %xmm9,%xmm10
26079 .byte 68,15,89,209 // mulps %xmm1,%xmm10
26080 .byte 102,69,15,91,210 // cvtps2dq %xmm10,%xmm10
26081 .byte 102,65,15,114,242,16 // pslld $0x10,%xmm10
26082 .byte 102,65,15,114,226,16 // psrad $0x10,%xmm10
26083 .byte 102,69,15,107,210 // packssdw %xmm10,%xmm10
26084 .byte 102,69,15,111,218 // movdqa %xmm10,%xmm11
26085 .byte 102,65,15,113,243,8 // psllw $0x8,%xmm11
26086 .byte 102,65,15,113,210,8 // psrlw $0x8,%xmm10
26087 .byte 102,69,15,235,211 // por %xmm11,%xmm10
26088 .byte 69,15,40,217 // movaps %xmm9,%xmm11
26089 .byte 68,15,89,218 // mulps %xmm2,%xmm11
26090 .byte 102,69,15,91,219 // cvtps2dq %xmm11,%xmm11
26091 .byte 102,65,15,114,243,16 // pslld $0x10,%xmm11
26092 .byte 102,65,15,114,227,16 // psrad $0x10,%xmm11
26093 .byte 102,69,15,107,219 // packssdw %xmm11,%xmm11
26094 .byte 102,69,15,111,227 // movdqa %xmm11,%xmm12
26095 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
26096 .byte 102,65,15,113,211,8 // psrlw $0x8,%xmm11
26097 .byte 102,69,15,235,220 // por %xmm12,%xmm11
26098 .byte 68,15,89,203 // mulps %xmm3,%xmm9
26099 .byte 102,69,15,91,201 // cvtps2dq %xmm9,%xmm9
26100 .byte 102,65,15,114,241,16 // pslld $0x10,%xmm9
26101 .byte 102,65,15,114,225,16 // psrad $0x10,%xmm9
26102 .byte 102,69,15,107,201 // packssdw %xmm9,%xmm9
26103 .byte 102,69,15,111,225 // movdqa %xmm9,%xmm12
26104 .byte 102,65,15,113,244,8 // psllw $0x8,%xmm12
26105 .byte 102,65,15,113,209,8 // psrlw $0x8,%xmm9
26106 .byte 102,69,15,235,204 // por %xmm12,%xmm9
26107 .byte 102,69,15,97,194 // punpcklwd %xmm10,%xmm8
26108 .byte 102,69,15,97,217 // punpcklwd %xmm9,%xmm11
26109 .byte 102,69,15,111,200 // movdqa %xmm8,%xmm9
26110 .byte 102,69,15,98,203 // punpckldq %xmm11,%xmm9
26111 .byte 243,68,15,127,12,248 // movdqu %xmm9,(%rax,%rdi,8)
26112 .byte 102,69,15,106,195 // punpckhdq %xmm11,%xmm8
26113 .byte 243,68,15,127,68,248,16 // movdqu %xmm8,0x10(%rax,%rdi,8)
26114 .byte 72,173 // lods %ds:(%rsi),%rax
26115 .byte 255,224 // jmpq *%rax
26116
Mike Klein14987eb2017-04-06 10:22:26 -040026117HIDDEN _sk_load_f32_sse2
26118.globl _sk_load_f32_sse2
Mike Klein86714282017-04-13 17:37:38 -040026119FUNCTION(_sk_load_f32_sse2)
Mike Klein14987eb2017-04-06 10:22:26 -040026120_sk_load_f32_sse2:
26121 .byte 72,173 // lods %ds:(%rsi),%rax
26122 .byte 72,139,0 // mov (%rax),%rax
26123 .byte 72,137,249 // mov %rdi,%rcx
26124 .byte 72,193,225,4 // shl $0x4,%rcx
26125 .byte 68,15,16,4,8 // movups (%rax,%rcx,1),%xmm8
26126 .byte 15,16,68,8,16 // movups 0x10(%rax,%rcx,1),%xmm0
26127 .byte 15,16,92,8,32 // movups 0x20(%rax,%rcx,1),%xmm3
26128 .byte 68,15,16,76,8,48 // movups 0x30(%rax,%rcx,1),%xmm9
26129 .byte 65,15,40,208 // movaps %xmm8,%xmm2
26130 .byte 15,20,208 // unpcklps %xmm0,%xmm2
26131 .byte 15,40,203 // movaps %xmm3,%xmm1
26132 .byte 65,15,20,201 // unpcklps %xmm9,%xmm1
26133 .byte 68,15,21,192 // unpckhps %xmm0,%xmm8
26134 .byte 65,15,21,217 // unpckhps %xmm9,%xmm3
26135 .byte 15,40,194 // movaps %xmm2,%xmm0
26136 .byte 102,15,20,193 // unpcklpd %xmm1,%xmm0
26137 .byte 15,18,202 // movhlps %xmm2,%xmm1
26138 .byte 65,15,40,208 // movaps %xmm8,%xmm2
26139 .byte 102,15,20,211 // unpcklpd %xmm3,%xmm2
26140 .byte 65,15,18,216 // movhlps %xmm8,%xmm3
26141 .byte 72,173 // lods %ds:(%rsi),%rax
26142 .byte 255,224 // jmpq *%rax
26143
Mike Klein7c4af542017-03-29 18:21:14 -040026144HIDDEN _sk_store_f32_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026145.globl _sk_store_f32_sse2
Mike Klein86714282017-04-13 17:37:38 -040026146FUNCTION(_sk_store_f32_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026147_sk_store_f32_sse2:
26148 .byte 72,173 // lods %ds:(%rsi),%rax
26149 .byte 72,139,0 // mov (%rax),%rax
26150 .byte 72,137,249 // mov %rdi,%rcx
26151 .byte 72,193,225,4 // shl $0x4,%rcx
26152 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26153 .byte 68,15,40,200 // movaps %xmm0,%xmm9
26154 .byte 68,15,20,201 // unpcklps %xmm1,%xmm9
26155 .byte 68,15,40,210 // movaps %xmm2,%xmm10
26156 .byte 68,15,40,218 // movaps %xmm2,%xmm11
26157 .byte 68,15,20,219 // unpcklps %xmm3,%xmm11
26158 .byte 68,15,21,193 // unpckhps %xmm1,%xmm8
26159 .byte 68,15,21,211 // unpckhps %xmm3,%xmm10
26160 .byte 69,15,40,225 // movaps %xmm9,%xmm12
26161 .byte 102,69,15,20,227 // unpcklpd %xmm11,%xmm12
26162 .byte 69,15,18,217 // movhlps %xmm9,%xmm11
26163 .byte 69,15,40,200 // movaps %xmm8,%xmm9
26164 .byte 102,69,15,20,202 // unpcklpd %xmm10,%xmm9
26165 .byte 69,15,18,208 // movhlps %xmm8,%xmm10
26166 .byte 102,68,15,17,36,8 // movupd %xmm12,(%rax,%rcx,1)
26167 .byte 68,15,17,92,8,16 // movups %xmm11,0x10(%rax,%rcx,1)
26168 .byte 102,68,15,17,76,8,32 // movupd %xmm9,0x20(%rax,%rcx,1)
26169 .byte 68,15,17,84,8,48 // movups %xmm10,0x30(%rax,%rcx,1)
26170 .byte 72,173 // lods %ds:(%rsi),%rax
26171 .byte 255,224 // jmpq *%rax
26172
Mike Klein7c4af542017-03-29 18:21:14 -040026173HIDDEN _sk_clamp_x_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026174.globl _sk_clamp_x_sse2
Mike Klein86714282017-04-13 17:37:38 -040026175FUNCTION(_sk_clamp_x_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026176_sk_clamp_x_sse2:
26177 .byte 72,173 // lods %ds:(%rsi),%rax
26178 .byte 69,15,87,192 // xorps %xmm8,%xmm8
26179 .byte 68,15,95,192 // maxps %xmm0,%xmm8
26180 .byte 243,68,15,16,8 // movss (%rax),%xmm9
26181 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26182 .byte 102,15,118,192 // pcmpeqd %xmm0,%xmm0
26183 .byte 102,65,15,254,193 // paddd %xmm9,%xmm0
26184 .byte 68,15,93,192 // minps %xmm0,%xmm8
26185 .byte 72,173 // lods %ds:(%rsi),%rax
26186 .byte 65,15,40,192 // movaps %xmm8,%xmm0
26187 .byte 255,224 // jmpq *%rax
26188
Mike Klein7c4af542017-03-29 18:21:14 -040026189HIDDEN _sk_clamp_y_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026190.globl _sk_clamp_y_sse2
Mike Klein86714282017-04-13 17:37:38 -040026191FUNCTION(_sk_clamp_y_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026192_sk_clamp_y_sse2:
26193 .byte 72,173 // lods %ds:(%rsi),%rax
26194 .byte 69,15,87,192 // xorps %xmm8,%xmm8
26195 .byte 68,15,95,193 // maxps %xmm1,%xmm8
26196 .byte 243,68,15,16,8 // movss (%rax),%xmm9
26197 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26198 .byte 102,15,118,201 // pcmpeqd %xmm1,%xmm1
26199 .byte 102,65,15,254,201 // paddd %xmm9,%xmm1
26200 .byte 68,15,93,193 // minps %xmm1,%xmm8
26201 .byte 72,173 // lods %ds:(%rsi),%rax
26202 .byte 65,15,40,200 // movaps %xmm8,%xmm1
26203 .byte 255,224 // jmpq *%rax
26204
Mike Klein7c4af542017-03-29 18:21:14 -040026205HIDDEN _sk_repeat_x_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026206.globl _sk_repeat_x_sse2
Mike Klein86714282017-04-13 17:37:38 -040026207FUNCTION(_sk_repeat_x_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026208_sk_repeat_x_sse2:
26209 .byte 72,173 // lods %ds:(%rsi),%rax
26210 .byte 243,68,15,16,0 // movss (%rax),%xmm8
26211 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26212 .byte 68,15,40,200 // movaps %xmm0,%xmm9
26213 .byte 69,15,94,200 // divps %xmm8,%xmm9
26214 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
26215 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
26216 .byte 69,15,194,202,1 // cmpltps %xmm10,%xmm9
26217 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
26218 .byte 102,68,15,110,216 // movd %eax,%xmm11
26219 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26220 .byte 69,15,84,217 // andps %xmm9,%xmm11
26221 .byte 69,15,92,211 // subps %xmm11,%xmm10
26222 .byte 69,15,89,208 // mulps %xmm8,%xmm10
26223 .byte 65,15,92,194 // subps %xmm10,%xmm0
26224 .byte 102,69,15,118,201 // pcmpeqd %xmm9,%xmm9
26225 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
26226 .byte 65,15,93,193 // minps %xmm9,%xmm0
26227 .byte 72,173 // lods %ds:(%rsi),%rax
26228 .byte 255,224 // jmpq *%rax
26229
Mike Klein7c4af542017-03-29 18:21:14 -040026230HIDDEN _sk_repeat_y_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026231.globl _sk_repeat_y_sse2
Mike Klein86714282017-04-13 17:37:38 -040026232FUNCTION(_sk_repeat_y_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026233_sk_repeat_y_sse2:
26234 .byte 72,173 // lods %ds:(%rsi),%rax
26235 .byte 243,68,15,16,0 // movss (%rax),%xmm8
26236 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26237 .byte 68,15,40,201 // movaps %xmm1,%xmm9
26238 .byte 69,15,94,200 // divps %xmm8,%xmm9
26239 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
26240 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
26241 .byte 69,15,194,202,1 // cmpltps %xmm10,%xmm9
26242 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
26243 .byte 102,68,15,110,216 // movd %eax,%xmm11
26244 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26245 .byte 69,15,84,217 // andps %xmm9,%xmm11
26246 .byte 69,15,92,211 // subps %xmm11,%xmm10
26247 .byte 69,15,89,208 // mulps %xmm8,%xmm10
26248 .byte 65,15,92,202 // subps %xmm10,%xmm1
26249 .byte 102,69,15,118,201 // pcmpeqd %xmm9,%xmm9
26250 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
26251 .byte 65,15,93,201 // minps %xmm9,%xmm1
26252 .byte 72,173 // lods %ds:(%rsi),%rax
26253 .byte 255,224 // jmpq *%rax
26254
Mike Klein7c4af542017-03-29 18:21:14 -040026255HIDDEN _sk_mirror_x_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026256.globl _sk_mirror_x_sse2
Mike Klein86714282017-04-13 17:37:38 -040026257FUNCTION(_sk_mirror_x_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026258_sk_mirror_x_sse2:
26259 .byte 72,173 // lods %ds:(%rsi),%rax
26260 .byte 243,68,15,16,8 // movss (%rax),%xmm9
26261 .byte 69,15,40,193 // movaps %xmm9,%xmm8
26262 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26263 .byte 65,15,92,192 // subps %xmm8,%xmm0
26264 .byte 243,69,15,88,201 // addss %xmm9,%xmm9
26265 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26266 .byte 68,15,40,208 // movaps %xmm0,%xmm10
26267 .byte 69,15,94,209 // divps %xmm9,%xmm10
26268 .byte 243,69,15,91,218 // cvttps2dq %xmm10,%xmm11
26269 .byte 69,15,91,219 // cvtdq2ps %xmm11,%xmm11
26270 .byte 69,15,194,211,1 // cmpltps %xmm11,%xmm10
26271 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
26272 .byte 102,68,15,110,224 // movd %eax,%xmm12
26273 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26274 .byte 69,15,84,226 // andps %xmm10,%xmm12
26275 .byte 69,15,87,210 // xorps %xmm10,%xmm10
26276 .byte 69,15,92,220 // subps %xmm12,%xmm11
26277 .byte 69,15,89,217 // mulps %xmm9,%xmm11
26278 .byte 65,15,92,195 // subps %xmm11,%xmm0
26279 .byte 65,15,92,192 // subps %xmm8,%xmm0
26280 .byte 68,15,92,208 // subps %xmm0,%xmm10
26281 .byte 65,15,84,194 // andps %xmm10,%xmm0
26282 .byte 102,69,15,118,201 // pcmpeqd %xmm9,%xmm9
26283 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
26284 .byte 65,15,93,193 // minps %xmm9,%xmm0
26285 .byte 72,173 // lods %ds:(%rsi),%rax
26286 .byte 255,224 // jmpq *%rax
26287
Mike Klein7c4af542017-03-29 18:21:14 -040026288HIDDEN _sk_mirror_y_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026289.globl _sk_mirror_y_sse2
Mike Klein86714282017-04-13 17:37:38 -040026290FUNCTION(_sk_mirror_y_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026291_sk_mirror_y_sse2:
26292 .byte 72,173 // lods %ds:(%rsi),%rax
26293 .byte 243,68,15,16,8 // movss (%rax),%xmm9
26294 .byte 69,15,40,193 // movaps %xmm9,%xmm8
26295 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26296 .byte 65,15,92,200 // subps %xmm8,%xmm1
26297 .byte 243,69,15,88,201 // addss %xmm9,%xmm9
26298 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26299 .byte 68,15,40,209 // movaps %xmm1,%xmm10
26300 .byte 69,15,94,209 // divps %xmm9,%xmm10
26301 .byte 243,69,15,91,218 // cvttps2dq %xmm10,%xmm11
26302 .byte 69,15,91,219 // cvtdq2ps %xmm11,%xmm11
26303 .byte 69,15,194,211,1 // cmpltps %xmm11,%xmm10
26304 .byte 184,0,0,128,63 // mov $0x3f800000,%eax
26305 .byte 102,68,15,110,224 // movd %eax,%xmm12
26306 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26307 .byte 69,15,84,226 // andps %xmm10,%xmm12
26308 .byte 69,15,87,210 // xorps %xmm10,%xmm10
26309 .byte 69,15,92,220 // subps %xmm12,%xmm11
26310 .byte 69,15,89,217 // mulps %xmm9,%xmm11
26311 .byte 65,15,92,203 // subps %xmm11,%xmm1
26312 .byte 65,15,92,200 // subps %xmm8,%xmm1
26313 .byte 68,15,92,209 // subps %xmm1,%xmm10
26314 .byte 65,15,84,202 // andps %xmm10,%xmm1
26315 .byte 102,69,15,118,201 // pcmpeqd %xmm9,%xmm9
26316 .byte 102,69,15,254,200 // paddd %xmm8,%xmm9
26317 .byte 65,15,93,201 // minps %xmm9,%xmm1
26318 .byte 72,173 // lods %ds:(%rsi),%rax
26319 .byte 255,224 // jmpq *%rax
26320
Mike Klein7c4af542017-03-29 18:21:14 -040026321HIDDEN _sk_luminance_to_alpha_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026322.globl _sk_luminance_to_alpha_sse2
Mike Klein86714282017-04-13 17:37:38 -040026323FUNCTION(_sk_luminance_to_alpha_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026324_sk_luminance_to_alpha_sse2:
26325 .byte 184,208,179,89,62 // mov $0x3e59b3d0,%eax
26326 .byte 102,15,110,216 // movd %eax,%xmm3
26327 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
26328 .byte 15,89,216 // mulps %xmm0,%xmm3
26329 .byte 184,89,23,55,63 // mov $0x3f371759,%eax
26330 .byte 102,15,110,192 // movd %eax,%xmm0
26331 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
26332 .byte 15,89,193 // mulps %xmm1,%xmm0
26333 .byte 15,88,195 // addps %xmm3,%xmm0
26334 .byte 184,152,221,147,61 // mov $0x3d93dd98,%eax
26335 .byte 102,15,110,216 // movd %eax,%xmm3
26336 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
26337 .byte 15,89,218 // mulps %xmm2,%xmm3
26338 .byte 15,88,216 // addps %xmm0,%xmm3
26339 .byte 72,173 // lods %ds:(%rsi),%rax
26340 .byte 15,87,192 // xorps %xmm0,%xmm0
26341 .byte 15,87,201 // xorps %xmm1,%xmm1
26342 .byte 15,87,210 // xorps %xmm2,%xmm2
26343 .byte 255,224 // jmpq *%rax
26344
Mike Klein7c4af542017-03-29 18:21:14 -040026345HIDDEN _sk_matrix_2x3_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026346.globl _sk_matrix_2x3_sse2
Mike Klein86714282017-04-13 17:37:38 -040026347FUNCTION(_sk_matrix_2x3_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026348_sk_matrix_2x3_sse2:
26349 .byte 68,15,40,201 // movaps %xmm1,%xmm9
26350 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26351 .byte 72,173 // lods %ds:(%rsi),%rax
26352 .byte 243,15,16,0 // movss (%rax),%xmm0
26353 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
26354 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
26355 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
26356 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26357 .byte 243,68,15,16,88,16 // movss 0x10(%rax),%xmm11
26358 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26359 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26360 .byte 69,15,88,211 // addps %xmm11,%xmm10
26361 .byte 65,15,89,192 // mulps %xmm8,%xmm0
26362 .byte 65,15,88,194 // addps %xmm10,%xmm0
26363 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
26364 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
26365 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26366 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
26367 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26368 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26369 .byte 69,15,88,211 // addps %xmm11,%xmm10
26370 .byte 65,15,89,200 // mulps %xmm8,%xmm1
26371 .byte 65,15,88,202 // addps %xmm10,%xmm1
26372 .byte 72,173 // lods %ds:(%rsi),%rax
26373 .byte 255,224 // jmpq *%rax
26374
Mike Klein7c4af542017-03-29 18:21:14 -040026375HIDDEN _sk_matrix_3x4_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026376.globl _sk_matrix_3x4_sse2
Mike Klein86714282017-04-13 17:37:38 -040026377FUNCTION(_sk_matrix_3x4_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026378_sk_matrix_3x4_sse2:
26379 .byte 68,15,40,201 // movaps %xmm1,%xmm9
26380 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26381 .byte 72,173 // lods %ds:(%rsi),%rax
26382 .byte 243,15,16,0 // movss (%rax),%xmm0
26383 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
26384 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
26385 .byte 243,68,15,16,80,12 // movss 0xc(%rax),%xmm10
26386 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26387 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
26388 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26389 .byte 243,68,15,16,96,36 // movss 0x24(%rax),%xmm12
26390 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26391 .byte 68,15,89,218 // mulps %xmm2,%xmm11
26392 .byte 69,15,88,220 // addps %xmm12,%xmm11
26393 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26394 .byte 69,15,88,211 // addps %xmm11,%xmm10
26395 .byte 65,15,89,192 // mulps %xmm8,%xmm0
26396 .byte 65,15,88,194 // addps %xmm10,%xmm0
26397 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
26398 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
26399 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26400 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
26401 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26402 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
26403 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26404 .byte 68,15,89,218 // mulps %xmm2,%xmm11
26405 .byte 69,15,88,220 // addps %xmm12,%xmm11
26406 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26407 .byte 69,15,88,211 // addps %xmm11,%xmm10
26408 .byte 65,15,89,200 // mulps %xmm8,%xmm1
26409 .byte 65,15,88,202 // addps %xmm10,%xmm1
26410 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
26411 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26412 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
26413 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26414 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
26415 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26416 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
26417 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26418 .byte 68,15,89,226 // mulps %xmm2,%xmm12
26419 .byte 69,15,88,229 // addps %xmm13,%xmm12
26420 .byte 69,15,89,217 // mulps %xmm9,%xmm11
26421 .byte 69,15,88,220 // addps %xmm12,%xmm11
26422 .byte 69,15,89,208 // mulps %xmm8,%xmm10
26423 .byte 69,15,88,211 // addps %xmm11,%xmm10
26424 .byte 72,173 // lods %ds:(%rsi),%rax
26425 .byte 65,15,40,210 // movaps %xmm10,%xmm2
26426 .byte 255,224 // jmpq *%rax
26427
Mike Klein7c4af542017-03-29 18:21:14 -040026428HIDDEN _sk_matrix_4x5_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026429.globl _sk_matrix_4x5_sse2
Mike Klein86714282017-04-13 17:37:38 -040026430FUNCTION(_sk_matrix_4x5_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026431_sk_matrix_4x5_sse2:
26432 .byte 68,15,40,201 // movaps %xmm1,%xmm9
26433 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26434 .byte 72,173 // lods %ds:(%rsi),%rax
26435 .byte 243,15,16,0 // movss (%rax),%xmm0
26436 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
26437 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
26438 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
26439 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26440 .byte 243,68,15,16,88,32 // movss 0x20(%rax),%xmm11
26441 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26442 .byte 243,68,15,16,96,48 // movss 0x30(%rax),%xmm12
26443 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26444 .byte 243,68,15,16,104,64 // movss 0x40(%rax),%xmm13
26445 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26446 .byte 68,15,89,227 // mulps %xmm3,%xmm12
26447 .byte 69,15,88,229 // addps %xmm13,%xmm12
26448 .byte 68,15,89,218 // mulps %xmm2,%xmm11
26449 .byte 69,15,88,220 // addps %xmm12,%xmm11
26450 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26451 .byte 69,15,88,211 // addps %xmm11,%xmm10
26452 .byte 65,15,89,192 // mulps %xmm8,%xmm0
26453 .byte 65,15,88,194 // addps %xmm10,%xmm0
26454 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
26455 .byte 243,68,15,16,80,20 // movss 0x14(%rax),%xmm10
26456 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26457 .byte 243,68,15,16,88,36 // movss 0x24(%rax),%xmm11
26458 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26459 .byte 243,68,15,16,96,52 // movss 0x34(%rax),%xmm12
26460 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26461 .byte 243,68,15,16,104,68 // movss 0x44(%rax),%xmm13
26462 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26463 .byte 68,15,89,227 // mulps %xmm3,%xmm12
26464 .byte 69,15,88,229 // addps %xmm13,%xmm12
26465 .byte 68,15,89,218 // mulps %xmm2,%xmm11
26466 .byte 69,15,88,220 // addps %xmm12,%xmm11
26467 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26468 .byte 69,15,88,211 // addps %xmm11,%xmm10
26469 .byte 65,15,89,200 // mulps %xmm8,%xmm1
26470 .byte 65,15,88,202 // addps %xmm10,%xmm1
26471 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
26472 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26473 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
26474 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26475 .byte 243,68,15,16,96,40 // movss 0x28(%rax),%xmm12
26476 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26477 .byte 243,68,15,16,104,56 // movss 0x38(%rax),%xmm13
26478 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26479 .byte 243,68,15,16,112,72 // movss 0x48(%rax),%xmm14
26480 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
26481 .byte 68,15,89,235 // mulps %xmm3,%xmm13
26482 .byte 69,15,88,238 // addps %xmm14,%xmm13
26483 .byte 68,15,89,226 // mulps %xmm2,%xmm12
26484 .byte 69,15,88,229 // addps %xmm13,%xmm12
26485 .byte 69,15,89,217 // mulps %xmm9,%xmm11
26486 .byte 69,15,88,220 // addps %xmm12,%xmm11
26487 .byte 69,15,89,208 // mulps %xmm8,%xmm10
26488 .byte 69,15,88,211 // addps %xmm11,%xmm10
26489 .byte 243,68,15,16,88,12 // movss 0xc(%rax),%xmm11
26490 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26491 .byte 243,68,15,16,96,28 // movss 0x1c(%rax),%xmm12
26492 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26493 .byte 243,68,15,16,104,44 // movss 0x2c(%rax),%xmm13
26494 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26495 .byte 243,68,15,16,112,60 // movss 0x3c(%rax),%xmm14
26496 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
26497 .byte 243,68,15,16,120,76 // movss 0x4c(%rax),%xmm15
26498 .byte 69,15,198,255,0 // shufps $0x0,%xmm15,%xmm15
26499 .byte 68,15,89,243 // mulps %xmm3,%xmm14
26500 .byte 69,15,88,247 // addps %xmm15,%xmm14
26501 .byte 68,15,89,234 // mulps %xmm2,%xmm13
26502 .byte 69,15,88,238 // addps %xmm14,%xmm13
26503 .byte 69,15,89,225 // mulps %xmm9,%xmm12
26504 .byte 69,15,88,229 // addps %xmm13,%xmm12
26505 .byte 69,15,89,216 // mulps %xmm8,%xmm11
26506 .byte 69,15,88,220 // addps %xmm12,%xmm11
26507 .byte 72,173 // lods %ds:(%rsi),%rax
26508 .byte 65,15,40,210 // movaps %xmm10,%xmm2
26509 .byte 65,15,40,219 // movaps %xmm11,%xmm3
26510 .byte 255,224 // jmpq *%rax
26511
Mike Klein7c4af542017-03-29 18:21:14 -040026512HIDDEN _sk_matrix_perspective_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026513.globl _sk_matrix_perspective_sse2
Mike Klein86714282017-04-13 17:37:38 -040026514FUNCTION(_sk_matrix_perspective_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026515_sk_matrix_perspective_sse2:
26516 .byte 68,15,40,192 // movaps %xmm0,%xmm8
26517 .byte 72,173 // lods %ds:(%rsi),%rax
26518 .byte 243,15,16,0 // movss (%rax),%xmm0
26519 .byte 243,68,15,16,72,4 // movss 0x4(%rax),%xmm9
26520 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
26521 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26522 .byte 243,68,15,16,80,8 // movss 0x8(%rax),%xmm10
26523 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26524 .byte 68,15,89,201 // mulps %xmm1,%xmm9
26525 .byte 69,15,88,202 // addps %xmm10,%xmm9
26526 .byte 65,15,89,192 // mulps %xmm8,%xmm0
26527 .byte 65,15,88,193 // addps %xmm9,%xmm0
26528 .byte 243,68,15,16,72,12 // movss 0xc(%rax),%xmm9
26529 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26530 .byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
26531 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26532 .byte 243,68,15,16,88,20 // movss 0x14(%rax),%xmm11
26533 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26534 .byte 68,15,89,209 // mulps %xmm1,%xmm10
26535 .byte 69,15,88,211 // addps %xmm11,%xmm10
26536 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26537 .byte 69,15,88,202 // addps %xmm10,%xmm9
26538 .byte 243,68,15,16,80,24 // movss 0x18(%rax),%xmm10
26539 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26540 .byte 243,68,15,16,88,28 // movss 0x1c(%rax),%xmm11
26541 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26542 .byte 243,68,15,16,96,32 // movss 0x20(%rax),%xmm12
26543 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26544 .byte 68,15,89,217 // mulps %xmm1,%xmm11
26545 .byte 69,15,88,220 // addps %xmm12,%xmm11
26546 .byte 69,15,89,208 // mulps %xmm8,%xmm10
26547 .byte 69,15,88,211 // addps %xmm11,%xmm10
26548 .byte 65,15,83,202 // rcpps %xmm10,%xmm1
26549 .byte 15,89,193 // mulps %xmm1,%xmm0
26550 .byte 68,15,89,201 // mulps %xmm1,%xmm9
26551 .byte 72,173 // lods %ds:(%rsi),%rax
26552 .byte 65,15,40,201 // movaps %xmm9,%xmm1
26553 .byte 255,224 // jmpq *%rax
26554
Herb Derby7b4202d2017-04-10 10:52:34 -040026555HIDDEN _sk_linear_gradient_sse2
26556.globl _sk_linear_gradient_sse2
Mike Klein86714282017-04-13 17:37:38 -040026557FUNCTION(_sk_linear_gradient_sse2)
Herb Derby7b4202d2017-04-10 10:52:34 -040026558_sk_linear_gradient_sse2:
26559 .byte 72,173 // lods %ds:(%rsi),%rax
26560 .byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
26561 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26562 .byte 243,68,15,16,80,20 // movss 0x14(%rax),%xmm10
26563 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26564 .byte 243,68,15,16,88,24 // movss 0x18(%rax),%xmm11
26565 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26566 .byte 243,68,15,16,96,28 // movss 0x1c(%rax),%xmm12
26567 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26568 .byte 72,139,8 // mov (%rax),%rcx
26569 .byte 72,133,201 // test %rcx,%rcx
Mike Klein097d0932017-04-20 09:11:53 -040026570 .byte 15,132,15,1,0,0 // je 3e71 <_sk_linear_gradient_sse2+0x149>
Herb Derby7b4202d2017-04-10 10:52:34 -040026571 .byte 72,139,64,8 // mov 0x8(%rax),%rax
26572 .byte 72,131,192,32 // add $0x20,%rax
26573 .byte 69,15,87,192 // xorps %xmm8,%xmm8
26574 .byte 15,87,219 // xorps %xmm3,%xmm3
26575 .byte 15,87,210 // xorps %xmm2,%xmm2
26576 .byte 15,87,201 // xorps %xmm1,%xmm1
26577 .byte 243,68,15,16,112,224 // movss -0x20(%rax),%xmm14
26578 .byte 243,68,15,16,104,228 // movss -0x1c(%rax),%xmm13
26579 .byte 69,15,198,246,0 // shufps $0x0,%xmm14,%xmm14
26580 .byte 69,15,40,252 // movaps %xmm12,%xmm15
26581 .byte 68,15,40,224 // movaps %xmm0,%xmm12
26582 .byte 69,15,194,230,1 // cmpltps %xmm14,%xmm12
26583 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26584 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26585 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26586 .byte 69,15,84,196 // andps %xmm12,%xmm8
26587 .byte 69,15,86,198 // orps %xmm14,%xmm8
26588 .byte 243,68,15,16,104,232 // movss -0x18(%rax),%xmm13
26589 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26590 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26591 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26592 .byte 65,15,84,204 // andps %xmm12,%xmm1
26593 .byte 65,15,86,206 // orps %xmm14,%xmm1
26594 .byte 243,68,15,16,104,236 // movss -0x14(%rax),%xmm13
26595 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26596 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26597 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26598 .byte 65,15,84,212 // andps %xmm12,%xmm2
26599 .byte 65,15,86,214 // orps %xmm14,%xmm2
26600 .byte 243,68,15,16,104,240 // movss -0x10(%rax),%xmm13
26601 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26602 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26603 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26604 .byte 65,15,84,220 // andps %xmm12,%xmm3
26605 .byte 65,15,86,222 // orps %xmm14,%xmm3
26606 .byte 243,68,15,16,104,244 // movss -0xc(%rax),%xmm13
26607 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26608 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26609 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26610 .byte 69,15,84,204 // andps %xmm12,%xmm9
26611 .byte 69,15,86,206 // orps %xmm14,%xmm9
26612 .byte 243,68,15,16,104,248 // movss -0x8(%rax),%xmm13
26613 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26614 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26615 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26616 .byte 69,15,84,212 // andps %xmm12,%xmm10
26617 .byte 69,15,86,214 // orps %xmm14,%xmm10
26618 .byte 243,68,15,16,104,252 // movss -0x4(%rax),%xmm13
26619 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26620 .byte 69,15,40,244 // movaps %xmm12,%xmm14
26621 .byte 69,15,85,245 // andnps %xmm13,%xmm14
26622 .byte 69,15,84,220 // andps %xmm12,%xmm11
26623 .byte 69,15,86,222 // orps %xmm14,%xmm11
26624 .byte 243,68,15,16,40 // movss (%rax),%xmm13
26625 .byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
26626 .byte 69,15,84,252 // andps %xmm12,%xmm15
26627 .byte 69,15,85,229 // andnps %xmm13,%xmm12
26628 .byte 69,15,86,231 // orps %xmm15,%xmm12
26629 .byte 72,131,192,36 // add $0x24,%rax
26630 .byte 72,255,201 // dec %rcx
Mike Klein097d0932017-04-20 09:11:53 -040026631 .byte 15,133,8,255,255,255 // jne 3d77 <_sk_linear_gradient_sse2+0x4f>
26632 .byte 235,13 // jmp 3e7e <_sk_linear_gradient_sse2+0x156>
Herb Derby7b4202d2017-04-10 10:52:34 -040026633 .byte 15,87,201 // xorps %xmm1,%xmm1
26634 .byte 15,87,210 // xorps %xmm2,%xmm2
26635 .byte 15,87,219 // xorps %xmm3,%xmm3
26636 .byte 69,15,87,192 // xorps %xmm8,%xmm8
26637 .byte 68,15,89,192 // mulps %xmm0,%xmm8
26638 .byte 69,15,88,193 // addps %xmm9,%xmm8
26639 .byte 15,89,200 // mulps %xmm0,%xmm1
26640 .byte 65,15,88,202 // addps %xmm10,%xmm1
26641 .byte 15,89,208 // mulps %xmm0,%xmm2
26642 .byte 65,15,88,211 // addps %xmm11,%xmm2
26643 .byte 15,89,216 // mulps %xmm0,%xmm3
26644 .byte 65,15,88,220 // addps %xmm12,%xmm3
26645 .byte 72,173 // lods %ds:(%rsi),%rax
26646 .byte 65,15,40,192 // movaps %xmm8,%xmm0
26647 .byte 255,224 // jmpq *%rax
26648
Mike Klein7c4af542017-03-29 18:21:14 -040026649HIDDEN _sk_linear_gradient_2stops_sse2
Mike Kleind7e06ae2017-03-29 16:33:06 -040026650.globl _sk_linear_gradient_2stops_sse2
Mike Klein86714282017-04-13 17:37:38 -040026651FUNCTION(_sk_linear_gradient_2stops_sse2)
Mike Kleind7e06ae2017-03-29 16:33:06 -040026652_sk_linear_gradient_2stops_sse2:
Mike Klein8a823fa2017-04-05 17:29:26 -040026653 .byte 68,15,40,192 // movaps %xmm0,%xmm8
Mike Kleind7e06ae2017-03-29 16:33:06 -040026654 .byte 72,173 // lods %ds:(%rsi),%rax
Herb Derby7b4202d2017-04-10 10:52:34 -040026655 .byte 243,15,16,0 // movss (%rax),%xmm0
26656 .byte 243,15,16,72,4 // movss 0x4(%rax),%xmm1
Mike Klein8a823fa2017-04-05 17:29:26 -040026657 .byte 15,198,192,0 // shufps $0x0,%xmm0,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040026658 .byte 243,15,16,80,16 // movss 0x10(%rax),%xmm2
26659 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040026660 .byte 65,15,89,192 // mulps %xmm8,%xmm0
Herb Derby7b4202d2017-04-10 10:52:34 -040026661 .byte 15,88,194 // addps %xmm2,%xmm0
Mike Klein8a823fa2017-04-05 17:29:26 -040026662 .byte 15,198,201,0 // shufps $0x0,%xmm1,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040026663 .byte 243,15,16,80,20 // movss 0x14(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040026664 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
26665 .byte 65,15,89,200 // mulps %xmm8,%xmm1
Mike Kleind7e06ae2017-03-29 16:33:06 -040026666 .byte 15,88,202 // addps %xmm2,%xmm1
Herb Derby7b4202d2017-04-10 10:52:34 -040026667 .byte 243,15,16,80,8 // movss 0x8(%rax),%xmm2
Mike Klein8a823fa2017-04-05 17:29:26 -040026668 .byte 15,198,210,0 // shufps $0x0,%xmm2,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040026669 .byte 243,15,16,88,24 // movss 0x18(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040026670 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
26671 .byte 65,15,89,208 // mulps %xmm8,%xmm2
26672 .byte 15,88,211 // addps %xmm3,%xmm2
Herb Derby7b4202d2017-04-10 10:52:34 -040026673 .byte 243,15,16,88,12 // movss 0xc(%rax),%xmm3
Mike Klein8a823fa2017-04-05 17:29:26 -040026674 .byte 15,198,219,0 // shufps $0x0,%xmm3,%xmm3
Herb Derby7b4202d2017-04-10 10:52:34 -040026675 .byte 243,68,15,16,72,28 // movss 0x1c(%rax),%xmm9
Mike Klein8a823fa2017-04-05 17:29:26 -040026676 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26677 .byte 65,15,89,216 // mulps %xmm8,%xmm3
Mike Kleind7e06ae2017-03-29 16:33:06 -040026678 .byte 65,15,88,217 // addps %xmm9,%xmm3
26679 .byte 72,173 // lods %ds:(%rsi),%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040026680 .byte 255,224 // jmpq *%rax
Mike Klein0a904492017-04-12 12:52:48 -040026681
26682HIDDEN _sk_save_xy_sse2
26683.globl _sk_save_xy_sse2
Mike Klein86714282017-04-13 17:37:38 -040026684FUNCTION(_sk_save_xy_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026685_sk_save_xy_sse2:
26686 .byte 72,173 // lods %ds:(%rsi),%rax
26687 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
26688 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26689 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26690 .byte 69,15,40,200 // movaps %xmm8,%xmm9
26691 .byte 68,15,88,200 // addps %xmm0,%xmm9
26692 .byte 243,69,15,91,209 // cvttps2dq %xmm9,%xmm10
26693 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
26694 .byte 69,15,40,217 // movaps %xmm9,%xmm11
26695 .byte 69,15,194,218,1 // cmpltps %xmm10,%xmm11
26696 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
26697 .byte 102,68,15,110,225 // movd %ecx,%xmm12
26698 .byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
26699 .byte 69,15,84,220 // andps %xmm12,%xmm11
26700 .byte 69,15,92,211 // subps %xmm11,%xmm10
26701 .byte 69,15,92,202 // subps %xmm10,%xmm9
26702 .byte 68,15,88,193 // addps %xmm1,%xmm8
26703 .byte 243,69,15,91,208 // cvttps2dq %xmm8,%xmm10
26704 .byte 69,15,91,210 // cvtdq2ps %xmm10,%xmm10
26705 .byte 69,15,40,216 // movaps %xmm8,%xmm11
26706 .byte 69,15,194,218,1 // cmpltps %xmm10,%xmm11
26707 .byte 69,15,84,220 // andps %xmm12,%xmm11
26708 .byte 69,15,92,211 // subps %xmm11,%xmm10
26709 .byte 69,15,92,194 // subps %xmm10,%xmm8
26710 .byte 15,17,0 // movups %xmm0,(%rax)
26711 .byte 15,17,72,32 // movups %xmm1,0x20(%rax)
26712 .byte 68,15,17,72,64 // movups %xmm9,0x40(%rax)
26713 .byte 68,15,17,64,96 // movups %xmm8,0x60(%rax)
26714 .byte 72,173 // lods %ds:(%rsi),%rax
26715 .byte 255,224 // jmpq *%rax
26716
26717HIDDEN _sk_accumulate_sse2
26718.globl _sk_accumulate_sse2
Mike Klein86714282017-04-13 17:37:38 -040026719FUNCTION(_sk_accumulate_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026720_sk_accumulate_sse2:
26721 .byte 72,173 // lods %ds:(%rsi),%rax
26722 .byte 68,15,16,128,128,0,0,0 // movups 0x80(%rax),%xmm8
26723 .byte 68,15,16,136,160,0,0,0 // movups 0xa0(%rax),%xmm9
26724 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26725 .byte 69,15,40,193 // movaps %xmm9,%xmm8
26726 .byte 68,15,89,192 // mulps %xmm0,%xmm8
26727 .byte 65,15,88,224 // addps %xmm8,%xmm4
26728 .byte 69,15,40,193 // movaps %xmm9,%xmm8
26729 .byte 68,15,89,193 // mulps %xmm1,%xmm8
26730 .byte 65,15,88,232 // addps %xmm8,%xmm5
26731 .byte 69,15,40,193 // movaps %xmm9,%xmm8
26732 .byte 68,15,89,194 // mulps %xmm2,%xmm8
26733 .byte 65,15,88,240 // addps %xmm8,%xmm6
26734 .byte 68,15,89,203 // mulps %xmm3,%xmm9
26735 .byte 65,15,88,249 // addps %xmm9,%xmm7
26736 .byte 72,173 // lods %ds:(%rsi),%rax
26737 .byte 255,224 // jmpq *%rax
26738
26739HIDDEN _sk_bilinear_nx_sse2
26740.globl _sk_bilinear_nx_sse2
Mike Klein86714282017-04-13 17:37:38 -040026741FUNCTION(_sk_bilinear_nx_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026742_sk_bilinear_nx_sse2:
26743 .byte 72,173 // lods %ds:(%rsi),%rax
26744 .byte 185,0,0,0,191 // mov $0xbf000000,%ecx
26745 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26746 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26747 .byte 15,16,0 // movups (%rax),%xmm0
26748 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
26749 .byte 65,15,88,192 // addps %xmm8,%xmm0
26750 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
26751 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26752 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26753 .byte 69,15,92,193 // subps %xmm9,%xmm8
26754 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
26755 .byte 72,173 // lods %ds:(%rsi),%rax
26756 .byte 255,224 // jmpq *%rax
26757
26758HIDDEN _sk_bilinear_px_sse2
26759.globl _sk_bilinear_px_sse2
Mike Klein86714282017-04-13 17:37:38 -040026760FUNCTION(_sk_bilinear_px_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026761_sk_bilinear_px_sse2:
26762 .byte 72,173 // lods %ds:(%rsi),%rax
26763 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
26764 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26765 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26766 .byte 15,16,0 // movups (%rax),%xmm0
26767 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
26768 .byte 65,15,88,192 // addps %xmm8,%xmm0
26769 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
26770 .byte 72,173 // lods %ds:(%rsi),%rax
26771 .byte 255,224 // jmpq *%rax
26772
26773HIDDEN _sk_bilinear_ny_sse2
26774.globl _sk_bilinear_ny_sse2
Mike Klein86714282017-04-13 17:37:38 -040026775FUNCTION(_sk_bilinear_ny_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026776_sk_bilinear_ny_sse2:
26777 .byte 72,173 // lods %ds:(%rsi),%rax
26778 .byte 185,0,0,0,191 // mov $0xbf000000,%ecx
26779 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26780 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26781 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
26782 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
26783 .byte 65,15,88,200 // addps %xmm8,%xmm1
26784 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
26785 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26786 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26787 .byte 69,15,92,193 // subps %xmm9,%xmm8
26788 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
26789 .byte 72,173 // lods %ds:(%rsi),%rax
26790 .byte 255,224 // jmpq *%rax
26791
26792HIDDEN _sk_bilinear_py_sse2
26793.globl _sk_bilinear_py_sse2
Mike Klein86714282017-04-13 17:37:38 -040026794FUNCTION(_sk_bilinear_py_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026795_sk_bilinear_py_sse2:
26796 .byte 72,173 // lods %ds:(%rsi),%rax
26797 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
26798 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26799 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26800 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
26801 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
26802 .byte 65,15,88,200 // addps %xmm8,%xmm1
26803 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
26804 .byte 72,173 // lods %ds:(%rsi),%rax
26805 .byte 255,224 // jmpq *%rax
26806
26807HIDDEN _sk_bicubic_n3x_sse2
26808.globl _sk_bicubic_n3x_sse2
Mike Klein86714282017-04-13 17:37:38 -040026809FUNCTION(_sk_bicubic_n3x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026810_sk_bicubic_n3x_sse2:
26811 .byte 72,173 // lods %ds:(%rsi),%rax
26812 .byte 185,0,0,192,191 // mov $0xbfc00000,%ecx
26813 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26814 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26815 .byte 15,16,0 // movups (%rax),%xmm0
26816 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
26817 .byte 65,15,88,192 // addps %xmm8,%xmm0
26818 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
26819 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26820 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26821 .byte 69,15,92,193 // subps %xmm9,%xmm8
26822 .byte 185,114,28,199,62 // mov $0x3ec71c72,%ecx
26823 .byte 102,68,15,110,201 // movd %ecx,%xmm9
26824 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26825 .byte 185,171,170,170,190 // mov $0xbeaaaaab,%ecx
26826 .byte 102,68,15,110,209 // movd %ecx,%xmm10
26827 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26828 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26829 .byte 69,15,89,192 // mulps %xmm8,%xmm8
26830 .byte 69,15,88,202 // addps %xmm10,%xmm9
26831 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26832 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
26833 .byte 72,173 // lods %ds:(%rsi),%rax
26834 .byte 255,224 // jmpq *%rax
26835
26836HIDDEN _sk_bicubic_n1x_sse2
26837.globl _sk_bicubic_n1x_sse2
Mike Klein86714282017-04-13 17:37:38 -040026838FUNCTION(_sk_bicubic_n1x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026839_sk_bicubic_n1x_sse2:
26840 .byte 72,173 // lods %ds:(%rsi),%rax
26841 .byte 185,0,0,0,191 // mov $0xbf000000,%ecx
26842 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26843 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26844 .byte 15,16,0 // movups (%rax),%xmm0
26845 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
26846 .byte 65,15,88,192 // addps %xmm8,%xmm0
26847 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
26848 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26849 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26850 .byte 69,15,92,193 // subps %xmm9,%xmm8
26851 .byte 185,85,85,149,191 // mov $0xbf955555,%ecx
26852 .byte 102,68,15,110,201 // movd %ecx,%xmm9
26853 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26854 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
26855 .byte 102,68,15,110,209 // movd %ecx,%xmm10
26856 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26857 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26858 .byte 69,15,88,202 // addps %xmm10,%xmm9
26859 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
26860 .byte 102,68,15,110,209 // movd %ecx,%xmm10
26861 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26862 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26863 .byte 69,15,88,202 // addps %xmm10,%xmm9
26864 .byte 185,57,142,99,61 // mov $0x3d638e39,%ecx
26865 .byte 102,68,15,110,209 // movd %ecx,%xmm10
26866 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26867 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26868 .byte 69,15,88,202 // addps %xmm10,%xmm9
26869 .byte 68,15,17,136,128,0,0,0 // movups %xmm9,0x80(%rax)
26870 .byte 72,173 // lods %ds:(%rsi),%rax
26871 .byte 255,224 // jmpq *%rax
26872
26873HIDDEN _sk_bicubic_p1x_sse2
26874.globl _sk_bicubic_p1x_sse2
Mike Klein86714282017-04-13 17:37:38 -040026875FUNCTION(_sk_bicubic_p1x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026876_sk_bicubic_p1x_sse2:
26877 .byte 72,173 // lods %ds:(%rsi),%rax
26878 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
26879 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26880 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26881 .byte 15,16,0 // movups (%rax),%xmm0
26882 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
26883 .byte 65,15,88,192 // addps %xmm8,%xmm0
26884 .byte 185,85,85,149,191 // mov $0xbf955555,%ecx
26885 .byte 102,68,15,110,209 // movd %ecx,%xmm10
26886 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26887 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
26888 .byte 102,68,15,110,217 // movd %ecx,%xmm11
26889 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
26890 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26891 .byte 69,15,88,211 // addps %xmm11,%xmm10
26892 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26893 .byte 69,15,88,208 // addps %xmm8,%xmm10
26894 .byte 185,57,142,99,61 // mov $0x3d638e39,%ecx
26895 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26896 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26897 .byte 69,15,89,209 // mulps %xmm9,%xmm10
26898 .byte 69,15,88,208 // addps %xmm8,%xmm10
26899 .byte 68,15,17,144,128,0,0,0 // movups %xmm10,0x80(%rax)
26900 .byte 72,173 // lods %ds:(%rsi),%rax
26901 .byte 255,224 // jmpq *%rax
26902
26903HIDDEN _sk_bicubic_p3x_sse2
26904.globl _sk_bicubic_p3x_sse2
Mike Klein86714282017-04-13 17:37:38 -040026905FUNCTION(_sk_bicubic_p3x_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026906_sk_bicubic_p3x_sse2:
26907 .byte 72,173 // lods %ds:(%rsi),%rax
26908 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
26909 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26910 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26911 .byte 15,16,0 // movups (%rax),%xmm0
26912 .byte 68,15,16,72,64 // movups 0x40(%rax),%xmm9
26913 .byte 65,15,88,192 // addps %xmm8,%xmm0
26914 .byte 185,114,28,199,62 // mov $0x3ec71c72,%ecx
26915 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26916 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26917 .byte 69,15,89,193 // mulps %xmm9,%xmm8
26918 .byte 69,15,89,201 // mulps %xmm9,%xmm9
26919 .byte 185,171,170,170,190 // mov $0xbeaaaaab,%ecx
26920 .byte 102,68,15,110,209 // movd %ecx,%xmm10
26921 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26922 .byte 69,15,88,194 // addps %xmm10,%xmm8
26923 .byte 69,15,89,193 // mulps %xmm9,%xmm8
26924 .byte 68,15,17,128,128,0,0,0 // movups %xmm8,0x80(%rax)
26925 .byte 72,173 // lods %ds:(%rsi),%rax
26926 .byte 255,224 // jmpq *%rax
26927
26928HIDDEN _sk_bicubic_n3y_sse2
26929.globl _sk_bicubic_n3y_sse2
Mike Klein86714282017-04-13 17:37:38 -040026930FUNCTION(_sk_bicubic_n3y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026931_sk_bicubic_n3y_sse2:
26932 .byte 72,173 // lods %ds:(%rsi),%rax
26933 .byte 185,0,0,192,191 // mov $0xbfc00000,%ecx
26934 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26935 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26936 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
26937 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
26938 .byte 65,15,88,200 // addps %xmm8,%xmm1
26939 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
26940 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26941 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26942 .byte 69,15,92,193 // subps %xmm9,%xmm8
26943 .byte 185,114,28,199,62 // mov $0x3ec71c72,%ecx
26944 .byte 102,68,15,110,201 // movd %ecx,%xmm9
26945 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26946 .byte 185,171,170,170,190 // mov $0xbeaaaaab,%ecx
26947 .byte 102,68,15,110,209 // movd %ecx,%xmm10
26948 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26949 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26950 .byte 69,15,89,192 // mulps %xmm8,%xmm8
26951 .byte 69,15,88,202 // addps %xmm10,%xmm9
26952 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26953 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
26954 .byte 72,173 // lods %ds:(%rsi),%rax
26955 .byte 255,224 // jmpq *%rax
26956
26957HIDDEN _sk_bicubic_n1y_sse2
26958.globl _sk_bicubic_n1y_sse2
Mike Klein86714282017-04-13 17:37:38 -040026959FUNCTION(_sk_bicubic_n1y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026960_sk_bicubic_n1y_sse2:
26961 .byte 72,173 // lods %ds:(%rsi),%rax
26962 .byte 185,0,0,0,191 // mov $0xbf000000,%ecx
26963 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26964 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26965 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
26966 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
26967 .byte 65,15,88,200 // addps %xmm8,%xmm1
26968 .byte 185,0,0,128,63 // mov $0x3f800000,%ecx
26969 .byte 102,68,15,110,193 // movd %ecx,%xmm8
26970 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
26971 .byte 69,15,92,193 // subps %xmm9,%xmm8
26972 .byte 185,85,85,149,191 // mov $0xbf955555,%ecx
26973 .byte 102,68,15,110,201 // movd %ecx,%xmm9
26974 .byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
26975 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
26976 .byte 102,68,15,110,209 // movd %ecx,%xmm10
26977 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26978 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26979 .byte 69,15,88,202 // addps %xmm10,%xmm9
26980 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
26981 .byte 102,68,15,110,209 // movd %ecx,%xmm10
26982 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26983 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26984 .byte 69,15,88,202 // addps %xmm10,%xmm9
26985 .byte 185,57,142,99,61 // mov $0x3d638e39,%ecx
26986 .byte 102,68,15,110,209 // movd %ecx,%xmm10
26987 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
26988 .byte 69,15,89,200 // mulps %xmm8,%xmm9
26989 .byte 69,15,88,202 // addps %xmm10,%xmm9
26990 .byte 68,15,17,136,160,0,0,0 // movups %xmm9,0xa0(%rax)
26991 .byte 72,173 // lods %ds:(%rsi),%rax
26992 .byte 255,224 // jmpq *%rax
26993
26994HIDDEN _sk_bicubic_p1y_sse2
26995.globl _sk_bicubic_p1y_sse2
Mike Klein86714282017-04-13 17:37:38 -040026996FUNCTION(_sk_bicubic_p1y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040026997_sk_bicubic_p1y_sse2:
26998 .byte 72,173 // lods %ds:(%rsi),%rax
26999 .byte 185,0,0,0,63 // mov $0x3f000000,%ecx
27000 .byte 102,68,15,110,193 // movd %ecx,%xmm8
27001 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
27002 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
27003 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
27004 .byte 65,15,88,200 // addps %xmm8,%xmm1
27005 .byte 185,85,85,149,191 // mov $0xbf955555,%ecx
27006 .byte 102,68,15,110,209 // movd %ecx,%xmm10
27007 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
27008 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
27009 .byte 102,68,15,110,217 // movd %ecx,%xmm11
27010 .byte 69,15,198,219,0 // shufps $0x0,%xmm11,%xmm11
27011 .byte 69,15,89,209 // mulps %xmm9,%xmm10
27012 .byte 69,15,88,211 // addps %xmm11,%xmm10
27013 .byte 69,15,89,209 // mulps %xmm9,%xmm10
27014 .byte 69,15,88,208 // addps %xmm8,%xmm10
27015 .byte 185,57,142,99,61 // mov $0x3d638e39,%ecx
27016 .byte 102,68,15,110,193 // movd %ecx,%xmm8
27017 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
27018 .byte 69,15,89,209 // mulps %xmm9,%xmm10
27019 .byte 69,15,88,208 // addps %xmm8,%xmm10
27020 .byte 68,15,17,144,160,0,0,0 // movups %xmm10,0xa0(%rax)
27021 .byte 72,173 // lods %ds:(%rsi),%rax
27022 .byte 255,224 // jmpq *%rax
27023
27024HIDDEN _sk_bicubic_p3y_sse2
27025.globl _sk_bicubic_p3y_sse2
Mike Klein86714282017-04-13 17:37:38 -040027026FUNCTION(_sk_bicubic_p3y_sse2)
Mike Klein0a904492017-04-12 12:52:48 -040027027_sk_bicubic_p3y_sse2:
27028 .byte 72,173 // lods %ds:(%rsi),%rax
27029 .byte 185,0,0,192,63 // mov $0x3fc00000,%ecx
27030 .byte 102,68,15,110,193 // movd %ecx,%xmm8
27031 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
27032 .byte 15,16,72,32 // movups 0x20(%rax),%xmm1
27033 .byte 68,15,16,72,96 // movups 0x60(%rax),%xmm9
27034 .byte 65,15,88,200 // addps %xmm8,%xmm1
27035 .byte 185,114,28,199,62 // mov $0x3ec71c72,%ecx
27036 .byte 102,68,15,110,193 // movd %ecx,%xmm8
27037 .byte 69,15,198,192,0 // shufps $0x0,%xmm8,%xmm8
27038 .byte 69,15,89,193 // mulps %xmm9,%xmm8
27039 .byte 69,15,89,201 // mulps %xmm9,%xmm9
27040 .byte 185,171,170,170,190 // mov $0xbeaaaaab,%ecx
27041 .byte 102,68,15,110,209 // movd %ecx,%xmm10
27042 .byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
27043 .byte 69,15,88,194 // addps %xmm10,%xmm8
27044 .byte 69,15,89,193 // mulps %xmm9,%xmm8
27045 .byte 68,15,17,128,160,0,0,0 // movups %xmm8,0xa0(%rax)
27046 .byte 72,173 // lods %ds:(%rsi),%rax
27047 .byte 255,224 // jmpq *%rax
Mike Klein7fee90c2017-04-07 16:55:09 -040027048
27049HIDDEN _sk_callback_sse2
27050.globl _sk_callback_sse2
27051FUNCTION(_sk_callback_sse2)
27052_sk_callback_sse2:
27053 .byte 65,87 // push %r15
27054 .byte 65,86 // push %r14
27055 .byte 83 // push %rbx
27056 .byte 72,129,236,128,0,0,0 // sub $0x80,%rsp
27057 .byte 15,41,124,36,112 // movaps %xmm7,0x70(%rsp)
27058 .byte 15,41,116,36,96 // movaps %xmm6,0x60(%rsp)
27059 .byte 15,41,108,36,80 // movaps %xmm5,0x50(%rsp)
27060 .byte 15,41,100,36,64 // movaps %xmm4,0x40(%rsp)
27061 .byte 15,41,92,36,48 // movaps %xmm3,0x30(%rsp)
27062 .byte 15,41,84,36,32 // movaps %xmm2,0x20(%rsp)
27063 .byte 15,41,76,36,16 // movaps %xmm1,0x10(%rsp)
27064 .byte 15,41,4,36 // movaps %xmm0,(%rsp)
27065 .byte 73,137,214 // mov %rdx,%r14
27066 .byte 73,137,255 // mov %rdi,%r15
27067 .byte 72,173 // lods %ds:(%rsi),%rax
27068 .byte 72,137,243 // mov %rsi,%rbx
27069 .byte 72,139,120,8 // mov 0x8(%rax),%rdi
27070 .byte 190,4,0,0,0 // mov $0x4,%esi
27071 .byte 255,16 // callq *(%rax)
27072 .byte 72,137,222 // mov %rbx,%rsi
27073 .byte 72,173 // lods %ds:(%rsi),%rax
27074 .byte 76,137,255 // mov %r15,%rdi
27075 .byte 76,137,242 // mov %r14,%rdx
27076 .byte 15,40,4,36 // movaps (%rsp),%xmm0
27077 .byte 15,40,76,36,16 // movaps 0x10(%rsp),%xmm1
27078 .byte 15,40,84,36,32 // movaps 0x20(%rsp),%xmm2
27079 .byte 15,40,92,36,48 // movaps 0x30(%rsp),%xmm3
27080 .byte 15,40,100,36,64 // movaps 0x40(%rsp),%xmm4
27081 .byte 15,40,108,36,80 // movaps 0x50(%rsp),%xmm5
27082 .byte 15,40,116,36,96 // movaps 0x60(%rsp),%xmm6
27083 .byte 15,40,124,36,112 // movaps 0x70(%rsp),%xmm7
27084 .byte 72,129,196,128,0,0,0 // add $0x80,%rsp
27085 .byte 91 // pop %rbx
27086 .byte 65,94 // pop %r14
27087 .byte 65,95 // pop %r15
27088 .byte 255,224 // jmpq *%rax
Mike Kleind7e06ae2017-03-29 16:33:06 -040027089#endif